forked from angelo/web-retail-h5
feat(mine): 添加市场动态盒数请求逻辑
This commit is contained in:
parent
26cd798485
commit
cfb456cdd2
|
@ -43,3 +43,13 @@ export const getRegionAssessmentRecord = () =>
|
|||
// 获取会员业绩
|
||||
export const getMemberPerformance = () =>
|
||||
http.get('/retail-member/api/retail-member/member-achieve')
|
||||
|
||||
// 直推列表
|
||||
export const getDirectPushList = params =>
|
||||
http.get('/retail-member/api/retail-member/recommend-list', { params })
|
||||
|
||||
// 市场动态盒数接口
|
||||
export const getMarketDynamicBoxCount = params =>
|
||||
http.get('/retail-member/api/retail-member/big-small-box', {
|
||||
params,
|
||||
})
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"axios": "^1.5.0",
|
||||
"dayjs": "^1.11.13",
|
||||
"echarts": "^4.9.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"glob": "^11.0.1",
|
||||
|
@ -1948,6 +1949,12 @@
|
|||
"dev": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/dayjs": {
|
||||
"version": "1.11.13",
|
||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
|
||||
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://mirrors.cloud.tencent.com/npm/debug/-/debug-2.6.9.tgz",
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
"main": "main.js",
|
||||
"dependencies": {
|
||||
"axios": "^1.5.0",
|
||||
"dayjs": "^1.11.13",
|
||||
"echarts": "^4.9.0",
|
||||
"file-saver": "^2.0.5",
|
||||
"glob": "^11.0.1",
|
||||
|
|
|
@ -132,6 +132,14 @@
|
|||
"enablePullDownRefresh": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/mine/directPush/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "直推列表",
|
||||
"navigationBarBackgroundColor": "#fff",
|
||||
"enablePullDownRefresh": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/performanceEchart/index",
|
||||
"style": {
|
||||
|
|
|
@ -1,233 +1,440 @@
|
|||
<template>
|
||||
<view class="main">
|
||||
<scroll-view class="left_scrol_style" scroll-x="false" scroll-y="true">
|
||||
<view class="top-lists" v-if="navList.length > 0">
|
||||
<view v-for="(item, index) in navList" v-show="item.menuKey!=''" :key="index"
|
||||
:class="navIndex == item.path ? 'styles' : ''" class="nav-view" @click="clickHref(item.path)">
|
||||
{{ item.name }}
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="sum-val">
|
||||
<view v-if="monthIncomeTotal" >本月合计: <span>{{monthIncomeTotal | toThousandthAndKeepDecimal}}</span></view>
|
||||
<view>昨日合计: <span>{{toSum | toThousandthAndKeepDecimal}}</span></view>
|
||||
</view>
|
||||
<template>
|
||||
<sgsy v-if="navIndex==0" ref="sgsyData" :checkRule="marketList[0].isShow" :num="page.pageNum" />
|
||||
<fgsy v-if="navIndex==1" ref="sgsyData" :checkRule="marketList[0].isShow" />
|
||||
<hignfsy v-if="navIndex==2" ref="sgsyData" :checkRule="marketList[0].isShow" />
|
||||
<hfsy v-if="navIndex==3" ref="sgsyData" :checkRule="marketList[0].isShow" />
|
||||
<sbydsy v-if="navIndex==4" ref="sgsyData" :checkRule="marketList[0].isShow" />
|
||||
<fgqsy v-if="navIndex==5" ref="sgsyData" :checkRule="marketList[0].isShow" />
|
||||
<ckkj v-if="navIndex==6" ref="sgsyData" :checkRule="marketList[0].isShow" />
|
||||
</template>
|
||||
</view>
|
||||
<view class="bonus-detail-page">
|
||||
<view class="header-section">
|
||||
<!-- 今日实发合计 -->
|
||||
<view class="summary-bar">
|
||||
<text class="summary-text"
|
||||
>今日实发合计:
|
||||
<text class="summary-amount">{{
|
||||
formatAmount(todayTotal)
|
||||
}}</text></text
|
||||
>
|
||||
</view>
|
||||
|
||||
<!-- 日期筛选 -->
|
||||
<view class="date-filter">
|
||||
<view class="date-picker-container">
|
||||
<view class="date-input-wrapper" @click="showStartDatePicker = true">
|
||||
<text>{{ startDate || '开始时间' }}</text>
|
||||
</view>
|
||||
<text class="separator">至</text>
|
||||
<view class="date-input-wrapper" @click="showEndDatePicker = true">
|
||||
<text>{{ endDate || '结束时间' }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<button class="search-button" @click="handleSearch">
|
||||
<u-icon name="search" color="#ffffff" size="20" />
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 奖金列表 -->
|
||||
<scroll-view scroll-y class="bonus-list-scroll" @scrolltolower="loadMore">
|
||||
<view v-if="bonusList.length === 0 && !loading" class="empty-state"
|
||||
>暂无数据</view
|
||||
>
|
||||
<template v-else>
|
||||
<view
|
||||
v-for="(dailyBonus, index) in bonusList"
|
||||
:key="index"
|
||||
class="daily-bonus-card"
|
||||
>
|
||||
<view class="card-header">
|
||||
<view class="header-left">
|
||||
<u-icon
|
||||
name="calendar"
|
||||
size="18"
|
||||
color="#333"
|
||||
class="header-icon"
|
||||
></u-icon>
|
||||
<text class="header-title">奖金明细</text>
|
||||
</view>
|
||||
<text class="header-date">{{ dailyBonus.date }}</text>
|
||||
</view>
|
||||
<view class="card-content">
|
||||
<view
|
||||
v-for="item in dailyBonus.details"
|
||||
:key="item.label"
|
||||
class="bonus-item"
|
||||
>
|
||||
<text class="item-label">{{ item.label }}(¥)</text>
|
||||
<text class="item-value">{{ formatAmount(item.value) }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="card-footer">
|
||||
<text class="subtotal-label">小计(¥)</text>
|
||||
<text class="subtotal-value">{{
|
||||
formatAmount(dailyBonus.subtotal)
|
||||
}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<view class="scroll-footer" v-if="bonusList.length > 0">
|
||||
<text v-if="loading">加载中...</text>
|
||||
<text v-else-if="!hasMore">没有更多数据了</text>
|
||||
</view>
|
||||
</scroll-view>
|
||||
|
||||
<u-datetime-picker
|
||||
:show="showStartDatePicker"
|
||||
v-model="startDateValue"
|
||||
mode="date"
|
||||
@confirm="onStartDateConfirm"
|
||||
@cancel="showStartDatePicker = false"
|
||||
style="flex: 0"
|
||||
></u-datetime-picker>
|
||||
<u-datetime-picker
|
||||
:show="showEndDatePicker"
|
||||
v-model="endDateValue"
|
||||
mode="date"
|
||||
@confirm="onEndDateConfirm"
|
||||
@cancel="showEndDatePicker = false"
|
||||
style="flex: 0"
|
||||
></u-datetime-picker>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as api from '@/config/login.js'
|
||||
import * as apis from '@/config/market.js'
|
||||
import * as api1 from '@/config/bonus.js'
|
||||
import {
|
||||
setToken
|
||||
} from '@/config/auth.js'
|
||||
import store from '@/store'
|
||||
import sgsy from '@/components/bonus/sgsy.vue'
|
||||
import fgsy from '@/components/bonus/fgsy.vue'
|
||||
import hignfsy from '@/components/bonus/hignfsy.vue'
|
||||
import hfsy from '@/components/bonus/hfsy.vue'
|
||||
import sbydsy from '@/components/bonus/sbydsy.vue'
|
||||
import fgqsy from '@/components/bonus/fgqsy.vue'
|
||||
import ckkj from '@/components/bonus/ckkj.vue'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
toSum: 0,
|
||||
index: null,
|
||||
userInfo: [],
|
||||
marketList: [{
|
||||
text: '奖金来源',
|
||||
id: 3,
|
||||
path: "/marketDynamics",
|
||||
name: 'bonusSource',
|
||||
isShow: false,
|
||||
}, ],
|
||||
navList: [{
|
||||
name: '首购收益',
|
||||
path: 0,
|
||||
value: "firstPurchase",
|
||||
menuKey: ''
|
||||
},
|
||||
{
|
||||
name: '复购收益',
|
||||
path: 1,
|
||||
value: "repurchaseEarnings",
|
||||
menuKey: ''
|
||||
},
|
||||
{
|
||||
name: '海粉收益',
|
||||
path: 2,
|
||||
value: "hignFans",
|
||||
menuKey: ''
|
||||
},
|
||||
{
|
||||
name: '海粉收益',
|
||||
path: 3,
|
||||
value: "seaFans",
|
||||
menuKey: ''
|
||||
},
|
||||
// { name: '圣宝云代收益',path:4,value:"sbyd",menuKey:''},
|
||||
{
|
||||
name: '复购券收益',
|
||||
path: 5,
|
||||
value: "repurchaseTicket",
|
||||
menuKey: ''
|
||||
},
|
||||
// {
|
||||
// name: '创客空间收益',
|
||||
// path: 6,
|
||||
// value: "markerSpaceEarnings",
|
||||
// menuKey: ''
|
||||
// },
|
||||
],
|
||||
navIndex: 0,
|
||||
page: {
|
||||
pageSize: 50,
|
||||
pageNum: 1,
|
||||
},
|
||||
monthIncomeTotal: 0,
|
||||
}
|
||||
},
|
||||
components: {
|
||||
sgsy,
|
||||
fgsy,
|
||||
hignfsy,
|
||||
hfsy,
|
||||
sbydsy,
|
||||
fgqsy,
|
||||
ckkj
|
||||
},
|
||||
onLoad() {
|
||||
this.getMenuLists()
|
||||
this.getSum()
|
||||
},
|
||||
methods: {
|
||||
getSum() {
|
||||
api1.queryBonusTotal({}).then((res) => {
|
||||
console.log(res, '....res====aa')
|
||||
this.toSum = res.rows[0].realIncomeTotal
|
||||
this.monthIncomeTotal = res.rows[0].monthIncomeTotal
|
||||
})
|
||||
},
|
||||
bindPickerChange(e) {
|
||||
this.index = e.detail.value
|
||||
},
|
||||
clickHref(index) {
|
||||
let that = this;
|
||||
this.navIndex = index
|
||||
this.page.pageNum = 1
|
||||
},
|
||||
getMenuLists() {
|
||||
api.menuList().then((res) => {
|
||||
res.data.forEach((item) => {
|
||||
this.navList.forEach((items) => {
|
||||
if (item.menuKey == items.value) {
|
||||
items.menuKey = item.menuKey
|
||||
}
|
||||
})
|
||||
if (this.marketList[0].name == item.menuKey) {
|
||||
this.marketList[0].isShow = true
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// async onReachBottom() {
|
||||
// this.page.pageNum+1
|
||||
// this.$refs.sgsyData.getDataList(this.page.pageNum+=1);
|
||||
// },
|
||||
},
|
||||
}
|
||||
// 注意: 后端API需要支持按日期范围查询奖金明细
|
||||
// import { getBonusDetailsByDate, getTodayBonusTotal } from '@/config/bonus.js';
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
todayTotal: 0,
|
||||
startDate: '',
|
||||
endDate: '',
|
||||
showStartDatePicker: false,
|
||||
showEndDatePicker: false,
|
||||
startDateValue: Number(new Date()),
|
||||
endDateValue: Number(new Date()),
|
||||
bonusList: [],
|
||||
loading: false,
|
||||
hasMore: true,
|
||||
page: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
},
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.setDefaultDateRange()
|
||||
this.handleSearch()
|
||||
},
|
||||
methods: {
|
||||
formatAmount(amount) {
|
||||
if (typeof amount !== 'number') {
|
||||
return '0.00'
|
||||
}
|
||||
return amount.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ',')
|
||||
},
|
||||
setDefaultDateRange() {
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
start.setDate(end.getDate() - 7) // 默认查询最近7天
|
||||
this.startDate = this.formatDate(start)
|
||||
this.endDate = this.formatDate(end)
|
||||
this.startDateValue = Number(start)
|
||||
this.endDateValue = Number(end)
|
||||
},
|
||||
formatDate(date) {
|
||||
return dayjs(date).format('YYYY-MM-DD')
|
||||
},
|
||||
goBack() {
|
||||
uni.navigateBack()
|
||||
},
|
||||
handleSearch() {
|
||||
// 校验日期
|
||||
if (
|
||||
this.startDate &&
|
||||
this.endDate &&
|
||||
new Date(this.startDate) > new Date(this.endDate)
|
||||
) {
|
||||
uni.showToast({
|
||||
title: '开始时间不能晚于结束时间',
|
||||
icon: 'none',
|
||||
})
|
||||
return
|
||||
}
|
||||
this.page.pageNum = 1
|
||||
this.bonusList = []
|
||||
this.hasMore = true
|
||||
this.fetchBonusData()
|
||||
},
|
||||
onStartDateConfirm(e) {
|
||||
this.startDate = this.formatDate(new Date(e.value))
|
||||
this.startDateValue = e.value
|
||||
this.showStartDatePicker = false
|
||||
},
|
||||
onEndDateConfirm(e) {
|
||||
this.endDate = this.formatDate(new Date(e.value))
|
||||
this.endDateValue = e.value
|
||||
this.showEndDatePicker = false
|
||||
},
|
||||
loadMore() {
|
||||
if (this.loading || !this.hasMore) {
|
||||
return
|
||||
}
|
||||
this.page.pageNum++
|
||||
this.fetchBonusData()
|
||||
},
|
||||
// 模拟数据获取
|
||||
async fetchBonusData() {
|
||||
if (this.loading) return
|
||||
this.loading = true
|
||||
|
||||
// 模拟API调用延时
|
||||
await new Promise(resolve => setTimeout(resolve, 800))
|
||||
|
||||
// TODO: 当后端API就绪时,替换下面的模拟数据逻辑
|
||||
// 实际调用:
|
||||
// try {
|
||||
// const params = { startDate: this.startDate, endDate: this.endDate, pageNum: this.page.pageNum, pageSize: this.page.pageSize };
|
||||
// const res = await getBonusDetailsByDate(params);
|
||||
// if (res.data.list.length < this.page.pageSize) {
|
||||
// this.hasMore = false;
|
||||
// }
|
||||
// this.bonusList = [...this.bonusList, ...res.data.list];
|
||||
// } catch (error) {
|
||||
// console.error("Failed to fetch bonus data:", error);
|
||||
// uni.showToast({ title: '数据加载失败', icon: 'none' });
|
||||
// } finally {
|
||||
// this.loading = false;
|
||||
// }
|
||||
|
||||
// --- 模拟数据生成 ---
|
||||
this.todayTotal = Math.random() * 1000
|
||||
const mockData = []
|
||||
// 模拟 "没有更多数据"
|
||||
if (this.page.pageNum > 3) {
|
||||
this.hasMore = false
|
||||
this.loading = false
|
||||
return
|
||||
}
|
||||
|
||||
if (this.startDate && this.endDate) {
|
||||
// 在模拟中,我们基于页码创建伪随机数据,而不是日期
|
||||
for (let i = 0; i < this.page.pageSize; i++) {
|
||||
const dayOffset = (this.page.pageNum - 1) * this.page.pageSize + i
|
||||
const date = dayjs(this.endDate).subtract(dayOffset, 'day')
|
||||
if (date.isBefore(dayjs(this.startDate))) {
|
||||
this.hasMore = false
|
||||
break
|
||||
}
|
||||
|
||||
const subtotal = Math.random() * 500
|
||||
mockData.push({
|
||||
date: date.format('YYYY-MM-DD'),
|
||||
details: [
|
||||
{ label: '级差收益', value: Math.random() * 100 },
|
||||
{ label: '平级收益', value: Math.random() * 200 },
|
||||
{ label: '区域收益', value: 0 },
|
||||
{ label: '福利级差收益', value: 0 },
|
||||
{ label: '福利分红收益', value: 0 },
|
||||
{ label: '重消收益', value: Math.random() * 50 },
|
||||
],
|
||||
subtotal: subtotal,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
if (mockData.length < this.page.pageSize) {
|
||||
this.hasMore = false
|
||||
}
|
||||
|
||||
this.bonusList = [...this.bonusList, ...mockData]
|
||||
// --- 模拟数据结束 ---
|
||||
|
||||
this.loading = false
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.sum-val {
|
||||
background-color: #fff;
|
||||
// height: 100rpx;
|
||||
line-height: 60rpx;
|
||||
text-align: right;
|
||||
margin-top: 10rpx;
|
||||
padding-right: 20rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
justify-content: flex-end;
|
||||
span {
|
||||
font-size: 34rpx;
|
||||
font-weight: bold;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
}
|
||||
page {
|
||||
background-color: #f7f7f8;
|
||||
font-family:
|
||||
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',
|
||||
Arial, sans-serif;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/*左侧分类视图*/
|
||||
.left_scrol_style {
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
}
|
||||
.bonus-detail-page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.texts {
|
||||
color: #333;
|
||||
font-size: 26rpx;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
/* width:200rpx; */
|
||||
text-align: right;
|
||||
}
|
||||
.header-section {
|
||||
flex-shrink: 0;
|
||||
background-color: #ffffff;
|
||||
}
|
||||
|
||||
.select-text {
|
||||
display: flex;
|
||||
margin-right: 20rpx;
|
||||
font-size: 26rpx;
|
||||
color: #333;
|
||||
position: relative;
|
||||
}
|
||||
.summary-bar {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 10px 15px;
|
||||
background-color: #e6f7ff;
|
||||
border: 1px solid #91d5ff;
|
||||
border-radius: 4px;
|
||||
margin: 10px 15px;
|
||||
.summary-text {
|
||||
margin-left: 8px;
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
}
|
||||
.summary-amount {
|
||||
font-weight: bold;
|
||||
font-size: 16px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.selIcon {
|
||||
width: 30rpx;
|
||||
height: 30rpx;
|
||||
margin: 5rpx 0 0 20rpx;
|
||||
}
|
||||
.date-filter {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 15px 10px;
|
||||
background-color: #ffffff;
|
||||
|
||||
page {
|
||||
background-color: #f2f2f2;
|
||||
}
|
||||
.date-picker-container {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: #f2f2f2;
|
||||
border-radius: 8px;
|
||||
padding: 4px;
|
||||
.date-input-wrapper {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
padding: 6px 0;
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
}
|
||||
.separator {
|
||||
color: #999;
|
||||
margin: 0 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.styles {
|
||||
border: none !important;
|
||||
color: #fff !important;
|
||||
background: #005BAC;
|
||||
}
|
||||
.search-button {
|
||||
width: 44px;
|
||||
height: 36px;
|
||||
margin-left: 10px;
|
||||
background-color: #007aff;
|
||||
color: white;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 4px;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
border: none;
|
||||
&:after {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.top-lists {
|
||||
width: fit-content;
|
||||
display: flex;
|
||||
padding: 30rpx 30rpx 0 0;
|
||||
background-color: #fff;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
.bonus-list-scroll {
|
||||
flex: 1;
|
||||
height: 0; // for flexbox to correctly size the scroll view
|
||||
}
|
||||
|
||||
.nav-view {
|
||||
width: 200rpx;
|
||||
cursor: pointer;
|
||||
padding: 0 26rpx;
|
||||
height: 44rpx;
|
||||
border-radius: 10rpx;
|
||||
border: 1rpx solid #999999;
|
||||
font-size: 14rpx;
|
||||
text-align: center;
|
||||
line-height: 44rpx;
|
||||
margin-left: 20rpx;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
.empty-state {
|
||||
text-align: center;
|
||||
color: #999;
|
||||
padding-top: 50px;
|
||||
}
|
||||
|
||||
.daily-bonus-card {
|
||||
background-color: #ffffff;
|
||||
border-radius: 12px;
|
||||
margin: 12px 15px;
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
|
||||
overflow: hidden;
|
||||
border: 1px solid #f0f0f0;
|
||||
transition: all 0.2s ease-in-out;
|
||||
&:active {
|
||||
transform: scale(0.98);
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
}
|
||||
|
||||
.card-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 15px;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
|
||||
.header-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.header-icon {
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.header-title {
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
color: #333;
|
||||
}
|
||||
.header-date {
|
||||
color: #666;
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
|
||||
.card-content {
|
||||
padding: 0;
|
||||
.bonus-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 12px 15px;
|
||||
font-size: 14px;
|
||||
border-bottom: 1px dashed #e5e5e5;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.item-label {
|
||||
color: #555;
|
||||
}
|
||||
.item-value {
|
||||
color: #111;
|
||||
font-weight: 600;
|
||||
font-family:
|
||||
'DIN-Alternate', 'PingFang SC', 'Helvetica Neue', Arial, sans-serif;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 15px;
|
||||
border-top: 1px solid #f0f0f0;
|
||||
.subtotal-label {
|
||||
font-weight: 600;
|
||||
font-size: 15px;
|
||||
color: #333;
|
||||
}
|
||||
.subtotal-value {
|
||||
font-weight: bold;
|
||||
color: #fa3534;
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
|
||||
.scroll-footer {
|
||||
text-align: center;
|
||||
padding: 10px 0;
|
||||
color: #999;
|
||||
font-size: 14px;
|
||||
}
|
||||
</style>
|
|
@ -136,7 +136,7 @@ export default {
|
|||
// 考核不通过
|
||||
return 'status-fail'
|
||||
}
|
||||
return ''
|
||||
return 'status-success'
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -182,6 +182,9 @@ export default {
|
|||
.status-fail {
|
||||
color: #fa3534;
|
||||
}
|
||||
.status-success {
|
||||
color: #00b42a;
|
||||
}
|
||||
}
|
||||
|
||||
.card-footer {
|
||||
|
|
|
@ -0,0 +1,118 @@
|
|||
<template>
|
||||
<view class="container">
|
||||
<view class="list">
|
||||
<view class="list-item" v-for="item in list" :key="item.memberCode">
|
||||
<view class="item-row">
|
||||
<text class="label">会员编号</text>
|
||||
<text class="value">{{ item.memberCode }}</text>
|
||||
</view>
|
||||
<view class="item-row">
|
||||
<text class="label">会员手机号</text>
|
||||
<text class="value">{{ item.phone }}</text>
|
||||
</view>
|
||||
<view class="item-row">
|
||||
<text class="label">结算等级</text>
|
||||
<text class="value">{{ item.settleGradeVal }}</text>
|
||||
</view>
|
||||
<view class="item-row">
|
||||
<text class="label">会员昵称</text>
|
||||
<text class="value">{{ item.nickName }}</text>
|
||||
</view>
|
||||
<view class="item-row">
|
||||
<text class="label">创建时间</text>
|
||||
<text class="value">{{ item.creationTime }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="load-more">
|
||||
<text v-if="status === 'loading'">加载中...</text>
|
||||
<text v-if="status === 'nomore'">没有更多数据了</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getDirectPushList } from '@/config/mine'
|
||||
export default {
|
||||
name: 'DirectPush',
|
||||
data() {
|
||||
return {
|
||||
list: [],
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
status: 'loading', // loading, loadmore, nomore
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
uni.setNavigationBarTitle({
|
||||
title: '服务列表',
|
||||
})
|
||||
this.getDirectPushList()
|
||||
},
|
||||
onReachBottom() {
|
||||
if (this.status === 'nomore' || this.status === 'loading') {
|
||||
return
|
||||
}
|
||||
this.pageNum++
|
||||
this.getDirectPushList()
|
||||
},
|
||||
methods: {
|
||||
getDirectPushList() {
|
||||
this.status = 'loading'
|
||||
getDirectPushList({
|
||||
pageNum: this.pageNum,
|
||||
pageSize: this.pageSize,
|
||||
})
|
||||
.then(res => {
|
||||
this.list = this.list.concat(res.rows)
|
||||
this.total = res.total
|
||||
if (this.list.length >= this.total) {
|
||||
this.status = 'nomore'
|
||||
} else {
|
||||
this.status = 'loadmore'
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
if (this.pageNum > 1) {
|
||||
this.pageNum--
|
||||
}
|
||||
this.status = 'loadmore'
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.container {
|
||||
background-color: #f0f2f5;
|
||||
min-height: 100vh;
|
||||
padding-top: 1rpx;
|
||||
}
|
||||
.list-item {
|
||||
background-color: #ffffff;
|
||||
margin: 16rpx 24rpx;
|
||||
padding: 16rpx 24rpx;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
.item-row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 12rpx 0;
|
||||
font-size: 28rpx;
|
||||
.label {
|
||||
color: #8c8c8c;
|
||||
}
|
||||
.value {
|
||||
color: #303133;
|
||||
}
|
||||
}
|
||||
.load-more {
|
||||
text-align: center;
|
||||
color: #999;
|
||||
padding: 20rpx 0;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
</style>
|
|
@ -23,19 +23,28 @@
|
|||
<view class="tTit1">{{ userInfo.memberCode }}</view>
|
||||
</view>
|
||||
<view class="level_box">
|
||||
<view class="level_tag">
|
||||
<u-icon name="star" color="#fff" size="14"></u-icon>
|
||||
<text class="level_label">当月级别</text>
|
||||
<view class="level_tag level_tag--primary">
|
||||
<u-icon name="level" color="#A77B09" size="14"></u-icon>
|
||||
<text class="level_label">会员等级</text>
|
||||
<text class="level_value">{{
|
||||
userInfo.pkGradeVal || '-'
|
||||
}}</text>
|
||||
</view>
|
||||
<view class="level_tag">
|
||||
<u-icon name="level" color="#fff" size="14"></u-icon>
|
||||
<text class="level_label">荣誉级别</text>
|
||||
<text class="level_value">{{
|
||||
userInfo.pkAwardsVal || '-'
|
||||
}}</text>
|
||||
<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 class="level_tag">
|
||||
<u-icon name="star" color="#005BAC" size="14"></u-icon>
|
||||
<text class="level_label">荣誉奖衔</text>
|
||||
<text class="level_value">{{
|
||||
userInfo.pkMaxAwardsVal || '-'
|
||||
}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -205,22 +214,22 @@
|
|||
</view>
|
||||
<view class="region-info-box">
|
||||
<view class="region-info-item">
|
||||
<text class="region-info-label">{{ '省' }}</text>
|
||||
<text class="region-info-value">{{
|
||||
regionInfo.provinceVal || '-'
|
||||
}}</text>
|
||||
<text class="region-info-label">{{ '省' }}</text>
|
||||
</view>
|
||||
<view class="region-info-item">
|
||||
<text class="region-info-label">{{ '市' }}</text>
|
||||
<text class="region-info-value">{{
|
||||
regionInfo.cityVal || '-'
|
||||
}}</text>
|
||||
<text class="region-info-label">{{ '市' }}</text>
|
||||
</view>
|
||||
<view class="region-info-item">
|
||||
<text class="region-info-label">{{ '区' }}</text>
|
||||
<text class="region-info-value">{{
|
||||
regionInfo.countyVal || '-'
|
||||
}}</text>
|
||||
<text class="region-info-label">{{ '区' }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -229,37 +238,49 @@
|
|||
<view class="my_order" v-if="marketWrapperVisible">
|
||||
<view class="my_title">
|
||||
<text class="thetitle">{{ '市场动态' }}</text>
|
||||
<view
|
||||
class="findallorder"
|
||||
@click="goTo('/pages/performanceEchart/index')"
|
||||
>
|
||||
<text>更多</text>
|
||||
<u-icon name="arrow-right" color="#999999" size="16rpx"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<view class="market-cards-container">
|
||||
<view class="market-card-row">
|
||||
<view class="market-card primary">
|
||||
<text class="card-label">总业绩:</text>
|
||||
<text class="card-value">{{
|
||||
performanceData.totalPerformance || '0.0000'
|
||||
}}</text>
|
||||
<view class="market-stats-container">
|
||||
<view class="stat-row">
|
||||
<view class="stat-cards">
|
||||
<view class="stat-card primary">
|
||||
<text class="stat-label">总业绩:</text>
|
||||
<text class="stat-value">{{
|
||||
performanceData.totalSumPv || '0.00'
|
||||
}}</text>
|
||||
</view>
|
||||
<view class="stat-card secondary">
|
||||
<text class="stat-label">小区:</text>
|
||||
<text class="stat-value">{{
|
||||
performanceData.smallAreaPv || '0.00'
|
||||
}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="market-card secondary">
|
||||
<text class="card-label">小区:</text>
|
||||
<text class="card-value">{{
|
||||
performanceData.smallAreaPerformance || '0.0000'
|
||||
}}</text>
|
||||
<view
|
||||
class="stat-more"
|
||||
@click="goTo('/pages/performanceEchart/index')"
|
||||
>
|
||||
<text>更多</text>
|
||||
<u-icon name="arrow-right" color="#999999" size="14rpx"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<view class="market-card-row">
|
||||
<view class="market-card primary">
|
||||
<text class="card-label">总盒数:</text>
|
||||
<text class="card-value">{{ totalBox || '0' }}</text>
|
||||
<view class="stat-row">
|
||||
<view class="stat-cards">
|
||||
<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="market-card secondary">
|
||||
<text class="card-label">小区盒数:</text>
|
||||
<text class="card-value">{{ smallAreaBox || '0' }}</text>
|
||||
<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>
|
||||
|
@ -444,7 +465,14 @@ export default {
|
|||
name: '我的钱包',
|
||||
imgurl: '../../static/images/my_icon1.png',
|
||||
menuKey: 'wallet',
|
||||
ifshow: false,
|
||||
ifshow: true,
|
||||
},
|
||||
{
|
||||
url: '/pages/bonus/index',
|
||||
name: '奖金明细',
|
||||
imgurl: '../../static/images/mark2.png',
|
||||
menuKey: 'incomeDetail',
|
||||
ifshow: true,
|
||||
},
|
||||
{
|
||||
url: '/pages/ticket/index',
|
||||
|
@ -459,12 +487,12 @@ export default {
|
|||
name: '自助服务',
|
||||
imgurl: '../../static/images/my_icon6.png',
|
||||
menuKey: 'selfHelp',
|
||||
ifshow: false,
|
||||
ifshow: true,
|
||||
},
|
||||
{
|
||||
url: '/pages/mine/share/index',
|
||||
name: '个人推广',
|
||||
imgurl: '../../static/images/promotion.svg',
|
||||
imgurl: '../../static/images/list.svg',
|
||||
menuKey: 'share',
|
||||
ifshow: true,
|
||||
},
|
||||
|
@ -473,28 +501,35 @@ export default {
|
|||
name: '账号安全',
|
||||
imgurl: '../../static/images/my_icon8.png',
|
||||
menuKey: '',
|
||||
ifshow: false,
|
||||
ifshow: true,
|
||||
},
|
||||
{
|
||||
url: '/pages/addressList/index',
|
||||
name: '地址管理',
|
||||
imgurl: '../../static/images/my_icon9.png',
|
||||
menuKey: '',
|
||||
ifshow: false,
|
||||
ifshow: true,
|
||||
},
|
||||
{
|
||||
url: '/pages/mine/directPush/index',
|
||||
name: '直推列表',
|
||||
imgurl: '../../static/images/mark5.png',
|
||||
menuKey: '',
|
||||
ifshow: true,
|
||||
},
|
||||
{
|
||||
url: '/pages/mine/bindBank/index',
|
||||
name: '银行信息',
|
||||
imgurl: '../../static/images/my_icon10.png',
|
||||
menuKey: '',
|
||||
ifshow: false,
|
||||
ifshow: true,
|
||||
},
|
||||
{
|
||||
url: '/pages/bonus/regional-assessment/index',
|
||||
name: '区域考核',
|
||||
imgurl: '../../static/images/mark5.png',
|
||||
menuKey: '',
|
||||
ifshow: false,
|
||||
ifshow: true,
|
||||
},
|
||||
// {
|
||||
// url: '/pages/mine/addNewPv/index',
|
||||
|
@ -513,15 +548,18 @@ export default {
|
|||
smallAreaBox: 0,
|
||||
totalBox: 0,
|
||||
performanceData: {},
|
||||
marketDynamicBoxInfo: {},
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.getInfo()
|
||||
this.orderNum()
|
||||
this.getRegionSelect()
|
||||
this.getMemberBoxCount()
|
||||
this.fetchMemberPerformance()
|
||||
// this.getUserAwardss()
|
||||
this.getInfo().finally(() => {
|
||||
this.orderNum()
|
||||
this.getRegionSelect()
|
||||
this.getMemberBoxCount()
|
||||
this.fetchMemberPerformance()
|
||||
this.getMarketDynamicBoxCount()
|
||||
// this.getUserAwardss()
|
||||
})
|
||||
},
|
||||
|
||||
computed: {
|
||||
|
@ -637,43 +675,21 @@ export default {
|
|||
})
|
||||
},
|
||||
getInfo() {
|
||||
api.getInfo().then(res => {
|
||||
if (res) {
|
||||
this.userInfo = res.data
|
||||
if (this.userInfo.memberCode == 'CN68880628') {
|
||||
this.ifSpecial = true
|
||||
return new Promise(resolve => {
|
||||
api.getInfo().then(res => {
|
||||
if (res.code == 200) {
|
||||
this.userInfo = res.data
|
||||
resolve()
|
||||
if (this.userInfo.memberCode == 'CN68880628') {
|
||||
this.ifSpecial = true
|
||||
} else {
|
||||
this.ifSpecial = false
|
||||
}
|
||||
} else {
|
||||
this.ifSpecial = false
|
||||
reject()
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
api.getMenuList().then(res => {
|
||||
res.data.forEach(item => {
|
||||
if (item.menuKey == 'iHonorAward') {
|
||||
this.iHonorAward = true
|
||||
}
|
||||
this.markMenuList.forEach(ele => {
|
||||
if (ele.menuKey == item.menuKey || ele.menuKey == '') {
|
||||
ele.ifshow = true
|
||||
}
|
||||
})
|
||||
this.otherMenuList.forEach(ele => {
|
||||
if (ele.menuKey == item.menuKey || ele.menuKey == '') {
|
||||
ele.ifshow = true
|
||||
}
|
||||
})
|
||||
})
|
||||
console.log('🌈ad', this.otherMenuList)
|
||||
|
||||
let a = this.markMenuList.some(item => {
|
||||
return item.ifshow == true
|
||||
})
|
||||
this.actMenu = a
|
||||
})
|
||||
// api.memberAwards().then((res) => {
|
||||
// this.awardsList = res.data;
|
||||
// });
|
||||
},
|
||||
goTo(url) {
|
||||
if (url == 1) {
|
||||
|
@ -687,6 +703,13 @@ export default {
|
|||
})
|
||||
}
|
||||
},
|
||||
getMarketDynamicBoxCount() {
|
||||
getMarketDynamicBoxCount().then(res => {
|
||||
if (res.code == 200) {
|
||||
this.marketDynamicBoxInfo = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
goOrder(index) {
|
||||
//全部订单
|
||||
uni.navigateTo({
|
||||
|
@ -714,7 +737,9 @@ export default {
|
|||
})
|
||||
},
|
||||
getMemberBoxCount() {
|
||||
getMemberBoxCount().then(res => {
|
||||
getMemberBoxCount({
|
||||
pkBigMember: this.userInfo.memberCode,
|
||||
}).then(res => {
|
||||
if (res.code == 200) {
|
||||
this.totalBox = res.data?.totalBox || 0
|
||||
this.smallAreaBox = res.data?.smallAreaBox || 0
|
||||
|
@ -763,34 +788,6 @@ export default {
|
|||
color: #666666;
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
|
||||
.highlight-name {
|
||||
font-size: 30rpx; /* 示例字号,您可以根据需要调整 */
|
||||
font-weight: bold;
|
||||
color: #005bac; /* 示例颜色,您可以根据需要调整 */
|
||||
padding: 0 8rpx; /* 增加一些内边距,使其更突出 */
|
||||
margin-right: 10rpx; /* 在名称和下一个标签之间添加间距 */
|
||||
}
|
||||
|
||||
.highlight-pv {
|
||||
font-size: 30rpx; /* 示例字号,您可以根据需要调整 */
|
||||
font-weight: bold;
|
||||
color: #ff5722; /* 示例颜色,您可以根据需要调整 */
|
||||
padding: 0 8rpx; /* 增加一些内边距,使其更突出 */
|
||||
}
|
||||
|
||||
.ju_title {
|
||||
font-family: Source Han Sans CN;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
// padding-bottom: 10rpx;
|
||||
// border-bottom: 2rpx solid #eeeeee;
|
||||
// display: flex;
|
||||
// justify-content: space-between
|
||||
}
|
||||
.ju_title1 {
|
||||
font-size: 18px;
|
||||
}
|
||||
.jugrade_flex {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
@ -1092,17 +1089,14 @@ export default {
|
|||
|
||||
.level_box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 16rpx;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 10rpx;
|
||||
}
|
||||
|
||||
.level_tag {
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
backdrop-filter: blur(10rpx);
|
||||
-webkit-backdrop-filter: blur(10rpx);
|
||||
border: 1rpx solid rgba(255, 255, 255, 0.3);
|
||||
background: linear-gradient(145deg, #c5d8e8, #afc8de, #9ab5d0);
|
||||
border: 1rpx solid #8ca3b8;
|
||||
padding: 6rpx 18rpx;
|
||||
border-radius: 50px;
|
||||
display: inline-flex;
|
||||
|
@ -1110,23 +1104,19 @@ export default {
|
|||
gap: 10rpx;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
color: #003e7c;
|
||||
box-shadow:
|
||||
inset 0 1px 1px rgba(255, 255, 255, 0.3),
|
||||
0 1px 2px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.level_tag::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: linear-gradient(
|
||||
100deg,
|
||||
rgba(255, 255, 255, 0) 20%,
|
||||
rgba(255, 255, 255, 0.5) 50%,
|
||||
rgba(255, 255, 255, 0) 80%
|
||||
);
|
||||
transform: translateX(-100%);
|
||||
animation: bling_shimmer 3.5s infinite linear;
|
||||
.level_tag--primary {
|
||||
background: linear-gradient(145deg, #fde468, #fad02c, #e5b40a);
|
||||
border: 1rpx solid #c8a000;
|
||||
color: #5d4203;
|
||||
box-shadow:
|
||||
inset 0 1px 1px rgba(255, 255, 255, 0.4),
|
||||
0 1px 2px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
.level_label {
|
||||
|
@ -1370,7 +1360,7 @@ export default {
|
|||
.region-info-label {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
margin-top: 10rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.region-info-value {
|
||||
|
@ -1384,7 +1374,7 @@ export default {
|
|||
box-shadow: 0rpx 6rpx 24rpx rgba(0, 0, 0, 0.06);
|
||||
border-radius: 24rpx;
|
||||
margin-top: 20rpx;
|
||||
padding: 30rpx;
|
||||
padding: 20rpx;
|
||||
}
|
||||
|
||||
.info-grid {
|
||||
|
@ -1431,12 +1421,13 @@ export default {
|
|||
color: #999999;
|
||||
}
|
||||
|
||||
.market-cards-container {
|
||||
.market-stats-container {
|
||||
padding: 20rpx 0;
|
||||
}
|
||||
|
||||
.market-card-row {
|
||||
.stat-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 20rpx;
|
||||
|
||||
|
@ -1445,17 +1436,34 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
.market-card {
|
||||
width: 48%;
|
||||
.stat-cards {
|
||||
display: flex;
|
||||
gap: 20rpx;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.stat-card {
|
||||
flex: 1;
|
||||
padding: 20rpx;
|
||||
border-radius: 10rpx;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 24rpx;
|
||||
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);
|
||||
}
|
||||
|
@ -1463,16 +1471,15 @@ export default {
|
|||
&.secondary {
|
||||
background: linear-gradient(135deg, #4682b4, #87ceeb);
|
||||
}
|
||||
}
|
||||
|
||||
.card-label {
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.card-value {
|
||||
font-weight: bold;
|
||||
font-size: 28rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
.stat-more {
|
||||
margin-left: 20rpx;
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
@keyframes bling_shimmer {
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1749643527528" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5087" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M402.60608 153.088h500.736c39.424 0 71.68 32.256 71.68 71.68s-32.256 71.68-71.68 71.68h-500.736c-39.424 0-71.68-32.256-71.68-71.68 0.512-39.424 32.256-71.68 71.68-71.68zM402.60608 475.136h500.736c39.424 0 71.68 32.256 71.68 71.68s-32.256 71.68-71.68 71.68h-500.736c-39.424 0-71.68-32.256-71.68-71.68 0.512-39.424 32.256-71.68 71.68-71.68zM384.68608 833.024h536.576c29.696 0 53.76 24.064 53.76 53.76s-24.064 53.76-53.76 53.76h-536.576c-29.696 0-53.76-24.064-53.76-53.76 0.512-29.696 24.576-53.76 53.76-53.76z" fill="#f52a10" p-id="5088"></path><path d="M396.8 320h515.584c51.712 0 93.696-41.984 93.696-93.696 0-51.712-41.984-93.696-93.696-93.696H396.8c-51.712 0-93.696 41.984-93.696 93.696 0 51.712 41.984 93.696 93.696 93.696z m0-140.8h515.584c26.112 0 47.104 20.992 47.104 46.592 0 26.112-20.992 47.104-46.592 47.104H396.8c-26.112 0-47.104-20.992-47.104-46.592 0.512-26.112 21.504-47.104 47.104-47.104zM162.816 132.608c-51.712 0-93.696 41.984-93.696 93.696 0 51.712 41.984 93.696 93.696 93.696s93.696-41.984 93.696-93.696c0-51.712-41.984-93.696-93.696-93.696z m0 140.288c-26.112 0-47.104-20.992-47.104-47.104s20.992-47.104 47.104-47.104S209.92 199.68 209.92 225.792c-0.512 26.112-21.504 47.104-47.104 47.104zM912.384 460.8H396.8c-51.712 0-93.696 41.984-93.696 93.696 0 51.712 41.984 93.696 93.696 93.696h515.584c51.712 0 93.696-41.984 93.696-93.696 0.512-51.712-41.472-93.696-93.696-93.696z m0 140.288H396.8c-26.112 0-47.104-20.992-47.104-46.592 0-26.112 20.992-47.104 46.592-47.104h515.584c26.112 0 47.104 20.992 47.104 46.592 0.512 26.112-20.48 47.104-46.592 47.104 0.512 0 0.512 0 0 0zM162.816 460.8c-51.712 0-93.696 41.984-93.696 93.696s41.984 93.696 93.696 93.696 93.696-41.984 93.696-93.696c0-52.224-41.984-93.696-93.696-93.696z m0 140.288c-26.112 0-47.104-20.992-47.104-47.104s20.992-47.104 47.104-47.104 47.104 20.992 47.104 47.104c-0.512 26.112-21.504 47.104-47.104 47.104zM912.384 788.48H396.8c-51.712 0-93.696 41.984-93.696 93.696 0 51.712 41.984 93.696 93.696 93.696h515.584c51.712 0 93.696-41.984 93.696-93.696 0.512-51.712-41.472-93.696-93.696-93.696z m0 140.8H396.8c-26.112 0-47.104-20.992-47.104-46.592 0-26.112 20.992-47.104 46.592-47.104h515.584c26.112 0 47.104 20.992 47.104 46.592 0.512 26.112-20.48 47.104-46.592 47.104 0.512 0 0.512 0 0 0zM162.816 788.48c-51.712 0-93.696 41.984-93.696 93.696 0 51.712 41.984 93.696 93.696 93.696s93.696-41.984 93.696-93.696c0-51.712-41.984-93.696-93.696-93.696z m0 140.8c-26.112 0-47.104-20.992-47.104-47.104s20.992-47.104 47.104-47.104 47.104 20.992 47.104 47.104c-0.512 26.112-21.504 47.104-47.104 47.104z" fill="#f52a10" p-id="5089"></path></svg>
|
After Width: | Height: | Size: 2.9 KiB |
Loading…
Reference in New Issue