|
|
|
|
@ -20,6 +20,11 @@ type ScheduleCountBlock = {
|
|
|
|
|
ended: number
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type ActivityScheduleCountsBlock = ScheduleCountBlock & {
|
|
|
|
|
/** 至少有一场已发布(上架且审核通过)活动的去重场馆数 */
|
|
|
|
|
published_venues_count: number
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type TicketGrabScheduleCountBlock = ScheduleCountBlock & {
|
|
|
|
|
verify_rate_pct: number | null
|
|
|
|
|
verified_people: number
|
|
|
|
|
@ -40,13 +45,15 @@ const stats = ref({
|
|
|
|
|
venues_count: 0,
|
|
|
|
|
ticket_grab_sessions: 0,
|
|
|
|
|
user_count: 0,
|
|
|
|
|
reservation_order_count: 0,
|
|
|
|
|
},
|
|
|
|
|
activity_schedule_counts: {
|
|
|
|
|
total: 0,
|
|
|
|
|
not_started: 0,
|
|
|
|
|
ongoing: 0,
|
|
|
|
|
ended: 0,
|
|
|
|
|
} as ScheduleCountBlock,
|
|
|
|
|
published_venues_count: 0,
|
|
|
|
|
} as ActivityScheduleCountsBlock,
|
|
|
|
|
ticket_grab_schedule_counts: {
|
|
|
|
|
total: 0,
|
|
|
|
|
not_started: 0,
|
|
|
|
|
@ -343,6 +350,10 @@ onMounted(async () => {
|
|
|
|
|
<div class="dash-stat-cell__value">{{ stats.summary.venues_count ?? 0 }}</div>
|
|
|
|
|
<div class="dash-stat-cell__label">现有场馆</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="dash-stat-cell dash-stat-cell--mint">
|
|
|
|
|
<div class="dash-stat-cell__value">{{ stats.summary.reservation_order_count ?? 0 }}</div>
|
|
|
|
|
<div class="dash-stat-cell__label">总预约次数</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="dash-stat-cell dash-stat-cell--sky">
|
|
|
|
|
<div class="dash-stat-cell__value">{{ stats.summary.user_count }}</div>
|
|
|
|
|
<div class="dash-stat-cell__label">用户数</div>
|
|
|
|
|
@ -417,6 +428,10 @@ onMounted(async () => {
|
|
|
|
|
<div class="dash-stat-cell__value">{{ stats.activity_schedule_counts.ended }}</div>
|
|
|
|
|
<div class="dash-stat-cell__label">已结束</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="dash-stat-cell dash-stat-cell--indigo">
|
|
|
|
|
<div class="dash-stat-cell__value">{{ stats.activity_schedule_counts.published_venues_count ?? 0 }}</div>
|
|
|
|
|
<div class="dash-stat-cell__label">已发布活动场馆</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</article>
|
|
|
|
|
@ -880,7 +895,13 @@ onMounted(async () => {
|
|
|
|
|
|
|
|
|
|
@media (min-width: 640px) {
|
|
|
|
|
.dash-stat-grid.dash-stat-grid--schedule-act {
|
|
|
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
|
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@media (min-width: 1000px) {
|
|
|
|
|
.dash-stat-grid.dash-stat-grid--schedule-act {
|
|
|
|
|
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -1036,6 +1057,12 @@ onMounted(async () => {
|
|
|
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@media (min-width: 720px) {
|
|
|
|
|
.dash-stat-grid.dash-stat-grid--core {
|
|
|
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dash-stat-cell {
|
|
|
|
|
border-radius: 10px;
|
|
|
|
|
padding: 12px 10px 14px;
|
|
|
|
|
@ -1100,6 +1127,13 @@ onMounted(async () => {
|
|
|
|
|
color: #00b42a;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dash-stat-cell--indigo {
|
|
|
|
|
background: linear-gradient(180deg, #f0f4ff 0%, #fafcff 100%);
|
|
|
|
|
}
|
|
|
|
|
.dash-stat-cell--indigo .dash-stat-cell__value {
|
|
|
|
|
color: #3c7eef;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dash-todo-sheet {
|
|
|
|
|
--dash-todo-row-h: 44px;
|
|
|
|
|
flex: 1;
|
|
|
|
|
|