feat(M08-B): 补保洁员端统计看板
This commit is contained in:
@@ -7,7 +7,15 @@ Page({
|
||||
activeTab: 'hall',
|
||||
hallTasks: [],
|
||||
myTasks: [],
|
||||
stats: { byStatus: {}, pendingSettlementText: cents(0) },
|
||||
stats: {
|
||||
byStatus: {},
|
||||
taskTotal: 0,
|
||||
completed: 0,
|
||||
rejected: 0,
|
||||
completionRate: 0,
|
||||
pendingSettlementText: cents(0),
|
||||
settledRewardText: cents(0),
|
||||
},
|
||||
selectedPhotosByTask: {},
|
||||
},
|
||||
|
||||
@@ -122,9 +130,17 @@ function formatTask(task) {
|
||||
}
|
||||
|
||||
function formatStats(stats) {
|
||||
const taskTotal = Number(stats.taskTotal || 0)
|
||||
const completed = Number(stats.completed || 0)
|
||||
const rejected = Number(stats.rejected || 0)
|
||||
return {
|
||||
byStatus: stats.byStatus || {},
|
||||
taskTotal,
|
||||
completed,
|
||||
rejected,
|
||||
completionRate: Number(stats.completionRate || 0),
|
||||
pendingSettlementText: cents(stats.pendingSettlementCents),
|
||||
settledRewardText: cents(stats.settledRewardCents),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<view class="header">
|
||||
<view>
|
||||
<view class="title">保洁任务</view>
|
||||
<view class="muted">待结算 {{stats.pendingSettlementText}}</view>
|
||||
<view class="muted">待结算 {{stats.pendingSettlementText}} · 已结算 {{stats.settledRewardText}}</view>
|
||||
</view>
|
||||
<button size="mini" loading="{{loading}}" bindtap="refreshAll">刷新</button>
|
||||
</view>
|
||||
@@ -20,6 +20,25 @@
|
||||
<text>完成 {{stats.byStatus.COMPLETED || 0}}</text>
|
||||
</view>
|
||||
|
||||
<view class="stats-board">
|
||||
<view class="stats-card">
|
||||
<text>任务总数</text>
|
||||
<strong>{{stats.taskTotal}}</strong>
|
||||
</view>
|
||||
<view class="stats-card">
|
||||
<text>完成率</text>
|
||||
<strong>{{stats.completionRate}}%</strong>
|
||||
</view>
|
||||
<view class="stats-card">
|
||||
<text>驳回</text>
|
||||
<strong>{{stats.rejected}}</strong>
|
||||
</view>
|
||||
<view class="stats-card">
|
||||
<text>已结算</text>
|
||||
<strong>{{stats.settledRewardText}}</strong>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{errorMessage}}" class="error">{{errorMessage}}</view>
|
||||
|
||||
<block wx:if="{{activeTab === 'hall'}}">
|
||||
|
||||
@@ -53,6 +53,32 @@
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.stats-board {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 16rpx;
|
||||
margin-top: 16rpx;
|
||||
}
|
||||
|
||||
.stats-card {
|
||||
display: grid;
|
||||
gap: 8rpx;
|
||||
min-width: 0;
|
||||
padding: 20rpx 24rpx;
|
||||
border-radius: 16rpx;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.stats-card text {
|
||||
color: #667085;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.stats-card strong {
|
||||
color: #101828;
|
||||
font-size: 34rpx;
|
||||
}
|
||||
|
||||
.task-card {
|
||||
margin-top: 20rpx;
|
||||
padding: 28rpx;
|
||||
|
||||
Reference in New Issue
Block a user