{{ currentMenu.label }}

{{ username }}({{ role }}) 模板工作台 退出
实时看板 每 10 秒自动刷新 · {{ countdown }}s 后刷新 · 最后更新 {{ lastAt || '—' }} 未登录,数据为空 · 请从登录页进入
{{ k.label }} {{ k.tag }}
{{ k.value }}{{ k.unit }}
{{ k.sub }}

生成量 / 订单量趋势

柱=生成次数 · 折线=订单数 · 近 {{ range }} 天
{{ t.v }} {{ b.label }} {{ b.v }}

任务状态分布

共 {{ taskTotal }} 个任务
{{ okRate }}% 成功率
{{ s.label }}{{ s.value }}
暂无任务记录

景点模板分布

在线 / 全部
{{ s.name }} {{ s.online }}/{{ s.total }}
暂无景点模板

今日 24 小时生成曲线

今日共 {{ d.usage_today || 0 }} 次
{{ t.label }}

实时事件流

最近 {{ (d.recent||[]).length }} 条
{{ r.created_at }} {{ r.style_key || r.task_type || '任务' }} {{ statusText(r.status) }}
暂无任务

设备台账

+ 新建设备
{{ createdToken }}
⚠ 设备 Token 仅显示一次,请立即复制保存!
查询 + 新建模板 共 {{ styles.length }} 个 · 在线 {{ onlineCount }} · 下线 {{ styles.length - onlineCount }}
{{ s.status==='online' ? '在线' : '下线' }}
{{ s.name }}
{{ s.scene }} · {{ s.group_key || '未分组' }}
{{ personLabel(s.person_type) }}
封面图(列表展示用)
替换封面图
参考图 已启用
替换参考图
缩略图(549 个模板有此图)
~
🎟️ 生成优惠券
一次生成一批唯一券码,生成后可复制或打印
{{ c2strengthHint }}
批次 {{ c2last.batch_no }} · {{ c2last.codes.length }} 张 · 面额 ¥{{ (c2last.amount_fen/100).toFixed(2) }}
{{ c }}
📊 概览
未使用 / 已核销 / 已停用的实时统计
{{ c2stat.unused }}
未使用
{{ c2stat.used }}
已核销
{{ c2stat.disabled }}
已停用
¥{{ (c2stat.used_amount_fen/100).toFixed(2) }}
累计抵扣
最近批次
批次号景点面额数量生成时间操作
{{ b.batch_no }} {{ b.scenic_name || '全景点通用' }} ¥{{ (b.amount_fen/100).toFixed(2) }} {{ b.count }} {{ (b.created_at||'').replace('T',' ') }}
📋 券码列表
共 {{ c2total }} 张

可按景点、批次、生成时间组合筛选。补打全部筛选结果,不限当前页;每次最多 2000 张,沿用原券码和核销状态。

券码批次景点面额状态核销机器订单号时间操作
{{ r.code }} {{ r.batch_no }} {{ r.scenic_name || '全景点通用' }} ¥{{ (r.amount_fen/100).toFixed(2) }} {{ c2StatusText(r.status) }} {{ r.kiosk_id || '—' }} {{ r.order_no || '—' }} {{ (r.used_at || r.created_at || '').replace('T',' ') }} —
暂无券码,先在上方生成一批
第 {{ c2page }} 页 · 共 {{ c2total }} 张
确认补打二维码

共 {{ c2reprint.items.length }} 张,按本次筛选结果打印,保留各券原来的面额、景点和有效期。

补打不会生成新券,也不会恢复已核销、已停用或已过期的券。

其中 {{ c2reprintInvalid }} 张已核销、已停用或已过期,券面会标注;可在列表选择未使用状态并缩小范围后重新筛选。
券码批次景点面额状态
{{ r.code }}{{ r.batch_no }} {{ r.scenic_name }}¥{{ (r.amount_fen/100).toFixed(2) }} {{ c2PrintStatus(r) }}

预览显示前 50 张,打印包含全部 {{ c2reprint.items.length }} 张。

◈ 一体机运营总览
最近刷新 {{ opSum.updated_at || '—' }}
{{ opSum.device_online }} / {{ opSum.device_total }}
在线设备(15 分钟内)
{{ opSum.tasks_today }}
今日生成任务
{{ opSum.success_rate }}%
生成成功率
¥{{ (opSum.income_today_fen/100).toFixed(2) }}
今日实收
¥{{ (opSum.cost_today_fen/100).toFixed(2) }}
今日模型成本
{{ opSum.fail_today }}
失败任务
当前设备状态
设备景点状态心跳打印机相机最近任务操作
{{ k.name }}
{{ k.kiosk_id }}
{{ k.scene_name || '—' }} {{ opHbText(k.heartbeat_state) }} 已归档 已停用 已注销 {{ k.last_heartbeat_at || '未上报' }} · {{ k.latency_ms }}ms {{ k.printer_state }} {{ k.camera_state }} {{ k.last_task_at || '—' }} · {{ statusText(k.last_task_status) }}
没有符合条件的设备
任务记录
任务ID设备景点状态实际使用模型审核引擎单次成本时间
{{ t.task_id }} {{ t.kiosk_name || '—' }} {{ t.scene_name }} {{ statusText(t.status) }} {{ t.model_name || '—' }} {{ t.safety_label }} ¥{{ (t.cost_fen/100).toFixed(2) }} {{ t.started_at }}
该范围内没有任务记录
第 {{ opTaskPage }} 页 · 共 {{ opTaskTotal }} 条
经营分析
统计区间:{{ opUsage.start }} ~ {{ opUsage.end }}
{{ opUsage.summary.tasks }}
任务量
{{ opUsage.summary.success }}
成功
{{ opUsage.summary.failed }}
失败
{{ opUsage.summary.success_rate }}%
成功率
{{ opUsage.summary.orders }} / {{ opUsage.summary.paid_orders }} 已付
订单
¥{{ (opUsage.summary.income_fen/100).toFixed(2) }}
实收
¥{{ (opUsage.summary.cost_fen/100).toFixed(2) }}
模型成本
¥{{ (opUsage.summary.profit_fen/100).toFixed(2) }}
毛利(实收-成本)
模型单价(元/次成功)
当前 {{ (opCost.unit_cost_fen/100).toFixed(2) }} 元/次;按成功任务数估算总成本,不含兜底前重试费用
按日趋势(任务量 / 实收)
{{ d.tasks }}
{{ d.date }}
按景点分布
景点任务量
{{ s.scene_name }}{{ s.tasks }}
该区间没有任务
{{ opTab==='reports'?'举报信息':'用户反馈' }}
共 {{ opReports.length }} 条 · 处理记录会写审计日志
ID设备景点内容摘要状态提交时间操作
{{ r.id }} {{ r.kiosk_id || '—' }} {{ r.scene || '—' }} {{ r.summary || '—' }} {{ r.status==='handled'?'已处理':'待处理' }} {{ r.created_at }}
暂无记录(一体机端上报后自动出现在这里)
处理 {{ opTab==='reports'?'举报':'反馈' }} #{{ opHandle.row?.id }}
{{ opHandle.row?.summary || '—' }}
远程命令 · {{ opCmd.row?.name || opCmd.row?.kiosk_id }}

命令进入设备轮询队列,1800 秒内有效;一体机下次心跳(约 10–30 秒)取到后执行并回传结果。

最近命令
时间命令状态结果
{{ c.created_at }} {{ c.command }} {{ opCmdText(c.status) }} {{ c.result || '—' }}
还没有下发过命令
ID 手机号 昵称 角色 身份 关联景点 积分 结算资料 状态 注册时间 操作
{{ row.id }} {{ row.phone || row.username }} {{ row.nickname }} {{ roleLabel(row.role) }} - - {{ row.points_balance }} {{ (row.settlement && row.settlement.filled) ? (row.settlement.hint || '已填写') : '未填写' }} {{ row.is_active ? '正常':'停用' }} {{ row.created_at }}
暂无用户
共 {{ usersTotal }} 个用户
第 {{ userFilter.page }} / {{ Math.max(1, Math.ceil(usersTotal / userFilter.size)) }} 页
时间 操作者 动作 对象 详情
{{ r.time }} {{ r.actor }} {{ r.action }} {{ r.target }} {{ r.detail }}
暂无操作记录,做一次用户编辑/停用后这里就会出现
共 {{ auditTotal }} 条
第 {{ auditPage }} / {{ Math.max(1, Math.ceil(auditTotal / 20)) }} 页
{{ userDialogId ? '编辑用户' : '新建用户' }}
汇付结算资料
当前状态
{{ (huifuRow && huifuRow.settlement && huifuRow.settlement.filled) ? ('已填写 · ' + (huifuRow.settlement.hint||'')) : '未填写' }}
汇付天下结算要求开户名与身份证一致;保存后仅后台可查,列表只显示脱敏信息(****尾号)。
重置密码
{{ resetRow ? (resetRow.nickname || resetRow.username) : '' }}
新密码:{{ newPwdResult }}
请复制保存后告知用户,仅显示这一次。
分成管理
分成跟着景点走:为每个景点配置各商户身份的分成比例(%),并绑定该身份的分账用户 member_id。合计超过 100% 无法保存,剩余归平台。
景点当前分成配置操作
{{ s.name }}
{{ s.scene }}
未配置
暂无景点
配置「{{ splitEditName }}」分成
%
{{ splitTotal }}% 超过 100%,无法保存 剩余 {{ 100 - splitTotal }}% 归平台
分账接收方管理
新增接收方时系统生成 member_id,可在「分成管理」里绑定到对应角色。支持个人账户(对私)与对公账户(企业);对公账户的汇付编码按官方编码表自动带出。
共 {{ smMembers.length }} 个接收方
类型名称 member_id证件号 / 识别号 账号开户行 电话备注 创建时间操作
{{ m.acct_type==='enterprise'?'对公':'个人' }} {{ m.name }} {{ m.member_id }} {{ maskCert(m) }} {{ maskCard(m.bank_card) }} {{ m.bank_name || '-' }}
编码 {{ m.bank_code }}
{{ m.phone || '-' }} {{ m.remark || '-' }} {{ m.created_at }}
暂无分账接收方,点右上「新增接收方」创建
新增分账接收方
{{ b.name }}{{ b.code }}
{{ ptOverview.total_points ?? 0 }}
平台积分总量
¥{{ ptOverview.total_recharge ?? 0 }}
累计充值(元)
{{ ptOverview.total_consumed ?? 0 }}
累计消耗
{{ ptOverview.active_users ?? 0 }}
活跃用户(有积分流水)
给用户加积分
用户 ID 积分数量 原因
用户积分排行
ID用户名昵称角色积分余额操作
{{ u.id }}{{ u.username }}{{ u.nickname || '-' }} {{ roleLabel(u.role) }} {{ u.points_balance }}
暂无用户
共 {{ ptUserTotal }} 个用户
第 {{ ptPage }} / {{ Math.max(1, Math.ceil(ptUserTotal/ptSize)) }} 页
充值订单
订单号用户 ID金额(元)积分渠道状态支付时间创建时间
{{ o.order_no }}{{ o.user_id }} ¥{{ o.amount }}{{ o.points }} {{ o.channel==='wechat'?'微信':'支付宝' }} {{ ptStatusText(o.status) }} {{ o.paid_at || '-' }}{{ o.created_at }}
暂无充值订单
共 {{ ptOrderTotal }} 笔
第 {{ ptOrderPage }} / {{ Math.max(1, Math.ceil(ptOrderTotal/10)) }} 页
用户 {{ ptHistoryUser }} 积分流水
时间类型说明变动余额
{{ x.time }} {{ x.biz_type_label }} {{ x.description || '-' }} {{ x.change_amount>0?'+':'' }}{{ x.change_amount }} {{ x.balance_after }}
暂无积分流水
{{ akTotal }}
Key 总数
{{ akStats.active }}
本页已启用
{{ akStats.inactive }}
本页已禁用
API Key 全局管理
ID用户Key 名称Key状态最后使用创建时间操作
{{ k.id }}
{{ k.username }}
{{ k.nickname || '-' }}
{{ k.name }} {{ k.key_prefix }}•••••••••••• {{ k.is_active?'启用':'已禁用' }} {{ k.last_used_at || '从未使用' }} {{ k.created_at }}
暂无 API Key 记录,点右上「为用户生成 Key」创建
共 {{ akTotal }} 条
第 {{ akPage }} / {{ Math.max(1, Math.ceil(akTotal/akSize)) }} 页
为用户生成 API Key
新 Key:{{ akCreatedKey }}
仅显示这一次,请复制保存后交给用户。

场景商品(景点)

+ 新增景点
AI 模型配置

配置默认模型和接口地址。API Key 加密保存,留空不会覆盖原密钥。

{{ mc.text_model || '未配置' }}
默认文本模型
{{ mc.image_model || '未配置' }}
默认图像模型
{{ mcNodes.length }}
图像负载节点
{{ mcVideo.length }}
可选视频模型
默认文本模型

用于剧本、提示词和文本分析。

默认图像模型

文生图/图生图默认使用此模型;负载节点在下方维护。当前主力通道 gpt-image-2。

负载节点(默认接口不可用时的备用通道,按权重调度)
节点名称节点地址API Key调度权重启用操作
还没有节点,点下方「添加节点」
聚合图像模型(agg_image_N · 生成链路按场景优先级引用,保存后请勿随意调序)
agg_image_{{ i }} · {{ m.name || '未命名模型' }}
视频模型

可选视频模型供一体机「动态旅拍」调用,按列表顺序展示。

视频模型列表
{{ m.name || ('视频模型 '+ (i+1)) }}
{{ mcTestResult.text }}
💳 支付配置
{{ pay2.mock_payment?'Mock 模式(模拟支付,不产生真实扣款)':'真实支付模式' }}

密钥类字段留空表示不修改(保留已存密钥)。上传私钥/公钥只记录文件与大小,不会把明文写进数据库。

微信支付(Native 扫码)
商户平台 → API 安全 下载
{{ payKeyHint.wechat }}
汇付 Adapay(支付宝正扫)
用于支付宝扫码与分账
{{ payKeyHint.adapay }}
全局支付
作用于所有一体机的下单逻辑
支付宝直连(可选)
未接汇付时启用

内容安全(腾讯云 TMS 文本审核)

{{ tmsCfg.enabled?'已启用(真实审核)':'未启用(仅本地基础校验)' }} 保存内容安全配置

APK 版本管理(安卓壳 OTA 更新)

+ 上传 APK