zyx 1 рік тому
батько
коміт
490d52b62e
73 змінених файлів з 3347 додано та 24 видалено
  1. 0 0
      README.md
  2. 14 0
      api/user.js
  3. 2 2
      manifest.json
  4. 93 2
      pages.json
  5. 1 1
      pages/columnGoods/static/yhxy.html
  6. 1 1
      pages/columnGoods/static/yszc.html
  7. 209 1
      pages/index/diy/index.vue
  8. 110 11
      pages/user/index.vue
  9. 305 0
      pages/users/login/forget.vue
  10. 42 6
      pages/users/login/index.vue
  11. 317 0
      pages/users/login/register.vue
  12. BIN
      pages/users/static/beijing.jpg
  13. BIN
      pages/users/static/bj.png
  14. BIN
      pages/users/static/code.png
  15. BIN
      pages/users/static/gq.png
  16. BIN
      pages/users/static/hz.png
  17. BIN
      pages/users/static/icon-lb.png
  18. BIN
      pages/users/static/lb.png
  19. BIN
      pages/users/static/lb2.png
  20. BIN
      pages/users/static/lb3.png
  21. BIN
      pages/users/static/lb4.png
  22. BIN
      pages/users/static/phone.png
  23. BIN
      pages/users/static/sp.png
  24. BIN
      pages/users/static/tc.png
  25. BIN
      pages/users/static/xsqg(1).png
  26. BIN
      pages/users/static/xsqg(2).png
  27. BIN
      pages/users/static/yaoqong.png
  28. BIN
      pages/users/static/yzm.png
  29. BIN
      pages/users/static/》(1).png
  30. BIN
      pages/users/static/》.png
  31. BIN
      pages/users/static/分享有礼 拷贝.png
  32. BIN
      pages/users/static/图层 542.png
  33. BIN
      pages/users/static/图层 625.png
  34. BIN
      pages/users/static/在线考试 拷贝.png
  35. BIN
      pages/users/static/教育商城 拷贝.png
  36. BIN
      pages/users/static/注册_slices (2).zip
  37. BIN
      pages/users/static/消费积分_slices.zip
  38. BIN
      pages/users/static/矢量智能对象.png
  39. BIN
      pages/users/static/组 2314(1).png
  40. BIN
      pages/users/static/组 2314.png
  41. BIN
      pages/users/static/组 3 拷贝 2.png
  42. 500 0
      pages/users/user_jifen/consumption.vue
  43. 222 0
      pages/users/user_jifen/contribute.vue
  44. 525 0
      pages/users/user_jifen/equity.vue
  45. 506 0
      pages/users/user_jifen/income.vue
  46. 500 0
      pages/users/user_jifen/repeat.vue
  47. BIN
      static/images/cart-ic.png
  48. BIN
      static/images/cart.png
  49. BIN
      static/images/fenlei-ic.png
  50. BIN
      static/images/fenlei.png
  51. BIN
      static/images/my-ic.png
  52. BIN
      static/images/my.png
  53. BIN
      static/images/shouye-ic.png
  54. BIN
      static/images/shouye.png
  55. BIN
      static/images/背景图.png
  56. BIN
      static/shouye/lb.png
  57. BIN
      static/shouye/lb2.png
  58. BIN
      static/shouye/lb3.png
  59. BIN
      static/shouye/lb4.png
  60. BIN
      static/shouye/xsqg(1).png
  61. BIN
      static/shouye/xsqg(2).png
  62. BIN
      static/shouye/xsqg.png
  63. BIN
      static/shouye/》(1).png
  64. BIN
      static/shouye/》.png
  65. BIN
      static/shouye/分享有礼 拷贝.png
  66. BIN
      static/shouye/图层 542.png
  67. BIN
      static/shouye/图层 625.png
  68. BIN
      static/shouye/在线考试 拷贝.png
  69. BIN
      static/shouye/教育商城 拷贝.png
  70. BIN
      static/shouye/矢量智能对象.png
  71. BIN
      static/shouye/组 2314(1).png
  72. BIN
      static/shouye/组 2314.png
  73. BIN
      static/shouye/组 3 拷贝 2.png

+ 14 - 0
api/user.js

@@ -18,6 +18,20 @@ export function getUserInfo() {
 	return request.get('user');
 }
 
+// 用户信息
+export function userinfo() {
+	return request.get('userinfo');
+}
+
+// 绿色积分
+export function award() {
+	return request.get('other/list/award_range ');
+}
+
+// 贡献值
+export function speed() {
+	return request.get('other/list/speed');
+}
 /**
  * 设置用户分享
  * 

+ 2 - 2
manifest.json

@@ -1,7 +1,7 @@
 {
-    "name" : "御康堂",
+    "name" : "CRMEB标准版-发行",
     "appid" : "__UNI__A3F1ED4",
-    "description" : "御康堂",
+    "description" : "CRMEB标准版",
     "versionName" : "5.1.0",
     "versionCode" : 510,
     "transformPx" : false,

+ 93 - 2
pages.json

@@ -400,9 +400,9 @@
 					}
 				},
 				{
-					"path": "user_invoice_order/index",
+					"path": "message_center/messageDetail",
 					"style": {
-						"navigationBarTitleText": "发票详情",
+						"navigationBarTitleText": "消息详情",
 						"app-plus": {
 							// #ifdef APP-PLUS
 							"titleNView": {
@@ -431,6 +431,71 @@
 						}
 					}
 				},
+				{
+					"path": "user_jifen/income",
+					"style": {
+						"navigationBarTitleText": "可收益积分",
+						"app-plus": {
+							// #ifdef APP-PLUS
+							"titleNView": {
+								"type": "default"
+							}
+							// #endif
+						}
+					}
+				},
+				{
+					"path": "user_jifen/repeat",
+					"style": {
+						"navigationBarTitleText": "复消积分",
+						"app-plus": {
+							// #ifdef APP-PLUS
+							"titleNView": {
+								"type": "default"
+							}
+							// #endif
+						}
+					}
+				},
+				{
+					"path": "user_jifen/equity",
+					"style": {
+						"navigationBarTitleText": "股权积分",
+						"app-plus": {
+							// #ifdef APP-PLUS
+							"titleNView": {
+								"type": "default"
+							}
+							// #endif
+						}
+					}
+				},
+				{
+					"path": "user_jifen/consumption",
+					"style": {
+						"navigationBarTitleText": "消费券积分",
+						"app-plus": {
+							// #ifdef APP-PLUS
+							"titleNView": {
+								"type": "default"
+							}
+							// #endif
+						}
+					}
+				},
+				{
+					"path": "user_jifen/contribute",
+					"style": {
+						"navigationBarTitleText": "贡献值",
+						"app-plus": {
+							// #ifdef APP-PLUS
+							"titleNView": {
+								"type": "default"
+							}
+							// #endif
+						}
+					}
+				},
 				{
 					"path": "user_invoice_form/index",
 					"style": {
@@ -916,6 +981,32 @@
 						}
 					}
 				},
+				{
+					"path": "login/register",
+					"style": {
+						"navigationBarTitleText": "注册",
+						"app-plus": {
+							// #ifdef APP-PLUS
+							"titleNView": {
+								"type": "default"
+							}
+							// #endif
+						}
+					}
+				},
+				{
+					"path": "login/forget",
+					"style": {
+						"navigationBarTitleText": "忘记密码",
+						"app-plus": {
+							// #ifdef APP-PLUS
+							"titleNView": {
+								"type": "default"
+							}
+							// #endif
+						}
+					}
+				},
 				{
 					"path": "payment_on_behalf/index",
 					"style": {

Різницю між файлами не показано, бо вона завелика
+ 1 - 1
pages/columnGoods/static/yhxy.html


Різницю між файлами не показано, бо вона завелика
+ 1 - 1
pages/columnGoods/static/yszc.html


+ 209 - 1
pages/index/diy/index.vue

@@ -179,6 +179,62 @@
 			</view>
 		</view>
 		<!-- #endif -->
+		<!-- 新加部分start -->
+		<!-- 礼包专区 -->
+		<view class="lb">
+			<view class="heard">
+				<image class="icon" src="../../users/static/icon-lb.png" mode=""></image>
+				<view class="wb">礼包专区</view>
+			</view>
+			<view class="zgq">
+				<image class="img" src="../../../static/shouye/lb.png" mode="scaleToFill"></image>
+				<image class="img1" src="../../../static/shouye/lb2.png" mode="scaleToFill"></image>
+				<image class="img" src="../../../static/shouye/lb3.png" mode="scaleToFill"></image>
+				<image class="img1" src="../../../static/shouye/lb4.png" mode="scaleToFill"></image>
+			</view>
+		</view>
+		 <!-- 积分专区 -->
+		 <view class="jf">
+		 	<view class="heard">
+		 		<image class="icon" src="../../users/static/xsqg(2).png" mode="scaleToFill"></image>
+		 		<view class="wb">复消积分专区</view>
+		 		<view class="more">更多</view>
+		 		<image class="icon-gd" src="../../users/static/》.png" mode="scaleToFill"></image>
+		 	</view>
+			<view class="list">
+				<view class="list-item" v-for="item in 3" :key="item">
+					<image class="list-head" src="../../users/static/sp.png" mode="scaleToFill"></image>
+					<view class="list-big">护肤面膜套装护肤面膜套装</view>
+					<view class="list-lit">护肤面膜套装</view>
+					<view class="bom">
+						<image class="icon-image" src="../../users/static/图层 542.png" mode=""></image>
+						<view class="zhj">699</view>
+						<view class="yj">¥800</view>
+					</view>
+				</view>
+			</view>
+		 </view>
+		 <!-- 消费卷专区 -->
+		 <view class="jf">
+		 	<view class="heard">
+		 		<image class="icon" src="../../users/static/xsqg(1).png" mode="scaleToFill"></image>
+		 		<view class="wb">消费券专区</view>
+		 		<view class="more">更多</view>
+		 		<image class="icon-gd" src="../../users/static/》.png" mode="scaleToFill"></image>
+		 	</view>
+		 		<view class="list">
+		 			<view class="list-item" v-for="item in 3" :key="item">
+		 				<image class="list-head" src="../../users/static/sp.png" mode="scaleToFill"></image>
+		 				<view class="list-big">护肤面膜套装护肤面膜套装</view>
+		 				<view class="list-lit">护肤面膜套装</view>
+		 				<view class="bom">
+		 					<view class="xiaofei">¥60+20</view>
+		 					<view class="xfj">消费卷</view>
+		 				</view>
+		 			</view>
+		 		</view>
+		 </view>
+		<!-- 新加部分end -->
 	</view>
 </template>
 
@@ -346,7 +402,9 @@
 				pageShow: true,
 				windowHeight: 0,
 				activeRouter: '',
-				countNum: 0
+				countNum: 0,
+				// 新加start
+				// 新加end
 			};
 		},
 		onPullDownRefresh() {
@@ -1099,4 +1157,154 @@
 			width: 100%;
 		}
 	}
+	.lb {
+		margin-top: -40rpx;
+		width: 750rpx;
+		height: 500rpx;
+		background-color: #fff;
+		.heard{
+			display: flex;
+			justify-content: start;
+			padding-top: 27rpx;
+			padding-left: 20rpx;
+			.icon{
+				width: 37rpx;
+				height: 40rpx;
+			}
+			.wb {
+				font-size: 32rpx;
+				color: #242424;
+				padding-left: 8rpx;
+			}
+		}
+		.zgq {
+			padding-top: 36rpx;
+			padding-left: 20rpx;
+			.img{
+				width: 349rpx;
+				height: 165rpx;
+			}
+			.img1 {
+				width: 349rpx;
+				height: 165rpx;
+				padding-left: 15rpx;
+			}
+		}
+		
+	}
+	.more{
+		height: 23rpx;
+		font-size: 24rpx;
+		font-weight: 500;
+		color: #999999;
+		padding-left: 400rpx;
+		padding-top: 6rpx;
+	}
+	.icon-gd {
+		width: 19rpx;
+		height: 20rpx;
+		padding-left: 10rpx;
+		margin-top: 12rpx;
+	}
+	.jf {
+		margin-top: 10rpx;
+		width: 750rpx;
+		height: 414rpx;
+		background-color: #fff;
+		
+		.heard{
+			display: flex;
+			justify-content: start;
+			padding-top: 27rpx;
+			padding-left: 20rpx;
+			.icon{
+				width: 37rpx;
+				height: 40rpx;
+			}
+			.wb {
+				font-size: 32rpx;
+				color: #242424;
+				padding-left: 8rpx;
+			}
+		}
+		.list{
+			margin-left: 26rpx;
+			padding-top: 30rpx;
+			width: 100%;
+			display: flex;
+			flex-direction: row;
+			.list-item {
+				width: 220rpx;
+				height: 300rpx;
+				background: #FFFFFF;
+				border: 3px solid #F0E7D2;
+				border-radius: 10rpx;
+				margin-right: 15rpx;
+				.list-head {
+					width: 126rpx;
+					height: 108rpx;
+					margin-top: 40rpx;
+					margin-left: 50rpx;
+				}
+				.list-big {
+					font-size: 28rpx;
+					font-weight: 500;
+					color: #0A122B;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					text-align: center;
+					padding-left: 13rpx;
+				}
+				.list-lit {
+					font-size: 22rpx;
+					font-weight: 500;
+					color: #999999;
+					white-space: nowrap;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					padding-left: 13rpx;
+				}
+				.bom{
+					padding-left: 14rpx;
+					display: flex;
+					justify-content: start;
+					.icon-image {
+						width: 22rpx;
+						height: 22rpx;
+						margin-top: 22rpx;
+					}
+					.zhj {
+						font-size: 32rpx;
+						font-weight: 800;
+						color: #FF4C4C;
+						margin-top: 10rpx;
+						padding-left: 3rpx;
+					}
+					.yj {
+						font-size: 24rpx;
+						font-weight: 500;
+						text-decoration: line-through;
+						color: #969696;
+						margin-top: 18rpx;
+						padding-left: 5rpx;
+					}
+					.xiaofei {
+						font-size: 32rpx;
+						font-weight: 800;
+						color: #FF4C4C;
+					}
+					.xfj {
+						font-size: 19rpx;
+						font-weight: 800;
+						color: #FF4C4C;
+						padding-top: 15rpx;
+					}
+				}
+			}
+			
+			}
+	}
+	
+
 </style>

+ 110 - 11
pages/user/index.vue

@@ -103,24 +103,28 @@
 
 						</view>
 						<view class="num-wrapper">
-							<view class="num-item" v-if="userInfo.balance_func_status"
+							<!-- <view class="num-item" v-if="userInfo.balance_func_status" -->
+							<view class="num-item" 
 								@click="goMenuPage('/pages/users/user_money/index')">
 								<text class="num">{{userInfo.now_money || 0}}</text>
-								<view class="txt">{{$t('余额')}}</view>
+								<!-- <view class="txt">{{$t('余额')}}</view> -->
+								<view class="txt">{{$t('钱包')}}</view>
 							</view>
-							<view class="num-item" v-else
+							<!-- <view class="num-item" v-else -->
+							<view class="num-item"
 								@click="goMenuPage('/pages/users/user_goods_collection/index')">
 								<text class="num">{{userInfo.collectCount || 0}}</text>
-								<view class="txt">{{$t('收藏')}}</view>
+								<!-- <view class="txt">{{$t('收藏')}}</view> -->
+								<view class="txt">{{$t('佣金')}}</view>
 							</view>
-							<view class="num-item" @click="goMenuPage('/pages/users/user_coupon/index')">
+							<!-- <view class="num-item" @click="goMenuPage('/pages/users/user_coupon/index')">
 								<text class="num">{{userInfo.couponCount || 0}}</text>
 								<view class="txt">{{$t('优惠券')}}</view>
 							</view>
 							<view class="num-item" @click="goMenuPage('/pages/users/user_integral/index')">
 								<text class="num">{{userInfo.integral || 0}}</text>
 								<view class="txt">{{$t('积分')}}</view>
-							</view>
+							</view> -->
 						</view>
 						<!-- <view class="sign" @click="goSignIn">签到</view> -->
 						<view class="cardVipA acea-row row-between-wrapper"
@@ -220,6 +224,34 @@
 						</block>
 					</swiper>
 				</view>
+				
+				<!-- 我的积分 -->
+				<view class="user-menus" style="margin-top: 20rpx;">
+					<view class="menu-title">{{$t('我的积分')}}</view>
+					<view class="list-box">
+						<view class="shouyi" @click="shouyi">
+							<view class="jfs">{{award_range || 0}}</view>
+							<view class="jf">绿色积分</view>
+						</view>
+						<view class="shouyi" @click="gongxian">
+							<view class="jfs">{{speed || 0}}</view>
+							<view class="jf">贡献值</view>
+						</view>
+						<view class="shouyi" @click="xiaofei">
+							<view class="jfs">{{integral || 0}}</view>
+							<view class="jf">消费券</view>
+						</view>
+						<view class="shouyi" @click="fuxiao">
+							<view class="jfs">{{reorder_integral || 0}}</view>
+							<view class="jf">复消积分</view>
+						</view>
+						<view class="shouyi"  @click="guquan">
+							<view class="jfs">{{stock_integral || 0}}</view>
+							<view class="jf">股权积分</view>
+						</view>
+					</view>
+				</view>
+				
 				<!-- 会员菜单 -->
 				<view class="user-menus" style="margin-top: 20rpx;">
 					<view class="menu-title">{{$t('我的服务')}}</view>
@@ -244,7 +276,7 @@
 								<text>{{$t(item.name)}}</text>
 							</view>
 						</block>
-
+				
 						<button class="item" open-type='contact' v-if="routineContact == 1">
 							<image src="/static/images/contact.png"></image>
 							<text>{{$t('联系客服')}}</text>
@@ -287,7 +319,8 @@
 		getMenuList,
 		getUserInfo,
 		setVisit,
-		mpBindingPhone
+		mpBindingPhone,
+		userinfo
 	} from '@/api/user.js';
 	import {
 		wechatAuthV2,
@@ -361,7 +394,7 @@
 					},
 					{
 						img: 'icon-daipingjia',
-						title: '待评价',
+						title: '已完成',
 						url: '/pages/goods/order_list/index?status=3'
 					},
 					{
@@ -399,6 +432,11 @@
 				my_banner_status: 1,
 				is_diy: uni.getStorageSync('is_diy'),
 				copyRightPic: '/static/images/support.png', //版权图片
+				award_range: '', // 可收益积分
+				speed: '', // 贡献值
+				integral: '', // 消费券
+				reorder_integral: '', // 可复消积分
+				stock_integral: '', // 股权积分
 			}
 		},
 		onLoad(option) {
@@ -441,6 +479,7 @@
 			let curRoute = routes[routes.length - 1].route //获取当前页面路由
 			this.activeRouter = '/' + curRoute
 			this.getCopyRight();
+			this.userinfo()
 		},
 		onReady() {
 			let self = this
@@ -476,6 +515,18 @@
 				Auth.isWeixin() && Auth.toAuth('snsapi_userinfo', '/pages/user/index');
 				//#endif
 			},
+			// 积分数
+			async userinfo() {
+				const data = await userinfo()
+				console.log('1111', data);
+				this.award_range = data.award_range  // 可收益积分
+				this.speed = data.speed, // 贡献值
+				this.integral = data.integral  // 消费券
+				this.reorder_integral = data.reorder_integral  // 可复消积分
+				this.stock_integral = data.stock_integral  // 股权积分
+			},
+			
+			
 			editSuccess() {
 				this.editModal = false
 				this.getUserInfo();
@@ -765,7 +816,33 @@
 				if (copyRight.copyrightImage) {
 					this.copyRightPic = copyRight.copyrightImage
 				}
-			}
+			},
+			// 积分
+			shouyi() {
+				uni.navigateTo({
+					url: '/pages/users/user_jifen/income'
+				})
+			},
+			fuxiao() {
+				uni.navigateTo({
+					url: '/pages/users/user_jifen/repeat'
+				})
+			},
+			guquan() {
+				uni.navigateTo({
+					url: '/pages/users/user_jifen/equity'
+				})
+			},
+			xiaofei() {
+				uni.navigateTo({
+					url: '/pages/users/user_jifen/consumption'
+				})
+			},
+			gongxian() {
+				uni.navigateTo({
+					url: '/pages/users/user_jifen/contribute'
+				})
+			},
 		}
 	}
 </script>
@@ -1095,7 +1172,8 @@
 					color: #fff;
 
 					.num-item {
-						width: 33.33%;
+						// width:33.33%;
+						width:50%;
 						text-align: center;
 
 						&~.num-item {
@@ -1361,4 +1439,25 @@
 		padding-bottom: constant(safe-area-inset-bottom);
 		padding-bottom: env(safe-area-inset-bottom);
 	}
+	
+	.list-box{
+		.shouyi {
+			width: 120rpx;
+			height: 140rpx;
+			margin: auto 8rpx;
+			.jfs {
+				text-align: center;
+				font-size: 36rpx;
+				font-weight: bold;
+				color: #333333;
+			}
+			.jf {
+				text-align: center;
+				font-size: 24rpx;
+				font-weight: 500;
+				color: #666666;
+			}
+		}
+	}
+	
 </style>

+ 305 - 0
pages/users/login/forget.vue

@@ -0,0 +1,305 @@
+<template>
+	<view class="container">
+		<view class="container_text" >
+			<image class="banner-img" src="../../users/static/beijing.jpg" mode="scaleToFill"></image>
+		</view>
+		<!-- <view class="loginTitle"><text>注册</text></view> -->
+		<view class="login_text">
+			<view class="login_input flex">
+				<view class="login_img"><image src="../../users/static/phone.png"></image></view>
+				<view class="login_name"><input class="uni-input" v-model="phone" focus placeholder="请输入手机号" /></view>
+			</view>
+			<view class="login_input flex">
+				<view class="login_img"><image src="../../users/static/code.png"></image></view>
+				<view class="login_name"><input class="uni-input" type="password" v-model="password" focus placeholder="请输入新密码" /></view>
+			</view>
+			<view class="login_input flex">
+				<view class="login_img"><image src="../../users/static/code.png"></image></view>
+				<view class="login_name"><input class="uni-input" type="text" v-model="invitation" focus placeholder="请重新输入新密码" /></view>
+			</view>
+			<view class="login_input flex">
+				<view class="login_img"><image src="../../users/static/yzm.png"></image></view>
+				<view class="login_name flex">
+					<input class="uni-input width" v-model="code" focus placeholder="请输入验证码" />
+					<view class="code" @click="verification">{{ countDown == 0 ? '验证码' : countDown }}</view>
+				</view>
+			</view>
+			<view><button type="green" @click="register" class="uni-button uni-button-yello">确认修改</button></view>
+			<!-- <view class="choose">
+				<view class="reg">忘记密码</view>
+				<view class="xian">|</view>
+				<view class="zhuce">手机登录</view>
+			</view> -->
+		</view>
+	</view>
+</template>
+<script>
+// import { register, verify } from '@/api/login.js';
+export default {
+	data() {
+		return {
+			phone: '', //用户
+			password: '', //密码
+			repassword: '',
+			invitation: '', //邀请码
+			code: '', //验证码
+			time: '', //保存倒计时对象
+			countDown: 0 ,//倒计时
+			nickname: '', // 昵称
+		};
+	},
+	onLoad() {
+		this.invitation = uni.getStorageSync('spread')||'';
+		console.log(this.invitation);
+	},
+	watch: {
+		// 监听倒计时
+		countDown(i) {
+			if (i == 0) {
+				clearInterval(this.time);
+			}
+		}
+	},
+	methods: {
+		// 注册
+		register() {
+			let obj = this;
+			if (obj.phone == '') {
+				obj.$api.msg('请输入电话号码');
+				return;
+			}
+			if (obj.nickname == '') {
+				obj.$api.msg('请输入昵称');
+				return;
+			}
+			if (!/(^1[1|2|3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone)) {
+				obj.$api.msg('请输入正确的手机号');
+				return;
+			}
+			if (obj.password == '') {
+				obj.$api.msg('请输入密码');
+				return;
+			}
+			if (obj.repassword == '') {
+				obj.$api.msg('请再次输入密码');
+				return;
+			}
+			if (obj.repassword != obj.password) {
+				obj.$api.msg('两次密码不正确');
+				return;
+			}
+			// if (obj.invitation == '') {
+			// 	obj.$api.msg('请输入邀请码');
+			// 	return;
+			// }
+			if (obj.code == '') {
+				obj.$api.msg('请输入验证码');
+				return;
+			}
+			register({
+				nickname:obj.nickname,
+				account: obj.phone, //账号
+				captcha: obj.code, //验证码
+				password: obj.password ,//密码
+				spread:obj.invitation//上级推广人
+			}).then(function(e) {
+				uni.showToast({
+					title:'注册成功',
+					duration:2000,
+					position:'top'
+				});
+				setTimeout(function () {
+					uni.navigateTo({
+						url: '/pages/public/login'
+					});
+				},1000)
+				
+			});
+			//调用注册接口,成功跳转登录页
+		},
+		//发送验证码
+		verification() {
+			let obj = this;
+			if (this.phone == '') {
+				this.$api.msg('请输入电话号码');
+				return;
+			}
+			if (this.phone.length < 11) {
+				this.$api.msg('请输入正确的手机号');
+				return;
+			}
+			// 判断是否在倒计时
+			if (obj.countDown > 0) {
+				return false;
+			} else {
+				obj.countDown = 60;
+				obj.time = setInterval(() => {
+					obj.countDown--;
+				}, 1000);
+				//调用验证码接口
+				verify({
+					phone: obj.phone,
+					type: 'register'
+				})
+					.then(({ data }) => {})
+					.catch(err => {
+						console.log(err);
+					});
+			}
+		},
+		login() {
+			//返回登录
+			// uni.navigateTo({
+			// 	url: '/pages/public/login'
+			// });
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	height: 100%;
+}
+.container {
+	width: 100%;
+	height: 100%;
+	background-size: 100%;
+}
+.container_text {
+	width: 100%;
+	height: 500rpx;
+	top: 0rpx;
+	.banner-img {
+		width: 100%;
+		height: 100%;
+	}
+}
+.login_text {
+	// margin: auto 30rpx;
+	position: relative;
+	padding: 100rpx 102rpx;
+	background-color: #ffffff;
+	margin-top: -20rpx;
+	border-radius: 20rpx;
+	.login_input {
+		border-bottom: 1px solid #f0f0f0;
+		margin-bottom: 65rpx;
+		.login_img image {
+			height: 35rpx;
+			width: 29rpx;
+			margin-right: 20rpx;
+		}
+		.uni-input {
+			text-align: left;
+			width: 470rpx;
+			font-size: 28rpx !important;
+		}
+		.login_name {
+			color: #333333;
+		}
+	}
+
+	.other {
+		margin-top: 60rpx;
+		.fenge {
+			width: 30%;
+			height: 2rpx;
+			background-color: #eeeeee;
+		}
+		.qita {
+			font-size: 28rpx;
+			color: #999999;
+		}
+	}
+	.weixin {
+		width: 75rpx;
+		height: 75rpx;
+		margin: 25rpx auto;
+	}
+	.weixin image {
+		width: 100%;
+		height: 100%;
+	}
+	.weixin_text {
+		text-align: center;
+		font-size: 28rpx;
+		color: #999999;
+	}
+	.forget {
+		font-size: 28rpx;
+		width: 100%;
+		text-align: right;
+		color: #999999;
+	}
+
+	.uni-button-yello {
+		color: #ffffff;
+		// margin: 40rpx 10rpx;
+		// border-radius: 50rpx;
+		
+		background: linear-gradient(-30deg, #FF3106, #FF8F3B);
+		border-radius: 10rpx;
+	}
+	
+	.uni-button {
+		height: 85rpx;
+		line-height: 85rpx;
+	}
+}
+.loginTitle {
+	position: absolute;
+	top: 250rpx;
+	width: 100%;
+	text-align: center;
+	color: white;
+	font-size: 40rpx;
+}
+
+.forget {
+	width: 100rpx;
+	font-size: 24rpx;
+	color: #ffffff;
+	margin: 0px auto;
+	border-bottom: 1px solid #ffffff;
+}
+.width {
+	width: 325rpx !important;
+}
+.code {
+	color: #ff762d;
+	font-size: 23rpx;
+	border-left: 1px solid #eeeeee;
+	width: 150rpx;
+	flex-shrink: 0;
+	text-align: center;
+}
+
+.choose {
+		display: flex;
+		justify-content: center;
+		margin-top: 15rpx;
+		.reg {
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #ff8d3a;
+		}
+		.xian {
+			color: #FF4C4C;
+			padding-left: 10rpx;
+		}
+		.zhuce {
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #FF4C4C;
+			padding-left: 10rpx;
+		}
+	}
+	
+uni-button {
+	height: 80rpx !important;
+	line-height: 80rpx !important;
+}
+
+</style>
+

+ 42 - 6
pages/users/login/index.vue

@@ -40,20 +40,26 @@
 						</button>
 					</view>
 				</view>
-				<!-- 	<view class="item" v-if="isShowCode">
+					<view class="item" v-if="isShowCode">
 					<view class="acea-row row-middle">
 						<image src="../static/code_2.png" style="width: 28rpx; height: 32rpx;"></image>
 						<input type="text" :placeholder="$t(`填写验证码`)" class="codeIput" v-model="codeVal" />
 						<view class="code" @click="again"><img :src="codeUrl" /></view>
 					</view>
-				</view> -->
+				</view>
 			</view>
 			<view class="logon" @click="loginMobile" v-if="current !== 0">{{$t(`登录`)}}</view>
 			<view class="logon" @click="submit" v-if="current === 0">{{$t(`登录`)}}</view>
 			<!-- #ifndef APP-PLUS -->
 			<view class="tips">
-				<view v-if="current==0" @click="current = 1">{{$t(`快速登录`)}}</view>
-				<view v-if="current==1" @click="current = 0">{{$t(`账号登录`)}}</view>
+				<!-- <view v-if="current==0" @click="current = 1">{{$t(`快速登录`)}}</view> -->
+				<!-- <view v-if="current==1" @click="current = 0">{{$t(`账号登录`)}}</view> -->
+			</view>
+			<!-- TODO -->
+			<view class="choose">
+				<view class="reg"  @click="forget">忘记密码</view>
+				<view class="xian">|</view>
+				<view class="zhuce" @click="zhuce">注册账号</view>
 			</view>
 			<!-- #endif -->
 			<!-- #ifdef APP-PLUS -->
@@ -88,12 +94,12 @@
 				</checkbox-group>
 			</view>
 		</view>
-		<!-- <view class="bottom">
+		<view class="bottom">
 			<view class="ver" v-if="copyRight">{{copyRight}}</view>
 			<view v-else class="ver">© 2014-2023
 				<a href="https://www.crmeb.com">www.crmeb.com</a>
 			</view>
-		</view> -->
+		</view>
 		<Verify @success="success" :captchaType="captchaType" :imgSize="{ width: '330px', height: '155px' }"
 			ref="verify"></Verify>
 	</view>
@@ -196,6 +202,16 @@
 					url: "/pages/users/privacy/index?type=" + type
 				})
 			},
+			zhuce() {
+				uni.navigateTo({
+					url: "/pages/users/login/register" 
+				})
+			},
+			forget() {
+				uni.navigateTo({
+					url: "/pages/users/login/forget" 
+				})
+			},
 			// IOS 版本号判断
 			getSystem(system) {
 				let str
@@ -845,4 +861,24 @@
 	.main-color {
 		color: var(--view-theme);
 	}
+	
+	.choose {
+		display: flex;
+		justify-content: center;
+		.reg {
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #ff8d3a;
+		}
+		.xian {
+			color: #FF4C4C;
+			padding-left: 10rpx;
+		}
+		.zhuce {
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #FF4C4C;
+			padding-left: 10rpx;
+		}
+	}
 </style>

+ 317 - 0
pages/users/login/register.vue

@@ -0,0 +1,317 @@
+<template>
+	<view class="container">
+		<view class="container_text" >
+			<image class="banner-img" src="../../users/static/beijing.jpg" mode="scaleToFill"></image>
+		</view>
+		<!-- <view class="loginTitle"><text>注册</text></view> -->
+		<view class="login_text">
+			<view class="login_input flex">
+				<view class="login_img"><image src="../../users/static/phone.png"></image></view>
+				<view class="login_name"><input class="uni-input" v-model="phone" focus placeholder="请输入手机号" /></view>
+			</view>
+			<view class="login_input flex">
+				<view class="login_img"><image src="../../users/static/code.png"></image></view>
+				<view class="login_name"><input class="uni-input" type="password" v-model="password" focus placeholder="请输入密码" /></view>
+			</view>
+			<view class="login_input flex">
+				<view class="login_img"><image src="../../users/static/yzm.png"></image></view>
+				<view class="login_name"><input class="uni-input" type="text" v-model="invitation" focus placeholder="请输入邀请码" /></view>
+			</view>
+			<view class="login_input flex">
+				<view class="login_img"><image src="../../users/static/yzm.png"></image></view>
+				<view class="login_name flex">
+					<input class="uni-input width" v-model="code" focus placeholder="请输入验证码" />
+					<view class="code" @click="verification">{{ countDown == 0 ? '验证码' : countDown }}</view>
+				</view>
+			</view>
+			<view><button type="green" @click="register" class="uni-button uni-button-yello">注册</button></view>
+			<view class="choose">
+				<view class="reg" @click="forget">忘记密码</view>
+				<view class="xian">|</view>
+				<view class="zhuce" @click="deng">手机登录</view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+// import { register, verify } from '@/api/login.js';
+export default {
+	data() {
+		return {
+			phone: '', //用户
+			password: '', //密码
+			repassword: '',
+			invitation: '', //邀请码
+			code: '', //验证码
+			time: '', //保存倒计时对象
+			countDown: 0 ,//倒计时
+			nickname: '', // 昵称
+		};
+	},
+	onLoad() {
+		this.invitation = uni.getStorageSync('spread')||'';
+		console.log(this.invitation);
+	},
+	watch: {
+		// 监听倒计时
+		countDown(i) {
+			if (i == 0) {
+				clearInterval(this.time);
+			}
+		}
+	},
+	methods: {
+		// 注册
+		register() {
+			let obj = this;
+			if (obj.phone == '') {
+				obj.$api.msg('请输入电话号码');
+				return;
+			}
+			if (obj.nickname == '') {
+				obj.$api.msg('请输入昵称');
+				return;
+			}
+			if (!/(^1[1|2|3|4|5|6|7|8|9][0-9]{9}$)/.test(this.phone)) {
+				obj.$api.msg('请输入正确的手机号');
+				return;
+			}
+			if (obj.password == '') {
+				obj.$api.msg('请输入密码');
+				return;
+			}
+			if (obj.repassword == '') {
+				obj.$api.msg('请再次输入密码');
+				return;
+			}
+			if (obj.repassword != obj.password) {
+				obj.$api.msg('两次密码不正确');
+				return;
+			}
+			// if (obj.invitation == '') {
+			// 	obj.$api.msg('请输入邀请码');
+			// 	return;
+			// }
+			if (obj.code == '') {
+				obj.$api.msg('请输入验证码');
+				return;
+			}
+			register({
+				nickname:obj.nickname,
+				account: obj.phone, //账号
+				captcha: obj.code, //验证码
+				password: obj.password ,//密码
+				spread:obj.invitation//上级推广人
+			}).then(function(e) {
+				uni.showToast({
+					title:'注册成功',
+					duration:2000,
+					position:'top'
+				});
+				setTimeout(function () {
+					uni.navigateTo({
+						url: '/pages/public/login'
+					});
+				},1000)
+				
+			});
+			//调用注册接口,成功跳转登录页
+		},
+		// 忘记密码
+		forget() {
+			uni.navigateTo({
+				url: "/pages/users/login/forget" 
+			})
+		},
+		
+		deng() {
+			uni.navigateTo({
+				url: "/pages/users/login/index" 
+			})
+		},
+		//发送验证码
+		verification() {
+			let obj = this;
+			if (this.phone == '') {
+				this.$api.msg('请输入电话号码');
+				return;
+			}
+			if (this.phone.length < 11) {
+				this.$api.msg('请输入正确的手机号');
+				return;
+			}
+			// 判断是否在倒计时
+			if (obj.countDown > 0) {
+				return false;
+			} else {
+				obj.countDown = 60;
+				obj.time = setInterval(() => {
+					obj.countDown--;
+				}, 1000);
+				//调用验证码接口
+				verify({
+					phone: obj.phone,
+					type: 'register'
+				})
+					.then(({ data }) => {})
+					.catch(err => {
+						console.log(err);
+					});
+			}
+		},
+		login() {
+			//返回登录
+			// uni.navigateTo({
+			// 	url: '/pages/public/login'
+			// });
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	height: 100%;
+}
+.container {
+	width: 100%;
+	height: 100%;
+	background-size: 100%;
+}
+.container_text {
+	width: 100%;
+	height: 500rpx;
+	top: 0rpx;
+	.banner-img {
+		width: 100%;
+		height: 100%;
+	}
+}
+.login_text {
+	// margin: auto 30rpx;
+	position: relative;
+	padding: 100rpx 102rpx;
+	background-color: #ffffff;
+	margin-top: -20rpx;
+	border-radius: 20rpx;
+	.login_input {
+		border-bottom: 1px solid #f0f0f0;
+		margin-bottom: 65rpx;
+		.login_img image {
+			height: 35rpx;
+			width: 29rpx;
+			margin-right: 20rpx;
+		}
+		.uni-input {
+			text-align: left;
+			width: 470rpx;
+			font-size: 28rpx !important;
+		}
+		.login_name {
+			color: #333333;
+		}
+	}
+
+	.other {
+		margin-top: 60rpx;
+		.fenge {
+			width: 30%;
+			height: 2rpx;
+			background-color: #eeeeee;
+		}
+		.qita {
+			font-size: 28rpx;
+			color: #999999;
+		}
+	}
+	.weixin {
+		width: 75rpx;
+		height: 75rpx;
+		margin: 25rpx auto;
+	}
+	.weixin image {
+		width: 100%;
+		height: 100%;
+	}
+	.weixin_text {
+		text-align: center;
+		font-size: 28rpx;
+		color: #999999;
+	}
+	.forget {
+		font-size: 28rpx;
+		width: 100%;
+		text-align: right;
+		color: #999999;
+	}
+
+	.uni-button-yello {
+		color: #ffffff;
+		// margin: 40rpx 10rpx;
+		// border-radius: 50rpx;
+		
+		background: linear-gradient(-30deg, #FF3106, #FF8F3B);
+		border-radius: 10rpx;
+	}
+	
+	.uni-button {
+		height: 85rpx;
+		line-height: 85rpx;
+	}
+}
+.loginTitle {
+	position: absolute;
+	top: 250rpx;
+	width: 100%;
+	text-align: center;
+	color: white;
+	font-size: 40rpx;
+}
+
+.forget {
+	width: 100rpx;
+	font-size: 24rpx;
+	color: #ffffff;
+	margin: 0px auto;
+	border-bottom: 1px solid #ffffff;
+}
+.width {
+	width: 325rpx !important;
+}
+.code {
+	color: #ff762d;
+	font-size: 23rpx;
+	border-left: 1px solid #eeeeee;
+	width: 150rpx;
+	flex-shrink: 0;
+	text-align: center;
+}
+
+.choose {
+		display: flex;
+		justify-content: center;
+		margin-top: 15rpx;
+		.reg {
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #ff8d3a;
+		}
+		.xian {
+			color: #FF4C4C;
+			padding-left: 10rpx;
+		}
+		.zhuce {
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #FF4C4C;
+			padding-left: 10rpx;
+		}
+	}
+	
+uni-button {
+	height: 80rpx !important;
+	line-height: 80rpx !important;
+}
+
+</style>
+

BIN
pages/users/static/beijing.jpg


BIN
pages/users/static/bj.png


BIN
pages/users/static/code.png


BIN
pages/users/static/gq.png


BIN
pages/users/static/hz.png


BIN
pages/users/static/icon-lb.png


BIN
pages/users/static/lb.png


BIN
pages/users/static/lb2.png


BIN
pages/users/static/lb3.png


BIN
pages/users/static/lb4.png


BIN
pages/users/static/phone.png


BIN
pages/users/static/sp.png


BIN
pages/users/static/tc.png


BIN
pages/users/static/xsqg(1).png


BIN
pages/users/static/xsqg(2).png


BIN
pages/users/static/yaoqong.png


BIN
pages/users/static/yzm.png


BIN
pages/users/static/》(1).png


BIN
pages/users/static/》.png


BIN
pages/users/static/分享有礼 拷贝.png


BIN
pages/users/static/图层 542.png


BIN
pages/users/static/图层 625.png


BIN
pages/users/static/在线考试 拷贝.png


BIN
pages/users/static/教育商城 拷贝.png


BIN
pages/users/static/注册_slices (2).zip


BIN
pages/users/static/消费积分_slices.zip


BIN
pages/users/static/矢量智能对象.png


BIN
pages/users/static/组 2314(1).png


BIN
pages/users/static/组 2314.png


BIN
pages/users/static/组 3 拷贝 2.png


+ 500 - 0
pages/users/user_jifen/consumption.vue

@@ -0,0 +1,500 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="status_bar"><!-- 这里是状态栏 --></view>
+			<view class="body-title">
+				<view class="goback-box" @click="toBack">
+				</view>
+				<view class="header">消费券积分</view>
+			</view>
+			<view class="content-bg">
+				<image src="../../users/static/tc.png" mode=""></image>
+			</view>
+			<view class="money-box">
+				<view class="money">{{ yj || 0 }}</view>
+				<view class="col">当前余额</view>
+			</view>
+		</view>
+		<view class="info-box flex">
+			<view class="info-item">
+				<view class="info-font">累计收入</view>
+				<view class="info-num">{{userInfo.brokerage  || '0'}}</view>
+			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">累计支出</view>
+				<view class="info-num">{{userInfo.extract || '0'}}</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: height }" 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.title }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.add_time }}</text>
+								</view>
+							</view>
+							<view class="money">
+								<view>{{ (item.pm == 0 ? '-' : '+') + item.number * 1 }}</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 {
+	// 	mapState,
+	// 	mapMutations
+	// } from 'vuex';
+	// import {
+	// 	getCommissionInfo,
+	// 	getUserInfo
+	// } from '@/api/user.js';
+	// import {
+	// 	getMoneyStyle
+	// } from '@/utils/rocessor.js';
+	// import {
+	// 	mapGetters
+	// } from 'vuex';
+	// import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	// import empty from '@/components/empty';
+	// import {
+	// 	spreadCommission,
+	// 	userBalance,
+	// 	extractBank
+	// } from '@/api/wallet.js';
+	export default {
+		// filters: {
+		// 	getMoneyStyle
+		// },
+		// 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.height = resu.windowHeight - res[0].top + 'px';
+						console.log('打印页面的剩余高度', _this.height);
+					});
+				},
+				fail: res => {}
+			});
+		},
+		data() {
+			return {
+				userInfo: {},
+				yj: '',
+				height: '',
+				// 头部图高度
+				maxheight: '',
+				tabCurrentIndex: 0,
+				orderStatusSum: 0,
+				recharge: 0,
+				navList: [
+					{
+						state: 4,
+						text: '支出',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页数
+						limit: 10 //每次信息条数
+					},
+					{
+						state: 3,
+						text: '收入',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页数
+						limit: 10 //每次信息条数
+					}
+				],
+				money: ''
+			};
+		},
+		onLoad(options) {},
+		onShow() {
+			this.extractBank()
+			this.getUserInfo()
+			this.loadData();
+		},
+		methods: {
+			getUserInfo() {
+				getUserInfo({}).then(({
+					data
+				}) => {
+					this.userInfo = data
+				});
+			},
+			extractBank() {
+				extractBank().then(res => {
+					console.log(res)
+					this.yj = res.data.brokerage_price
+				})
+			},
+			toBack() {
+				uni.switchTab({
+					url: '/pages/user/user'
+				});
+			},
+			// 页面跳转
+			navto(e) {
+				uni.navigateTo({
+					url: e
+				});
+			},
+			
+			//获取收入支出信息
+			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') {
+					//防止重复加载
+					return;
+				}
+				// 修改当前对象状态为加载中
+				navItem.loadingType = 'loading';
+
+				spreadCommission({
+						page: navItem.page,
+						limit: navItem.limit,
+
+					}, state)
+					.then(({
+						data
+					}) => {
+						if (data.length > 0) {
+							data.forEach(e => {
+								navItem.orderList = navItem.orderList.concat(e.list);
+							})
+							console.log(navItem.orderList);
+							navItem.page++;
+						}
+						//判断是否还有数据, 有改为more, 没有改为noMore
+						if (navItem.limit == data.length) {
+							navItem.loadingType = 'more';
+							return;
+						} else {
+							navItem.loadingType = 'noMore';
+						}
+						uni.hideLoading();
+						this.$set(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: #fff;
+				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 {
+			padding-top: 50rpx;
+			width: 50%;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			line-height: 1;
+
+			.info-font {
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #999999;
+			}
+
+			.info-num {
+				margin-top: 30rpx;
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #181818;
+			}
+		}
+
+		.shu {
+			width: 2rpx;
+			height: 74rpx;
+			background: #dcdfe6;
+			margin-top: 55rpx;
+		}
+	}
+
+	.money-box {
+		position: relative;
+		z-index: 2;
+		/* #ifdef H5 */
+		padding-top: 90rpx;
+		/* #endif */
+		color: #fff;
+		text-align: center;
+		/* #ifdef APP-PLUS */
+		height: 200rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		/* #endif */
+		/* #ifdef MP-WEIXIN */
+		padding-top: 40rpx;
+		/* #endif */
+
+		.money {
+			font-size: 72rpx;
+			font-weight: bold;
+			color: #fff;
+		}
+
+		.text {
+			font-size: 30rpx;
+		}
+	}
+	.box {
+		width: 670rpx;
+		height: 50rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.moneybtn-box {
+		display: flex;
+		justify-content: space-between;
+		position: relative;
+		z-index: 2;
+		padding: -20rpx 10rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #6E4019;
+	}
+	.moneybtn-box1 {
+		display: flex;
+		justify-content: space-between;
+		position: relative;
+		z-index: 2;
+		color: #6E4019;
+		padding: 40rpx 60rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #6E4019;
+	}
+
+
+	.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: 26rpx;
+				}
+
+				.time {
+					font-size: 26rpx;
+				}
+			}
+
+			.money {
+				color: #fd5b23;
+				font-size:  26rpx;
+				text-align: right;
+
+				.status {
+					color: #6E4019;
+				}
+			}
+		}
+	}
+
+	.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>

+ 222 - 0
pages/users/user_jifen/contribute.vue

@@ -0,0 +1,222 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="status_bar"><!-- 这里是状态栏 --></view>
+			<view class="body-title">
+				<view class="goback-box" @click="toBack">
+				</view>
+				<view class="header">贡献值</view>
+			</view>
+			<view class="content-bg">
+				<image src="../../users/static/tc.png" mode=""></image>
+			</view>
+			<view class="money-box">
+				<view class="money">{{ 34 || 0 }}</view>
+				<view class="col">当前余额</view>
+			</view>
+		</view>
+		<!-- 列表 -->
+		<view class="list" v-for="item in 4">
+			<view class="le">
+				<view class="title">购买商品赠送</view>
+				<view class="time">2023.12.01</view>
+			</view>
+			<view class="rig">
+				<view class="sumb">+10</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {speed} from '@/api/user.js'
+	export default {
+		data() {
+			return {};
+		},
+		onLoad() {
+			this.speed()
+		},
+		onShow() {},
+		methods: {
+			async speed() {
+				const data = await speed()
+				console.log('123', data);
+			}
+		}
+	};
+</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: #fff;
+				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 {
+			padding-top: 50rpx;
+			width: 50%;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			line-height: 1;
+
+			.info-font {
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #999999;
+			}
+
+			.info-num {
+				margin-top: 30rpx;
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #181818;
+			}
+		}
+
+		.shu {
+			width: 2rpx;
+			height: 74rpx;
+			background: #dcdfe6;
+			margin-top: 55rpx;
+		}
+	}
+
+	.money-box {
+		position: relative;
+		z-index: 2;
+		/* #ifdef H5 */
+		padding-top: 90rpx;
+		/* #endif */
+		color: #fff;
+		text-align: center;
+		/* #ifdef APP-PLUS */
+		height: 200rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		/* #endif */
+		/* #ifdef MP-WEIXIN */
+		padding-top: 40rpx;
+		/* #endif */
+
+		.money {
+			font-size: 72rpx;
+			font-weight: bold;
+			color: #fff;
+		}
+
+		.text {
+			font-size: 30rpx;
+		}
+	}
+	.list {
+		display: flex;
+		justify-content: space-between;
+		width: 750rpx;
+		height: 130rpx;
+		background-color: #fff;
+		
+		.le {
+			padding-left: 50rpx;
+			.title {
+				font-size: 30rpx;
+				font-weight: 500;
+				color: #666666;
+				padding-top: 23rpx;
+			}
+			.time {
+				font-size: 26rpx;
+				font-weight: 500;
+				color: #AEAEAE;
+				padding-top: 13rpx;
+			}
+		}
+		.rig {
+			padding-right: 47rpx;
+			padding-top: 43rpx;
+			.sumb {
+				font-size: 36rpx;
+				font-weight: bold;
+				color: #FD3B39;
+			}
+		}
+	}
+
+   
+</style>

+ 525 - 0
pages/users/user_jifen/equity.vue

@@ -0,0 +1,525 @@
+<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="../../users/static/tc.png" mode=""></image>
+			</view>
+			<view class="money-box">
+				<view class="money">{{ yj || 0 }}</view>
+				<view>当前余额</view>
+			</view>
+			<view class="box">
+				<view class="moneybtn-box1">
+					<view class="money-btn"></view>
+					<!-- <view class="money-btn" @click="navto('/pages/transfer/transfer')">积分转账</view> -->
+					<view class="money-btn">兑换股权积分</view>
+				</view>
+				<view class="moneybtn-box">
+					<view class="money-btn"></view>
+					<!-- <view class="money-btn" @click="navto('/pages/Withdrawal/Withdrawal')">积分提现</view> -->
+					<view class="money-btn">积分互转</view>
+				</view>
+			</view>
+			
+		</view>
+		
+		<view class="info-box flex">
+			<view class="info-item">
+				<view class="info-font">累计收入</view>
+				<view class="info-num">{{userInfo.brokerage  || '0'}}</view>
+			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">累计支出</view>
+				<view class="info-num">{{userInfo.extract || '0'}}</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: height }" 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.title }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.add_time }}</text>
+								</view>
+							</view>
+							<view class="money">
+								<view>{{ (item.pm == 0 ? '-' : '+') + item.number * 1 }}</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 {
+	// 	mapState,
+	// 	mapMutations
+	// } from 'vuex';
+	// import {
+	// 	getCommissionInfo,
+	// 	getUserInfo
+	// } from '@/api/user.js';
+	// import {
+	// 	getMoneyStyle
+	// } from '@/utils/rocessor.js';
+	// import {
+	// 	mapGetters
+	// } from 'vuex';
+	// import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	// import empty from '@/components/empty';
+	// import {
+	// 	spreadCommission,
+	// 	userBalance,
+	// 	extractBank
+	// } from '@/api/wallet.js';
+	export default {
+		// filters: {
+		// 	getMoneyStyle
+		// },
+		// 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.height = resu.windowHeight - res[0].top + 'px';
+						console.log('打印页面的剩余高度', _this.height);
+					});
+				},
+				fail: res => {}
+			});
+		},
+		data() {
+			return {
+				userInfo: {},
+				yj: '',
+				height: '',
+				// 头部图高度
+				maxheight: '',
+				tabCurrentIndex: 0,
+				orderStatusSum: 0,
+				recharge: 0,
+				navList: [
+					// {
+					// 	state: 0,
+					// 	text: '全部',
+					// 	loadingType: 'more',
+					// 	orderList: [],
+					// 	page: 1, //当前页数
+					// 	limit: 10 //每次信息条数
+					// },
+					{
+						state: 4,
+						text: '支出',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页数
+						limit: 10 //每次信息条数
+					},
+					{
+						state: 3,
+						text: '收入',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页数
+						limit: 10 //每次信息条数
+					}
+				],
+				money: ''
+			};
+		},
+		onLoad(options) {},
+		onShow() {
+			this.extractBank()
+			this.getUserInfo()
+			this.loadData();
+		},
+		methods: {
+			getUserInfo() {
+				getUserInfo({}).then(({
+					data
+				}) => {
+					this.userInfo = data
+				});
+			},
+			extractBank() {
+				extractBank().then(res => {
+					console.log(res)
+					this.yj = res.data.brokerage_price
+				})
+			},
+			toBack() {
+				uni.switchTab({
+					url: '/pages/user/user'
+				});
+			},
+			// 页面跳转
+			navto(e) {
+				uni.navigateTo({
+					url: e
+				});
+			},
+			
+			//获取收入支出信息
+			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') {
+					//防止重复加载
+					return;
+				}
+				// 修改当前对象状态为加载中
+				navItem.loadingType = 'loading';
+
+				spreadCommission({
+						page: navItem.page,
+						limit: navItem.limit,
+
+					}, state)
+					.then(({
+						data
+					}) => {
+						if (data.length > 0) {
+							data.forEach(e => {
+								navItem.orderList = navItem.orderList.concat(e.list);
+							})
+							console.log(navItem.orderList);
+							navItem.page++;
+						}
+						//判断是否还有数据, 有改为more, 没有改为noMore
+						if (navItem.limit == data.length) {
+							navItem.loadingType = 'more';
+							return;
+						} else {
+							navItem.loadingType = 'noMore';
+						}
+						uni.hideLoading();
+						this.$set(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-weight: bold;
+				color: #fff;
+				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-weight: bold;
+				color: #999999;
+				margin-top: 50rpx;
+			}
+
+			.info-num {
+				margin-top: 30rpx;
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #181818;
+			}
+		}
+
+		.shu {
+			width: 2rpx;
+			height: 74rpx;
+			background: #dcdfe6;
+			margin-top: 50rpx;
+		}
+	}
+
+	.money-box {
+		position: relative;
+		z-index: 2;
+		/* #ifdef H5 */
+		padding-top: 90rpx;
+		/* #endif */
+		color: #fff;
+		text-align: center;
+		/* #ifdef APP-PLUS */
+		height: 200rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		/* #endif */
+		/* #ifdef MP-WEIXIN */
+		padding-top: 40rpx;
+		/* #endif */
+
+		.money {
+			font-size: 72rpx;
+			font-weight: bold;
+			color: #fff;
+		}
+
+		.text {
+			font-size: 30rpx;
+		}
+	}
+	.box {
+		width: 670rpx;
+		height: 50rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.moneybtn-box {
+		display: flex;
+		justify-content: space-between;
+		position: relative;
+		z-index: 2;
+		padding: -20rpx 10rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #fff;
+	}
+	.moneybtn-box1 {
+		display: flex;
+		justify-content: space-between;
+		position: relative;
+		z-index: 2;
+		color: #fff;
+		padding: 40rpx 60rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #fff;
+	}
+
+
+	.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: 26rpx;
+					// color: $font-color-base;
+				}
+
+				.time {
+					font-size: 26rpx;
+					// color: $font-color-light;
+				}
+			}
+
+			.money {
+				color: #fd5b23;
+				font-size: 26rpx;
+				text-align: right;
+
+				.status {
+					color: #fd5b23;
+				}
+			}
+		}
+	}
+
+	.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/users/user_jifen/income.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">
+				</view>
+				<view class="header">绿色积分</view>
+			</view>
+			<view class="content-bg">
+				<image src="../../users/static/tc.png" mode=""></image>
+			</view>
+			<view class="money-box">
+				<view class="money">{{ yj || 0 }}</view>
+				<view class="col">当前余额</view>
+			</view>
+		</view>
+		<view class="info-box flex">
+			<view class="info-item">
+				<view class="info-font">累计收入</view>
+				<view class="info-num">{{userInfo.brokerage  || '0'}}</view>
+			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">累计支出</view>
+				<view class="info-num">{{userInfo.extract || '0'}}</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: height }" 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.title }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.add_time }}</text>
+								</view>
+							</view>
+							<view class="money">
+								<view>{{ (item.pm == 0 ? '-' : '+') + item.number * 1 }}</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 {award} from '@/api/user.js'
+	// import {
+	// 	mapState,
+	// 	mapMutations
+	// } from 'vuex';
+	// import {
+	// 	getCommissionInfo,
+	// 	getUserInfo
+	// } from '@/api/user.js';
+	// import {
+	// 	getMoneyStyle
+	// } from '@/utils/rocessor.js';
+	// import {
+	// 	mapGetters
+	// } from 'vuex';
+	// import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	// import empty from '@/components/empty';
+	// import {
+	// 	spreadCommission,
+	// 	userBalance,
+	// 	extractBank
+	// } from '@/api/wallet.js';
+	export default {
+		// filters: {
+		// 	getMoneyStyle
+		// },
+		// 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.height = resu.windowHeight - res[0].top + 'px';
+						console.log('打印页面的剩余高度', _this.height);
+					});
+				},
+				fail: res => {}
+			});
+		},
+		data() {
+			return {
+				userInfo: {},
+				yj: '',
+				height: '',
+				// 头部图高度
+				maxheight: '',
+				tabCurrentIndex: 0,
+				orderStatusSum: 0,
+				recharge: 0,
+				navList: [
+					{
+						state: 4,
+						text: '支出',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页数
+						limit: 10 //每次信息条数
+					},
+					{
+						state: 3,
+						text: '收入',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页数
+						limit: 10 //每次信息条数
+					}
+				],
+				money: ''
+			};
+		},
+		onLoad(options) {},
+		onShow() {
+			// this.extractBank()
+			// this.getUserInfo()
+			// this.loadData();
+			this.award();
+		},
+		methods: {
+			getUserInfo() {
+				getUserInfo({}).then(({
+					data
+				}) => {
+					this.userInfo = data
+				});
+			},
+			async award() {
+				const data = await award()
+				console.log('123',data);
+			},
+			extractBank() {
+				extractBank().then(res => {
+					console.log(res)
+					this.yj = res.data.brokerage_price
+				})
+			},
+			toBack() {
+				uni.switchTab({
+					url: '/pages/user/user'
+				});
+			},
+			// 页面跳转
+			navto(e) {
+				uni.navigateTo({
+					url: e
+				});
+			},
+			
+			//获取收入支出信息
+			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') {
+					//防止重复加载
+					return;
+				}
+				// 修改当前对象状态为加载中
+				navItem.loadingType = 'loading';
+
+				spreadCommission({
+						page: navItem.page,
+						limit: navItem.limit,
+
+					}, state)
+					.then(({
+						data
+					}) => {
+						if (data.length > 0) {
+							data.forEach(e => {
+								navItem.orderList = navItem.orderList.concat(e.list);
+							})
+							console.log(navItem.orderList);
+							navItem.page++;
+						}
+						//判断是否还有数据, 有改为more, 没有改为noMore
+						if (navItem.limit == data.length) {
+							navItem.loadingType = 'more';
+							return;
+						} else {
+							navItem.loadingType = 'noMore';
+						}
+						uni.hideLoading();
+						this.$set(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: #fff;
+				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 {
+			padding-top: 50rpx;
+			width: 50%;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			line-height: 1;
+
+			.info-font {
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #999999;
+			}
+
+			.info-num {
+				margin-top: 30rpx;
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #181818;
+			}
+		}
+
+		.shu {
+			width: 2rpx;
+			height: 74rpx;
+			background: #dcdfe6;
+			margin-top: 55rpx;
+		}
+	}
+
+	.money-box {
+		position: relative;
+		z-index: 2;
+		/* #ifdef H5 */
+		padding-top: 90rpx;
+		/* #endif */
+		color: #fff;
+		text-align: center;
+		/* #ifdef APP-PLUS */
+		height: 200rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		/* #endif */
+		/* #ifdef MP-WEIXIN */
+		padding-top: 40rpx;
+		/* #endif */
+
+		.money {
+			font-size: 72rpx;
+			font-weight: bold;
+			color: #fff;
+		}
+
+		.text {
+			font-size: 30rpx;
+		}
+	}
+	.box {
+		width: 670rpx;
+		height: 50rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.moneybtn-box {
+		display: flex;
+		justify-content: space-between;
+		position: relative;
+		z-index: 2;
+		padding: -20rpx 10rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #6E4019;
+	}
+	.moneybtn-box1 {
+		display: flex;
+		justify-content: space-between;
+		position: relative;
+		z-index: 2;
+		color: #6E4019;
+		padding: 40rpx 60rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #6E4019;
+	}
+
+
+	.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: 26rpx;
+				}
+
+				.time {
+					font-size: 26rpx;
+				}
+			}
+
+			.money {
+				color: #fd5b23;
+				font-size:  26rpx;
+				text-align: right;
+
+				.status {
+					color: #6E4019;
+				}
+			}
+		}
+	}
+
+	.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>

+ 500 - 0
pages/users/user_jifen/repeat.vue

@@ -0,0 +1,500 @@
+<template>
+	<view class="content">
+		<view class="content-money">
+			<view class="status_bar"><!-- 这里是状态栏 --></view>
+			<view class="body-title">
+				<view class="goback-box" @click="toBack">
+				</view>
+				<view class="header">复消积分</view>
+			</view>
+			<view class="content-bg">
+				<image src="../../users/static/tc.png" mode=""></image>
+			</view>
+			<view class="money-box">
+				<view class="money">{{ yj || 0 }}</view>
+				<view class="col">当前余额</view>
+			</view>
+		</view>
+		<view class="info-box flex">
+			<view class="info-item">
+				<view class="info-font">累计收入</view>
+				<view class="info-num">{{userInfo.brokerage  || '0'}}</view>
+			</view>
+			<view class="shu"></view>
+			<view class="info-item">
+				<view class="info-font">累计支出</view>
+				<view class="info-num">{{userInfo.extract || '0'}}</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: height }" 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.title }}</text>
+								</view>
+								<view class="time">
+									<text>{{ item.add_time }}</text>
+								</view>
+							</view>
+							<view class="money">
+								<view>{{ (item.pm == 0 ? '-' : '+') + item.number * 1 }}</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 {
+	// 	mapState,
+	// 	mapMutations
+	// } from 'vuex';
+	// import {
+	// 	getCommissionInfo,
+	// 	getUserInfo
+	// } from '@/api/user.js';
+	// import {
+	// 	getMoneyStyle
+	// } from '@/utils/rocessor.js';
+	// import {
+	// 	mapGetters
+	// } from 'vuex';
+	// import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	// import empty from '@/components/empty';
+	// import {
+	// 	spreadCommission,
+	// 	userBalance,
+	// 	extractBank
+	// } from '@/api/wallet.js';
+	export default {
+		// filters: {
+		// 	getMoneyStyle
+		// },
+		// 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.height = resu.windowHeight - res[0].top + 'px';
+						console.log('打印页面的剩余高度', _this.height);
+					});
+				},
+				fail: res => {}
+			});
+		},
+		data() {
+			return {
+				userInfo: {},
+				yj: '',
+				height: '',
+				// 头部图高度
+				maxheight: '',
+				tabCurrentIndex: 0,
+				orderStatusSum: 0,
+				recharge: 0,
+				navList: [
+					{
+						state: 4,
+						text: '支出',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页数
+						limit: 10 //每次信息条数
+					},
+					{
+						state: 3,
+						text: '收入',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页数
+						limit: 10 //每次信息条数
+					}
+				],
+				money: ''
+			};
+		},
+		onLoad(options) {},
+		onShow() {
+			this.extractBank()
+			this.getUserInfo()
+			this.loadData();
+		},
+		methods: {
+			getUserInfo() {
+				getUserInfo({}).then(({
+					data
+				}) => {
+					this.userInfo = data
+				});
+			},
+			extractBank() {
+				extractBank().then(res => {
+					console.log(res)
+					this.yj = res.data.brokerage_price
+				})
+			},
+			toBack() {
+				uni.switchTab({
+					url: '/pages/user/user'
+				});
+			},
+			// 页面跳转
+			navto(e) {
+				uni.navigateTo({
+					url: e
+				});
+			},
+			
+			//获取收入支出信息
+			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') {
+					//防止重复加载
+					return;
+				}
+				// 修改当前对象状态为加载中
+				navItem.loadingType = 'loading';
+
+				spreadCommission({
+						page: navItem.page,
+						limit: navItem.limit,
+
+					}, state)
+					.then(({
+						data
+					}) => {
+						if (data.length > 0) {
+							data.forEach(e => {
+								navItem.orderList = navItem.orderList.concat(e.list);
+							})
+							console.log(navItem.orderList);
+							navItem.page++;
+						}
+						//判断是否还有数据, 有改为more, 没有改为noMore
+						if (navItem.limit == data.length) {
+							navItem.loadingType = 'more';
+							return;
+						} else {
+							navItem.loadingType = 'noMore';
+						}
+						uni.hideLoading();
+						this.$set(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: #fff;
+				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 {
+			padding-top: 50rpx;
+			width: 50%;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			line-height: 1;
+
+			.info-font {
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #999999;
+			}
+
+			.info-num {
+				margin-top: 30rpx;
+				font-size: 30rpx;
+				font-weight: bold;
+				color: #181818;
+			}
+		}
+
+		.shu {
+			width: 2rpx;
+			height: 74rpx;
+			background: #dcdfe6;
+			margin-top: 55rpx;
+		}
+	}
+
+	.money-box {
+		position: relative;
+		z-index: 2;
+		/* #ifdef H5 */
+		padding-top: 90rpx;
+		/* #endif */
+		color: #fff;
+		text-align: center;
+		/* #ifdef APP-PLUS */
+		height: 200rpx;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		/* #endif */
+		/* #ifdef MP-WEIXIN */
+		padding-top: 40rpx;
+		/* #endif */
+
+		.money {
+			font-size: 72rpx;
+			font-weight: bold;
+			color: #fff;
+		}
+
+		.text {
+			font-size: 30rpx;
+		}
+	}
+	.box {
+		width: 670rpx;
+		height: 50rpx;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.moneybtn-box {
+		display: flex;
+		justify-content: space-between;
+		position: relative;
+		z-index: 2;
+		padding: -20rpx 10rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #6E4019;
+	}
+	.moneybtn-box1 {
+		display: flex;
+		justify-content: space-between;
+		position: relative;
+		z-index: 2;
+		color: #6E4019;
+		padding: 40rpx 60rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #6E4019;
+	}
+
+
+	.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: 26rpx;
+				}
+
+				.time {
+					font-size: 26rpx;
+				}
+			}
+
+			.money {
+				color: #fd5b23;
+				font-size:  26rpx;
+				text-align: right;
+
+				.status {
+					color: #6E4019;
+				}
+			}
+		}
+	}
+
+	.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/images/cart-ic.png


BIN
static/images/cart.png


BIN
static/images/fenlei-ic.png


BIN
static/images/fenlei.png


BIN
static/images/my-ic.png


BIN
static/images/my.png


BIN
static/images/shouye-ic.png


BIN
static/images/shouye.png


BIN
static/images/背景图.png


BIN
static/shouye/lb.png


BIN
static/shouye/lb2.png


BIN
static/shouye/lb3.png


BIN
static/shouye/lb4.png


BIN
static/shouye/xsqg(1).png


BIN
static/shouye/xsqg(2).png


BIN
static/shouye/xsqg.png


BIN
static/shouye/》(1).png


BIN
static/shouye/》.png


BIN
static/shouye/分享有礼 拷贝.png


BIN
static/shouye/图层 542.png


BIN
static/shouye/图层 625.png


BIN
static/shouye/在线考试 拷贝.png


BIN
static/shouye/教育商城 拷贝.png


BIN
static/shouye/矢量智能对象.png


BIN
static/shouye/组 2314(1).png


BIN
static/shouye/组 2314.png


BIN
static/shouye/组 3 拷贝 2.png


Деякі файли не було показано, через те що забагато файлів було змінено