搜索
{{ user.real_name }}({{ user.role }}) 退出
📈 数据统计 📅 活动管理 🏷️ 分类管理 👤 用户管理 🧾 报名订单 👥 分班管理 📷 现场核销 场地预约 🖼️ 首页轮播 🔑 账号管理 🛠️ 系统设置 📝 中心介绍
当前为 MOCK 模式(未连接 MySQL,展示示例数据)。在 .env 配置数据库并把 USE_MOCK 改为 0 后自动切换为真实数据。

活动管理

共 {{ activities.length }} 个活动
刷新 导出 Excel + 新建活动

分类管理

活动「所属分类」的来源,可在此新建 / 改名 / 排序 / 上下架 / 删除
刷新 + 新建分类
停用后的分类不会出现在活动表单的下拉里,但已被它标记的历史活动不受影响;分类下有活动时不能直接删除,需先把相关活动改到其它分类或下架。

用户管理

小程序端微信授权登录产生的会员,共 {{ userTotal }} 人
查询 重置
这里展示的是小程序里微信授权登录的会员;禁用后该用户将无法在小程序登录或报名(按 openid 校验)。

报名订单

共 {{ orders.length }} 条
刷新 导出 Excel

分班管理

按活动建班分组,把已报名的学员分配到各班
+ 新建班级
分班流程
1
发布活动并安排场次活动管理 → 新建活动 → 场次安排
2
建班级框架先定几组、谁带、在哪上(可提前建,也可等报名后再建)
3
学员小程序报名报名成功的学员自动成为可分班人选
4
分配学员到班点「分配学员」逐个加入,或调整换班

现场核销

扫码或输入凭证码完成入场核销
刷新 导出 Excel
核 销
支持三种核销方式:① 扫用户二维码 ② 输入凭证码 ③ 输入手机号后四位(中老年用户备用方案)
核销渠道:本后台 与 核销员小程序端(核销员用自己的账号登录小程序扫码核销),记录实时同步。
每个场次独立核销,同一订单同一场次不可重复核销。
筛选

场地预约

内部公用空间排期(茶室 / 多功能厅等),提交时自动校验时间冲突
导出 Excel + 新建预约
日期 场地 刷新 只看我的
{{ curVenue.name }} · {{ curVenue.location }} · 可容纳 {{ curVenue.capacity }} 人 · 开放 {{ curVenue.open_start }}-{{ curVenue.open_end }} 已停用
{{ s.name }}
{{ s.start_time }} - {{ s.end_time }}
已被 {{ s.booking.booker_name }} 预约
{{ s.booking.purpose || '未填用途' }}
空闲,点击预约
该场地暂无可预约时段,请到「场地与时段」中添加
当日预约({{ bkDate }})
内部人员用自己的后台账号登录即可预约:空闲时段提交即生效,不需要审核。
冲突规则:同一场地同一天,时间区间重叠即视为冲突。
只能取消自己提交的预约;超管可取消全部。

场地

+ 新增场地

时段模板 · {{ curVenue.name }}

新增时段 添加时段

数据统计

六个维度的经营分析,数据来自真实业务表
刷新 导出报表
🎫
今日报名
{{ st.today_order || 0 }}
💰
今日收款
¥{{ st.today_amount || 0 }}
📅
本周报名
{{ st.week_order || 0 }} {{ st.week_order_rate>=0?'↑':'↓' }}{{ Math.abs(st.week_order_rate||0) }}%
💵
本周收款
¥{{ st.week_amount || 0 }} {{ st.week_amount_rate>=0?'↑':'↓' }}{{ Math.abs(st.week_amount_rate||0) }}%
🧾
客单价
¥{{ st.avg_amount || 0 }}
⏳
待支付
{{ st.pending_order || 0 }}
✅
核销率
{{ st.checkin_rate || 0 }}%
🔥
满场率
{{ st.full_rate || 0 }}%
📈
累计报名
{{ st.total_order || 0 }} 单
🏛
累计收款
¥{{ st.total_amount || 0 }}
👥
累计用户
{{ st.user_total || 0 }} 人
🎁
体验活动报名
{{ st.trial_order || 0 }} 单
近 {{ statDays }} 天报名趋势
{{ t.date.slice(5) }}
鼠标悬停柱子可看当天报名数与收款额。
🧾
报名总数
{{ so.total || 0 }}
💳
支付转化率
{{ so.pay_convert || 0 }}%
👨‍👩‍👧
代报名占比
{{ so.for_other_rate || 0 }}%
↩️
退款率
{{ so.refund_rate || 0 }}%
订单状态分布
{{ s.name }} {{ s.value }}
下单时段分布(8:00-19:00)
{{ i+8 }}时
代报名占比高说明子女帮父母报名是主要场景,可在活动详情强化「帮家人报名」入口。
🎪
在架活动
{{ sa.online || 0 }} / {{ sa.total || 0 }}
🔥
满场率
{{ sa.full_rate || 0 }}%
👥
场均报名
{{ sa.avg_enroll || 0 }} 人
📝
草稿
{{ sa.draft || 0 }}
分类表现 热门活动 TOP
✅
核销率
{{ sc.checkin_rate || 0 }}%
🎫
已核销
{{ sc.checked || 0 }}
⚠️
未核销
{{ sc.unchecked || 0 }}
📱
手机尾号核销占比
{{ sc.tail4_rate || 0 }}%
核销渠道
{{ s.name }} {{ s.value }}
核销方式
{{ s.name }} {{ s.value }}
手机尾号核销占比是适老化关键指标:占比高说明老人确实不便出示二维码,应继续保留该方式。
🏛
启用场地
{{ sv.active || 0 }} / {{ sv.total || 0 }}
📅
预约总数
{{ sv.booking_total || 0 }}
⏱
已约时长
{{ sv.booked_hours || 0 }} 小时
📊
整体使用率
{{ sv.usage_rate || 0 }}%
各场地使用情况
部门预约排行
{{ s.name }} {{ s.count }}
时段偏好
{{ s.name }} {{ s.count }}
👥
累计用户
{{ su.total || 0 }}
🆕
本周新增
{{ su.new_week || 0 }}
🔁
复购率
{{ su.repeat_rate || 0 }}%
🎫
人均报名
{{ su.avg_order_per_user || 0 }} 次
活跃用户 TOP

首页轮播

共 {{ bannerList.length }} 张 · 前台按排序值从大到小展示
刷新 + 新增 Banner
当前为 MOCK 模式(未连接 MySQL),Banner 管理需要数据库支持;列表为空,新增 / 编辑不会落库。
暂无 Banner,点击右上角「+ 新增 Banner」添加
+点击上传图片 建议 1080 × 720
文字(如「龄里荟生活文化中心」「在市北 · 金华路 33 号 10F」)需烤进图片本身,页面不再叠加浮层。
建议尺寸 1080×720(3:2),单张不超过 8MB;上传后可在下方直接改图片地址。
数值越大越靠前 启用 隐藏

中心介绍

编辑后保存立即生效,同步到小程序「龄里荟」介绍页顶部
刷新
{{ introLen }} 字 · 支持标题、加粗、列表、引用、链接、图片

视频将展示在小程序「龄里荟」介绍页「中心简介」下方。建议横屏、时长 1 分钟内,便于观看。

保存
保存后立即生效,小程序「龄里荟」介绍页顶部的中心介绍文案即同步更新。
注意:中心名称、标语、地址、电话等在「系统管理 → 站点信息」页修改。

系统设置

配置保存后立即生效,不用改文件、不用重启服务({{ cfgInfo.storage }})
刷新
保存
这里的内容同步到小程序首页展示;经纬度用于「关于中心」的一键地图导航,修改后无需小程序发版。
{{ cfgInfo.pay_mode }} 待补齐:{{ (cfgInfo.pay_missing || []).join('、') || '无' }}
商户证书(PEM)
上传商户私钥 apiclient_key.pem 上传平台证书(可选,用于回调验签) 当前:{{ cfg.wxpay_cert_path || '未上传' }}
保存支付配置
配置完整后自动切换真实微信支付;未配置或配置不全时,小程序付费订单保持「待支付」并提示「在线支付尚未开通」,不会生成假支付记录。
回调地址必须是已备案的 HTTPS 域名,并到商户平台「API 安全」配置同一个地址。
密钥类字段保存后只回显掩码(如 abcd****1234),不改动时保持原样留空即可。
模板消息 ID(服务号后台申请后填入)
保存消息配置
服务号需已认证;用户 openid 需服务号与小程序在同一主体下打通(unionid)才能收到模板消息。
未配置时所有通知自动跳过,不影响报名与核销主流程。

账号管理

内部人员一人一号,场地预约等记录按账号归属
+ 新增账号
角色权限:超管 全部功能;运营 活动/订单/核销/场地/统计(不含账号与系统设置);核销员 登录后只看到核销页。
内部人员用分配给自己的账号登录,场地预约自动归属本人,只能取消自己的预约。
活动封面
+{{actForm.cover ? '更换封面' : '上传封面'}}
展示在小程序首页「本周活动 / 体验活动」卡片,建议 16:9 横图,≤8MB。不上传则按活动分类自动配图。
普通活动体验活动 单场次报名整包报名(系列课) 原价 每人限报次数,0=不限 草稿发布
请先切到「基本信息」保存活动,再来安排场次。
数字越大越靠前
上传图标 清除
建议 240×240 透明底 PNG,≤2MB;不上传则按分类名自动匹配内置图标。
启用停用
{{ (memForm.nickname||'微')[0] }}
{{ memForm.nickname || '微信用户' }}({{ memForm.real_name }})
openid:{{ memForm.openid || '-' }}
注册时间:{{ memForm.created_at || '-' }}
正常禁用 TA 的报名({{ (memForm.orders||[]).length }})
新增场次 添加场次
每场次独立库存与核销码;已有人报名的场次不可删除,只能关闭。
班级先建框架(几组、谁带、在哪上),学员报名后再从「分配学员」里加进来。
- 启用停用 - 当前账号:{{ user.real_name || user.username }}
⚠ {{ bkConflict }}
已分配 {{ members.length }} / {{ curClass.capacity || '不限' }} 人 (容量已满时不能再加入)
该班级还没有学员,请在下方「可分班学员」中选择加入。
可分班学员(该活动已报名的学员)
{{ c.participant_name || c.real_name || '未填姓名' }} {{ c.participant_phone || '' }} 已在班
{{ c.in_class_id ? '已加入' : '加入班级' }}
该活动目前还没有已报名的学员。
流程:先在「活动管理」发布活动并安排场次 → 学员在小程序报名 → 回到这里把学员分配到各班。
账号创建后不可改名;内部人员用本人账号登录,场地预约自动记在本人的账号下。
正在为 {{ pwdForm.real_name || pwdForm.username }} ({{ pwdForm.username }}) 修改登录密码
修改后对方用新密码登录;已登录的会话不受影响。
订单号{{ curOrder.order_no }}
活动{{ curOrder.activity_title }}
参加人{{ curOrder.participant_name }}({{ curOrder.participant_phone }})
报名对象{{ curOrder.for_self === 1 ? '本人报名' : '帮家人报名' }}
金额¥{{ curOrder.pay_amount }}体验活动
订单状态{{ orderStatusText(curOrder.status) }}
核销状态{{ curOrder.checkin_status === 1 ? '已核销' : '未核销' }}
凭证码{{ curOrder.checkin_code || '-' }}
支付时间{{ curOrder.paid_at || '-' }}
下单时间{{ curOrder.created_at || '-' }}
场次{{ curOrder.session_time || '-' }} {{ curOrder.address_detail || '' }}
报名场次