499 lines
10 KiB
Vue
499 lines
10 KiB
Vue
<template>
|
||
<view class="">
|
||
<view class="invite" v-if="inviteShow && loading">
|
||
<view class="invite-header" :style="{backgroundImage:'url('+imgHost+'/statics/images/extension.jpg'+')'}">
|
||
<view class='swipers'>
|
||
<swiper :indicator-dots="false" autoplay="true" interval="2500" duration="500" vertical="true"
|
||
circular="true">
|
||
<block v-for="(item,index) in agentInfoData.list" :key='index'>
|
||
<swiper-item @touchmove.stop="stopTouchMove">
|
||
<view class='line1'>恭喜{{item.nickname}} <text class="color_ye">
|
||
成功赚取{{item.price}}</text> </view>
|
||
</swiper-item>
|
||
</block>
|
||
</swiper>
|
||
</view>
|
||
</view>
|
||
<view class="box">
|
||
<view class="box-title-sty">
|
||
<view class="box-title" :style="{backgroundImage:'url('+imgHost+'/statics/images/title-bag.png'+')'}">
|
||
我的收益
|
||
</view>
|
||
<view class="benefit">
|
||
<text class="iconfont icon-zhu"></text>
|
||
<text>获得收益</text>
|
||
<text class="num">{{agentInfoData.price || 0}}</text>
|
||
<text>元</text>
|
||
</view>
|
||
</view>
|
||
<view class="tab">
|
||
<view class="item" @click="getList(0)">
|
||
<view class="text" :class="sel == 0?'on':''">已邀请好友</view>
|
||
<view class="line" :class="sel == 0?'on':''"></view>
|
||
</view>
|
||
<view class="item" @click="getList(1)">
|
||
<view class=" text" :class="sel == 1 ?'on':''">已下单好友</view>
|
||
<view class="line" :class="sel == 1 ?'on':''"></view>
|
||
</view>
|
||
</view>
|
||
<view class="list" v-if="userList.length">
|
||
<view class="item" v-for="(item,index) in userList" :key="index">
|
||
<view class="item-l">
|
||
<view class="avatar">
|
||
<image :src="item.avatar" mode=""></image>
|
||
</view>
|
||
<view class="">{{item.nickname}}</view>
|
||
</view>
|
||
<view class="item-r">{{item.spread_time}}</view>
|
||
</view>
|
||
<template v-if="userList.length">
|
||
<view class='more' @tap='showAll' v-if="userList.length < total">查看更多
|
||
<text class='iconfont icon-xiangxia'></text>
|
||
</view>
|
||
</template>
|
||
</view>
|
||
<view class="no-thing" v-if="(!userList.length && sel == 0) || (!userList.length && sel == 1)">
|
||
<view class="no-thing-img">
|
||
<image :src="imgHost + '/statics/images/no-thing.png'" mode="aspectFit"></image>
|
||
</view>
|
||
<view class="pl20">
|
||
{{sel == 0?'暂无已邀请好友,快去邀请吧':'暂无下单好友,快去邀请下单吧'}}
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="box">
|
||
<view class="box-title-sty white">
|
||
<view class="box-title" :style="{backgroundImage:'url('+imgHost+'/statics/images/title-bag.png'+')'}">活动规则</view>
|
||
</view>
|
||
<view class="agreement" v-html="agentInfoData.agreement"></view>
|
||
</view>
|
||
<view class="footer">
|
||
<view class="click">
|
||
<image src="../static/click.png" mode=""></image>
|
||
</view>
|
||
<view class="cancellation flex-aj-center" @click="invite">
|
||
立即邀请
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="no-invite" v-else-if="!inviteShow && loading">
|
||
<image :src="imgHost + '/statics/images/no-thing.png'" mode="aspectFit"></image>
|
||
<text>商家暂未上架活动哦~</text>
|
||
</view>
|
||
<home v-if="navigation"></home>
|
||
<!-- #ifdef MP -->
|
||
<authorize v-if="isShowAuth" @authColse="authColse" @onLoadFun="onLoadFun"></authorize>
|
||
<!-- #endif -->
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
getUserInfo,
|
||
agentUserList,
|
||
agentInfo
|
||
} from '@/api/user.js';
|
||
import colors from '@/mixins/color.js'
|
||
import home from '@/components/home';
|
||
import {toLogin} from '@/libs/login.js';
|
||
import {mapGetters} from "vuex";
|
||
import {HTTP_REQUEST_URL} from '@/config/app';
|
||
const app = getApp();
|
||
export default {
|
||
components: {
|
||
home
|
||
},
|
||
mixins: [colors],
|
||
data() {
|
||
return {
|
||
inviteShow: true,
|
||
loading: true,
|
||
sel: 0,
|
||
userList: [],
|
||
agentInfoData: {},
|
||
page: 1,
|
||
limit: 5,
|
||
total: 0,
|
||
imgHost:HTTP_REQUEST_URL,
|
||
isShowAuth: false
|
||
}
|
||
},
|
||
computed: mapGetters(['isLogin']),
|
||
watch: {
|
||
isLogin: {
|
||
handler: function(newV, oldV) {
|
||
if (newV) {}
|
||
},
|
||
deep: true
|
||
}
|
||
},
|
||
onLoad(option) {
|
||
this.type = option.type;
|
||
if (this.isLogin) {
|
||
this.getAgentList(0);
|
||
this.getAgentInfo();
|
||
}
|
||
},
|
||
onShow(){
|
||
uni.removeStorageSync('form_type_cart');
|
||
if(!this.isLogin){
|
||
toLogin()
|
||
}
|
||
},
|
||
methods: {
|
||
/**
|
||
* 授权回调
|
||
*/
|
||
onLoadFun: function() {
|
||
this.getAgentList(0);
|
||
this.getAgentInfo();
|
||
this.isShowAuth = false;
|
||
},
|
||
// 授权关闭
|
||
authColse: function(e) {
|
||
this.isShowAuth = e
|
||
},
|
||
//#ifdef H5
|
||
ShareInfo(data) {
|
||
let href = location.href;
|
||
if (this.$wechat.isWeixin()) {
|
||
getUserInfo().then(res => {
|
||
href = href.indexOf('?') === -1 ? href + '?spid=' + res.data.uid : href + '&spid=' +
|
||
res.data.uid;
|
||
let configAppMessage = {
|
||
desc: data.name,
|
||
title: data.name,
|
||
link: href,
|
||
imgUrl: data.image
|
||
};
|
||
this.$wechat
|
||
.wechatEvevt(['updateAppMessageShareData', 'updateTimelineShareData',
|
||
'onMenuShareAppMessage',
|
||
'onMenuShareTimeline'
|
||
], configAppMessage)
|
||
.then(res => {})
|
||
.catch(err => {});
|
||
});
|
||
}
|
||
},
|
||
//#endif
|
||
getList(index) {
|
||
this.sel = index;
|
||
this.userList = [];
|
||
this.page = 1;
|
||
this.getAgentList(index);
|
||
},
|
||
invite() {
|
||
uni.navigateTo({
|
||
url: '/pages/users/user_spread_code/index'
|
||
})
|
||
},
|
||
getAgentList(type) {
|
||
agentUserList(type, this.page, this.limit).then(res => {
|
||
this.total = res.data.count;
|
||
let len = res.data.list.length;
|
||
let userListNew = [];
|
||
let userListData = res.data.list;
|
||
userListNew = this.userList.concat(userListData);
|
||
this.$set(this, 'userList', userListNew);
|
||
})
|
||
},
|
||
getAgentInfo() {
|
||
agentInfo().then(res => {
|
||
this.agentInfoData = res.data;
|
||
})
|
||
},
|
||
showAll: function() {
|
||
this.page++;
|
||
this.getAgentList(this.sel);
|
||
},
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
@import "../static/click.css";
|
||
|
||
.invite {
|
||
background-color: #E74435;
|
||
min-height: 100vh;
|
||
padding: 0 0 80rpx 0;
|
||
|
||
.invite-header {
|
||
width: 100%;
|
||
height: 584rpx;
|
||
margin: 0;
|
||
background-repeat: no-repeat;
|
||
background-size: 100% 100%;
|
||
z-index: 1;
|
||
|
||
.swipers {
|
||
width: 544rpx;
|
||
height: 40rpx;
|
||
line-height: 40rpx;
|
||
background: rgba(183, 4, 0, 1);
|
||
border-radius: 24rpx;
|
||
margin: auto;
|
||
overflow: hidden;
|
||
position: absolute;
|
||
left: 50%;
|
||
top: 14%;
|
||
transform: translate(-50%);
|
||
|
||
/* 50%为自身尺寸的一半 */
|
||
.line1 {
|
||
text-align: center;
|
||
}
|
||
|
||
swiper {
|
||
height: 100%;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
font-size: 24rpx;
|
||
color: #FFFFFF;
|
||
}
|
||
|
||
.color_ye {
|
||
color: #FFE39F;
|
||
}
|
||
}
|
||
}
|
||
|
||
.notice {
|
||
position: absolute;
|
||
}
|
||
|
||
.box {
|
||
margin: -100rpx 30rpx 160rpx 30rpx;
|
||
width: 690rpx;
|
||
background-color: #fff;
|
||
z-index: 999;
|
||
border-radius: 12rpx;
|
||
|
||
.agreement {
|
||
padding: 0 30rpx 30rpx 30rpx;
|
||
word-wrap: break-word;
|
||
text-align: justify;
|
||
/deep/p{
|
||
margin-bottom: 8rpx;
|
||
line-height: 60rpx;
|
||
}
|
||
}
|
||
|
||
.box-title-sty {
|
||
background-color: #FEF7F6;
|
||
padding-bottom: 42rpx;
|
||
border-radius: 12rpx 12rpx 0 0;
|
||
|
||
|
||
|
||
.benefit {
|
||
text-align: center;
|
||
color: #333333;
|
||
font-size: 24rpx;
|
||
|
||
.icon-zhu {
|
||
color: #E93323;
|
||
padding-right: 16rpx;
|
||
}
|
||
|
||
.num {
|
||
color: #E93323;
|
||
font-size: 54rpx;
|
||
padding: 0 8rpx;
|
||
font-weight: bold;
|
||
}
|
||
}
|
||
}
|
||
|
||
.white {
|
||
background-color: #fff;
|
||
}
|
||
|
||
.tab {
|
||
display: flex;
|
||
padding: 36rpx;
|
||
color: #E93323;
|
||
font-size: 32rpx;
|
||
|
||
.item {
|
||
width: 100%;
|
||
text-align: center;
|
||
|
||
.line {
|
||
margin: 20rpx auto 0 auto;
|
||
width: 106rpx;
|
||
height: 2px;
|
||
border-radius: 1px;
|
||
|
||
|
||
}
|
||
|
||
.line.on {
|
||
background: #E93323;
|
||
}
|
||
|
||
.on {
|
||
font-weight: bold;
|
||
}
|
||
}
|
||
}
|
||
|
||
.no-thing {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
padding: 16rpx 0 52rpx;
|
||
color: #333;
|
||
|
||
.no-thing-img {
|
||
width: 48rpx;
|
||
height: 48rpx;
|
||
|
||
image {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
}
|
||
|
||
.pl20 {
|
||
padding-left: 20rpx;
|
||
}
|
||
}
|
||
|
||
.list {
|
||
.item {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
padding: 14rpx 30rpx;
|
||
|
||
.item-l {
|
||
display: flex;
|
||
align-items: center;
|
||
color: #333333;
|
||
font-size: 28rpx;
|
||
|
||
.avatar {
|
||
width: 56rpx;
|
||
height: 56rpx;
|
||
margin-right: 18rpx;
|
||
|
||
image {
|
||
width: 100%;
|
||
height: 100%;
|
||
border-radius: 50%;
|
||
}
|
||
}
|
||
}
|
||
|
||
.item-r {
|
||
color: #999999;
|
||
font-size: 22rpx;
|
||
}
|
||
}
|
||
|
||
.more {
|
||
font-size: 24rpx;
|
||
color: #282828;
|
||
text-align: center;
|
||
height: 90rpx;
|
||
line-height: 90rpx;
|
||
}
|
||
}
|
||
|
||
.box-title {
|
||
transform: translateY(-20rpx);
|
||
margin: 0 auto;
|
||
width: 380rpx;
|
||
height: 76rpx;
|
||
background-repeat: no-repeat;
|
||
background-size: cover;
|
||
color: #fff;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-size: 36rpx;
|
||
font-weight: 500;
|
||
}
|
||
}
|
||
|
||
.footer {
|
||
text-align: center;
|
||
z-index: 999;
|
||
width: 100%;
|
||
background-color: #E93323;
|
||
position: fixed;
|
||
padding: 36rpx 30rpx;
|
||
box-sizing: border-box;
|
||
bottom: 0rpx;
|
||
|
||
.trip {
|
||
color: #999999;
|
||
font-size: 24rpx;
|
||
margin: 24rpx 0;
|
||
}
|
||
|
||
.click {
|
||
width: 66rpx;
|
||
height: 74rpx;
|
||
position: absolute;
|
||
right: 44rpx;
|
||
bottom: 8rpx;
|
||
|
||
image {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
}
|
||
|
||
.cancellation {
|
||
height: 45px;
|
||
color: #E93323;
|
||
font-weight: bold;
|
||
font-size: 36rpx;
|
||
background: linear-gradient(180deg, #FFFCF6 0%, #FFE297 100%);
|
||
border-radius: 25px;
|
||
}
|
||
}
|
||
}
|
||
|
||
// .mask {
|
||
// position: fixed;
|
||
// top: 0;
|
||
// left: 0;
|
||
// right: 0;
|
||
// bottom: 0;
|
||
// background-color: rgba(0, 0, 0, 0.8);
|
||
// z-index: 9;
|
||
// }
|
||
|
||
// .share-box {
|
||
// z-index: 1300;
|
||
// position: fixed;
|
||
// left: 0;
|
||
// top: 0;
|
||
// width: 100%;
|
||
// height: 100%;
|
||
|
||
// image {
|
||
// width: 100%;
|
||
// height: 100%;
|
||
// }
|
||
// }
|
||
|
||
|
||
|
||
.no-invite {
|
||
display: flex;
|
||
justify-content: center;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
font-size: 28rpx;
|
||
color: #ccc;
|
||
}
|
||
|
||
[v-cloak] {
|
||
display: none;
|
||
}
|
||
</style> |