分销开发

master
xindan 2021-10-13 00:12:43 +08:00
parent 23dd44b761
commit 021ac33fde
5 changed files with 267 additions and 382 deletions

View File

@ -0,0 +1,7 @@
.share .title {
border-style: solid;
border-width: 0 0 0 3px;
}
.submit-double button {
width: 48%;
}

View File

@ -1,268 +1,196 @@
<template>
<view>
<view v-if="user_share_poster != null || user_share_qrode != null || user_share_url != null">
<view v-if="user_share_poster != null" class="share qrcode bg-white spacing-mb">
<view class="title">海报分享</view>
<view class="desc cr-gray br-b">
保存海报后发送给微信好友/QQ好友/分享到分朋友圈微博等进行推广轻轻松松赚返利
</view>
<view class="content">
<image :src="user_share_poster" class="wh-auto dis-block" mode="widthFix"></image>
</view>
<view class="submit submit-double oh">
<button type="primary" :plain="true" hover-class="none" size="mini" :data-value="user_share_poster" @tap="images_show_event" class="fl">查看长按保存</button>
<button type="primary" :plain="true" hover-class="none" size="mini" @tap="poster_refresh_event" class="fr">重新生成</button>
</view>
</view>
<template>
<view>
<view v-if="user_share_poster != null || user_share_qrode != null || user_share_url != null" class="padding-main">
<!-- 海报 -->
<view v-if="user_share_poster != null" class="share qrcode padding-main border-radius-main bg-white spacing-mb">
<view class="title border-color-main padding-left-lg text-size fw-b">海报分享</view>
<view class="cr-gray br-b padding-vertical-main">
保存海报后发送给微信好友/QQ好友/分享到分朋友圈微博等进行推广轻轻松松赚返利
</view>
<view class="margin-top-lg">
<image :src="user_share_poster" class="wh-auto dis-block radius" mode="widthFix"></image>
</view>
<view class="submit-double oh margin-top-lg">
<button class="fl bg-white cr-green br-green round" type="default" hover-class="none" size="mini" :data-value="user_share_poster" @tap="images_show_event"></button>
<button class="fr bg-white cr-main br-main round" type="default" hover-class="none" size="mini" @tap="poster_refresh_event"></button>
</view>
</view>
<view v-if="user_share_qrode != null" class="share qrcode bg-white spacing-mb">
<view class="title">二维码分享</view>
<view class="desc cr-gray br-b">
保存二维码后发送给微信好友/QQ好友/分享到分朋友圈微博等进行推广轻轻松松赚返利
</view>
<view class="content">
<image :src="user_share_qrode" class="wh-auto dis-block" mode="widthFix"></image>
</view>
<view class="submit">
<button type="primary" :plain="true" hover-class="none" size="mini" class="dis-block wh-auto" :data-value="user_share_qrode" @tap="images_show_event"></button>
</view>
</view>
<!-- 二维码 -->
<view v-if="user_share_qrode != null" class="share qrcode padding-main border-radius-main bg-white spacing-mb">
<view class="title border-color-main padding-left-lg text-size fw-b">二维码分享</view>
<view class="cr-gray br-b padding-vertical-main">
保存二维码后发送给微信好友/QQ好友/分享到分朋友圈微博等进行推广轻轻松松赚返利
</view>
<view class="margin-top-lg">
<image :src="user_share_qrode" class="wh-auto dis-block radius" mode="widthFix"></image>
</view>
<view class="margin-top-lg">
<button class="dis-block wh-auto bg-white cr-green br-green round" type="default" size="mini" hover-class="none" @tap="images_show_event" :data-value="user_share_qrode">查看二维码长按保存</button>
</view>
</view>
<view v-if="user_share_url != null" class="share url bg-white">
<view class="title">链接分享</view>
<view class="desc cr-gray br-b">
复制以下链接发送给微信好友/QQ好友/分享到分朋友圈微博等进行推广轻轻松松赚返利
</view>
<view class="content">{{user_share_url}}</view>
<view class="submit">
<button type="primary" :plain="true" hover-class="none" size="mini" class="dis-block wh-auto" @tap="url_event"></button>
</view>
</view>
<!--<import src="/pages/common/bottom_line.wxml"></import>-->
<block data-type="template" data-is="bottom_line" data-attr="status: data_bottom_line_status">
<view v-if="(status || false)" class="data-bottom-line">
<view class="left fl"></view>
<view class="msg fl">我是有底线的</view>
<view class="right fr"></view>
</view>
</block>
</view>
<view v-if="user_share_qrode == null && user_share_url == null">
<!--<import src="/pages/common/nodata.wxml"></import>-->
<block data-type="template" data-is="nodata" data-attr="status: data_list_loding_status, msg: data_list_loding_msg">
<!-- 1 加载中 -->
<view v-if="0 == 1" class="no-data-loding tc">
<text>加载中...</text>
</view>
<!-- 2 处理错误 -->
<view v-else-if="0 == 2" class="no-data-box tc">
<image src="/static/images/error.png" mode="widthFix"></image>
<view class="no-data-tips">{{msg || '处理错误'}}</view>
</view>
<!-- 0 默认没有数据 -->
<view v-else-if="0 == 0" class="no-data-box tc">
<image src="/static/images/empty.png" mode="widthFix"></image>
<view class="no-data-tips">{{msg || '没有相关数据'}}</view>
</view>
</block>
</view>
</view>
</template>
<script>
const app = getApp();
export default {
data() {
return {
data_list_loding_status: 1,
data_list_loding_msg: '加载中...',
data_bottom_line_status: false,
user_share_poster: null,
user_share_qrode: null,
user_share_url: null
};
},
components: {},
props: {},
onLoad() {
this.init();
},
//
onPullDownRefresh() {
this.init();
},
methods: {
init() {
var self = this;
uni.showLoading({
title: "加载中..."
});
this.setData({
data_list_loding_status: 1
});
uni.request({
url: app.globalData.get_request_url("index", "poster", "distribution"),
method: "POST",
data: {},
dataType: "json",
success: res => {
uni.hideLoading();
uni.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
user_share_poster: data.user_share_poster || null,
user_share_qrode: data.user_share_qrode || null,
user_share_url: data.user_share_url || null,
data_list_loding_status: 3,
data_bottom_line_status: true,
data_list_loding_msg: ''
}); //
if (self.user_share_poster == null && self.user_share_qrode == null && self.user_share_url == null) {
self.setData({
data_list_loding_status: 0,
data_bottom_line_status: false
});
}
} else {
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg
});
if (app.globalData.is_login_check(res.data, self, 'init')) {
app.globalData.showToast(res.data.msg);
}
}
},
fail: () => {
uni.hideLoading();
uni.stopPullDownRefresh();
self.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错'
});
app.globalData.showToast("服务器请求出错");
}
});
},
//
poster_refresh_event(e) {
uni.showLoading({
title: "处理中..."
});
uni.request({
url: app.globalData.get_request_url("refresh", "poster", "distribution"),
method: "POST",
data: {},
dataType: "json",
success: res => {
uni.hideLoading();
if (res.data.code == 0) {
this.setData({
user_share_poster: res.data.data
});
app.globalData.showToast(res.data.msg, "success");
} else {
if (app.globalData.is_login_check(res.data, self, 'init')) {
app.globalData.showToast(res.data.msg);
}
}
},
fail: () => {
uni.hideLoading();
app.globalData.showToast("服务器请求出错");
}
});
},
//
images_show_event(e) {
var value = e.currentTarget.dataset.value || null;
if (value != null) {
uni.previewImage({
current: value,
urls: [value]
});
} else {
app.globalData.showToast('宣传图片地址有误');
}
},
// url
url_event(e) {
if ((this.user_share_url || null) != null) {
uni.setClipboardData({
data: this.user_share_url,
success(res) {
app.globalData.showToast('复制成功', 'success');
}
});
} else {
app.globalData.showToast('链接地址有误');
}
}
}
};
</script>
<style>
/*
* 公共
*/
.share {
padding: 20rpx 10rpx;
}
.share .title {
border-left: 3px solid #ff6a80;
margin-left: 10rpx;
padding-left: 20rpx;
font-size: 32rpx;
font-weight: 500;
}
.share .desc {
font-size: 32rpx;
padding: 0 10rpx 20rpx 10rpx;
margin-top: 20rpx;
}
.share .content {
padding: 20rpx;
}
.share .submit {
margin: 20rpx 0;
padding: 0 20rpx;
}
.share button {
height: 70rpx;
line-height: 70rpx;
}
.submit-double button {
width: 48%;
}
/*
* 链接
*/
.url .content {
font-size: 32rpx;
color: #ff6a80;
}
<!-- 链接 -->
<view v-if="user_share_url != null" class="share url padding-main border-radius-main bg-white spacing-mb">
<view class="title border-color-main padding-left-lg text-size fw-b">链接分享</view>
<view class="cr-gray br-b padding-vertical-main">
复制以下链接发送给微信好友/QQ好友/分享到分朋友圈微博等进行推广轻轻松松赚返利
</view>
<view class="cr-main text-size margin-top-lg">{{user_share_url}}</view>
<view class="margin-top-lg">
<button class="dis-block wh-auto bg-white cr-green br-green round" type="default" size="mini" hover-class="none" @tap="url_event" :data-value="user_share_url">点击复制链接地址</button>
</view>
</view>
<!-- 结尾 -->
<component-bottom-line :prop-status="data_bottom_line_status"></component-bottom-line>
</view>
<view v-else>
<!-- 提示信息 -->
<component-no-data :prop-status="data_list_loding_status"></component-no-data>
</view>
</view>
</template>
<script>
const app = getApp();
import componentNoData from "../../../../components/no-data/no-data";
import componentBottomLine from "../../../../components/bottom-line/bottom-line";
export default {
data() {
return {
data_list_loding_status: 1,
data_list_loding_msg: '加载中...',
data_bottom_line_status: false,
user_share_poster: null,
user_share_qrode: null,
user_share_url: null
};
},
components: {
componentNoData,
componentBottomLine
},
props: {},
onLoad() {
this.init();
},
//
onPullDownRefresh() {
this.init();
},
methods: {
init() {
uni.showLoading({
title: "加载中..."
});
this.setData({
data_list_loding_status: 1
});
uni.request({
url: app.globalData.get_request_url("index", "poster", "distribution"),
method: "POST",
data: {},
dataType: "json",
success: res => {
uni.hideLoading();
uni.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
this.setData({
user_share_poster: data.user_share_poster || null,
user_share_qrode: data.user_share_qrode || null,
user_share_url: data.user_share_url || null,
data_list_loding_status: 3,
data_bottom_line_status: true,
data_list_loding_msg: ''
});
//
if (this.user_share_poster == null && this.user_share_qrode == null && this.user_share_url == null) {
this.setData({
data_list_loding_status: 0,
data_bottom_line_status: false
});
}
} else {
this.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: res.data.msg
});
if (app.globalData.is_login_check(res.data, this, 'init')) {
app.globalData.showToast(res.data.msg);
}
}
},
fail: () => {
uni.hideLoading();
uni.stopPullDownRefresh();
this.setData({
data_list_loding_status: 2,
data_bottom_line_status: false,
data_list_loding_msg: '服务器请求出错'
});
app.globalData.showToast("服务器请求出错");
}
});
},
//
poster_refresh_event(e) {
uni.showLoading({
title: "处理中..."
});
uni.request({
url: app.globalData.get_request_url("refresh", "poster", "distribution"),
method: "POST",
data: {},
dataType: "json",
success: res => {
uni.hideLoading();
if (res.data.code == 0) {
this.setData({
user_share_poster: res.data.data
});
app.globalData.showToast(res.data.msg, "success");
} else {
if (app.globalData.is_login_check(res.data, self, 'init')) {
app.globalData.showToast(res.data.msg);
}
}
},
fail: () => {
uni.hideLoading();
app.globalData.showToast("服务器请求出错");
}
});
},
//
images_show_event(e) {
var value = e.currentTarget.dataset.value || null;
if (value != null) {
uni.previewImage({
current: value,
urls: [value]
});
} else {
app.globalData.showToast('宣传图片地址有误');
}
},
// url
url_event(e) {
app.globalData.text_copy_event(e);
}
}
};
</script>
<style>
@import './poster.css';
</style>

View File

@ -1,55 +1,8 @@
/*
*
*/
.container,
.user-container .item,
.profit-container .item {
padding: 20rpx 10rpx;
}
.container .item {
width: 50%;
box-sizing: border-box;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
}
.container .title {
border-left: 3px solid #ff6a80;
padding-left: 20rpx;
font-size: 32rpx;
font-weight: 500;
}
.container .base-content {
padding: 30rpx 10rpx;
}
.container .base-content .name {
margin-bottom: 10rpx;
}
.container .base-content .value .golden,
.container .base-content .value .yellow,
.container .base-content .value .green {
font-weight: 500;
}
.container .base-content .value .golden {
color: #ff6a80;
}
.container .base-content .value .yellow {
color: #f37b1d;
}
.container .base-content .value .blue {
color: #3bb4f2;
}
.container .base-content .value .green {
color: #5eb95e;
}
/*
*
*/
.user-container .base-content .value .golden,
.user-container .base-content .value .green {
margin-right: 10rpx;
}
.user-container .base-content,
.profit-container .base-content {
padding: 10rpx;
.container .title {
border-style: solid;
border-width: 0 0 0 3px;
}

View File

@ -1,55 +1,36 @@
<template>
<view>
<!-- 推广客户 -->
<view class="container user-container bg-white">
<view class="title">推广客户</view>
<view class="base-content oh tc">
<view class="item fl">
<view class="name cr-base">已推广用户总数</view>
<view class="value single-text">
<text class="golden">{{user_total.user_count || 0}}</text>
<text class="cr-gray"></text>
</view>
</view>
<view class="item fl">
<view class="name cr-base">已消费用户总数</view>
<view class="value single-text">
<text class="green">{{user_total.valid_user_count || 0}}</text>
<text class="cr-gray"></text>
</view>
<view>
<view class="padding-main">
<!-- 推广客户 -->
<view class="container padding-main border-radius-main bg-white">
<view class="title border-color-main padding-left-lg text-size fw-b">推广客户</view>
<view class="margin-top-lg oh tc">
<block v-for="(item, index) in stats_user_data_list" :key="index">
<view class="item fl padding-main">
<view class="cr-base">{{item.name}}</view>
<view class="single-text margin-top-sm">
<text class="text-size">{{item.value}}</text>
<text class="cr-gray margin-left-sm"></text>
</view>
</view>
</block>
</view>
</view>
</view>
<!-- 返利概况 -->
<view class="container profit-container bg-white spacing-mt">
<view class="title">返利概况</view>
<view class="base-content oh tc">
<view class="item fl">
<view class="name cr-base">返佣总额</view>
<view class="value single-text">
<text class="golden">{{currency_symbol}}{{user_profit_total_price || '0.00'}}</text>
</view>
<!-- 返利概况 -->
<view class="container padding-main border-radius-main bg-white spacing-mt">
<view class="title border-color-main padding-left-lg text-size fw-b">返利概况</view>
<view class="margin-top-lg oh tc">
<block v-for="(item, index) in stats_profit_data_list" :key="index">
<view class="item fl padding-main">
<view class="cr-base">{{item.name}}</view>
<view class="single-text margin-top-sm">
<text :class="'fw-b text-size '+item.ent">{{currency_symbol}}{{item.value}}</text>
</view>
</view>
</block>
</view>
<view class="item fl">
<view class="name cr-base">待生效</view>
<view class="value single-text">
<text class="yellow">{{currency_symbol}}{{user_profit_stay_price || '0.00'}}</text>
</view>
</view>
<view class="item fl">
<view class="name cr-base">待结算</view>
<view class="value single-text">
<text class="blue">{{currency_symbol}}{{user_profit_vaild_price || '0.00'}}</text>
</view>
</view>
<view class="item fl">
<view class="name cr-base">已结算</view>
<view class="value single-text">
<text class="green">{{currency_symbol}}{{user_profit_already_price || '0.00'}}</text>
</view>
</view>
</view>
</view>
</view>
<!-- 结尾 -->
@ -66,12 +47,17 @@
return {
data_list_loding_status: 1,
data_list_loding_msg: '加载中...',
data_bottom_line_status: false,
user_total: null,
user_profit_stay_price: 0.00,
user_profit_vaild_price: 0.00,
user_profit_already_price: 0.00,
user_profit_total_price: 0.00,
data_bottom_line_status: true,
stats_user_data_list: [
{name: "已推广用户总数", value: 0},
{name: "已消费用户总数", value: 0}
],
stats_profit_data_list: [
{name: "返佣总额", value: '0.00', ent: "cr-base"},
{name: "待生效", value: '0.00', ent: "cr-yellow"},
{name: "待结算", value: '0.00', ent: "cr-blue"},
{name: "已结算", value: '0.00', ent: "cr-green"}
],
user_data: null,
profit_data: null,
//
@ -127,13 +113,24 @@
uni.hideLoading();
uni.stopPullDownRefresh();
if (res.data.code == 0) {
var data = res.data.data;
self.setData({
user_total: data.user_total || null,
user_profit_stay_price: data.user_profit_stay_price || 0.00,
user_profit_vaild_price: data.user_profit_vaild_price || 0.00,
user_profit_already_price: data.user_profit_already_price || 0.00,
user_profit_total_price: data.user_profit_total_price || 0.00,
var data = res.data.data;
//
var temp_stats_user = this.stats_user_data_list;
temp_stats_user[0]['value'] = data.user_total.user_count || 0;
temp_stats_user[1]['value'] = data.user_total.valid_user_count || 0;
//
var temp_stats_profit = this.stats_profit_data_list;
temp_stats_profit[0]['value'] = data.user_profit_total_price || '0.00';
temp_stats_profit[1]['value'] = data.user_profit_stay_price || '0.00';
temp_stats_profit[2]['value'] = data.user_profit_vaild_price || '0.00';
temp_stats_profit[3]['value'] = data.user_profit_already_price || '0.00';
//
self.setData({
stats_user_data_list: temp_stats_user,
stats_profit_data_list: temp_stats_profit,
user_data: data.user_chart || null,
profit_data: data.profit_chart || null,
data_list_loding_status: 3,

View File

@ -35,18 +35,18 @@
</block>
</view>
<!-- 不符合分销条件描述 -->
<view v-if="(data_base.non_conformity_desc || null) != null && data_base.non_conformity_desc.length > 0" class="padding-horizontal-main padding-bottom-main">
<view class="notice-content not-vip-desc">
<view v-for="(item, index) in data_base.non_conformity_desc" :key="index" class="item">{{item}}</view>
</view>
</view>
<!-- 会员中心通知 -->
<view v-if="(user_level || null) != null && (data_base.user_center_notice || null) != null && data_base.user_center_notice.length > 0" class="padding-horizontal-main padding-bottom-main">
<view class="notice-content">
<view v-for="(item, index) in data_base.user_center_notice" :key="index" class="item">{{item}}</view>
</view>
</view>
<!-- 不符合分销条件描述 -->
<view v-if="(data_base.non_conformity_desc || null) != null && data_base.non_conformity_desc.length > 0" class="padding-horizontal-main padding-bottom-main">
<view class="notice-content not-vip-desc">
<view v-for="(item, index) in data_base.non_conformity_desc" :key="index" class="item">{{item}}</view>
</view>
</view>
</view>
</template>