1) 全站亮色 / 暗色 - 管理端与大屏都提供切换按钮(顶栏 ☾/☀、大屏右上角),偏好写 cookie,服务端首屏直出,不闪 - 未选择时跟随系统(prefers-color-scheme);两套配色都改成 CSS 变量,色签、热力、表格、抽屉全部适配 - 大屏默认仍是深色记分板,浅色为纸感背景 2) 工作台 → 当日待完成:按手机尾号快速完成 - 输入尾号回车:唯一匹配直接完成并提示 - 同尾号多客户 / 一单多服务:跳到选择面板,默认全选,可多选后一次完成 - 新增 POST /checkins/quick 与 POST /checkins/batch;抽屉标题改为「未完成数 / 总单数」 3) 加急 - 每条任务右侧可勾选/取消加急;加急任务红 tag + 置顶(抽屉与大屏「今日待打」) - 日历格子出现红点,单据色签加红边;大屏热力格也带红点 - 新增表 task_flags(sub_id, service_date, urgent),按 订阅+日期 存,避免和打卡状态耦合 4) 套餐「在日历中独立显示」 - 套餐表单新增勾选项,列表页显示「独立日历」标记 - 勾选后工作台与大屏顶部出现套餐标签页(全部 / 每日任务 / …),可只看某类委托的排单、热量与待办 - 新增列 packages.calendar_separate;老库打开时自动 ALTER,无需手工迁移 5) 大屏 - 热力默认改为「每日待完成单量」,右上角可切回「到期热力」 - 鼠标悬停任意日期格,浮出当日待办明细(客户、套餐、剩余、加急),数据来自 GET /api/screen/day - 底部面板改为「今日到期」(左)+「今日待打」(右,加急置顶),最近追加改为最底部细条 数据库兼容性: - 只做加法:新增 task_flags 表与 packages.calendar_separate 列,原有表结构、字段、接口与已有数据均不变 - 迁移可重复执行(CREATE TABLE IF NOT EXISTS + PRAGMA 检查后 ALTER) 测试: - 新增单元测试:套餐独立日历标记、加急增删查、旧库自动加列与重复迁移 - 新增功能冒烟 33 项(主题 cookie、套餐标签、快速完成单/多匹配、加急排序、大屏接口)全部通过 - 原有 119 项验收回归全绿(3 条断言按新 UI 更新:抽屉标题、热力默认口径、今日待打数取值方式) - go vet / go test ./... 通过;版本号 1.2.0
51 lines
2.2 KiB
HTML
51 lines
2.2 KiB
HTML
{{define "content"}}
|
||
<div class="page">
|
||
<header class="page-head">
|
||
<div>
|
||
<h1>套餐</h1>
|
||
<p class="muted">新增套餐只需加一行配置,不会影响任何已有客户与订阅</p>
|
||
</div>
|
||
<div class="page-actions"><a class="btn btn-primary" href="/packages/new">+ 新增套餐</a></div>
|
||
</header>
|
||
|
||
{{if .D.List}}
|
||
<div class="table-wrap">
|
||
<table class="table">
|
||
<thead>
|
||
<tr><th class="col-dot"></th><th>名称</th><th>类型</th><th>默认量</th><th>参考价</th><th>订阅中 / 总数</th><th>状态</th><th></th></tr>
|
||
</thead>
|
||
<tbody>
|
||
{{range .D.List}}
|
||
<tr{{if .Archived}} class="archived"{{end}}>
|
||
<td><span class="dot big" style="background:{{.Color}}"></span></td>
|
||
<td>
|
||
<b>{{.Name}}</b>
|
||
{{if .CalendarSeparate}}<span class="tagchip">独立日历</span>{{end}}
|
||
{{if .Note}}<div class="muted small">{{.Note}}</div>{{end}}
|
||
</td>
|
||
<td>{{.UnitLabel}}</td>
|
||
<td class="mono">{{.DefaultAmount}}{{if eq .Unit "day"}} 天{{else}} 次{{end}}</td>
|
||
<td class="mono">{{if .HasPrice}}¥{{money .PriceCents}}{{else}}—{{end}}</td>
|
||
<td class="mono">{{.ActiveCount}} / {{.SubCount}}</td>
|
||
<td>{{if .Archived}}<span class="chip chip-closed">已归档</span>{{else}}<span class="chip chip-active">启用中</span>{{end}}</td>
|
||
<td class="actions-cell">
|
||
<a class="btn btn-sm" href="/packages/{{.ID}}/edit">编辑</a>
|
||
<form method="post" action="/packages/{{.ID}}/archive"{{if not .Archived}} data-confirm="归档后不能再新建该套餐的订阅,已有订阅不受影响。继续?"{{end}}>
|
||
<button class="btn btn-sm btn-ghost">{{if .Archived}}恢复{{else}}归档{{end}}</button>
|
||
</form>
|
||
</td>
|
||
</tr>
|
||
{{end}}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{{else}}
|
||
<div class="empty">
|
||
<div class="empty-mark">票</div>
|
||
<p>还没有套餐。先建「包月日常」这类常用套餐,之后客户开通就一键完成。</p>
|
||
<a class="btn btn-primary" href="/packages/new">+ 新增套餐</a>
|
||
</div>
|
||
{{end}}
|
||
</div>
|
||
{{end}}
|