diff --git a/pwuniapp/common/api.js b/pwuniapp/common/api.js index b35fd7e..588a020 100644 --- a/pwuniapp/common/api.js +++ b/pwuniapp/common/api.js @@ -51,16 +51,36 @@ export function formatActivityData(raw) { /** * 获取组局活动列表 (真实请求 MySQL,异常时返回空列表) */ -export async function getActivities() { +export async function getActivities(options = {}) { + const paged = Number(options.page) > 0; try { - const list = await http.get('/activities'); - if (Array.isArray(list) && list.length > 0) { - return list.map(formatActivityData); + const qs = []; + if (paged) { + qs.push(`page=${Math.floor(Number(options.page))}`); + qs.push(`pageSize=${Math.floor(Number(options.pageSize) || 20)}`); + if (options.keyword) qs.push(`keyword=${encodeURIComponent(String(options.keyword).trim())}`); + if (options.payType) qs.push(`payType=${encodeURIComponent(options.payType)}`); + if (Number(options.creatorId) > 0) qs.push(`creatorId=${Math.floor(Number(options.creatorId))}`); + if (options.category) qs.push(`category=${encodeURIComponent(options.category)}`); + if (options.categoryName) qs.push(`categoryName=${encodeURIComponent(options.categoryName)}`); + } + const res = await http.get(`/activities${qs.length ? `?${qs.join('&')}` : ''}`); + if (Array.isArray(res)) { + return res.map(formatActivityData); + } + if (res && Array.isArray(res.list)) { + return { + list: res.list.map(formatActivityData), + total: Number(res.total || 0), + page: Number(res.page || 1), + pageSize: Number(res.pageSize || 20), + hasMore: Boolean(res.hasMore) + }; } } catch (err) { console.warn('[API] 获取后端活动列表异常:', err.message); } - return []; + return paged ? { list: [], total: 0, page: 1, pageSize: 20, hasMore: false } : []; } /** @@ -302,16 +322,33 @@ export function formatOrderData(raw) { /** * 获取订单列表 (真实读取 MySQL) */ -export async function getOrders() { +export async function getOrders(options = {}) { + const paged = Number(options.page) > 0; try { - const list = await http.get(`/orders?userId=${normalizeUserId()}`); - if (Array.isArray(list) && list.length > 0) { - return list.map(formatOrderData); + const qs = []; + if (options.status) qs.push(`status=${encodeURIComponent(options.status)}`); + if (paged) { + qs.push(`page=${Math.floor(Number(options.page))}`); + qs.push(`pageSize=${Math.floor(Number(options.pageSize) || 20)}`); + } + const suffix = qs.length ? `&${qs.join('&')}` : ''; + const res = await http.get(`/orders?userId=${normalizeUserId()}${suffix}`); + if (Array.isArray(res)) { + return res.map(formatOrderData); + } + if (res && Array.isArray(res.list)) { + return { + list: res.list.map(formatOrderData), + total: Number(res.total || 0), + page: Number(res.page || 1), + pageSize: Number(res.pageSize || 20), + hasMore: Boolean(res.hasMore) + }; } } catch (err) { console.warn('[API] 获取订单列表异常:', err.message); } - return []; + return paged ? { list: [], total: 0, page: 1, pageSize: 20, hasMore: false } : []; } /** @@ -1368,10 +1405,17 @@ export async function getSubscribeTemplates() { /** * 获取站内消息通知列表与未读数 */ -export async function getNotifications(userId, limit = 50) { +export async function getNotifications(userId, limit = 50, extra = {}) { const uid = normalizeUserId(userId); try { - const res = await http.get(`/notifications?userId=${uid}&limit=${Number(limit) || 50}`); + const qs = [`userId=${uid}`]; + if (Number(extra.page) > 0) { + qs.push(`page=${Math.floor(Number(extra.page))}`); + qs.push(`pageSize=${Math.floor(Number(extra.pageSize) || 20)}`); + } else { + qs.push(`limit=${Number(limit) || 50}`); + } + const res = await http.get(`/notifications?${qs.join('&')}`); return res || { list: [], unread: 0 }; } catch (err) { throw err; diff --git a/pwuniapp/pages/activity/list.vue b/pwuniapp/pages/activity/list.vue index 03febc8..4b6d3cf 100644 --- a/pwuniapp/pages/activity/list.vue +++ b/pwuniapp/pages/activity/list.vue @@ -163,6 +163,13 @@ 清空搜索条件 + + + 正在加载更多… + + + 没有更多了 + @@ -172,8 +179,8 @@