bztang-h5/src/views/member/weight_value/home.vue

442 lines
13 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div>
<c-title :hide="false" :text="page_title" tolink="detailed"></c-title>
<div class="content-box" v-if="is_show">
<!--顶部用户信息-->
<div class="user box-item">
<div class="user-img">
<img class="user-img-icon" :src="user.avatar_image" />
</div>
<div class="user_name">{{ user.username }}</div>
<div class="user_id">ID{{ user.uid }}</div>
</div>
<!--可提现金额&团队人数-->
<div class="money-and-team box-item">
<div class="team-block" @click="goToPage('withdrawal')">
<div class="team-block-title">
可提现(元)<i class="fa fa-angle-right"></i>
</div>
<div class="team-block-money">{{ income }}</div>
</div>
<div class="team-block" @click="goToPage('myRelationship')">
<div class="team-block-title">
团队总数<i class="fa fa-angle-right"></i>
</div>
<div class="team-block-money">{{ team_total }}</div>
</div>
</div>
<!--统计信息-->
<div class="statistics box-item">
<!--顶部内容-->
<div class="statistics-top">
<div class="top-block">
<div class="top-title">累计收入(元)</div>
<div class="top-income">{{ total_income }}</div>
</div>
<div class="top-block">
<div class="top-title" @click="goToPage('incomedetails')">
收入明细<i class="fa fa-angle-right"></i>
</div>
</div>
</div>
<!--统计列表-->
<div class="statistic-list">
<div class="list-box" v-for="(item,index) in statistics" :key="index" @click="detailsGoToPage(item)">
<div class="box-title">{{ item.title }}</div>
<div class="box-num">{{ item.num }}</div>
</div>
</div>
</div>
<!--常用工具-->
<div class="tool-title">常用工具</div>
<div class="tool-content box-item">
<div class="tool-block" v-for="(item,index) in tool_list" :key="index" @click="toolGoToPage(item.path_name)">
<div class="tool-left">
<img class="tool-icon" :src="require('../../../assets/images/weight_value/' + item.icon)" />
</div>
<div class="tool-right">
<div class="right-title">{{ item.title }}</div>
<div class="right-desc">{{ item.sub_title }}</div>
</div>
</div>
</div>
</div>
<!-- 海报部分 -->
<yz-goodsposter v-model="posterShow" :posterData="poster_Data" :defaultImg="poster" :width="`18.875rem`" v-on:finish="uploadImageM"></yz-goodsposter>
<!-- 海报部分 end -->
</div>
</template>
<script>
import yzGoodsposter from "components/ui_components/yz_goodsPoster";
export default {
components:{
yzGoodsposter,
},
data() {
return {
page_title: '',
page_params: {},
is_show: false,
user: {},
statistics: {},
income: 0,
total_income: 0,
team_total: 0,
// 常用工具列表
tool_list:[
{ title: '我的权重值', sub_title: '查看权重值', icon: '001.png', path_name: 'weight_value' },
{ title: '我的典藏', sub_title: '我的画作', icon: '002.png', path_name: 'collection_room' },
{ title: '我的客户', sub_title: '团队客户明细', icon: '003.png', path_name: 'myRelationship' },
{ title: '分享二维码', sub_title: '生成分享码', icon: '004.png', path_name: 'qrcode' },
{ title: '团队业绩', sub_title: '团队累计业绩', icon: '005.png', path_name: 'incomedetails' },
],
// 海报
posterShow: false,
poster: "",
poster_Data: {
poster_data: null,
background: {}
},
};
},
activated() {
let _this = this;
_this.page_params = Object.assign(_this.$route.params, _this.$route.query);
_this.getData();
},
methods: {
// 数据获取
getData() {
let _this = this;
let params = {
team_level_id: _this.page_params.team_level_id
};
$http.get("plugin.weight-value.api.index.get-center-data", params, "加载中...").then((res) => {
if (parseInt(res.result) === 1) {
let data = res.data;
let title = data.level_name || '经纪人';
_this.page_title = document.title = (title + '中心');
_this.user = data.user;
_this.statistics = data.statistics;
_this.income = data.income;
_this.total_income = data.total_income;
_this.team_total = data.team_total;
_this.is_show = true;
}
}).catch((error) => {});
},
// 跳转页面
goToPage(key, params = {}, query = {}) {
if(key) this.$router.push(this.fun.getUrl(key, params, query));
},
// 统计明细跳转处理
detailsGoToPage(info){
let _this = this;
if(info.key_name){
let query = {
key_name: info.key_name || '',
team_level_id: _this.page_params.team_level_id
};
this.goToPage('weight_value_detailed',{},query);
}
},
// 工具跳转处理
toolGoToPage(pathName){
if(pathName === 'weight_value') this.goToPage('weight_value',{},{ team_level_id: this.page_params.team_level_id});
else if(pathName === 'qrcode') this.getPoster();
else this.goToPage(pathName);
},
// 生成分享二维码海报
getPoster(e) {
let _this = this;
$http.get("member.qrcode.get-poster", {}, {})
.then(res => {
if (parseInt(res.result) === 1) {
_this.isNewPosterPlugin = res.data.new || false;
let center_show = !isNaN(parseInt(res.data.center_show)) ? parseInt(res.data.center_show) : 0;
if (center_show === 0) {
//0 返回的默认图片
_this.poster = res.data.image_url;
_this.posterShow = true;
} else if (center_show === 1) {
//前端生成
_this.poster_Data.background.src = res.data.background_url || res.data.background;
_this.poster_Data.background.type = "background";
_this.poster_Data.poster_data = res.data.style_data;
_this.poster_id = res.data.id;
_this.posterShow = true;
} else if (center_show === 2) {
//部分关注二维码不支持跨域,走老接口
_this.toastPoster = _this.$toast({
duration: -1, // 持续展示 toast
message: "正在为您生成海报中"
});
_this.openQrCode_old(e);
}
}
})
.catch((error) => {});
},
openQrCode_old(e) {
if (!this.poster) {
if (!this.timer) {
this.getPoster_oldApi(e);
this.timer = setInterval(() => {
this.getPoster_oldApi(e);
}, 3000);
}
} else {
clearInterval(this.timer);
this.toastPoster.clear();
}
},
getPoster_oldApi(e) {
$http.get("member.poster").then(
response => {
if (response.result === 1) {
this.poster = response.data.image_url;
if (this.poster) this.clearPostetInterval();
} else {
this.$toast(response.msg);
this.clearPostetInterval();
}
},
response => {
this.clearPostetInterval();
}
);
},
}
};
</script>
<style lang="scss" scoped>
.content-box {
--item-about-margin-: 15px;
--item-width-: calc(100% - (var(--item-about-margin-) * 2));
background: rgba(255, 220, 47, 0.82);
width: 100vw;
padding-top: var(--item-about-margin-);
min-height: calc(100vh - 40px);
background: url('../../../assets/images/weight_value/home_bg.jpg') no-repeat;
background-size: 100% auto;
// 公共内容
.box-item {
margin-left: var(--item-about-margin-);
margin-right: var(--item-about-margin-);
margin-bottom: var(--item-about-margin-);
width: var(--item-width-);
background: #fff;
padding: 15px 20px;
border-radius: 10px;
}
// 顶部用户信息
.user {
--user-height-: 30px;
--user-spacing-: 10px;
height: var(--user-height-);
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: flex-start;
align-items: center;
background: none !important;
padding: 0!important;
.user-img {
width: var(--user-height-);
height: var(--user-height-);
border-radius: 50%;
overflow: hidden;
margin-right: var(--user-spacing-);
.user-img-icon {
width: 100% !important;
height: 100% !important;
}
}
.user_name {
margin-right: var(--user-spacing-);
font-size: 14px;
font-weight: bold;
}
.user_id {
margin-right: var(--user-spacing-);
background: #aa9884;
font-size: 13px;
padding: 0 10px;
height: 20px;
line-height: 20px;
border-radius: 50px;
color: #ffffff;
}
}
// 可提现金额&团队人数
.money-and-team {
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: space-between;
.team-block {
width: 50%;
display: inline-flex;
flex-direction: column;
flex-wrap: nowrap;
align-items: flex-start;
.team-block-title{
font-size: 12px;
height: 20px;
line-height: 20px;
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
color: #606060;
i{
width: 20px;
height: 20px;
line-height: 20px;
text-align: center;
font-size: 20px;
}
}
.team-block-money{
font-weight: bold;
font-size: 17px;
}
}
}
// 统计信息
.statistics {
.statistics-top {
width: 100%;
display: inline-flex;
flex-direction: row;
justify-content: space-between;
align-items: flex-start;
.top-block {
text-align: left;
.top-title {
font-size: 12px;
height: 20px;
line-height: 20px;
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
color: #606060;
i {
width: 20px;
height: 20px;
line-height: 20px;
text-align: center;
font-size: 20px;
}
}
.top-income {
font-weight: bold;
font-size: 17px;
}
}
}
.statistic-list {
width: calc(100% + 40px);
position: relative;
left: -20px;
display: inline-flex;
flex-direction: row;
flex-wrap: wrap;
.list-box {
width: calc(100% / 3);
height: 70px;
display: inline-flex;
flex-direction: column;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
.box-title {
font-size: 12px;
height: 20px;
line-height: 20px;
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
color: #606060;
}
.box-num {
font-weight: bold;
font-size: 17px;
}
}
}
}
//常用工具
.tool-title{
padding: 0 20px;
padding-bottom: 15px;
font-weight: bold;
font-size: 17px;
text-align: left;
}
.tool-content{
display: inline-flex;
flex-direction: row;
flex-wrap: wrap;
align-content: center;
justify-content: flex-start;
align-items: center;
.tool-block{
--tool-block-height-: 50px;
width: 50%;
height: var(--tool-block-height-);
margin-bottom: 15px;
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: flex-start;
.tool-left{
width: var(--tool-block-height-);
height: var(--tool-block-height-);
display: inline-flex;
.tool-icon{
width: 45% !important;
height: 45% !important;
}
}
.tool-right{
text-align: left;
.right-title{
font-weight: 600;
font-size: 14px;
}
.right-desc{
font-size: 12px;
color: #a0a3ae;
}
}
}
/* 使用选择器重置最后一行的格子下边距为0 */
.tool-block:nth-child(2n+1):nth-last-child(-n+2),
.tool-block:nth-child(2n+1):nth-last-child(-n+2)~.tool-block{
margin-bottom: 0!important;
}
}
}
</style>