创作者微信小程序端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

682 lines
20 KiB

<template>
<view class="container">
<view class="top">
<uni-notice-bar
show-get-more
show-icon
more-text="查看更多"
:text="noticeList[0].content"
@getmore="getMore"
/>
<view class="back">
<view class="back-top"></view>
<view class="uni-radius back-con uni-shadow-sm">
<view class="">
<view class="back-con-top"> 昨日收益 </view>
<view class="back-con-mid">
<view class="back-con-mid-left">
广告收益
<view class="top-text">
¥ {{ profitInfo.yesterdayAdProfit }}
</view>
</view>
<view class="border"></view>
<view class="back-con-mid-right">
邀请收益
<view class="top-text">
¥ {{ profitInfo.yesterdayInviteProfit }}
</view>
</view>
</view>
</view>
<view class="back-con-bot uni-radius uni-shadow-sm">
<view class="back-con-bot-left">
累计
<view class="top-text size14">
¥ {{ profitInfo.totalProfit }}
</view>
</view>
<view class="border"></view>
<view class="back-con-bot-mid">
上月
<view class="top-text size14">
¥ {{ profitInfo.lastMonthProfit }}
</view>
</view>
<view class="border"></view>
<view class="back-con-bot-right">
当月
<view class="top-text size14">
¥ {{ profitInfo.thisMonthProfit }}
</view>
</view>
</view>
</view>
<!-- <uni-section class="back-bot" title="昨日收益" type="line">
<uni-group mode="card">
<view>广告收益:{{profitInfo.yesterdayAdProfit}}</view>
<view>邀请收益:{{profitInfo.yesterdayInviteProfit}}</view>
<view>总收益:{{profitInfo.totalProfit}}</view>
<view>上月收益:{{profitInfo.lastMonthProfit}}</view>
<view>当月收益:{{profitInfo.thisMonthProfit}}</view>
</uni-group>
</uni-section> -->
</view>
<view class="back2">
<view class="uni-radius back-con2 uni-shadow-sm">
<view class="" style="width: 100%">
<view class="back-con-top"> 收益明细 </view>
<view class="segmented">
<view v-for="(item, index) in items" :key="index">
<view
@click="segActive(index)"
v-if="item != ''"
:class="[
'segmented-con',
index == active ? 'activecolor' : '',
]"
>
{{ item }}
<image
:class="['img1', index == active ? 'show' : '']"
src="/static/active.png"
></image>
</view>
<image v-else class="img" src="/static/right.png"></image>
</view>
</view>
<!-- 即将入账 -->
<view v-show="active == 0">
<view class="adver">
<view class="adver-top">
<view class="circular"></view>
<view class="adver-top-text"> 广告: </view>
</view>
<view class="adver-mid">
抖音/快手/微信均为次日结算前日ECPM价格
</view>
</view>
<uni-list>
<uni-list-item title="曝光" link @click="linkTo(0,0)">
<template v-slot:footer>
<view class="blue"> {{downloadAndInviteCountInfo.creatorProfitDownloadCount[0].downloadNum || 0}}次 </view>
</template>
</uni-list-item>
<uni-list-item title="邀请" link @click="linkTo(1,0)">
<template v-slot:footer>
<view class="blue"> [{{downloadAndInviteCountInfo.creatorProfitInviteCount[0].createTime || ''}}] {{downloadAndInviteCountInfo.creatorProfitInviteCount[0].inviteDownloadNum || 0}}次 </view>
</template>
</uni-list-item>
</uni-list>
</view>
<!-- 已入账 -->
<view v-show="active == 2">
<view class="adver">
<view class="adver-top">
<view class="circular"></view>
<view class="adver-top-text"> 广告: </view>
</view>
<!-- <view class="adver-mid"> 2022.06.05 至 2022.07.20 </view> -->
</view>
<uni-list>
<uni-list-item title="曝光" link @click="linkTo(0,1)">
<template v-slot:footer>
<view class="blue"> ¥{{inProfitInfo.profit || 0}} </view>
</template>
</uni-list-item>
<uni-list-item title="邀请" link @click="linkTo(1,1)">
<template v-slot:footer>
<view class="blue"> ¥{{inProfitInfo.inviteProfit || 0}} </view>
</template>
</uni-list-item>
</uni-list>
<!-- <view class="adver">
<view class="adver-top">
<view class="circular"></view>
<view class="adver-top-text"> 订单: </view>
</view>
<view class="adver-mid"> 会员订单及时入账,T+7即可提现 </view>
</view>
<uni-list>
<uni-list-item title="会员" link>
<template v-slot:footer>
<view class="blue"> ¥ 0</view>
</template>
</uni-list-item>
<uni-list-item title="邀请" link>
<template v-slot:footer>
<view class="blue"> ¥ 0 </view>
</template>
</uni-list-item>
</uni-list> -->
</view>
<!-- 已转入钱包 -->
<view v-show="active == 4">
<view class="adver">
<view class="adver-top">
<view class="circular"></view>
<view class="adver-top-text"> 广告: </view>
</view>
</view>
<uni-list>
<uni-list-item title="曝光" link @click="linkTo(0,2)">
<template v-slot:footer>
<view class="blue"> ¥{{endProfitInfo.profit || 0}} </view>
</template>
</uni-list-item>
<uni-list-item title="邀请" link @click="linkTo(1,2)">
<template v-slot:footer>
<view class="blue"> ¥{{endProfitInfo.inviteProfit || 0}} </view>
</template>
</uni-list-item>
</uni-list>
<!-- <view class="adver">
<view class="adver-top">
<view class="circular"></view>
<view class="adver-top-text"> 订单: </view>
</view>
</view>
<uni-list>
<uni-list-item title="会员" link>
<template v-slot:footer>
<view class="blue"> ¥ 0 </view>
</template>
</uni-list-item>
<uni-list-item title="邀请" link>
<template v-slot:footer>
<view class="blue"> ¥ 0 </view>
</template>
</uni-list-item>
</uni-list> -->
</view>
<!-- <view class="back-con-mid">
<view class="back-con-mid-left">
广告收益
<view class="top-text">
¥ {{ profitInfo.yesterdayAdProfit }}
</view>
</view>
<view class="border"></view>
<view class="back-con-mid-right">
邀请收益
<view class="top-text">
¥ {{ profitInfo.yesterdayInviteProfit }}
</view>
</view>
</view> -->
</view>
</view>
<!-- <uni-section class="back-bot" title="昨日收益" type="line">
<uni-group mode="card">
<view>广告收益:{{profitInfo.yesterdayAdProfit}}</view>
<view>邀请收益:{{profitInfo.yesterdayInviteProfit}}</view>
<view>总收益:{{profitInfo.totalProfit}}</view>
<view>上月收益:{{profitInfo.lastMonthProfit}}</view>
<view>当月收益:{{profitInfo.thisMonthProfit}}</view>
</uni-group>
</uni-section> -->
</view>
</view>
<!-- <view class="middle">
<uni-section title="收益明细" type="line">
<uni-group mode="card">
<uni-segmented-control
:current="current"
:values="items"
:style-type="styleType"
:active-color="activeColor"
@clickItem="onClickItem"
/>
<view class="content">
<view v-if="current === 0">
<uni-collapse>
<uni-collapse-item title="广告" :show-animation="true">
<view
class="content"
v-for="(
item, index
) in downloadAndInviteCountInfo.creatorProfitDownloadCount"
:key="index"
>
<text class="text" @click="linkTo(0, 0)"
>日期:{{ item.createTime }}---</text
>
<text class="text">次数:{{ item.downloadNum }}</text>
</view>
</uni-collapse-item>
<uni-collapse-item title="邀请" :show-animation="true">
<view
class="content"
v-for="(
item, index
) in downloadAndInviteCountInfo.creatorProfitInviteCount"
:key="index"
>
<text class="text" @click="linkTo(1, 0)"
>日期:{{ item.createTime }}---</text
>
<text class="text">次数:{{ item.inviteDownloadNum }}</text>
</view>
</uni-collapse-item>
</uni-collapse>
</view>
<view v-if="current === 1">
<uni-collapse>
<uni-collapse-item title="广告" :show-animation="true">
<view class="content">
<text class="text" @click="linkTo(0, 1)"
>额度:{{ inProfitInfo.profit }}</text
>
</view>
</uni-collapse-item>
<uni-collapse-item title="邀请" :show-animation="true">
<view class="content">
<text class="text" @click="linkTo(1, 1)"
>额度:{{ inProfitInfo.inviteProfit }}</text
>
</view>
</uni-collapse-item>
</uni-collapse>
</view>
<view v-if="current === 2">
<uni-collapse>
<uni-collapse-item title="广告" :show-animation="true">
<view class="content">
<text class="text" @click="linkTo(0, 2)"
>额度:{{ endProfitInfo.profit }}</text
>
</view>
</uni-collapse-item>
<uni-collapse-item title="邀请" :show-animation="true">
<view class="content">
<text class="text" @click="linkTo(1, 2)"
>额度:{{ endProfitInfo.inviteProfit }}</text
>
</view>
</uni-collapse-item>
</uni-collapse>
</view>
</view>
</uni-group>
</uni-section>
</view> -->
</view>
</template>
<script>
import {
queryFrontProfitInfo, //查询指定艺术家收益统计
queryFrontPreDownloadAndInviteCount, //查询指定艺术家即将入账广告及邀请次数列表
queryFrontPreProfit, //查询指定艺术家即将入账收益列表
queryFrontInOrOutAmt, //查询指定艺术家已入账/转入钱包累计收益
} from "@/api/profit.js";
import { getNoticeList } from "@/api/userInfo.js";
export default {
data() {
return {
nvueWidth: 730,
profitInfo: {
yesterdayAdProfit: 0,
yesterdayInviteProfit: 0,
totalProfit: 0,
lastMonthProfit: 0,
thisMonthProfit: 0,
},
downloadAndInviteCountInfo: {},
profitList: [],
items: ["即将入账", "", "已入账", "", "已转入钱包"],
current: 0,
activeColor: "#007aff",
styleType: "text",
inProfitInfo: {},
endProfitInfo: {},
userInfo: {},
noticeList: [],
pageSize: 10,
pageNum: 1,
active: 0,
};
},
// 下拉刷新
onPullDownRefresh() {
uni.stopPullDownRefresh();
},
created() {
const userInfoSync = uni.getStorageSync("userInfo");
this.userInfo = userInfoSync;
this.queryFrontProfitInfo();
this.queryFrontPreDownloadAndInviteCount();
this.queryFrontInAmt();
this.queryFrontEndAmt();
this.getNoticeList();
},
methods: {
// 获取艺术家收益统计
async queryFrontProfitInfo() {
const res = await queryFrontProfitInfo(this.userInfo.id);
//console.log('res', res)
if (res.data.code === 200) {
this.profitInfo = res.data.data;
//console.log('profitInfo', this.profitInfo)
} else {
uni.showModal({
content: "收益统计加载失败!",
showCancel: false,
});
}
},
// 查询指定艺术家即将入账广告及邀请次数列表
async queryFrontPreDownloadAndInviteCount() {
const res = await queryFrontPreDownloadAndInviteCount(this.userInfo.id);
//console.log('res', res)
if (res.data.code === 200) {
this.downloadAndInviteCountInfo = res.data.data;
//console.log('downloadAndInviteCountInfo', this.downloadAndInviteCountInfo)
} else {
uni.showModal({
content: "收益统计次数加载失败!",
showCancel: false,
});
}
},
// 查询指定艺术家已入账累计收益
async queryFrontInAmt() {
const res = await queryFrontInOrOutAmt({
creatorId: this.userInfo.id,
status: "1",
});
//console.log('InAmt', res)
if (res.data.code === 200) {
this.inProfitInfo = res.data.data;
} else {
uni.showModal({
content: "已入账收益加载失败!",
showCancel: false,
});
}
},
// 查询指定艺术家转入钱包累计收益
async queryFrontEndAmt() {
const res = await queryFrontInOrOutAmt({
creatorId: this.userInfo.id,
status: "2",
});
//console.log('endAmt', res)
if (res.data.code === 200) {
this.endProfitInfo = res.data.data;
} else {
uni.showModal({
content: "转入钱包收益加载失败!",
showCancel: false,
});
}
},
// 获取公告分页
async getNoticeList() {
const res = await getNoticeList({
pageSize: this.pageSize,
pageNum: this.pageNum,
});
//console.log('res', res)
if (res.data.code === 200) {
this.noticeList = res.data.rows;
//console.log('noticeList', this.noticeList)
} else {
uni.showModal({
content: "公告列表加载失败!",
showCancel: false,
});
}
},
// 跳转即将到账收益详情页(status:0->即将入账;1->已入账;2->转入钱包)
linkTo(typeId, status) {
if (status === 0) {
uni.setStorage({
key: "typeId",
data: typeId,
success() {
uni.navigateTo({
url: "../profit/profitPreDetails",
});
},
});
} else if (status === 1) {
uni.setStorage({
key: "typeId",
data: typeId,
success() {
uni.navigateTo({
url: "../profit/profitInDetails",
});
},
});
} else {
uni.setStorage({
key: "typeId",
data: typeId,
success() {
uni.navigateTo({
url: "../profit/profitEndDetails",
});
},
});
}
},
onClickItem(e) {
if (this.current !== e.currentIndex) {
this.current = e.currentIndex;
}
},
//查看更多公告
getMore() {
uni.navigateTo({
url: "../../pages-userInfo/notice/notice",
});
},
segActive(index) {
this.active = index;
},
},
};
</script>
<style lang="scss">
.container {
font-family: Franklin Gothic Medium, Arial Narrow, Arial, sans-serif;
}
.back {
width: 100%;
height: 320px;
position: relative;
}
.back2 {
width: 100%;
// height: 320px;
// position: relative;
// top: -60px;
}
.back-top {
width: 100%;
position: absolute;
height: 120px;
background: #416bdc;
}
.back-con {
width: 95%;
left: 50%;
top: 42%;
transform: translate(-50%, -50%);
background-color: white;
position: absolute;
height: 220px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
}
.back-con2 {
width: 95%;
padding: 0 16px;
box-sizing: border-box;
left: 50%;
top: 460px;
transform: translate(-50%, -50%);
background-color: white;
position: absolute;
height: 290px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
}
.back-bot {
width: 100%;
position: absolute;
top: 80px;
}
.back-con-top {
font-size: 20px;
font-weight: 600;
margin: 20px 0 15px 0;
display: flex;
justify-content: center;
}
.back-con-mid {
display: flex;
align-items: center;
}
.border {
width: 1px;
height: 30px;
background-color: rgb(165, 165, 165);
}
.back-con-mid-left {
display: flex;
flex-direction: column;
align-items: center;
color: rgb(165, 165, 165);
padding-right: 40px;
// border-right: 1px solid #ccc;
}
.back-con-mid-right {
display: flex;
flex-direction: column;
align-items: center;
color: rgb(165, 165, 165);
padding-left: 40px;
}
.back-con-bot {
width: 100%;
height: 80px;
display: flex;
justify-content: space-between;
align-items: center;
}
.back-con-bot-left {
width: 33.33%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #a5a5a5;
}
.back-con-bot-mid {
width: 33.33%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #a5a5a5;
}
.back-con-bot-right {
width: 33.33%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #a5a5a5;
}
.uni-padding-wrap {
// width: 750rpx;
padding: 0px 30px;
}
.uni-common-mt {
margin-top: 30px;
}
.segmented {
display: flex;
justify-content: center;
// align-items: center;
}
.segmented-con {
display: flex;
flex-direction: column;
align-items: center;
color: #a5a5a5;
}
.img1 {
width: 15px;
height: 10px;
margin-top: 7px;
visibility: hidden;
}
.img {
width: 18px;
height: 15px;
margin: 0 20px;
}
.top-text {
font-size: 20px;
margin-top: 12px;
color: red;
}
.size14 {
font-size: 16px;
}
.show {
visibility: visible;
}
.activecolor {
color: #4d6cff;
}
.circular {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: #4d6cff;
margin-right: 10px;
}
.adver {
margin-top: 6px;
margin-bottom: 10px;
}
.adver-top {
display: flex;
align-items: center;
margin-top: 12px;
}
.adver-top-text {
font-size: 18px;
font-weight: bold;
}
.adver-mid {
font-size: 12px;
color: #ccc;
// margin-top: ;
margin-bottom: 8px;
}
.blue {
color: #4d6cff;
}
</style>