Browse Source

yong hu jiang li gu quan

lhl 10 months ago
parent
commit
c9fc00ad86
4 changed files with 461 additions and 9 deletions
  1. 12 0
      api/user.js
  2. 20 0
      pages.json
  3. 386 0
      pages/users/user_guquan/index.vue
  4. 43 9
      pages/users/user_payment/index.vue

+ 12 - 0
api/user.js

@@ -783,4 +783,16 @@ export function getYjList(data) {
 //阶梯
 export function getJt(data) {
 	return request.get('group_data',data);
+}
+
+//用户股权提现
+export function userEquityWithdrawal(data) {
+	return request.post('share/equityWithdrawal',data);
+}
+
+/*
+ * 用户股权记录
+ * */
+export function getrecordList(q) {
+	return request.get("share/recordList", q);
 }

+ 20 - 0
pages.json

@@ -260,6 +260,26 @@
 						}
 					}
 				},
+				{
+					"path": "user_guquan/index",
+					"style": {
+						"navigationBarTitleText": "股权明细"
+
+							// #ifdef MP
+							,
+						"navigationBarTextStyle": "black",
+						"navigationBarBackgroundColor": "#FFFFFF"
+							// #endif
+							,
+						"app-plus": {
+							// #ifdef APP-PLUS
+							"titleNView": {
+								"type": "default"
+							}
+							// #endif
+						}
+					}
+				},
 				{
 					"path": "user_set/index",
 					"style": {

+ 386 - 0
pages/users/user_guquan/index.vue

@@ -0,0 +1,386 @@
+<template>
+  <!-- 积分详情 -->
+	<view>
+		<view class='integral-details' :style="colorStyle">
+			<view class='header'>
+				<view class='currentScore'>当前股权</view>
+				<view class="scoreNum">{{userInfo.reward_share}}</view>
+				<view class='line'></view>
+				<view class='nav acea-row'>
+					<view class='item'>
+						<!-- <view class='num'>{{userInfo.sum_integral}}</view> -->
+						<view></view>
+					</view>
+					<view class='item' @click="navto">
+						<!-- <view class='num'>{{userInfo.deduction_integral}}</view> -->
+						<view>立即提现</view>
+					</view>
+					<view class='item'>
+						<!-- <view class='num'>{{userInfo.today_integral}}</view> -->
+						<view></view>
+					</view>
+				</view>
+			</view>
+			<view class='wrapper'>
+				<!-- <view class='nav acea-row'>
+					<view class='item acea-row row-center-wrapper' :class='current==index?"on":""'
+						v-for="(item,index) in navList" :key='index' @click='nav(index)'><text class='iconfont'
+							:class="item.icon"></text>{{item.name}}</view>
+				</view> -->
+				<view class='list' :hidden='current!=0'>
+					
+					<view class='item acea-row row-between-wrapper' v-for="(item,index) in integralList" :key="index">
+						<view style="max-width: 550rpx;">
+							<view class='state'>{{item.content}}</view>
+							<view>{{item.create_time}}</view>
+						</view>
+						<view class='num font-color' v-if="item.pm">+{{item.reward_share}}</view>
+						<view class='num' v-else>-{{item.reward_share}}</view>
+					</view>
+					<view class='loadingicon acea-row row-center-wrapper' v-if="integralList.length>0">
+						<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>{{loadTitle}}
+					</view>
+					<view v-if="integralList.length == 0">
+						<emptyPage title="暂无股权记录哦~"></emptyPage>
+					</view>
+				</view>
+			</view>
+		</view>
+		<home v-if="navigation"></home>
+		<!-- #ifdef MP -->
+		<!-- <authorize v-if="isShowAuth" @authColse="authColse" @onLoadFun="onLoadFun"></authorize> -->
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+	import home from '@/components/home';
+	import {
+		postSignUser,
+		getrecordList
+	} from '@/api/user.js';
+	import dayjs from '@/plugin/dayjs/dayjs.min.js';
+	import {
+		toLogin
+	} from '@/libs/login.js';
+	import {
+		mapGetters
+	} from "vuex";
+	import emptyPage from '@/components/emptyPage.vue';
+	import colors from '@/mixins/color'
+	export default {
+		components: {
+			emptyPage,
+			home
+		},
+		filters: {
+			dateFormat: function(value) {
+				return dayjs(value * 1000).format('YYYY-MM-DD');
+			}
+		},
+		mixins:[colors],
+		data() {
+			return {
+				navList: [{
+						'name': '分值明细',
+						'icon': 'icon-mingxi'
+					},
+					{
+						'name': '分值提升',
+						'icon': 'icon-tishengfenzhi'
+					}
+				],
+				current: 0,
+				page: 1,
+				limit: 10,
+				integralList: [],
+				userInfo: {},
+				loadend: false,
+				loading: false,
+				loadTitle: '加载更多',
+				isAuto: false, //没有授权的不会自动授权
+				isShowAuth: false, //是否隐藏授权
+				isTime: 0
+			};
+		},
+		computed: mapGetters(['isLogin']),
+		watch: {
+			isLogin: {
+				handler: function(newV, oldV) {
+					if (newV) {
+						this.getUserInfo();
+						// this.getIntegralList();
+					}
+				},
+				deep: true
+			}
+		},
+		onLoad() {
+			if (this.isLogin) {
+				this.getUserInfo();
+				// this.getIntegralList();
+			} else {
+				toLogin()
+			}
+		},
+		onShow() {
+			uni.removeStorageSync('form_type_cart');
+		},
+		/**
+		 * 页面上拉触底事件的处理函数
+		 */
+		onReachBottom: function() {
+			this.getIntegralList();
+		},
+		methods: {
+			navto() {
+				uni.navigateTo({
+					url: '/pages/users/user_payment/index?is_gq=2'
+				})
+			},
+			/**
+			 * 授权回调
+			 */
+			onLoadFun: function() {
+				this.getUserInfo();
+				this.isShowAuth = false;
+			},
+			// 授权关闭
+			authColse: function(e) {
+				this.isShowAuth = e
+			},
+			getUserInfo: function() {
+				let that = this;
+				postSignUser({
+					sign: 1,
+					integral: 1,
+					all: 1
+				}).then(function(res) {
+					that.$set(that, 'userInfo', res.data);
+					that.getIntegralList();
+					let clearTime = res.data.clear_time;
+					let showTime = clearTime-(86400*14);
+					let timestamp = Date.parse(new Date())/1000;
+					if(showTime < timestamp){
+						that.isTime = 1
+					}else{
+						that.isTime = 0
+					}
+				});
+			},
+
+			/**
+			 * 获取积分明细
+			 */
+			getIntegralList: function() {
+				let that = this;
+				if (that.loading) return;
+				if (that.loadend) return;
+				that.loading = true;
+				that.loadTitle = '';
+				getrecordList({
+					page: that.page,
+					limit: that.limit,
+					uid:that.userInfo.uid
+				}).then(function(res) {
+					let list = res.data.list,
+						loadend = list.length < that.limit;
+					that.integralList = that.$util.SplitArray(list, that.integralList);
+					that.$set(that, 'integralList', that.integralList);
+					that.page = that.page + 1;
+					that.loading = false;
+					that.loadend = loadend;
+					that.loadTitle = loadend ? '没有更多内容啦~' : "加载更多";
+				}, function(res) {
+					this.loading = false;
+					that.loadTitle = '加载更多';
+				});
+			},
+			nav: function(current) {
+				this.current = current;
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.integral-details .header {
+		background-repeat: no-repeat;
+		background-size: 100% 100%;
+		width: 100%;
+		height: 300rpx;
+		font-size: 72rpx;
+		color: #fff;
+		padding: 31rpx 0 45rpx 0;
+		box-sizing: border-box;
+		text-align: center;
+		font-family: 'Guildford Pro';
+		background-color: var(--view-theme);
+	}
+
+	.integral-details .header .currentScore {
+		font-size: 26rpx;
+		color: rgba(255, 255, 255, 0.8);
+		text-align: center;
+		margin-bottom: 11rpx;
+	}
+
+	.integral-details .header .scoreNum {
+		font-family: "Guildford Pro";
+	}
+
+	.integral-details .header .line {
+		width: 60rpx;
+		height: 3rpx;
+		background-color: #fff;
+		margin: 20rpx auto 0 auto;
+	}
+
+	.integral-details .header .nav {
+		font-size: 22rpx;
+		color: rgba(255, 255, 255, 0.8);
+		flex: 1;
+		margin-top: 35rpx;
+	}
+
+	.integral-details .header .nav .item {
+		width: 33.33%;
+		text-align: center;
+	}
+
+	.integral-details .header .nav .item .num {
+		color: #fff;
+		font-size: 40rpx;
+		margin-bottom: 5rpx;
+		font-family: 'Guildford Pro';
+	}
+
+	.integral-details .wrapper .nav {
+		flex: 1;
+		width: 690rpx;
+		border-radius: 20rpx 20rpx 0 0;
+		margin: -96rpx auto 0 auto;
+		background-color: #f7f7f7;
+		height: 96rpx;
+		font-size: 30rpx;
+		color: #bbb;
+	}
+
+	.integral-details .wrapper .nav .item {
+		text-align: center;
+		width: 50%;
+	}
+
+	.integral-details .wrapper .nav .item.on {
+		background-color: #fff;
+		color: var( --view-theme);
+		font-weight: bold;
+		border-radius: 20rpx 0 0 0;
+	}
+
+	.integral-details .wrapper .nav .item:nth-of-type(2).on {
+		border-radius: 0 20rpx 0 0;
+	}
+
+	.integral-details .wrapper .nav .item .iconfont {
+		font-size: 38rpx;
+		margin-right: 10rpx;
+	}
+
+	.integral-details .wrapper .list {
+		background-color: #fff;
+		padding: 24rpx 30rpx;
+	}
+
+	.integral-details .wrapper .list .tip {
+		font-size: 25rpx;
+		width: 690rpx;
+		min-height: 60rpx;
+		border-radius: 50rpx;
+		background-color: #fff5e2;
+		border: 1rpx solid #ffeac1;
+		color: #c8a86b;
+		padding: 0 20rpx;
+		box-sizing: border-box;
+		margin-bottom: 24rpx;
+	}
+	
+	.integral-details .wrapper .list .tip .tipCon{
+		width: 595rpx;
+	}
+
+	.integral-details .wrapper .list .tip .iconfont {
+		font-size: 35rpx;
+		margin-right: 15rpx;
+	}
+
+	.integral-details .wrapper .list .item {
+		height: 124rpx;
+		border-bottom: 1rpx solid #eee;
+		font-size: 24rpx;
+		color: #999;
+	}
+
+	.integral-details .wrapper .list .item .state {
+		font-size: 28rpx;
+		color: #282828;
+		margin-bottom: 8rpx;
+	}
+
+	.integral-details .wrapper .list .item .num {
+		font-size: 36rpx;
+		font-family: 'Guildford Pro';
+		color: #16AC57;
+	}
+	
+	.integral-details .wrapper .list .item .num.font-color{
+		color: #E93323!important;
+	}
+
+	.integral-details .wrapper .list2 {
+		background-color: #fff;
+		padding: 24rpx 0;
+	}
+
+	.integral-details .wrapper .list2 .item {
+		background-image: linear-gradient(to right, #fff7e7 0%, #fffdf9 100%);
+		width: 690rpx;
+		height: 180rpx;
+		position: relative;
+		border-radius: 10rpx;
+		margin: 0 auto 20rpx auto;
+		padding: 0 25rpx 0 180rpx;
+		box-sizing: border-box;
+	}
+
+	.integral-details .wrapper .list2 .item .pictrue {
+		width: 90rpx;
+		height: 150rpx;
+		position: absolute;
+		bottom: 0;
+		left: 45rpx;
+	}
+
+	.integral-details .wrapper .list2 .item .pictrue image {
+		width: 100%;
+		height: 100%;
+	}
+
+	.integral-details .wrapper .list2 .item .name {
+		width: 285rpx;
+		font-size: 30rpx;
+		font-weight: bold;
+		color: #c8a86b;
+	}
+
+	.integral-details .wrapper .list2 .item .earn {
+		font-size: 26rpx;
+		color: #c8a86b;
+		border: 2rpx solid #c8a86b;
+		text-align: center;
+		line-height: 52rpx;
+		height: 52rpx;
+		width: 160rpx;
+		border-radius: 50rpx;
+	}
+</style>

+ 43 - 9
pages/users/user_payment/index.vue

@@ -1,20 +1,26 @@
 <template>
 	<view>
 		<form @submit="submitSub" :style="colorStyle">
-			<view class="payment-top acea-row row-column row-center-wrapper" v-if="is_gq !=1">
+			<view class="payment-top acea-row row-column row-center-wrapper" v-if="is_gq == 0">
 				<span class="name">我的余额</span>
 				<view class="pic">
 					¥<span class="pic-font">{{ userinfo.now_money || 0 }}</span>
 				</view>
 			</view>
-			<view class="payment-top acea-row row-column row-center-wrapper" v-else>
+			<view class="payment-top acea-row row-column row-center-wrapper" v-if="is_gq == 1">
 				<span class="name">我的股权</span>
 				<view class="pic">
 					<span class="pic-font">{{ staffInfo.shareholding*1 || 0 }}</span>股
 				</view>
 			</view>
+			<view class="payment-top acea-row row-column row-center-wrapper" v-if="is_gq == 2">
+				<span class="name">我的股权</span>
+				<view class="pic">
+					<span class="pic-font">{{ userinfo.reward_share*1 || 0 }}</span>股
+				</view>
+			</view>
 			<view class="payment">
-				<view class="nav acea-row row-around row-middle" v-if="is_gq !=1">
+				<view class="nav acea-row row-around row-middle" v-if="is_gq !=1 && is_gq != 2">
 					<view class="item" :class="active==index?'on':''" v-for="(item,index) in navRecharge" :key="index"
 						@click="navRecharges(index)">{{item}}</view>
 				</view>
@@ -57,7 +63,7 @@
 					</view>
 				</view>
 				<view class="tip" v-else>
-					<view class='input' v-if="is_gq != 1">
+					<view class='input' v-if="is_gq != 1 && is_gq != 2">
 						<text>¥</text>
 						<input @input='inputNum'
 							:maxlength="moneyMaxLeng" placeholder="0.00" type='digit' placeholder-class='placeholder'
@@ -69,7 +75,7 @@
 							name="number"></input>
 						<text>股</text>
 					</view>
-					<view class="tips-title" v-if="is_gq != 1">
+					<view class="tips-title" v-if="is_gq != 1 && is_gq != 2">
 						<view style="font-weight: bold; font-size: 26rpx;">提示:</view>
 						<view style="margin-top: 10rpx;">
 							当前可转入佣金为 
@@ -78,14 +84,14 @@
 							<text class='font-color'>¥{{userinfo.broken_commission}}</text>
 						</view>
 					</view>
-					<view class="tips-box" v-if="is_gq != 1">
+					<view class="tips-box" v-if="is_gq != 1 && is_gq != 2">
 						<view class="tips mt-30">注意事项:</view>
 						<view class="tips-samll" v-for="item in rechargeAttention" :key="item">
 							{{ item }}
 						</view>
 					</view>
 				</view>
-				<button class='but bg-color' formType="submit" v-if="is_gq != 1"> {{active ? '立即转入': '立即充值' }}</button>
+				<button class='but bg-color' formType="submit" v-if="is_gq != 1 && is_gq != 2"> {{active ? '立即转入': '立即充值' }}</button>
 				<button class='but bg-color' formType="submit" v-else>提现</button>
 			</view>
 		</form>
@@ -108,7 +114,8 @@
 		getRechargeApi,
 		memberCardCreate,
 		getStaffInfo,
-		equityWithdrawal
+		equityWithdrawal,
+		userEquityWithdrawal
 	} from '@/api/user.js';
 	import payment from '@/components/payment';
 	import {
@@ -211,6 +218,7 @@
 			if (options.is_gq) {
 				this.is_gq = options.is_gq
 				this.active = 1
+				
 			}
 		},
 		onShow() {
@@ -531,7 +539,33 @@
 						})
 						that.getStaffInfo()
 					})
-				} else {
+				} else if(that.is_gq == 2) {
+					if (parseFloat(value) < 0 || parseFloat(value) == NaN || value == undefined || value == "") {
+						return that.$util.Tips({
+							title: '请输入金额'
+						});
+					}
+					if (parseFloat(value) % 1 !== 0) {
+						return that.$util.Tips({
+							title: '请输入整数'
+						});
+					}
+					if (parseFloat(value) > parseFloat(that.userinfo.reward_share)) {
+						return that.$util.Tips({
+							title: '您当前的股权不足'
+						});
+					}
+					userEquityWithdrawal({
+						reward_share: value,
+						uid: that.userinfo.uid
+					}).then(res => {
+						that.$util.Tips({
+							title: '提交成功',
+							icon: 'success'
+						})
+						that.getUserInfo()
+					})
+				}else {
 					// 转入余额
 					if (that.active) {
 						if (parseFloat(value) < 0 || parseFloat(value) == NaN || value == undefined || value == "") {