数据看板
总用户数
{{ dashboard.total_users || 0 }}
活跃: {{ dashboard.active_users || 0 }}
近7天新增
{{ dashboard.recent_7days || 0 }}
本周注册
男性用户
{{ dashboard.male_count || 0 }}
占比 {{ dashboard.total_users ? Math.round(dashboard.male_count/dashboard.total_users*100) : 0 }}%
女性用户
{{ dashboard.female_count || 0 }}
占比 {{ dashboard.total_users ? Math.round(dashboard.female_count/dashboard.total_users*100) : 0 }}%
待支付
{{ dashboard.queue_stats.pending_pay || 0 }}
学员未付款
待预约
{{ dashboard.queue_stats.pending_schedule || 0 }}
已付未选班
待签约
{{ dashboard.queue_stats.pending_sign || 0 }}
客服需处理
进行中课程
{{ dashboard.queue_stats.in_class || 0 }}
已签约/上课中
待退款审批
{{ dashboard.queue_stats.refund_pending || 0 }}
仅管理员
待开票
{{ dashboard.queue_stats.invoice_pending || 0 }}
财务登记
待提现审核
{{ dashboard.queue_stats.payout_pending || 0 }}
线下打款
课程分布
财务 · 收入与退款(近{{ financeDays }}天)
累计收入
¥{{ fmtMoney(finance.summary.total_revenue) }}
累计退款
¥{{ fmtMoney(finance.summary.total_refund) }}
净收入
¥{{ fmtMoney(finance.summary.net_revenue) }}
本月收入
¥{{ fmtMoney(finance.summary.month_revenue) }}
已提现佣金
¥{{ fmtMoney(finance.summary.paid_commission) }}
加载中…
收入 ¥{{ fmtMoney(periodRevenue) }}
退款 ¥{{ fmtMoney(periodRefund) }}
{{ finance.series.length ? finance.series[0].date.slice(5) : '' }}
{{ finance.series.length ? finance.series[Math.floor(finance.series.length/2)].date.slice(5) : '' }}
今天
城市分布 (Top 10)
用户管理
用户列表
| 姓名 | 性别 | 手机 | 城市 | 职业 | 级别 | 注册时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ u.name }}推广员可退款 | {{ u.gender }} | {{ u.phone }} | {{ u.city }} | {{ u.occupation }} | {{ u.level }} | {{ u.created_at }} |
共 {{ userTotal }} 条,第 {{ userPage }}/{{ Math.ceil(userTotal / 20) }} 页
订单管理
学员订单
| 订单号 | 学员 | 课程 | 金额 | 状态 | 来源 | 下单时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ o.order_no }} | {{ o.user_name }} {{ o.user_phone }} |
{{ o.level_name }} | ¥{{ o.amount }} 实付¥{{ o.paid_amount }} |
{{ o.status_text }} | {{ o.source==='miniprogram'?'小程序':'其他' }} | {{ (o.created_at||'').slice(0,16) }} | |
| 暂无订单 | |||||||
共 {{ orderTotal }} 条,第 {{ orderPage }}/{{ Math.ceil(orderTotal/orderSize) }} 页
| 退款单号 | 学员/订单 | 申请金额 | 计算依据 | 原因 | 状态 | 申请时间 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ r.refund_no }} | {{ r.order && r.order.user_name }} {{ r.order && r.order.level_name }} |
¥{{ r.apply_amount }} |
{{ r.calc_detail.expr }}
{{ r.calc_detail.trigger }}
|
{{ r.reason }} | {{ {'applying':'待审批','refunding':'退款中','success':'已退款','rejected':'已驳回'}[r.status]||r.status }} | {{ (r.created_at||'').slice(0,16) }} | {{ r.status==='applying' ? '需管理员权限' : '' }} |
| 暂无退款申请 | |||||||
| 订单 | 抬头 | 金额 | 接收邮箱 | 状态 | 申请时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ i.order_no }} {{ i.level_name }} / {{ i.user_name }} |
{{ i.title_type==='company'?'企业':'个人' }} {{ i.title }} 税号 {{ i.tax_no }} |
¥{{ i.amount }} | {{ i.email || '-' }} | {{ {'applying':'待开票','invoiced':'已开票','rejected':'已驳回'}[i.status]||i.status }}
№{{ i.invoice_no }} |
{{ (i.created_at||'').slice(0,16) }} | 查看PDF |
| 暂无开票申请 | ||||||
| 申请人 | 身份 | 金额 | 构成明细 | 状态 | 申请时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ p.agent_name || ('ID:'+p.agent_id) }} | {{ p.agent_type==='student'?'学员推广员':'网页代理商' }} | ¥{{ p.amount }} |
{{ d.level_name }} @{{ d.rate }}% → ¥{{ d.final || d.estimated }}
等 {{ p.commission_detail.length }} 笔…
|
{{ {'requesting':'待审核','paid':'已打款','rejected':'已驳回'}[p.status]||p.status }} | {{ (p.created_at||'').slice(0,16) }} | |
| 暂无提现申请 | ||||||
课程管理
权限规则:客服可新建、上架/下架;上架后内容永久锁定(下架不解锁,修改需管理员);从未上架的课程客服可改;删除仅管理员(上架中需先下架)。
| 课程名称 | 价格 | 总课时 | 退费规则 | 排课 | 佣金比例 | 上架状态 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ l.name }} | ¥{{ l.price }} | {{ l.total_lessons || '-' }} | {{ {'lesson':'按节退','stage':'按阶段退','none':'不可退'}[l.refund_mode]||'未配置' }} | {{ l.recurrence ? (l.recurrence.type==='weekly' ? '每周'+(l.recurrence.weekdays||[]).join('、') : '固定'+(l.recurrence.dates||[]).length+'天') : '未配置' }} | {{ l.commission_pct ? l.commission_pct+'%' : '-' }} | {{ l.is_on_shelf?'已上架':'未上架' }} | 已锁定·仅管理员可改 |
| 暂无课程 | |||||||
来源管理
| 来源名称 | 排序 | 状态 | 用户数 | 操作 |
|---|---|---|---|---|
| {{ s.name }} | {{ s.sort_order }} | {{ s.is_active ? '启用' : '禁用' }} | {{ s.user_count }} |
发货仓管理
{{ editingWarehouse ? '编辑发货仓' : '新建发货仓' }}
{{ w.name }}
默认
{{ w.sender_name }} | {{ w.sender_phone }}
{{ w.sender_address }}
暂无发货仓,请先创建
同意记录
| 用户 | 手机 | 同意方式 | 版本 | IP地址 | 时间 |
|---|---|---|---|---|---|
| {{ log.user_name }} | {{ log.user_phone }} | {{ log.consent_type === 'checkbox' ? '勾选同意' : '管理员添加' }} | {{ log.consent_version }} | {{ log.ip_address }} | {{ log.created_at }} |
共 {{ consentTotal }} 条
员工管理
| 用户名 | 姓名 | 角色 | 状态 | 创建时间 | 操作 |
|---|---|---|---|---|---|
| {{ s.username }} | {{ s.name }} | {{ s.role }} | {{ s.is_active ? '正常' : '禁用' }} | {{ s.created_at }} | 默认账号 |
系统设置
邮箱配置(用于备份发送)
QQ邮箱配置说明:
1. 登录QQ邮箱 -> 设置 -> 账户
2. 开启 POP3/SMTP 服务
3. 生成授权码(不是QQ密码)
4. SMTP服务器:smtp.qq.com,端口:465(SSL)
1. 登录QQ邮箱 -> 设置 -> 账户
2. 开启 POP3/SMTP 服务
3. 生成授权码(不是QQ密码)
4. SMTP服务器:smtp.qq.com,端口:465(SSL)
AI模型配置(用于发货信息智能解析)
说明:
1. 配置后代理商发货信息将使用AI智能解析
2. 不配置则使用正则表达式解析(支持标准格式)
3. 当前系统使用:小米MiMo模型
1. 配置后代理商发货信息将使用AI智能解析
2. 不配置则使用正则表达式解析(支持标准格式)
3. 当前系统使用:小米MiMo模型
快递100配置(上门取件-线上支付)
配置说明:
1. 登录 https://api.kuaidi100.com 注册企业账号
2. 申请「上门取件-线上支付」服务,获取Key和Secret
3. 回调地址需公网可访问,用于接收快递状态变更通知
4. 寄件人信息会自动填入每个发货订单的发件人字段
1. 登录 https://api.kuaidi100.com 注册企业账号
2. 申请「上门取件-线上支付」服务,获取Key和Secret
3. 回调地址需公网可访问,用于接收快递状态变更通知
4. 寄件人信息会自动填入每个发货订单的发件人字段
数据管理
数据导出
导出用户数据为CSV文件,包含完整个人信息
数据还原
上传.db备份文件还原数据库,还原前会自动备份当前数据
自动备份:系统每天凌晨2:00自动备份数据库。备份文件保留最近30份。完整SQLite数据库备份(含所有表:用户、订单、角色、发货仓等)。
备份列表
暂无备份记录
{{ b.filename }}
发货订单管理
{{ shippingStats.pending || 0 }}
待发货
{{ shippingStats.ordered || 0 }}
已下单
{{ shippingStats.picked || 0 }}
已取件
{{ shippingStats.inTransit || 0 }}
运输中
{{ shippingStats.delivered || 0 }}
已签收
已选 {{ selectedOrders.length }} / {{ shippingOrders.length }}
{{ o.receiver_name }}
{{ shipStatusLabel(o.status) }}
{{ o.receiver_phone }} | {{ o.product || '-' }} x{{ o.quantity }}
{{ o.receiver_address }}
代理商:{{ o.agent_name }}
{{ o.kuaidi_com_name }} {{ o.kuaidi_num }}
暂无发货订单
角色管理
| 角色名称 | 说明 | 权限数 | 用户数 | 类型 | 操作 |
|---|---|---|---|---|---|
| {{ r.name }} | {{ r.description }} | {{ r.permission_count }}/{{ totalPermissions }} | {{ r.user_count }} | {{ r.is_system ? '系统' : '自定义' }} |