web-retail-h5/pages/bonus/real-time.vue

205 lines
4.2 KiB
Vue

<template>
<view class="container">
<!-- 总览卡片 -->
<view class="summary-card">
<view class="summary-title-container">
<view class="summary-icon"></view>
<text class="summary-title">今日实发合计</text>
</view>
<view class="summary-amount">
<text class="currency-symbol">¥</text>
<text>{{ bonusData.totalIssued || '0.00' }}</text>
</view>
</view>
<!-- 奖金明细列表 -->
<view class="details-card">
<view class="detail-item">
<text class="detail-label">奖金日期</text>
<text class="detail-value date">{{ bonusData.date }}</text>
</view>
<view v-for="(label, key) in detailLabels" :key="key" class="detail-item">
<text class="detail-label">{{ label }}</text>
<text class="detail-value">
<text class="currency-symbol-small">¥</text>
{{ bonusData[key] || '0.00' }}
</text>
</view>
<!-- 分割线 -->
<view class="divider"></view>
<!-- 小计 -->
<view class="detail-item total">
<text class="detail-label total-label">小计(¥)</text>
<text class="detail-value total-value">
<text class="currency-symbol-small">¥</text>
{{ bonusData.subtotal || '0.00' }}
</text>
</view>
</view>
</view>
</template>
<script>
import { realTimeBonus } from '@/config/bonus.js'
export default {
data() {
return {
// 使用截图中的数据作为示例
bonusData: {
totalIssued: 84.0,
date: '2025-03-16',
levelDifferenceIncome: 84.0,
peerIncome: 0.0,
regionalIncome: 0.0,
welfareLevelDifferenceIncome: 0.0,
welfareDividendIncome: 0.0,
repeatConsumptionIncome: 8.4,
subtotal: 75.6,
},
detailLabels: {
levelDifferenceIncome: '级差收益(¥)',
peerIncome: '平级收益(¥)',
regionalIncome: '区域收益(¥)',
welfareLevelDifferenceIncome: '福利级差收益(¥)',
welfareDividendIncome: '福利分红收益(¥)',
repeatConsumptionIncome: '重消收益(¥)',
},
}
},
onLoad() {},
onShow() {
this.getRealTimeBonus()
},
methods: {
getRealTimeBonus() {
realTimeBonus().then(res => {
this.bonusData = res.rows?.[0] || {}
})
},
},
}
</script>
<style scoped>
/* 主题色 */
:root {
--primary-color: #005bac;
}
.container {
background-color: #f7f8fa;
min-height: 100vh;
padding: 12px;
box-sizing: border-box;
font-family:
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
.summary-card {
background: linear-gradient(45deg, #005bac, #0077d9);
color: #ffffff;
padding: 24px;
border-radius: 16px;
margin-bottom: 16px;
box-shadow: 0 8px 16px rgba(0, 91, 172, 0.2);
text-align: left;
}
.summary-title-container {
display: flex;
align-items: center;
margin-bottom: 8px;
}
.summary-icon {
width: 4px;
height: 16px;
background-color: #fff;
border-radius: 2px;
margin-right: 8px;
}
.summary-title {
font-size: 16px;
opacity: 0.9;
}
.summary-amount {
font-size: 38px;
font-weight: 700;
display: flex;
align-items: baseline;
}
.currency-symbol {
font-size: 22px;
font-weight: 500;
margin-right: 4px;
}
.currency-symbol-small {
font-size: 14px;
font-weight: 400;
color: #666;
margin-right: 2px;
}
.details-card {
background-color: #ffffff;
padding: 8px 20px;
border-radius: 16px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
}
.detail-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 18px 0;
}
.divider {
height: 1px;
background-color: #f2f2f2;
margin: 0;
}
.detail-label {
font-size: 15px;
color: #333;
}
.detail-value {
font-size: 16px;
color: #333;
font-weight: 500;
display: flex;
align-items: center;
}
.detail-value.date {
color: #999;
font-weight: 400;
}
.total {
padding-top: 18px;
}
.total-label {
font-weight: 600;
}
.total-value {
font-size: 20px;
font-weight: 600;
color: var(--primary-color);
}
.total-value .currency-symbol-small {
color: var(--primary-color);
font-size: 16px;
}
</style>