diff --git a/packages/app/src/pages/admin/orders.vue b/packages/app/src/pages/admin/orders.vue index 08a2406..b0853cc 100644 --- a/packages/app/src/pages/admin/orders.vue +++ b/packages/app/src/pages/admin/orders.vue @@ -1,5 +1,5 @@ @@ -266,13 +353,18 @@ onMounted(() => { /* ── Stats bar ──────────────────────────────── */ .stats-bar { + position: fixed; + top: calc(var(--status-bar) + 44px); + left: 0; + right: 0; display: flex; align-items: center; + height: 96rpx; background: #FFFFFF; - padding: 28rpx 0; - margin: 0; + padding: 0; border-bottom: 1rpx solid rgba(180, 160, 130, 0.2); box-shadow: 0 2rpx 12rpx rgba(180, 160, 130, 0.08); + z-index: 100; } .stat-item { @@ -309,9 +401,13 @@ onMounted(() => { /* ── Filter pills ───────────────────────────── */ .filter-wrap { + position: fixed; + top: calc(var(--status-bar) + 92px); + left: 0; + right: 0; background: #FAF8F5; border-bottom: 1rpx solid rgba(180, 160, 130, 0.15); - flex-shrink: 0; + z-index: 99; } .filter-scroll { overflow: hidden; } @@ -364,7 +460,11 @@ onMounted(() => { /* ── List ───────────────────────────────────── */ .list-scroll { - flex: 1; + position: fixed; + top: calc(var(--status-bar) + 144px); + left: 0; + right: 0; + bottom: 0; overflow: hidden; } diff --git a/packages/app/src/stores/admin.ts b/packages/app/src/stores/admin.ts index f5c0219..1fa9b6e 100644 --- a/packages/app/src/stores/admin.ts +++ b/packages/app/src/stores/admin.ts @@ -120,7 +120,10 @@ export const useAdminStore = defineStore('admin', () => { limit?: number status?: string }): Promise> { - return get>('/admin/orders', params) + console.log('[admin] fetchAdminOrders params:', params) + const result = await get>('/admin/orders', params) + console.log('[admin] fetchAdminOrders result:', result) + return result } // ── Bookings ───────────────────────────────────────────────────── diff --git a/packages/app/src/utils/format.ts b/packages/app/src/utils/format.ts index fcdac1b..c86ed3d 100644 --- a/packages/app/src/utils/format.ts +++ b/packages/app/src/utils/format.ts @@ -135,14 +135,15 @@ export function getStockPercent(soldCount: number, totalStock: number): string { return `${Math.min(100, getStockRatio(soldCount, totalStock) * 100)}%` } -/** 格式化日期时间为 MM-DD HH:mm */ +/** 格式化日期时间为 MM-DD HH:mm:ss */ export function formatDateTime(dateStr: string): string { const d = new Date(dateStr) const month = String(d.getMonth() + 1).padStart(2, '0') const day = String(d.getDate()).padStart(2, '0') const hour = String(d.getHours()).padStart(2, '0') const min = String(d.getMinutes()).padStart(2, '0') - return `${month}-${day} ${hour}:${min}` + const sec = String(d.getSeconds()).padStart(2, '0') + return `${month}-${day} ${hour}:${min}:${sec}` } /** 格式化 Date 为 YYYY-MM-DD(本地时间,用于 picker) */ diff --git a/packages/server/src/payment/payment.service.ts b/packages/server/src/payment/payment.service.ts index 033d716..062075a 100644 --- a/packages/server/src/payment/payment.service.ts +++ b/packages/server/src/payment/payment.service.ts @@ -15,7 +15,7 @@ export interface CreateOrderResult { } export interface PaginatedOrders { - data: T[] + items: T[] total: number page: number limit: number @@ -176,7 +176,7 @@ export class PaymentService { ]) return { - data: data.map((o) => ({ ...o, cardType: { ...o.cardType } })), + items: data.map((o) => ({ ...o, cardType: { ...o.cardType } })), total, page, limit, @@ -207,8 +207,9 @@ export class PaymentService { this.prisma.order.count({ where }), ]) + this.logger.log(`getAllOrders: page=${page}, limit=${limit}, status=${status}, count=${total}`) return { - data: data.map((o) => ({ + items: data.map((o) => ({ ...o, cardType: { ...o.cardType }, user: { ...o.user },