日期: 2026-07-02 状态: 进行中 负责人: Sisyphus
目前小程序中各维度页面(身/心/智/行/富)的 DimensionActivities 组件点击"更多"按钮后统一跳转到 discover/index?type=activity,该页面以商品发现为主,活动仅为筛选类型之一,用户体验不专注。
设计独立的活动主页 /pages/activity/index,作为活动聚合入口,统一承接所有维度页"更多"来的流量,优先展示用户报名的活动。
/pages/activity/index (新建,独立subPackage: pages/activity)
| Tab | 内容 | 数据来源 |
|---|---|---|
| 我的活动 | 用户报名的活动(含状态筛选) | getMyActivityRegistrations |
| 发现活动 | 所有公开活动(含维度筛选) | getActivityList |
| 历史记录 | 已结束/已签到的活动 | getMyActivityRegistrations(status=ended) |
注意: 未登录用户默认展示"发现活动"Tab,"我的活动"和"历史记录"显示登录引导。
状态筛选 Chips(横向滚动):
活动卡片展示:
┌────────────────────────────────────────┐
│ [封面图] │ 活动标题 │
│ 72×72 │ 🕐 时间 / 📍 地点 │
│ │ [状态标签] [倒计时标签] │
│ ├────────────────────────────────┤
│ │ [取消报名] [签到] │
└────────────────────────────────────────┘
操作按钮逻辑:
报名成功 + 未到时间 → 显示"签到"按钮报名成功 + 已到时间 + 未签到 → 显示"签到"按钮报名待审核 → 显示"取消报名"按钮(灰色)已签到 → 不显示操作按钮已结束 → 归入"历史记录"Tab空状态:
📋 暂无报名的活动
去发现页探索精彩活动吧
[去发现活动] 按钮
维度筛选 Chips(横向滚动):
活动卡片展示:
┌────────────────────────────────────────┐
│ [封面图] │ 活动标题 │
│ 72×72 │ 🕐 时间 / 📍 地点 │
│ │ [状态标签] 价格 │
└────────────────────────────────────────┘
点击卡片 → 跳转 /pages/discover/activity-detail/activity-detail?id=xxx
空状态:
🎯 暂无相关活动
试试其他维度筛选
筛选 Chips: 全部 / 已结束 / 已签到
卡片样式同"我的活动",但操作按钮均不显示。
| 前端函数 | 端点 | 参数 |
|---|---|---|
getMyActivityRegistrations(data) |
POST /api/activity/my-registrations |
{ childId, page, size, status? } |
getActivityList(data) |
POST /api/activity/list |
{ dimensionCode?, page, size, status? } |
getActivityDetail(id) |
POST /api/activity/detail |
{ id } |
registerActivity(data) |
POST /api/activity/register |
{ id, childId } |
cancelActivityRegistration(data) |
POST /api/activity/cancel-registration |
{ id, childId } |
activityCheckin(data) |
POST /api/activity/checkin |
{ id, childId } |
| 后端 status | 前端标签 | 说明 |
|---|---|---|
pending |
🟡 待审核 | 报名待审核 |
approved |
🟢 报名成功 | 已通过审核 |
rejected |
❌ 已拒绝 | 报名被拒绝 |
cancelled |
⚪ 已取消 | 用户取消 |
checked_in |
✅ 已签到 | 签到完成 |
所有使用 DimensionActivities 组件的页面,其 goMoreActivities 方法需改为:
goMoreActivities: function() {
uni.navigateTo({ url: '/pages/activity/index' })
}
受影响文件:
pages/index/parent-index.vuepages/index/child-index.vuepages/body/index.vuepages/body/member-body-detail.vuepages/body-detail/member-body-detail.vuepages/mind/index.vuepages/mind/member-mind-detail.vuepages/mind-detail/member-mind-detail.vuepages/wisdom/index.vuepages/wisdom/member-wisdom-detail.vuepages/wisdom/wisdom_temp/member-wisdom-detail.vuepages/wisdom-detail/member-wisdom-detail.vuepages/action/index.vuepages/action/member-action-detail.vuepages/action-detail/member-action-detail.vuepages/wisdom/wisdom_temp/index.vue| 文件 | 说明 |
|---|---|
cfc-frontend/pages/activity/index.vue |
活动主页主页面 |
cfc-frontend/pages/activity/activity-detail/activity-detail.vue |
活动详情页(可复用现有,但需迁移路由注册) |
| 文件 | 修改内容 |
|---|---|
cfc-frontend/pages.json |
注册 pages/activity subPackage |
| 16个使用 DimensionActivities 的页面 | 更新 goMoreActivities 跳转目标 |
DimensionActivities.vue 卡片样式参考(但不完全复用,因为是新页面自己管理数据)pages/discover/activity-detail/activity-detail.vue 详情页逻辑参考uni.scss 全局样式变量{
"root": "pages/activity",
"pages": [
{
"path": "index",
"style": { "navigationBarTitleText": "活动中心" }
},
{
"path": "activity-detail/activity-detail",
"style": { "navigationBarTitleText": "活动详情" }
}
]
}
注意: pages/discover/activity-detail/activity-detail.vue 仍保留(discover-detail subPackage),新路由为独立 activity subPackage。
以下内容需用户确认后才能最终确定:
#F97316(暖橙,同小程序主色)#FFF7ED + #F97316#FEF3C7 + #D97706#F0FDF4 + #22C55E#FEE2E2 + #EF4444#F5F5F5 + #999