feat(mine): 个人页面改版

This commit is contained in:
woody 2025-06-12 17:01:36 +08:00
parent c31e192938
commit 2e0bcaf8d7
6 changed files with 136 additions and 173 deletions

View File

@ -6,6 +6,7 @@ export default {
if (options.query?.token) { if (options.query?.token) {
setToken(options.query?.token) setToken(options.query?.token)
console.log('🌈ad', options.query?.token)
} }
const whiteList = [ const whiteList = [
'pages/shareRegist/index', 'pages/shareRegist/index',

View File

@ -12,7 +12,7 @@ export const getGradeList = params =>
http.get('/system/api/grade/list', { http.get('/system/api/grade/list', {
params, params,
}) })
//三单轮次 //三单轮次
export const nextRound = params => export const nextRound = params =>
http.get('/member/api/market-news/round-his', { params }) http.get('/member/api/market-news/round-his', { params })

View File

@ -20,7 +20,7 @@ module.exports = vm => {
//#ifdef DEV_SERVER //#ifdef DEV_SERVER
console.log('DEV_SERVER') console.log('DEV_SERVER')
config.baseURL = 'http://localhost:8080' config.baseURL = 'http://192.168.0.102:8080'
//#endif //#endif
//#ifdef QA_SERVER //#ifdef QA_SERVER

View File

@ -119,7 +119,7 @@ export default {
pageSize: 10, pageSize: 10,
}, },
BONUS_FIELD_MAP: { BONUS_FIELD_MAP: {
levelGapIncome: '级差收益', levelGapIncome: '直推收益',
peerIncome: '平级收益', peerIncome: '平级收益',
regionalIncome: '区域收益', regionalIncome: '区域收益',
welfareLevelGapIncome: '福利级差收益', welfareLevelGapIncome: '福利级差收益',

View File

@ -8,7 +8,7 @@
</view> </view>
<view class="summary-amount"> <view class="summary-amount">
<text class="currency-symbol">¥</text> <text class="currency-symbol">¥</text>
<text>{{ bonusData.totalIssued || '0.00' }}</text> <text>{{ bonusData.realIncomeTotal || '0.00' }}</text>
</view> </view>
</view> </view>
@ -16,7 +16,7 @@
<view class="details-card"> <view class="details-card">
<view class="detail-item"> <view class="detail-item">
<text class="detail-label">奖金日期</text> <text class="detail-label">奖金日期</text>
<text class="detail-value date">{{ bonusData.date }}</text> <text class="detail-value date">{{ bonusData.settleDate }}</text>
</view> </view>
<view v-for="(label, key) in detailLabels" :key="key" class="detail-item"> <view v-for="(label, key) in detailLabels" :key="key" class="detail-item">
<text class="detail-label">{{ label }}</text> <text class="detail-label">{{ label }}</text>
@ -46,23 +46,23 @@ export default {
return { return {
// 使 // 使
bonusData: { bonusData: {
totalIssued: 84.0, totalIssued: 0,
date: '2025-03-16', date: '',
levelDifferenceIncome: 84.0, retailRangeIncome: 0,
peerIncome: 0.0, retailSameLevelIncome: 0.0,
regionalIncome: 0.0, retailAreaIncome: 0.0,
welfareLevelDifferenceIncome: 0.0, // welfareLevelDifferenceIncome: 0.0,
welfareDividendIncome: 0.0, // welfareDividendIncome: 0.0,
repeatConsumptionIncome: 8.4, backPoints: 0,
subtotal: 75.6, subtotal: 0,
}, },
detailLabels: { detailLabels: {
levelDifferenceIncome: '级差收益(¥)', retailRangeIncome: '直推收益(¥)',
peerIncome: '平级收益(¥)', retailSameLevelIncome: '平级收益(¥)',
regionalIncome: '区域收益(¥)', retailAreaIncome: '区域收益(¥)',
welfareLevelDifferenceIncome: '福利级差收益(¥)', // welfareLevelDifferenceIncome: '(¥)',
welfareDividendIncome: '福利分红收益(¥)', // welfareDividendIncome: '(¥)',
repeatConsumptionIncome: '重消收益(¥)', backPoints: '重消收益(¥)',
}, },
} }
}, },

View File

@ -21,23 +21,19 @@
<view class="left_text"> <view class="left_text">
<view class="name_box"> <view class="name_box">
<view class="tTit1">{{ userInfo.memberCode }}</view> <view class="tTit1">{{ userInfo.memberCode }}</view>
</view> <view
<view class="level_box"> style="margin-left: 20rpx"
<view class="level_tag level_tag--primary"> class="level_tag level_tag--primary"
>
<u-icon name="level" color="#A77B09" size="14"></u-icon> <u-icon name="level" color="#A77B09" size="14"></u-icon>
<text class="level_label">会员等级</text> <text class="level_label">会员等级</text>
<text class="level_value">{{ <text class="level_value">{{
userInfo.pkGradeVal || '-' userInfo.pkGradeVal || '-'
}}</text> }}</text>
</view> </view>
<view style="display: flex; gap: 10rpx">
<view class="level_tag">
<u-icon name="star" color="#005BAC" size="14"></u-icon>
<text class="level_label">当月奖衔</text>
<text class="level_value">{{
userInfo.pkAwardsVal || '-'
}}</text>
</view> </view>
<view class="level_box">
<view style="display: flex; gap: 10rpx">
<view class="level_tag"> <view class="level_tag">
<u-icon name="star" color="#005BAC" size="14"></u-icon> <u-icon name="star" color="#005BAC" size="14"></u-icon>
<text class="level_label">荣誉奖衔</text> <text class="level_label">荣誉奖衔</text>
@ -45,6 +41,13 @@
userInfo.pkMaxAwardsVal || '-' userInfo.pkMaxAwardsVal || '-'
}}</text> }}</text>
</view> </view>
<view class="level_tag">
<u-icon name="star" color="#005BAC" size="14"></u-icon>
<text class="level_label">当月奖衔</text>
<text class="level_value">{{
userInfo.pkAwardsVal || '-'
}}</text>
</view>
</view> </view>
</view> </view>
</view> </view>
@ -145,17 +148,25 @@
<!-- 新增信息展示 --> <!-- 新增信息展示 -->
<view <view
class="extra-info-card" class="extra-info-card"
v-if="[0, 1, 2].includes(userInfo.memberSign)" v-if="
[
MEMBER_SIGN.NORMAL_LEVEL,
MEMBER_SIGN.ZERO_LEVEL,
MEMBER_SIGN.V5_LEVEL,
].includes(Number(userInfo.memberSign))
"
> >
<view <view
class="info-grid" class="info-grid"
:class="{ 'multiple-items': userInfo.memberSign === 0 }" :class="{
'multiple-items': userInfo.memberSign === MEMBER_SIGN.NORMAL_LEVEL,
}"
> >
<view class="info-item"> <view class="info-item">
<text class="info-value">{{ userInfo.pkGradeVal || '-' }}</text> <text class="info-value">{{ userInfo.pkGradeVal || '-' }}</text>
<text class="info-label">会员等级</text> <text class="info-label">会员等级</text>
</view> </view>
<template v-if="userInfo.memberSign === 0"> <template v-if="userInfo.memberSign === MEMBER_SIGN.NORMAL_LEVEL">
<view class="info-item"> <view class="info-item">
<text class="info-value">{{ totalBox || '0' }}</text> <text class="info-value">{{ totalBox || '0' }}</text>
<text class="info-label">总盒数</text> <text class="info-label">总盒数</text>
@ -240,47 +251,42 @@
<text class="thetitle">{{ '市场动态' }}</text> <text class="thetitle">{{ '市场动态' }}</text>
</view> </view>
<view class="market-stats-container"> <view class="market-stats-container">
<view class="stat-row"> <view
<view class="stat-cards"> class="stat-block primary"
<view class="stat-card primary"> @click="goTo('/pages/performanceEchart/index')"
<text class="stat-label">总业绩</text> >
<text class="stat-value">{{ <view class="stat-content">
performanceData.totalSumPv || '0.00' <view class="stat-item">
}}</text> <text class="stat-label">总业绩</text>
<text class="stat-value">{{ totalSumPv || '0.00' }}</text>
</view> </view>
<view class="stat-card secondary"> <view class="stat-divider"></view>
<text class="stat-label">小区</text> <view class="stat-item">
<text class="stat-value">{{ <text class="stat-label">小区业绩</text>
performanceData.smallAreaPv || '0.00' <text class="stat-value">{{ smallAreaPv || '0.00' }}</text>
}}</text> </view>
</view>
<view class="stat-more-arrow">
<u-icon name="arrow-right" color="#fff" size="16"></u-icon>
</view> </view>
</view> </view>
<view <view
class="stat-more" class="stat-block secondary"
@click="goTo('/pages/performanceEchart/index')" @click="goTo('/pages/mine/order/index')"
> >
<text>更多</text> <view class="stat-content">
<u-icon name="arrow-right" color="#999999" size="14rpx"></u-icon> <view class="stat-item">
<text class="stat-label">总盒数</text>
<text class="stat-value">{{ totalBox || '0' }}</text>
</view>
<view class="stat-divider"></view>
<view class="stat-item">
<text class="stat-label">小区盒数</text>
<text class="stat-value">{{ smallAreaBox || '0' }}</text>
</view> </view>
</view> </view>
<view class="stat-row"> <view class="stat-more-arrow">
<view class="stat-cards"> <u-icon name="arrow-right" color="#fff" size="16"></u-icon>
<view class="stat-card primary">
<text class="stat-label">总盒数</text>
<text class="stat-value">{{
performanceData.totalBox || '0'
}}</text>
</view>
<view class="stat-card secondary">
<text class="stat-label">小区盒数</text>
<text class="stat-value">{{
performanceData.smallAreaBox || '0'
}}</text>
</view>
</view>
<view class="stat-more" @click="goTo('/pages/mine/order/index')">
<text>更多</text>
<u-icon name="arrow-right" color="#999999" size="14rpx"></u-icon>
</view> </view>
</view> </view>
</view> </view>
@ -402,6 +408,7 @@ export default {
}, },
data() { data() {
return { return {
MEMBER_SIGN,
getLanguageList: [], getLanguageList: [],
index: 0, index: 0,
userInfo: {}, userInfo: {},
@ -411,58 +418,6 @@ export default {
waitPayNum: '', waitPayNum: '',
payNum: '', payNum: '',
awards: {}, awards: {},
markMenuList: [
{
url: '/pages/performanceEchart/index',
name: '数据查询',
imgurl: '../../static/images/mark1.png',
menuKey: 'marketDynamics',
ifshow: false,
},
{
url: '/pages/bonus/menu',
name: '奖金明细',
imgurl: '../../static/images/mark2.png',
menuKey: 'incomeDetail',
ifshow: false,
},
{
url: '/pages/market/examineDetail/examineDetail',
name: '考核明细',
imgurl: '../../static/images/mark5.png',
menuKey: 'appraisal',
ifshow: false,
},
{
url: '/pages/market/registerList/registerList',
name: '注册列表',
imgurl: '../../static/images/mark6.png',
menuKey: 'registration',
ifshow: false,
},
{
url: '/pages/market/investmentList/investmentList',
name: '招商列表',
imgurl: '../../static/images/mark7.png',
menuKey: 'investment',
ifshow: false,
},
{
url: '/pages/market/activeArea/index',
name: '活动专区',
imgurl: '../../static/images/mark9.png',
menuKey: 'activeZone',
ifshow: false,
},
{
url: '/pages/architecture/architecture',
name: '架构管理',
imgurl: '../../static/images/my_icon14.png',
menuKey: 'recommend',
ifshow: false,
},
],
otherMenuList: [ otherMenuList: [
{ {
url: '1', url: '1',
@ -551,8 +506,10 @@ export default {
regionInfo: {}, regionInfo: {},
smallAreaBox: 0, smallAreaBox: 0,
totalBox: 0, totalBox: 0,
performanceData: {}, // performanceData: {},
marketDynamicBoxInfo: {}, marketDynamicBoxInfo: {},
totalSumPv: 0,
smallAreaPv: 0,
} }
}, },
onShow() { onShow() {
@ -560,7 +517,6 @@ export default {
this.orderNum() this.orderNum()
this.getRegionSelect() this.getRegionSelect()
this.getMemberBoxCount() this.getMemberBoxCount()
this.fetchMemberPerformance()
this.getMarketDynamicBoxCount() this.getMarketDynamicBoxCount()
// this.getUserAwardss() // this.getUserAwardss()
}) })
@ -615,13 +571,6 @@ export default {
}, },
methods: { methods: {
fetchMemberPerformance() {
getMemberPerformance().then(res => {
if (res.code === 200) {
this.performanceData = res.data || {}
}
})
},
getRegionSelect() { getRegionSelect() {
getRegionSelect().then(res => { getRegionSelect().then(res => {
if (res.code == 200) { if (res.code == 200) {
@ -750,6 +699,8 @@ export default {
if (res.code == 200) { if (res.code == 200) {
this.totalBox = res.data?.totalBox || 0 this.totalBox = res.data?.totalBox || 0
this.smallAreaBox = res.data?.smallAreaBox || 0 this.smallAreaBox = res.data?.smallAreaBox || 0
this.totalSumPv = res.data?.totalSumPv || 0
this.smallAreaPv = res.data?.smallAreaPv || 0
} }
}) })
}, },
@ -1430,62 +1381,73 @@ export default {
.market-stats-container { .market-stats-container {
padding: 20rpx 0; padding: 20rpx 0;
display: flex;
flex-direction: column;
gap: 20rpx;
} }
.stat-row { .stat-block {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
margin-bottom: 20rpx; padding: 20rpx 30rpx;
border-radius: 16rpx;
&:last-child {
margin-bottom: 0;
}
}
.stat-cards {
display: flex;
gap: 20rpx;
flex: 1;
}
.stat-card {
flex: 1;
padding: 20rpx;
border-radius: 10rpx;
color: #fff; color: #fff;
display: flex; position: relative;
justify-content: center; transition: transform 0.2s ease;
align-items: center;
flex-wrap: wrap;
min-height: 80rpx;
box-sizing: border-box;
.stat-label {
font-size: 24rpx;
}
.stat-value {
font-size: 28rpx;
font-weight: bold;
margin-left: 10rpx;
}
&.primary {
background: linear-gradient(135deg, #005bac, #007bff);
}
&.secondary {
background: linear-gradient(135deg, #4682b4, #87ceeb);
}
} }
.stat-more { .stat-block:active {
margin-left: 20rpx; transform: scale(0.98);
font-size: 24rpx; }
color: #999;
.stat-block.primary {
background: linear-gradient(135deg, #005bac, #007bff);
box-shadow: 0 6rpx 12rpx rgba(0, 91, 172, 0.3);
}
.stat-block.secondary {
background: linear-gradient(135deg, #4682b4, #87ceeb);
box-shadow: 0 6rpx 12rpx rgba(70, 130, 180, 0.3);
}
.stat-content {
display: flex; display: flex;
align-items: center; align-items: center;
gap: 20rpx;
flex-grow: 1;
justify-content: space-around;
}
.stat-item {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
flex: 1;
}
.stat-divider {
width: 2rpx;
height: 60rpx;
background-color: rgba(255, 255, 255, 0.4);
}
.stat-label {
font-size: 24rpx;
margin-top: 8rpx;
opacity: 0.9;
}
.stat-value {
font-size: 34rpx;
font-weight: 600;
line-height: 1.2;
word-break: break-all;
}
.stat-more-arrow {
margin-left: 20rpx;
flex-shrink: 0; flex-shrink: 0;
} }