|
|
@@ -47,13 +47,13 @@ const incomeList = ref([
|
|
|
amount: "58.00",
|
|
|
createTime: "2026-05-20 19:00:00",
|
|
|
couponName: "优惠券3",
|
|
|
- status: "pending",
|
|
|
+ status: "blue",
|
|
|
},
|
|
|
]);
|
|
|
|
|
|
function handleViewDetail(item) {
|
|
|
uni.navigateTo({
|
|
|
- url: "/pages-C/income/invitation",
|
|
|
+ url: "/pages-C/income/list/writeOff",
|
|
|
});
|
|
|
}
|
|
|
const form = ref({});
|
|
|
@@ -61,36 +61,37 @@ const visibleNoticeList = computed(() => {
|
|
|
const data = form.value || {};
|
|
|
return [
|
|
|
{
|
|
|
- title: "累计收益(元)",
|
|
|
+ title: "分享收益(元)",
|
|
|
content: data.totalIncome || 0,
|
|
|
- page: "/pages-C/income/incomeCumulative",
|
|
|
- },
|
|
|
- {
|
|
|
- title: "累计提现(元)",
|
|
|
- content: data.totalWithdraw || 0,
|
|
|
- percentage: data.totalWithdrawPercent || "76.76%",
|
|
|
- page: "/pages-C/income/incomeMoney",
|
|
|
+ page: "/pages-C/share/shareInfo",
|
|
|
},
|
|
|
+
|
|
|
{
|
|
|
- title: "银行卡(张)",
|
|
|
+ title: "核销收益(张)",
|
|
|
content: data.bankCards || 0,
|
|
|
- page: "/pages-C/my/cumulativeGroup",
|
|
|
+ page: "/pages-C/my/myWriteOff",
|
|
|
},
|
|
|
{
|
|
|
title: "邀新收益(元)",
|
|
|
content: data.inviteIncome || 0,
|
|
|
percentage: data.inviteIncomePercent || "45.38%",
|
|
|
- page: "/pages-C/income/incomeInvitation",
|
|
|
+ page: "/pages-C/my/myNewUsers",
|
|
|
},
|
|
|
{
|
|
|
- title: "发券收益(元)",
|
|
|
+ title: "团员收益(元)",
|
|
|
content: data.shareIncome || 0,
|
|
|
- page: "/pages-C/income/incomeSend",
|
|
|
+ page: "/pages-C/my/myGroup",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: "累计提现(元)",
|
|
|
+ content: data.totalWithdraw || 0,
|
|
|
+ percentage: data.totalWithdrawPercent || "76.76%",
|
|
|
+ page: "/pages-C/income/incomeMoney",
|
|
|
},
|
|
|
{
|
|
|
- title: "核销收益(元)",
|
|
|
+ title: "银行卡(元)",
|
|
|
content: data.writeOffIncome || 0,
|
|
|
- page: "/pages-C/income/incomeCancel",
|
|
|
+ page: "/pages-C/my/myWriteOff",
|
|
|
},
|
|
|
];
|
|
|
});
|
|
|
@@ -103,22 +104,44 @@ function listInfo(item) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-const classShow = ref(false);
|
|
|
+const classItem = ref({ set: {}, type: {} });
|
|
|
+const indexMap = ref({
|
|
|
+ type: -1,
|
|
|
+ set: -1,
|
|
|
+});
|
|
|
+
|
|
|
+const showMap = ref({
|
|
|
+ type: false,
|
|
|
+ set: false,
|
|
|
+});
|
|
|
+
|
|
|
+const tabsIndex = ref(0);
|
|
|
+const tabs = ref([
|
|
|
+ { label: "核销奖励", type: "0" },
|
|
|
+ { label: "邀请新人", type: "1" },
|
|
|
+ { label: "团员核销奖励", type: "2" },
|
|
|
+ { label: "分享奖励", type: "3" },
|
|
|
+]);
|
|
|
+
|
|
|
+function tabClick(index) {
|
|
|
+ tabsIndex.value = index;
|
|
|
+}
|
|
|
const rewardTabs = ref([
|
|
|
{ label: "全部", type: "0" },
|
|
|
{ label: "分享奖励", type: "1" },
|
|
|
{ label: "核销奖励", type: "2" },
|
|
|
{ label: "邀新奖励", type: "3" },
|
|
|
]);
|
|
|
-const classIndex = ref(-1);
|
|
|
-const classItem = ref({
|
|
|
- label: "",
|
|
|
- type: "",
|
|
|
-});
|
|
|
-function classClick(index, item) {
|
|
|
- classIndex.value = index;
|
|
|
- classShow.value = false;
|
|
|
- classItem.value = item;
|
|
|
+
|
|
|
+const settlementTabs = ref([
|
|
|
+ { label: "待结算", type: "1" },
|
|
|
+ { label: "已结算", type: "2" },
|
|
|
+]);
|
|
|
+
|
|
|
+function classClick(e, item, tabName) {
|
|
|
+ indexMap.value[tabName] = e;
|
|
|
+ showMap.value[tabName] = false;
|
|
|
+ classItem.value[tabName] = item;
|
|
|
}
|
|
|
|
|
|
//滚动
|
|
|
@@ -190,39 +213,47 @@ const handleCancel = () => {
|
|
|
<view class="notice-content">{{ item.content }}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
|
|
|
+ <view class="filter-cont">
|
|
|
+ <view class="tabs-box">
|
|
|
+ <view class="tabs-list" v-for="(item,index) in tabs" :key="index" :class='{active:tabsIndex==index}'
|
|
|
+ @click=tabClick(index)>
|
|
|
+ {{item.label}}
|
|
|
+ </view>
|
|
|
</view>
|
|
|
|
|
|
<view class='income-select'>
|
|
|
<view class='income-time' @click='showPicker=true'>
|
|
|
- <view class='income-time-name'>2026 05.10-2026 05.12 </view>
|
|
|
- <u--image class='income-down' :src="getImageUrl('@img/income/down.png')" mode="aspectFit" width="18rpx"
|
|
|
- height="18rpx">
|
|
|
- </u--image>
|
|
|
+ <view class='income-today'>今天 </view>
|
|
|
+ <view class="stat-divider"></view>
|
|
|
</view>
|
|
|
- <view class='income-time' @click='classShow=true'>
|
|
|
- <view class='income-time-name'>{{classItem.label?classItem.label:'选择分类'}} </view>
|
|
|
- <u--image class='income-down' :src="getImageUrl('@img/income/down.png')" mode="aspectFit" width="18rpx"
|
|
|
- height="18rpx">
|
|
|
- </u--image>
|
|
|
+ <view class='income-time' @click='showPicker=true'>
|
|
|
+ <view class='income-time-name'>日期筛选 </view>
|
|
|
+ <text class="caret" />
|
|
|
+ <view class="stat-divider"></view>
|
|
|
+ </view>
|
|
|
+ <view class='income-time' @click='showMap.type=true'>
|
|
|
+ <view class='income-time-name'>{{classItem.type.label?classItem.type.label:'选择分类'}} </view>
|
|
|
+ <text class="caret" />
|
|
|
+ <view class="stat-divider"></view>
|
|
|
</view>
|
|
|
- <view class='income-time'>
|
|
|
- <view class='income-time-name'>结算状态</view>
|
|
|
- <u--image class='income-down' :src="getImageUrl('@img/income/down.png')" mode="aspectFit" width="18rpx"
|
|
|
- height="18rpx">
|
|
|
- </u--image>
|
|
|
+ <view class='income-time' @click='showMap.set=true'>
|
|
|
+ <view class='income-time-name'>{{classItem.set.label?classItem.set.label:'结算状态'}} </view>
|
|
|
+ <text class="caret" />
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<!-- 列表 -->
|
|
|
<view class="income-detail-content">
|
|
|
- <view v-for="item in incomeList" :key="item.id" class="income-card">
|
|
|
+ <view v-for="item in incomeList" :key="item.id" class="income-card" @click="handleViewDetail(item)">
|
|
|
<view class="card-header">
|
|
|
<view class="title-tag">
|
|
|
<view class="tag-line"></view>
|
|
|
<text class="tag-text">{{ item.title }}</text>
|
|
|
</view>
|
|
|
- <view class="view-detail" @click="handleViewDetail(item)">
|
|
|
+ <view class="view-detail">
|
|
|
<text class="detail-text">查看详情</text>
|
|
|
<u--image class='income-right' :src="getImageUrl('@img/income/arrow-right.png')" mode="aspectFit"
|
|
|
width="32rpx" height="32rpx">
|
|
|
@@ -258,11 +289,25 @@ const handleCancel = () => {
|
|
|
</view>
|
|
|
|
|
|
<!-- 选择分类 -->
|
|
|
- <Upopup :isShow="classShow" title='选择分类' @close='classShow=false' :isFooter='false'>
|
|
|
+ <Upopup :isShow="showMap.type" title='选择分类' @close='showMap.type=false' :isFooter='false'>
|
|
|
+ <view class="classification-cont">
|
|
|
+ <view class='classification-list' v-for='(item,index) in rewardTabs' :key='index'
|
|
|
+ @click='classClick(index,item,"type")'>
|
|
|
+ <view class='classification-label'>{{ item.label }}</view>
|
|
|
+ <u--image class='selected-icon' v-show='indexMap.type==index' :src="getImageUrl('@img/income/selected.png')"
|
|
|
+ mode="aspectFit" width="32rpx" height="32rpx">
|
|
|
+ </u--image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </Upopup>
|
|
|
+
|
|
|
+ <!-- 结算状态 -->
|
|
|
+ <Upopup :isShow="showMap.set" title='结算状态' @close='showMap.set=false' :isFooter='false'>
|
|
|
<view class="classification-cont">
|
|
|
- <view class='classification-list' v-for='(item,index) in rewardTabs' :key='index' @click='classClick(index,item)'>
|
|
|
+ <view class='classification-list' v-for='(item,index) in settlementTabs' :key='index'
|
|
|
+ @click='classClick(index,item,"set")'>
|
|
|
<view class='classification-label'>{{ item.label }}</view>
|
|
|
- <u--image class='selected-icon' v-show='classIndex==index' :src="getImageUrl('@img/income/selected.png')"
|
|
|
+ <u--image class='selected-icon' v-show='indexMap.set==index' :src="getImageUrl('@img/income/selected.png')"
|
|
|
mode="aspectFit" width="32rpx" height="32rpx">
|
|
|
</u--image>
|
|
|
</view>
|
|
|
@@ -278,7 +323,7 @@ const handleCancel = () => {
|
|
|
.page-container {
|
|
|
min-height: 100vh;
|
|
|
background-color: #f8f8fa;
|
|
|
-
|
|
|
+ padding-bottom: 32rpx;
|
|
|
// 顶部渐变背景
|
|
|
.page-header-bg {
|
|
|
position: absolute;
|
|
|
@@ -347,6 +392,29 @@ const handleCancel = () => {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+.filter-cont {
|
|
|
+ background: #fff;
|
|
|
+ padding: 24rpx 32rpx 28rpx 32rpx;
|
|
|
+ box-sizing: border-box;
|
|
|
+ margin: 32rpx 0;
|
|
|
+
|
|
|
+ .tabs-box {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ .tabs-list {
|
|
|
+ height: 52rpx;
|
|
|
+ line-height: 52rpx;
|
|
|
+ color: #1d2129;
|
|
|
+ font-size: 30rpx;
|
|
|
+ border-bottom: 6rpx solid transparent;
|
|
|
+ font-weight: 600;
|
|
|
+ &.active {
|
|
|
+ border-bottom: 6rpx solid #ff5365;
|
|
|
+ color: #ff5365;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
.notice-container {
|
|
|
margin-top: 46rpx;
|
|
|
@@ -369,24 +437,53 @@ const handleCancel = () => {
|
|
|
right: 0;
|
|
|
}
|
|
|
.income-select {
|
|
|
- margin: 40rpx 0 24rpx 0;
|
|
|
+ margin-top: 40rpx;
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: space-between;
|
|
|
+ overflow-x: auto;
|
|
|
+ white-space: nowrap;
|
|
|
+ &::-webkit-scrollbar {
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
.income-time-name {
|
|
|
font-size: 26rpx;
|
|
|
color: #333;
|
|
|
}
|
|
|
.income-time {
|
|
|
display: flex;
|
|
|
+ align-items: center;
|
|
|
+ height: 44rpx;
|
|
|
+ line-height: 44rpx;
|
|
|
}
|
|
|
- .income-down {
|
|
|
- margin-top: -4rpx;
|
|
|
+ .income-today {
|
|
|
+ padding: 0 30rpx;
|
|
|
+ border-radius: 999rpx;
|
|
|
+ background: #f7f8fa;
|
|
|
+ display: flex;
|
|
|
+ height: 44rpx;
|
|
|
+ line-height: 44rpx;
|
|
|
+ background: #ff5365;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ .caret {
|
|
|
+ width: 0;
|
|
|
+ height: 0;
|
|
|
+ margin-left: 8rpx;
|
|
|
+ border-left: 7rpx solid transparent;
|
|
|
+ border-right: 7rpx solid transparent;
|
|
|
+ border-top: 9rpx solid #333333;
|
|
|
+ }
|
|
|
+ .stat-divider {
|
|
|
+ width: 1rpx;
|
|
|
+ height: 40rpx;
|
|
|
+ background: #d9d9d9;
|
|
|
+ margin: 0 32rpx;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.income-detail-content {
|
|
|
- padding: 20rpx;
|
|
|
+ padding: 0 20rpx;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
gap: 20rpx;
|
|
|
@@ -534,6 +631,10 @@ const handleCancel = () => {
|
|
|
background: #e8ffea;
|
|
|
color: #00b42a;
|
|
|
}
|
|
|
+ &.status-blue {
|
|
|
+ background: #e8f7ff;
|
|
|
+ color: #3491fa;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|