应收合计
¥{{ ftMoney(ftFolio.total) }}
登录你的门店账号
这个账号既能办前台业务,也能用管理功能
页面正在加载,请稍候…
| 类型 | 房号 | 客人 | 差异 / 说明 | 系统动作 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {{ it.kind_label }} | {{ it.room_no }} | {{ it.guest_name_masked }} {{ it.id_no_masked }} |
{{ k }}:PMS {{ v[0] }} ↔ 旅馆业 {{ v[1] }}
{{ it.diff['说明'] }}
|
{{ it.action_result }} |
{{ it.status_label }}
{{ it.note }}
|
| 房号 | 订单 | 状态 | 入住/离店 | 入住人(合住) | 旅馆业上报 | 异常 |
|---|---|---|---|---|---|---|
| {{ o.room_no }} | {{ o.order_no }} | {{ o.status_label }} | {{ o.checkin_at }} → {{ o.checkout_at }} |
{{ p.name }} {{ p.id_no_masked }}
{{ p.role==='primary'?'主住':'同住' }}
合住 {{ o.cohabit_count }} 人
|
入住未上报 入住·{{ psbLabel(o.psb.checkin) }} 续住·{{ psbLabel(o.psb.stay_extend) }} 退房·{{ psbLabel(o.psb.checkout) }} | 身份证问题 正常 |
| 日期 | 房价 | 来源 |
|---|---|---|
| {{ d.date }} | ¥{{ d.price }} | {{ d.src }} |
| 类型 | 项目 | 数量 | 金额 | 状态 | 时间 | 操作 |
|---|---|---|---|---|---|---|
| {{ it.item_type }} | {{ it.item_name || '—' }} | {{ it.qty }} | ¥{{ ftMoney(it.amount) }} | {{ it.payment_id?'已收':'未收' }} | {{ (it.created_at||'').slice(5,16) }} | — |
| ID | 登录名 | 姓名 | 手机号 | 角色 | 主属门店 | 微信 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ u.id }} | {{ u.username }} | {{ u.real_name || '—' }} | {{ u.phone || '—' }} | {{ r }} 未分配 | #{{ u.hotel_id || '—' }} | {{ u.wx_bound?'已绑':'未绑' }} | {{ u.status===1?'启用':'停用' }} | |
| 无匹配账号 | ||||||||
| ID | 门店 | 房号 | 类型 | 状态 | 操作 |
|---|---|---|---|---|---|
| {{ r.id }} | {{ r.hotel_id }} | {{ r.room_no }} | {{ r.op_type }} | {{ r.status }} |
| 房号 | 房型 | 楼层 | 房态 | 吸烟 | 占用 | 备注 | 操作 | |
|---|---|---|---|---|---|---|---|---|
{{ r.room_no }} |
{{ r.room_type || '—' }} | {{ r.floor==null?'—':r.floor }} | {{ r.status_label }} | {{ r.smoking ? '🚬 吸烟' : '无烟' }} | 在住 · {{ r.order_no }} 预订 空闲 | {{ r.remark || '—' }} | ||
| 该门店暂无房源,点「+ 新增房间」逐间录入,或去「🏢 房源导入」批量录入。 | ||||||||
| 房号 | 房型 | 删除时间 | 历史订单 | 操作 |
|---|---|---|---|---|
{{ r.room_no }} | {{ r.room_type || '—' }} | {{ r.deleted_at }} | {{ r.order_count }} 单 | |
| 回收站为空。 | ||||
| 房型 | 参考门市价(当日) | 每间夜成本价(元) | 是否含早 | 毛利(元/间夜) | 操作 |
|---|---|---|---|---|---|
| {{ r.room_type }} | ¥{{ num(r.avg_price) }} | ¥{{ num(r.avg_price - r.cost_price) }} |
api:hotel:list,请联系管理员为该账号授权门店。
1201单个 · 1201-1208区间(自动展开 8 间)·
1201~1208 · A0301-A0306带字母前缀 · 逗号/顿号/空格分隔混合。1201 → 12 层);推断不出时用上面的「默认楼层」。
房号 的 CSV,或纯文本每行一个房号;区间仍可在文本框手填。
{{ (imp.preview.sample||[]).join('、') }}| 房号 | 房型 | 楼层 | 楼栋 | 保洁优先级 | 重点房 |
|---|---|---|---|---|---|
{{ r.room_no }} | {{ r.room_type||'—' }} | {{ r.floor }} | {{ r.building||'—' }} | {{ r.cleaning_priority }} | {{ r.is_key_room?'是':'—' }} |
| 状态 | 名称 | 小图标 | 背景色 | 边框色 | 文字色 | 预览 |
|---|---|---|---|---|---|---|
| {{ s.label }} {{ s.key }} |
{{ rstyle[s.key].icon }}{{ rstyle[s.key].label }}
|
| 房号 | 应离店 | 宽限(分) | 押金方式 | 押金金额 | 备注 | |
|---|---|---|---|---|---|---|
| {{ o.room_no }} | {{ o.checkout_before || '—' }} | {{ o.grace_minutes ?? '—' }} | {{ {per_night:'按晚',per_room:'按房',percent:'比例',none:'不收'}[o.deposit_mode] || '—' }} | {{ o.deposit_amount ?? '—' }} | {{ o.remark || '' }} | |
| 暂无房间级覆盖 | ||||||
| 订单号 | 房号 | 应收 | 已收 | 已扣 | 已退 | 在账 | 渠道 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ d.order_no }} | {{ d.room_no }} | ¥{{ (d.amount_due||0).toFixed(2) }} | ¥{{ (d.amount_paid||0).toFixed(2) }} | ¥{{ (d.amount_deducted||0).toFixed(2) }} | ¥{{ (d.amount_refunded||0).toFixed(2) }} | ¥{{ (d.balance||0).toFixed(2) }} | {{ d.channel_text || d.channel || '—' }} | {{ d.status_text || d.status }} |
|
| 暂无押金单 | |||||||||
| 营业日期 | 房号 | 客人 | 房型 | 订单号 | 发券 | 用券 | 剩余 | 登记人 | 时间 |
|---|---|---|---|---|---|---|---|---|---|
| {{ it.biz_date }} | {{ it.room_no }} | {{ it.guest_name || '—' }} | {{ it.room_type || '—' }} | {{ it.order_no }} | {{ it.total }} | {{ it.used }} | {{ it.remain }} | {{ it.operator || '—' }} | {{ (it.created_at||'').slice(5,16) }} |
| 该时间段没有早餐券记录 | |||||||||
| 时间 | 变动 | 余额 | 事由 |
|---|---|---|---|
| {{ (l.created_at || '').slice(0, 16) }} | {{ l.change > 0 ? '+' : '' }}{{ l.change }} | ¥{{ l.balance_after }} | {{ l.reason }} |
| 渠道 | 驱动 | 状态 | 签名/账号 | 今日/限额 | 操作 |
|---|---|---|---|---|---|
| {{ c.channel_label }} | {{ c.ready ? '可发送' : '未配置完整' }} | {{ c.today_used }} / {{ c.daily_limit || '不限' }} |
| 场景 | 编码 | 名称 | 渠道 | 模板内容 | |
|---|---|---|---|---|---|
| {{ t.scene_label }} | {{ t.code }} | {{ t.name }} | {{ t.channel_label }} | {{ t.content }} |
| 时间 | 场景 | 模板 | 接收方 | 内容 | 状态 | |
|---|---|---|---|---|---|---|
| {{ (r.created_at||'').slice(5,16) }} | {{ r.scene_label }} | {{ r.template_code }} | {{ r.recipient }} |
{{ r.content }}
✘ {{ r.error }}
|
{{ r.status_label }}
重试 {{ r.retry_count }} 次 |
| 卡号 | 姓名 | 手机 | 等级 | 专属折扣 | 到店 | 间夜 | 累计消费 | 积分 | 储值 | 最近到店 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ m.member_no }} | {{ m.name }} | {{ m.phone || '—' }} | {{ m.level_name }} | {{ rateText(m.discount_override) }} 按等级 | {{ m.stay_count }} 次 | {{ m.night_count }} | ¥{{ m.total_spend }} | {{ m.points }} | ¥{{ m.balance }} | {{ (m.last_stay_at||'').slice(0,10) || '—' }} ({{ m.days_since_last }} 天前) |
| 订单号 | 门店 | 房号 | 渠道 | 间夜 | 消费 | 入住时间 | 离店时间 |
|---|---|---|---|---|---|---|---|
| {{ v.order_no }} | {{ v.hotel_name || v.hotel_id }} | {{ v.room_no }} | {{ v.channel_label }} | {{ v.nights }} | ¥{{ v.amount }} | {{ (v.checkin_at||'').slice(0,16) }} | {{ (v.checkout_at||'').slice(0,16) }} |
| 类型 | 名称 | 日期 | 下次 | 提前 | 渠道 | 状态 | |
|---|---|---|---|---|---|---|---|
| {{ e.type_label }} | {{ e.label }} | {{ e.event_date }} | {{ e.next_occurrence ? e.next_occurrence.date + '('+e.next_occurrence.days_left+'天)' : '已过期' }} | {{ e.remind_days_before }} 天 | {{ e.channel || '—' }} | {{ e.status===1?'启用':'停用' }} |
| 等级 | 人数 | 会员消费 |
|---|---|---|
| {{ l.name }} | {{ l.count }} | ¥{{ l.spend }} |
| 渠道 | 人数 |
|---|---|
| {{ c.label }} | {{ c.count }} |
| 月份 | 新增 |
|---|---|
| {{ mm.month }} | {{ mm.count }} |
| 卡号 | 姓名 | 等级 | 到店 | 间夜 | 累计消费 | 积分 | 最近到店 |
|---|---|---|---|---|---|---|---|
| {{ t.member_no }} | {{ t.member_name }} | {{ t.level_name }} | {{ t.stay_count }} | {{ t.night_count }} | ¥{{ t.total_spend }} | {{ t.points }} | {{ (t.last_stay_at||'').slice(0,10) }} |
| 等级 | 名称 | 需到店(次) | 需消费(¥) | 折扣 | 积分倍率 | 权益 | 当前人数 |
|---|---|---|---|---|---|---|---|
| {{ lv.code }} | {{ lv.name }} | {{ lv.min_stays }} | {{ lv.min_spend }} | {{ lv.discount }} | {{ lv.points_rate }} | {{ lv.benefits }} | {{ lv.member_count!=null ? lv.member_count : '—' }} |
| 员工 |
周{{ d.weekday }} {{ d.date.slice(5) }} |
本周工时 |
|---|---|---|
| {{ st.who }} | {{ rosterCellOf(st.id,d.date).shift_name }} · | {{ rosterHours(st.id) }}h |
| 员工 |
周{{ d.weekday }} {{ d.date.slice(5) }} |
出勤 | 迟到 | 缺勤 | 加班 |
|---|---|---|---|---|---|
| {{ r.who }} | {{ attCellText(r.cells[d.date]) }} | {{ r.stat.present }} | {{ r.stat.late || '' }} | {{ r.stat.absent || '' }} | {{ r.stat.extra || '' }} |
| 日期 | 星期 | {{ t }} |
|---|---|---|
| {{ d.date }} | {{ weekdayLabels[d.weekday] }} | {{ d.prices[t]!=null ? '¥'+d.prices[t] : '—' }} |
| # | 集团名称 | 简称 | 套餐 | 门店 | 房间 | 账号 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ t.id }} | {{ t.name }} | {{ t.short_name || '—' }} | {{ t.plan || '—' }} | {{ t.hotel_count }} | {{ t.room_count }} | {{ t.user_count }} | {{ t.status===1?'启用':'停用' }} | |
| 暂无集团 | ||||||||
| 订单号 | 房号 | 客人 | 状态 | 入住 | 退房 | 应收 | 已收 | 未结 | |
|---|---|---|---|---|---|---|---|---|---|
| {{ o.order_no }} | {{ o.room_no }} | {{ o.guest_name_full || o.guest_name_masked }} | {{ o.status_text }} | {{ o.checkin_at }} | {{ o.checkout_at }} | {{ o.amount_masked?'—':('¥'+o.receivable) }} | {{ o.amount_masked?'—':('¥'+o.paid) }} | {{ o.amount_masked?'—':('¥'+o.unsettled) }} |
| 工单号 | 类型 | 优先级 | 标题 | 房号 | 状态 | 创建 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ t.ticket_no }} | {{ t.type_text }} | {{ t.priority_text }} | {{ t.title }} | {{ t.room_no }} | {{ t.status_text }} | {{ t.created_at }} | 已关闭 |
| 名称 | 类型 | 编号 | 房号 | 门店 | 状态 | 最近心跳 | |
|---|---|---|---|---|---|---|---|
| {{ d.name }} | {{ d.type_text }} | {{ d.code }} | {{ d.room_no }} | {{ d.hotel_id }} | {{ d.status_text }} | {{ d.last_seen }} |
| 上报时间 | 门店 | 级别 | 电脑 / 设备号 | 账号 | 消息 | 状态 | |
|---|---|---|---|---|---|---|---|
| {{ r.created_at }} | {{ r.hotel_name || r.hotel_id || '-' }} | {{ r.level }} | {{ r.hostname || '-' }} {{ r.device || '' }} |
{{ r.login_user || '-' }} | {{ r.message }} | {{ r.handled_at?'已处理':'待处理' }} | |
| 暂无记录 | |||||||
| 设备 / 电脑 | 门店 | 版本 | 读证后端 | 读证服务 | 厂家WS | 门锁DLL | 云端 | 上报时间 | |
|---|---|---|---|---|---|---|---|---|---|
| {{ d.hostname || '-' }} {{ d.device }} |
{{ d.hotel_name || d.hotel_id || '-' }} | {{ d.version }} · {{ d.arch }} | {{ (d.backends||[]).join(', ') || '-' }} | {{ d.id_service_ok===true?'正常':(d.id_service_ok===false?'异常':'-') }} | {{ d.ws9001_available===true?'可用':(d.ws9001_available===false?'未检测到':'-') }} | {{ d.lock_dll_usable }} 可用 | {{ d.cloud_reachable===true?'可达':(d.cloud_reachable===false?'不可达':'-') }} | {{ d.generated_at || d.created_at }} | |
{{ JSON.stringify(d.diag, null, 2) }} | |||||||||
| 暂无诊断数据(客户端需先启动并联网上报) | |||||||||
| 上传时间 | 门店 | 类型 | 文件名 | 大小 | 电脑 / 设备号 | 账号 | 版本 | 备注 | |
|---|---|---|---|---|---|---|---|---|---|
| {{ r.created_at }} | {{ r.hotel_name || r.hotel_id || '-' }} | {{ {log:'日志',recording:'录制',screenshot:'截图',other:'其它'}[r.kind] || r.kind || '-' }} | {{ r.filename }} | {{ fmtSize(r.size) }} | {{ r.device }} {{ r.version }} · {{ r.arch }} |
{{ r.login_user || '-' }} | {{ r.version || '-' }} | {{ r.note || '-' }} | 下载 |
| 暂无上传文件(门店需在客户端【⑧ 诊断上传】面板先上传) | |||||||||
| 同步时间 | 门店 | 动作 | 状态 | 房号 | 锁号 | 客人 | 电脑 / 设备号 | 账号 | 客户端时间 |
|---|---|---|---|---|---|---|---|---|---|
| {{ r.created_at }} | {{ r.hotel_name || r.hotel_id || '-' }} | {{ r.action }} | {{ r.status }} | {{ r.room_no || '-' }} | {{ r.lock_no || '-' }} | {{ r.guest_name || '-' }} | {{ r.hostname || '-' }} {{ r.device || '' }} |
{{ r.login_user || '-' }} | {{ r.client_ts || '-' }} |
| 暂无记录 | |||||||||
| 时间 | 门店 | 操作人 | 角色 | 模块 | 动作 | 对象(单号/房号) | 风险 | 结果 | IP | 设备 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.created_at }} | {{ r.hotel_id }} | {{ r.user_name }}{{ r.login_account }} | {{ r.role_code }} | {{ r.module }} | {{ r.action }} | {{ r.action_level }} | {{ r.result===1?'成功':'失败' }} | {{ r.ip || '-' }} | |||
| 暂无记录 | |||||||||||
| 工单号 | 房号 | 类型 | 级别 | 事由 | 状态 | 请求时间 |
|---|---|---|---|---|---|---|
| {{ r.op_no }} | {{ r.room_no }} | {{ r.op_type }} | {{ r.op_level }} | {{ r.reason }} | {{ r.status }} | {{ r.requested_at }} |
| 时间 | 方式 | 保留期 | 清理到 | 删除条数 | 操作人 | 归档 |
|---|---|---|---|---|---|---|
| {{ h.created_at }} | {{ h.mode==='auto' ? '自动' : '手动' }} | {{ h.months }} 个月 | {{ h.cutoff_at || '-' }} | {{ h.rows_deleted }} | {{ h.operator_name || (h.operator_id ? ('#'+h.operator_id) : '系统') }} | — |
| 时间 | {{ logDetail.created_at }} | TraceID | {{ logDetail.trace_id || '-' }} |
| 操作人 | {{ logDetail.user_name }}(UID {{ logDetail.user_id }}) | 登录账号 | {{ logDetail.login_account || '-' }} |
| 登录方式 | {{ logDetail.login_method || '-' }} | 角色 | {{ logDetail.role_code || '-' }} |
| 模块/动作 | {{ logDetail.module }} / {{ logDetail.action }} | ||
| 风险等级 | {{ logDetail.action_level }} | 结果 | {{ logDetail.result===1?'成功':'失败' }} · {{ logDetail.error_msg }} |
| 对象 | {{ logDetail.object_type }} / {{ logDetail.object_id }} | ||
| IP 地址 | {{ logDetail.ip || '-' }} | IP 归属地 | {{ logDetail.geo_ip || '-' }} |
| 电脑名 | {{ logDetail.hostname || '-' }} | MAC | {{ logDetail.mac || '-' }} |
| 设备指纹 | {{ logDetail.device_fingerprint || '-' }} | ||
| 终端类型 | {{ logDetail.terminal_type || '-' }} | 客户端版本 | {{ logDetail.client_version || '-' }} |
| 会话 ID | {{ logDetail.session_id || '-' }} | ||
| 请求 | {{ logDetail.request_method || '-' }} {{ logDetail.request_url || '' }} | 耗时 | {{ logDetail.duration_ms!=null ? logDetail.duration_ms+' ms' : '-' }} |
| HTTP 状态 | {{ logDetail.http_status || '-' }} | User-Agent | {{ logDetail.user_agent || '-' }} |
| 变更前后 | 前:{{ logDetail.before_value }}
后:{{ logDetail.after_value }} |
||
| 渠道 | 门店 | AppKey | 密钥 | 房型映射 | 同步库存 | 状态 | 最近同步 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ c.name }} {{ c.code }} | {{ c.hotel_id }} | {{ c.app_key }} | {{ c.app_secret }} | {{ roomTypeMapText(c) }} | {{ c.sync_inventory ? '是' : '否' }} | {{ c.status ? '启用' : '停用' }} | {{ c.last_sync_at || '—' }} | 教程 |
| 订单号 | 房型 | 本店房型 | 客人 | 入住 | 离店 | 间夜 | 金额 | 支付 | 状态 | PMS | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ o.ota_order_no }} | {{ o.ota_room_type }} | {{ o.room_type || '—' }} | {{ o.guest_name || o.guest_name_masked }} | {{ short(o.checkin_at) }} | {{ short(o.checkout_at) }} | {{ o.nights }} | {{ o.amount }} | {{ o.pay_status }} | {{ otaStatusText(o.status) }} |
{{ o.synced_to_pms ? '已入PMS' : (o.error_msg ? '入单异常' : '未入') }}
{{ o.pms_order_no }}
查看详情
|
已处理 |
| ID | 房号 | 房型 | 类型 | 优先级 | 状态 | 接单人 | 来源 | 备注 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ t.id }} | {{ t.room_no }} | {{ t.room_type || '—' }} | {{ t.type_label }} | {{ t.priority }} | {{ t.status_label }} | {{ hkStaffName(t.assignee_id) }} | {{ t.source }} | {{ t.note || '—' }} |
| ID | 房号 | 服务 | 紧急 | 渠道 | 描述 | 状态 | SLA 到期 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ s.id }} | {{ s.room_no }} | {{ s.type_name || s.type }} | {{ s.urgency>=2?'紧急':'普通' }} | {{ s.channel }} | {{ s.description || '—' }} | {{ svcStatusText(s.status) }} | {{ s.sla_due_at || '—' }} | 已完成 |
| 项目 | 数值 |
|---|---|
| 已售房晚 / 可售房晚 | {{ audit.stats.sold_nights }} / {{ audit.stats.available_nights }} |
| 到店 / 离店 / 在住 | {{ audit.counters.arrivals }} / {{ audit.counters.departures }} / {{ audit.counters.in_house }} |
| 旅馆业上报 成功 / 总数 | {{ audit.counters.psb_success }} / {{ audit.counters.psb_total }} |
| 未完成保洁 / 服务工单 | {{ audit.counters.hk_pending }} / {{ audit.counters.svc_pending }} |
| 已过离店时间未退房 | {{ audit.counters.overdue_checkout }} |
| 消费类型 | 笔数 | 金额 |
|---|---|---|
| {{ t.item_type }} | {{ t.count }} | ¥{{ num(t.amount) }} |
| 收款方式 | 笔数 | 金额 |
|---|---|---|
| {{ t.label }} | {{ t.count }} | ¥{{ num(t.amount) }} |
| 订单 | 房号 | 房型 | 补记夜数 | 金额 | 折扣 |
|---|---|---|---|---|---|
| {{ g.order_no }} | {{ g.room_no }} | {{ g.room_type }} | {{ g.nights.length }} 夜({{ g.nights.map(n => n.date).join('、') }}) | ¥{{ num(g.amount) }} | {{ g.rate_label }} |
| 营业日 | 门店 | OCC | ADR | RevPAR | 房费 | 收款 | 未结 | 补记房费 | 状态 | 日结时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ a.business_date }} | {{ a.hotel_name }} | {{ a.occ_label }} | ¥{{ num(a.adr) }} | ¥{{ num(a.revpar) }} | ¥{{ num(a.room_revenue) }} | ¥{{ num(a.total_paid) }} | ¥{{ num(a.outstanding) }} | {{ a.room_fee_count }} 笔 / ¥{{ num(a.room_fee_amount) }} | {{ a.status_label }} | {{ a.run_at || '—' }} |
| 预检项 | 结论 |
|---|---|
| {{ c.code }} | {{ c.message }} |
| 无预检问题 | |
| 车牌 | 房号 | 订单号 | 客人 | 送券 | 进场时间 | 离场时间 | 操作员 | 备注 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
| {{ p.plate_no }} | {{ p.room_no || '—' }} | {{ p.order_no || '—' }} | {{ p.guest_name || '—' }} | 送券— | {{ p.checkin_at }} | {{ p.checkout_at || '在停' }} | {{ p.operator || '—' }} | {{ p.note || '—' }} | {{ p.checkout_at ? '已离场' : '—' }} |
| 系统单号 | 发票号码 | 类型 | 抬头 | 税号 | 价税合计 | 税额 | 关联订单 | 状态 | 开票日期 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ v.serial_no }} | {{ v.invoice_no || '—' }} | {{ v.type_label }} {{ v.category_label }} |
{{ v.buyer_name }} {{ v.title_type==='company' ? '单位' : '个人' }} |
{{ v.buyer_tax_no || '—' }} | ¥{{ num(v.amount) }} | ¥{{ num(v.tax_amount) }} {{ (v.tax_rate*100).toFixed(0) }}% |
{{ v.order_no || '—' }} 房 {{ v.room_no }} |
{{ v.status_label }} {{ v.void_reason }} |
{{ v.invoice_date || '—' }} | 已终结 |
| 订单号 | 房号 | 客人 | 已收款 | 已开票 | 可开余额 | 已有发票 | 最近收款 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ p.order_no }} | {{ p.room_no || '—' }} | {{ p.guest_name || '—' }} | ¥{{ num(p.paid_amount) }} | ¥{{ num(p.invoiced) }} | ¥{{ num(p.available) }} | {{ p.invoice_count }} 张(含 {{ p.pending_count }} 张待开) | {{ p.last_paid_at || '—' }} | 无权限 |
| 抬头名称 | 纳税人识别号 | 地址电话 | 开户行账号 | 邮箱 | 使用次数 | 最近使用 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ t.buyer_name }} | {{ t.buyer_tax_no || '—' }} | {{ t.buyer_address || '—' }} {{ t.buyer_phone || '' }} | {{ t.buyer_bank || '—' }} {{ t.buyer_account || '' }} | {{ t.email || '—' }} | {{ t.use_count }} | {{ t.last_used_at || '—' }} |
| 类型 | 金额 |
|---|---|
| {{ r.label }} | ¥{{ num(r.amount) }} |
| 项目 | 金额 |
|---|---|
| {{ r.label }} | ¥{{ num(r.amount) }} |
| 抬头 | 开票金额 |
|---|---|
| {{ r.buyer_name }} | ¥{{ num(r.amount) }} |
| 订单号 | 客人 | 入住 | 离店 | 门市价 | 操作 |
|---|---|---|---|---|---|
| {{ u.order_no }} 已过期 | {{ u.guest_name || '—' }} 会员 | {{ (u.checkin_at||'').slice(0,16) }} | {{ (u.checkout_at||'').slice(0,16) }} | ¥{{ num(u.list_amount) }} |
| 房号 | 房型 | 类型 | 开始 | 结束 | 原因 | 操作 |
|---|---|---|---|---|---|---|
| {{ b.room_no }} | {{ b.room_type }} | {{ b.block_label }} | {{ b.start_date }} | {{ b.end_date }} | {{ b.reason || '—' }} |
| 维度 | 均分 | 样本 |
|---|---|---|
| {{ d.name }} | {{ d.avg }} / 5 | {{ d.count }} |
| 门店 | 评价数 | 均分 | NPS | 贬损者 |
|---|---|---|---|---|
| {{ h.hotel_name }} | {{ h.count }} | {{ h.avg_score }} | {{ h.nps > 0 ? '+' : '' }}{{ h.nps }} | {{ h.detractors }} |
| 月份 | 评价数 | 均分 | NPS |
|---|---|---|---|
| {{ m.month }} | {{ m.count }} | {{ m.avg_score }} | {{ m.nps > 0 ? '+' : '' }}{{ m.nps }} |
| 来源 | 数量 | 均分 |
|---|---|---|
| {{ c.label }} | {{ c.count }} | {{ c.avg_score }} |
| 评分 | 客人 / 订单 | 房号 | 来源 | 标签 | 内容 | 回复 | 状态 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|---|---|
|
{{ v.score }}
{{ v.nps_label }}
|
{{ v.guest_name || '—' }} {{ v.order_no }} |
{{ v.room_no || '—' }} {{ v.room_type || '' }} |
{{ v.channel_label }} | {{ t }} | {{ v.comment || '—' }}
已联动告警 #{{ v.alert_id }} · 客诉工单 #{{ v.ticket_id }}
|
{{ v.reply }} {{ v.replied_at }}
未回复
|
{{ v.status_label }} | {{ v.created_at }} |
| 范围 | 编码 / 名称 | 担保 | 免费取消 | 逾期取消 | No-show | 提前期 | 连住 | 适用房型 | 优先级 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ p.scope_label }} {{ p.hotel_name || '' }} |
{{ p.name }} {{ p.code }} · 默认 |
{{ p.guarantee_label }} | {{ p.free_cancel_hours > 0 ? p.free_cancel_hours + ' 小时' : '不可免费取消' }} | {{ p.cancel_fee_label }} ¥{{ p.cancel_fee_value }} | {{ p.noshow_fee_label }} | 提前 {{ p.min_lead_days }} ~ {{ p.max_lead_days }} 天 | {{ p.min_nights }} ~ {{ p.max_nights }} 晚 | {{ p.room_types.length ? p.room_types.join('、') : '全部' }} | {{ p.priority }} | {{ p.status ? '启用' : '停用' }} | 只读 |
| 文件名 | 类型 | 大小 | 表 / 行 | 校验 | 状态 | 创建时间 | 备注 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ b.file_name }} 文件已丢失 曾于 {{ b.restored_at }} 用于恢复 |
{{ b.kind_label }} {{ b.hotel_name }} |
{{ b.size_label }} | {{ b.tables_count }} 表 / {{ b.rows_count }} 行 | {{ b.integrity || '未校验' }} | {{ b.status }} | {{ b.created_at }} | {{ b.remark || '—' }} |
| 协议单位 | 结算 | 信用额度 | 未结 | 状态 |
|---|---|---|---|---|
| {{ b.name }} {{ b.code }} |
{{ cpMeta.settle_types[b.settle_type] || b.settle_type }} | {{ b.credit_limit > 0 ? '¥' + b.credit_limit : '不限' }} | ¥{{ b.unsettled }} | 超额度正常 |
| 协议单位 | 到期日 | 剩余 |
|---|---|---|
| {{ e.name }} {{ e.code }} |
{{ e.valid_to }} | {{ e.days_left }} 天 |
| 协议单位 | 间夜 | 消费 |
|---|---|---|
| {{ t.name }} | {{ t.nights }} | ¥{{ t.revenue }} |
| 编码 / 名称 | 类别 | 结算 | 信用额度 | 未结 | 价目 | 员工 | 订单 | 合同期 | 状态 | 操作 |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ a.name }} {{ a.code }} · {{ a.contract_no }} |
{{ a.category_label }} | {{ a.settle_label }} | {{ a.credit_limit > 0 ? '¥' + a.credit_limit : '不限' }} | ¥{{ a.unsettled }} | {{ a.agreement_count }} | {{ a.member_count }} | {{ a.order_count }} | {{ a.valid_from || '—' }} ~ {{ a.valid_to || '长期' }}
已过期 |
{{ a.status_label }} |
| 范围 | 房型 | 计价 | 连住限制 | 有效期 | 优先级 | 状态 | 操作 | |
|---|---|---|---|---|---|---|---|---|
| {{ g.scope_label }} {{ g.hotel_name || '' }} |
{{ g.room_type || '全部房型' }} | {{ g.price_label }} {{ g.value_label }} | {{ g.min_nights }} ~ {{ g.max_nights }} 晚 | {{ g.valid_from || '—' }} ~ {{ g.valid_to || '长期' }} | {{ g.priority }} | {{ g.status_label }} | 只读 |
| 姓名 | 部门 / 职务 | 手机号 | 证件 | 状态 | 操作 | |
|---|---|---|---|---|---|---|
| {{ m.name }} | {{ m.department || '—' }}{{ m.job_title ? ' / ' + m.job_title : '' }} | {{ m.phone || '—' }} | {{ m.has_id ? '已登记(尾号 ' + m.id_tail + ')' : '未登记' }} | {{ m.is_active ? '在职' : '停用' }} | 只读 |
| 订单 / 房号 | 客人 | 状态 | 入住 / 离店 | 门市价 | 折扣 | 优惠额 |
|---|---|---|---|---|---|---|
| {{ o.order_no }} {{ o.room_no }} |
{{ o.guest_name || '—' }} | {{ o.status_label }} | {{ o.checkin_at }} {{ o.checkout_at }} |
¥{{ o.list_amount }} | {{ o.discount_rate }} | ¥{{ o.discount_amount }} |
| 账期 | 金额 | 方式 | 凭证号 | 经办 | 时间 | 备注 |
|---|---|---|---|---|---|---|
| {{ s.period }} | ¥{{ s.amount }} | {{ s.method_label }} | {{ s.settle_no || '—' }} | {{ s.operator || '—' }} | {{ s.created_at }} | {{ s.remark || '—' }} |
| # | 检查项 | 结论 | 说明与建议 |
|---|---|---|---|
| {{ i+1 }} | {{ it.label }} 必备 建议 | 提示 {{ it.ok ? '通过' : '不通过' }} | {{ it.advice }} |
| 房号 | 房型 | 楼层 | 当前房态 | 策略 | 生效 | 优先级 | 预留截止 | 备注 | 操作 | |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ r.room_no }} | {{ r.room_type }} | {{ r.floor || '—' }} | {{ r.room_status_label }} | {{ r.mode_label }} | 已到期·放开为自助 {{ r.effective_label }} — | {{ r.priority || 0 }} | {{ r.hold_until || '—' }} | {{ r.remark || '—' }} |
| 信息项 | 当前状态 | 说明 |
|---|---|---|
| 房间清单 / 具体房号 | {{ kcForm.show_room_no ? '会显示' : '不可见' }} | {{ kcForm.show_room_no ? '客人可在房型下看到具体房号,等同暴露部分房态。' : '只给房型级可订状态,房号由系统在办理成功后自动分配。' }} |
| 剩余房量 | {{ kcForm.show_vacant_count ? '会显示' : '不可见' }} | {{ kcForm.show_vacant_count ? '显示「剩 N 间」,可被用来判断生意好坏(经营信息)。' : '只用「可预订 / 已满」表达,不给数量。' }} |
| 楼层 | {{ kcForm.show_floor ? '会显示' : '不可见' }} | 楼层结合房号可推断房态分布,默认关闭。 |
| 其他客人姓名 / 手机 / 证件 | 不可见 | 后端隐私守卫强制剥离并留痕,不可通过配置打开。 |
| 在住状态分布 / 出租率 | 不可见 | 自助机侧没有任何房态接口,只有房型级聚合。 |
| 预订查询(他人) | {{ kcForm.scenarios.indexOf('reserved_checkin')>=0 ? '需 姓名+手机 双要素' : '未开放' }} | 已做防枚举:未刷证时必须同时给出姓名与手机号,否则拒绝并留痕。 |
| 时间 | 动作 | 结果 | 风险 | 单据 / 房号 | 证件末4位 | 说明 |
|---|---|---|---|---|---|---|
| {{ a.created_at }} | {{ a.action }} | {{ a.result }} | {{ a.risk }} | {{ a.order_no }} {{ a.room_no }} |
{{ a.id_tail }} | {{ a.detail || '—' }} |
| 卡编号 | 卡序列号 | 状态 | 位置 | 绑定订单 / 房号 | 有效期至 | 发卡次数 | 操作 |
|---|---|---|---|---|---|---|---|
| {{ c.card_uid }} {{ c.kind_label }} |
{{ c.card_serial || '未读卡登记' }} | {{ c.state_label }} | {{ c.location_label }} |
{{ c.order_no }} 房 {{ c.room_no }}
—
|
{{ c.valid_until || '—' }} | {{ c.issue_count }} |
| 驱动 | 厂商 / 传输 | 能力 | 参数映射要点 | 状态 | 操作 |
|---|---|---|---|---|---|
| {{ d.name }} {{ d.driver_code }} |
{{ d.vendor || '—' }} {{ d.transport_label }} |
{{ c }}
{{ d.bridge_hint }}
|
时间 {{ d.param_map.time_format || '—' }} · 锁号 {{ (d.param_map.lock_no && d.param_map.lock_no.pad) || 0 }} 位 · 写完回读 {{ d.param_map.verify_after_write ? '是' : '否' }} | {{ d.status_label }} 默认 | 只读 |
01030A = 区03 · 房序号10,对应房 310;波斯登是 8 位十进制)。
这张表就是房号与门锁的对照,每行下方会显示该锁号的十六进制解码,方便核对。
锁号错了 → 卡能发出来但开不了门,所以未维护锁号的房间会在这里显性列出来。
| 房号 | 门锁房号 | 房型 | 楼层 | 锁号 | 备注 | 操作 |
|---|---|---|---|---|---|---|
| {{ m.room_no }} | {{ vendorRoomNo(m) || '—' }} | {{ m.room_type || '—' }} | {{ m.floor || '—' }} | {{ m.lock_no }} {{ decodeLockNo(m.lock_no) }} |
{{ m.remark || '—' }} |
| 单号 | 动作 | 卡 / 订单 | 房号 | 锁号 | 状态 | 返回 | 时间 | 操作 |
|---|---|---|---|---|---|---|---|---|
| {{ j.job_no }} {{ j.driver_code }} |
{{ j.action_label }} | {{ j.card_uid || '—' }} {{ j.order_no || '—' }} |
{{ j.room_no || '—' }} | {{ j.lock_no || '—' }} | {{ j.status_label }}
第 {{ j.attempts }} 次 |
{{ j.error_code }}
{{ j.error_msg }}
卡 {{ j.card_serial }}
|
{{ j.created_at }} |
| 门店 ID | 门店名称 | 酒店标识(dlsCoID) | 操作 |
|---|---|---|---|
| {{ h.id }} | {{ h.name }} | ||
| 暂无门店 | |||
X-Agent-Code 头 + HMAC 签名上报数据。| # | 代理编号 | 名称 | 状态 | 最近心跳 | 操作 |
|---|---|---|---|---|---|
| {{ i+1 }} | {{ a.code }} |
{{ a.name || '—' }} | {{ a.online ? '在线' : '离线' }} | {{ a.heartbeat_at || '从未' }} |
{{ keyModal.code }}
{{ keyModal.agent_key }}
{{ keyModal.base_url }}
| # | 设备名称 | 设备编码 | 房号 | 状态 | 最近在线 |
|---|---|---|---|---|---|
| {{ i+1 }} | {{ d.name }} | {{ d.code }} | {{ d.room_no || '—' }} | {{ d.online ? '在线' : '离线' }} | {{ d.last_seen || '从未' }} |
| 本店尚未登记门锁网关设备 | |||||
{{ hwMeta.cloud_base || '—' }}
客户端已封装
127.0.0.1:9001;若厂家服务端口不同,仅改此处端口即可。云端地址已内置客户端,无需填写。
| 门店 ID | {{ selHotel.id }} |
| 所属租户 | {{ selHotel.tenant_name }} |
| 所属区域 | {{ selHotel.region_name || '未分区' }} |
| 地址 | {{ selHotel.address || '—' }} |
| 前台电话 | {{ selHotel.phone || '—' }} |
| 负责人 | {{ selHotel.contact_name || '—' }} |
| 营业时间 | {{ selHotel.business_hours || '—' }} |
| 标准入住 / 退房 | {{ selHotel.checkin_time || '—' }} / {{ selHotel.checkout_time || '—' }} |
| 酒店标识(门锁 dlsCoID) | {{ (selHotel.site_id && selHotel.site_id != 0) ? selHotel.site_id : '未设置(门店客户端沿用默认值)' }} |
| 旅馆业对接码 | {{ selHotel.psb_hotel_code }} |
| 旅馆业模式 | {{ psbModeLabel(selHotel.psb_mode) }} |
| 旅馆业状态 | {{ psbStatusLabel(selHotel.psb_status) }} |
| 备注 | {{ selHotel.remark || '—' }} |
api:mobile:use。
{{ hotelCreate.nextId }})由系统自动分配,不可修改;
旅馆业编码留空则自动生成。创建后建议立刻用「🏢 房源导入」录入房间。
| 姓名 | 证件 | 房号 | 主/同住 |
|---|---|---|---|
| {{ g.guest_name_masked }} | {{ g.id_no_masked }} | {{ g.room_no }} | {{ g.is_primary?'主住':'同住' }} |
| 项目 | 数量 | 金额 | 状态 |
|---|---|---|---|
| {{ c.item_name }} | {{ c.qty }} | {{ c.amount===null?'—':('¥'+c.amount) }} | {{ c.is_void?'已冲销':'正常' }} |
| 渠道 | 金额 | 状态 | 时间 |
|---|---|---|---|
| {{ p.channel }} | {{ p.amount===null?'—':('¥'+p.amount) }} | {{ p.status }} | {{ p.paid_at||p.created_at }} |
{{ otaCallbackUrl() }}
| 时间 | 动作 | 结果 | 订单 / 房号 | 厂商码 | 说明 |
|---|---|---|---|---|---|
| {{ e.created_at }} | {{ e.action_label || e.action }} | {{ e.result==='ok' ? '成功' : '失败' }} | {{ e.order_no || '—' }} 房 {{ e.room_no }} |
{{ e.vendor_code === null || e.vendor_code === undefined ? '—' : e.vendor_code }} | {{ e.detail || '—' }} |