经营驾驶舱
今日经营
¥{{ dash.today_revenue||0 }}
今日收入
{{ dash.today_entries||0 }}
今日到店
{{ dash.today_valid_training||0 }}
有效训练
{{ dash.today_new_members||0 }}
新增会员
{{ dash.today_renewals||0 }}
续费会员
+{{ dash.today_points_issued||0 }}
积分发放
-{{ dash.today_points_consumed||0 }}
积分消耗
{{ dash.current_in_gym||0 }}
当前在场
会员状态
{{ dash.total_users||0 }}
注册用户
{{ dash.active_memberships||0 }}
有效会员
{{ dash.expiring_7d||0 }}
7天内到期
{{ dash.expired_members||0 }}
已过期
待处理事项
{{ (dash.anomalies||{}).failed_payments_today||0 }}
异常订单
{{ (dash.anomalies||{}).pending_verifications||0 }}
待核销兑换
{{ (dash.anomalies||{}).low_stock_products||0 }}
库存不足
{{ (dash.anomalies||{}).pending_face_reviews||0 }}
待处理人脸
{{ (dash.anomalies||{}).failed_ops_tasks||0 }}
运营任务失败
最近支付订单
| 订单号 | 卡项 | 金额 |
|---|---|---|
| {{ o.order_no }} | {{ o.plan_name }} | ¥{{ o.amount }} |
暂无数据
最近入场记录
| 用户ID | 时长 | 时间 |
|---|---|---|
| {{ r.user_id }} | {{ r.duration_minutes||0 }}分 | {{ (r.entry_time||'').substring(0,16) }} |
暂无数据
会员管理
{{ memberStats.total||0 }}
注册用户
{{ memberStats.active||0 }}
有效会员
{{ memberStats.expiring||0 }}
7天内到期
{{ memberStats.expired||0 }}
已过期
| ID | 昵称 | 手机 | 卡项 | 到期 | 积分 | 到店 | 人脸 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ m.id }} | {{ m.nickname||'-' }} | {{ m.phone||'-' }} | {{ m.planName||'未办卡' }} | {{ m.endDate||m.remainingEntries||'-' }} | {{ m.totalPoints||0 }} | {{ m.totalVisits||0 }} | {{ m.faceStatus||'无' }} |
{{ (memberDetail.user||{}).nickname||'会员详情' }}
基础资料
| {{ k }} | {{ memberDetail.user[v]||'-' }} |
会员卡记录
| 卡项 | 开始 | 到期 | 剩余次 | 状态 |
|---|---|---|---|---|
| {{ m.plan_name }} | {{ m.start_date }} | {{ m.end_date||'-' }} | {{ m.remaining_entries||0 }} | {{ m.status }} |
支付订单
| 订单号 | 卡项 | 金额 | 状态 |
|---|---|---|---|
| {{ o.order_no }} | {{ o.plan_name }} | {{ o.amount }} | {{ o.status }} |
积分流水
| 金额 | 类型 | 备注 |
|---|---|---|
| {{ pl.amount>0?'+':'' }}{{ pl.amount }} | {{ pl.source_type }} | {{ pl.note }} |
操作审计
| 操作 | 详情 | 时间 |
|---|---|---|
| {{ al.action }} | {{ al.detail }} | {{ al.created_at }} |
订单财务
{{ reconcile.totalOrders||0 }}
订单总数
¥{{ ((reconcile.paidAmountCent||0)/100).toFixed(0) }}
已支付金额
{{ reconcile.paidCount||0 }}
PAID
{{ reconcile.createdCount||0 }}
CREATED
{{ reconcile.prepayCount||0 }}
PREPAY
{{ reconcile.closedCount||0 }}
CLOSED
{{ reconcile.abnormalCount||0 }}
异常
{{ reconcile.membershipMissingCount||0 }}
未开卡
{{ reconcile.notifySuccessCount||0 }}
回调成功
{{ reconcile.notifyFailedCount||0 }}
回调失败
| 订单号 | 用户 | 卡项 | 金额 | 状态 | 模式 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ o.orderNo }} | {{ o.userName }} | {{ o.planName }} | ¥{{ o.amount }} | {{ o.status }} | {{ o.paymentMode||'-' }} | {{ o.createdAt }} |
订单详情
订单信息
| {{ k }} | {{ orderDetail.orderInfo[v]||'-' }} |
用户信息
| {{ k }} | {{ orderDetail.userInfo[v]||'-' }} |
会员权益
未生成会员权益
| 卡项 | {{ orderDetail.membership.planName||'-' }} |
| 到期 | {{ orderDetail.membership.endDate||'-' }} |
支付信息
| {{ k }} | {{ orderDetail.paymentInfo[v]||'-' }} |
回调日志
| 时间 | 交易号 | 验签 | 处理 |
|---|---|---|---|
| {{ nl.created_at }} | {{ nl.transaction_id }} | {{ nl.verify_status }} | {{ nl.process_status }} |
暂无回调记录
操作审计
| 操作 | 详情 | 时间 |
|---|---|---|
| {{ al.action }} | {{ al.detail }} | {{ al.created_at }} |
暂无审计记录
入场训练
{{ accessStats.today_entries||0 }}
今日到店
{{ accessStats.active_sessions||0 }}
当前在场
{{ accessStats.today_valid||0 }}
有效训练
{{ accessStats.today_invalid||0 }}
无效训练
{{ accessStats.today_points||0 }}
积分发放
{{ accessStats.abnormal_count||0 }}
异常记录
| ID | 用户 | 入场方式 | 入场时间 | 时长 | 有效 | 积分 | 在场 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ r.id }} | {{ r.nickname||r.user_id }} | {{ r.verify_method||'-' }} | {{ r.entry_time }} | {{ r.duration_minutes||0 }}分 | {{ r.valid_training?'有效':'无效' }} | {{ r.points_earned||0 }} | {{ r.status==='active'?'在场':'已离' }} |
积分商城
{{ products.length }}
商品总数
{{ products.filter(function(p){return p.enabled}).length }}
上架
{{ products.filter(function(p){return !p.enabled}).length }}
下架
| ID | 名称 | 类型 | 积分 | 库存 | 状态 | 操作 | |
|---|---|---|---|---|---|---|---|
| {{ p.id }} | {{ p.name }} | {{ p.product_type }} | {{ p.points_price }} | {{ p.inventory }} | {{ p.inventory<0?'不限':p.inventory }} | {{ p.enabled?'上架':'下架' }} |
{{ editingProduct.id?'编辑':'新增' }}商品
| ID | 用户 | 商品 | 积分 | 核销码 | 状态 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ e.id }} | {{ e.nickname||e.openid }} | {{ e.product_name }} | {{ e.points_cost }} | {{ e.verify_code||'-' }} | {{ e.status }} | {{ e.created_at }} |
{{ verifyMsg }}
| ID | 用户 | 金额 | 类型 | 备注 | 时间 |
|---|---|---|---|---|---|
| {{ l.id }} | {{ l.nickname||l.openid }} | {{ l.amount>0?'+':'' }}{{ l.amount }} | {{ l.source_type }} | {{ l.note }} | {{ l.created_at }} |
卡项价格
后台修改卡项价格后,小程序重新进入页面即可读取最新价格,无需重新提交审核。
| 编码 | 名称 | 价格(元) | 有效期(天) | 次数 | 说明 | 上架 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ p.id }} |
{{ cardPlanMsg }}
人脸管理
{{ faces.length }}
档案总数
{{ faces.filter(function(f){return f.status==='APPROVED'}).length }}
已登记
{{ faces.filter(function(f){return !f.status||f.status==='PENDING'}).length }}
未审核
| 用户ID | 昵称 | 手机 | 人脸状态 | 活体 | FaceToken | 修改次数 | 更新时间 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ f.user_id }} | {{ f.nickname||'-' }} | {{ f.phone||'-' }} | {{ f.status||'-' }} | {{ f.liveness_status||'-' }} | {{ (f.face_token||'').substring(0,16) }} | {{ f.face_change_quota!==undefined?f.face_change_quota:'-' }} | {{ f.updated_at||f.created_at }} |
不长期保存原始人脸照片,仅保存FaceToken、特征密文、加密索引。建档照片短期保存,超过4个月自动清理。会员办理后用户端不得自行修改人脸。PC后台替换必须填写原因并留审计。
校园社交
{{ socialPosts.length }}
内容总数
{{ socialPosts.filter(function(p){return p.status==='HIDDEN'}).length }}
已下架
| ID | 用户 | 类型 | 内容 | 赞/评 | 状态 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ p.id }} | {{ p.nickname||'-' }} | {{ p.post_type }} | {{ p.like_count||0 }}/{{ p.comment_count||0 }} | {{ p.status||'-' }} | {{ p.created_at }} |
| ID | 帖子ID | 用户 | 内容 | 状态 | 时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ c.id }} | {{ c.post_id }} | {{ c.nickname||'-' }} | {{ c.status||'-' }} | {{ c.created_at }} |
举报处理后续恢复
| ID | 敏感词 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|
| {{ w.id }} | {{ w.word }} | {{ w.enabled?'启用':'停用' }} | {{ w.created_at }} |
消息运营
{{ notifications.length }}
消息总数
{{ notifications.filter(function(n){return n.status==='PENDING'}).length }}
待发送
{{ notifications.filter(function(n){return n.status==='SENT'}).length }}
已发送
{{ notifications.filter(function(n){return n.status==='FAILED'}).length }}
失败
| ID | 用户 | 标题 | 场景 | 状态 | 时间 |
|---|---|---|---|---|---|
| {{ n.id }} | {{ n.nickname||n.openid }} | {{ n.title }} | {{ n.trigger_scene }} | {{ n.status }} | {{ n.created_at }} |
| Key | 名称 | 动作 | 启用 | 更新时间 |
|---|---|---|---|---|
| {{ r.rule_key }} | {{ r.rule_name }} | {{ r.action_type }} | {{ r.enabled?'是':'否' }} | {{ r.updated_at||r.created_at }} |
| ID | 规则 | 日期 | 状态 | 扫描数 | 动作数 | 时间 |
|---|---|---|---|---|---|---|
| {{ t.id }} | {{ t.rule_key }} | {{ t.task_date }} | {{ t.status }} | {{ t.scanned_count||0 }} | {{ t.action_count||0 }} | {{ t.started_at }} |
消息模板配置后续恢复
安全审计
{{ auditLogs.length }}
操作记录
{{ auditLogs.filter(function(a){return a.action&&a.action.indexOf('ORDER')>=0}).length }}
订单相关
{{ auditLogs.filter(function(a){return a.action&&a.action.indexOf('MEMBER')>=0}).length }}
会员相关
{{ auditLogs.filter(function(a){return a.action&&a.action.indexOf('ABNORMAL')>=0}).length }}
异常操作
| ID | 操作类型 | 目标ID | 详情 | 时间 | 操作 |
|---|---|---|---|---|---|
| {{ a.id }} | {{ a.action }} | {{ a.target_type }}/{{ a.target_id }} | {{ a.created_at }} |
系统设置
门店名称
地址
联系电话
营业时间
客服说明
{{ setMsg }}
首页标题
首页副标题
| {{ k }} | {{ payStatus[k]||'未配置' }} |
管理员角色与权限后续恢复
设备管理
{{ devices.length }}
设备总数
{{ devices.filter(function(d){return d.status==='ONLINE'}).length }}
在线
{{ devices.filter(function(d){return d.status==='OFFLINE'}).length }}
离线
| ID | 编号 | 名称 | 类型 | 位置 | 状态 | 最近在线 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ d.id }} | {{ d.deviceCode||d.device_code||'-' }} | {{ d.deviceName||d.device_name||'-' }} | {{ d.deviceType||d.device_type||'-' }} | {{ d.location||'-' }} | {{ d.status||'-' }} | {{ d.lastOnlineAt||d.last_online_at||'-' }} |
人脸摄像头用于识别入场。门禁设备用于开门联动。二维码设备用于离线时备用签到。本阶段仅展示设备状态,不执行真实开门指令。
设备离线记录后续恢复
二维码备用入场设备后续恢复
门禁联动配置后续恢复
登录日志
{{ loginLogs.length }}
登录记录
| ID | 管理员 | IP | 状态 | 时间 |
|---|---|---|---|---|
| {{ l.id }} | {{ l.nickname||l.openid||'-' }} | {{ l.ip||'-' }} | {{ l.status||'-' }} | {{ l.created_at }} |
操作日志
{{ opLogs.length }}
操作记录
{{ opLogs.filter(function(a){return a.action&&a.action.indexOf('ORDER')>=0}).length }}
订单操作
{{ opLogs.filter(function(a){return a.action&&a.action.indexOf('MEMBER')>=0}).length }}
会员操作
{{ opLogs.filter(function(a){return a.action&&a.action.indexOf('ABNORMAL')>=0}).length }}
异常操作
| ID | 操作类型 | 目标ID | 详情 | 时间 |
|---|---|---|---|---|
| {{ a.id }} | {{ a.action }} | {{ a.target_type }}/{{ a.target_id }} | {{ a.created_at }} |
数据备份
{{ backupFiles.length }}
备份文件
每日
自动备份
| 文件名 | 大小 | 类型 | 时间 |
|---|---|---|---|
| {{ b.name }} | {{ b.size||'-' }} | {{ b.type||'自动' }} | {{ b.time||b.created_at||'-' }} |
数据库自动备份每日 2:07 AM 执行,保留 7 天。备份目录: /opt/backups/mysql/。下载/恢复功能后续再做。
活动运营
{{ activities.length }}
活动总数
{{ activities.filter(function(a){return a.enabled}).length }}
已启用
{{ activities.filter(function(a){return !a.enabled}).length }}
已停用
| ID | Key | 标题 | 类型 | 排序 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ a.id }} | {{ a.activity_key||a.rule_key }} | {{ a.activity_name||a.rule_name||'-' }} | {{ a.action_type||'-' }} | {{ a.sort_order||0 }} | {{ a.enabled?'启用':'停用' }} |
{{ trialConfig.enabled?'启用':'停用' }}
当前状态
¥{{ trialConfig.firstPrice||0 }}
体验价(元)
{{ trialConfig.repeatPrice||0 }}
二次价(元)
是否启用
标题
说明文案
首次体验价(元)
二次购买价(元)
{{ opsMsg }}
{{ opsChallenges.length }}
挑战总数
{{ opsChallenges.filter(function(c){return c.is_active}).length }}
已启用
{{ c.title }}
目标值
奖励积分
开始
结束
{{ groupConfig.enabled?'启用':'停用' }}
当前状态
¥{{ groupConfig.price2||0 }}
两人立减(元)
¥{{ groupConfig.price3||0 }}
三人立减(元)
是否启用
两人立减金额(元)
三人立减金额(元)
可参与卡项
{{ opsMsg2 }}
{{ inviteConfig.enabled?'启用':'停用' }}
当前状态
{{ inviteConfig.share_validity_days||3 }}
有效期(天)
是否启用
分享有效天数
月卡奖励天数
季卡奖励天数
学期/年卡奖励天数
{{ opsMsg3 }}