build / build-and-test (push) Successful in 3m19s
1) 工作台速录 - 手机尾号输入框下方新增 3×4 触摸小键盘(1-9、0、⌫、✓),点 ✓ 直接提交;实体键盘仍可输入 - 抽屉顶部新增秒级时钟(HH:MM:SS),位于日期标题上方 2) 日历格子 - 移除排单缩略信息(客户名/套餐色签/“x/y 单”小字) - 保留左侧打手颜色竖条,中间改为大字「待完成 / 总数」,例如 1/2 = 还剩 1 单、共 2 单 - 大屏格子按此前约定保持原样 3) 客户停用 / 恢复 / 彻底删除 - customers 新增 archived 列(0/1);停用后默认从客户列表、日历、待办、大屏、到期提醒、徽标中隐藏,订阅与打卡记录原样保留 - 恢复后立即回到日历;列表右上角可切换「显示已停用」,已停用行带标记 - 彻底删除为二次确认操作,依赖外键级联清理订阅、打卡、暂停、追加记录与加急标记 - 停用/恢复/删除都会写入操作日志 4) 按钮收纳 - 任务行只露出「完成」,跳过 / 加急(取消加急)/ 追加收进「⋯」菜单;已完成行只露「撤销打卡」等,点空白处自动收起 - 加急、跳过等原有能力不变,仅入口折叠 5) 顶栏 - 在「今日到期」「3 天内到期」右侧新增「7 天内到期」徽标,固定统计未来 7 天 6) 视觉 - 移除管理端背景的横线装饰,改为纯底色;大屏网格背景保留 数据库兼容性: - 只新增 customers.archived 一列,老库启动时自动 ALTER,可重复迁移;原有表结构与接口不变 测试: - 新增单测 TestCustomerArchiveFilters:停用后日历/到期/徽标/搜索/列表全部过滤、恢复回日历、彻底删除级联清理订阅与打卡 - 功能验证 20 项(键盘、格子计数、折叠菜单、7 天徽标、时钟、停用/恢复/删除、背景)全部通过 - 原有 119 项验收回归全绿;go vet / go test ./... 通过;版本号 1.5.0
64 lines
2.4 KiB
HTML
64 lines
2.4 KiB
HTML
{{define "content"}}
|
||
<div class="page">
|
||
<header class="page-head">
|
||
<div>
|
||
<h1>客户</h1>
|
||
<p class="muted">共 {{.D.Total}} 位 · 输入手机尾号可快速定位</p>
|
||
</div>
|
||
<div class="page-actions">
|
||
{{if .D.ShowArchived}}
|
||
<a class="btn btn-ghost" href="/customers?q={{.D.Q}}">隐藏已停用</a>
|
||
{{else}}
|
||
<a class="btn btn-ghost" href="/customers?q={{.D.Q}}&archived=1">显示已停用{{if gt .D.ArchivedCount 0}} ({{.D.ArchivedCount}}){{end}}</a>
|
||
{{end}}
|
||
<a class="btn btn-primary" href="/customers/new">+ 新建客户</a>
|
||
</div>
|
||
</header>
|
||
|
||
<form class="filterbar" method="get" action="/customers">
|
||
<input type="search" name="q" value="{{.D.Q}}" placeholder="手机尾号 / 姓名 / 游戏名 / 联系方式" autocomplete="off">
|
||
<button class="btn" type="submit">搜索</button>
|
||
{{if .D.Q}}<a class="btn btn-ghost" href="/customers">清除</a>{{end}}
|
||
</form>
|
||
|
||
{{if .D.List}}
|
||
<div class="table-wrap">
|
||
<table class="table">
|
||
<thead>
|
||
<tr><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><a class="tail" href="/customers/{{.ID}}">{{.Tail}}</a></td>
|
||
<td>
|
||
<a class="name" href="/customers/{{.ID}}">{{.Name}}</a>{{if .Archived}} <span class="chip chip-closed">已停用</span>{{end}}
|
||
{{if .GameName}}<div class="muted small">{{.GameName}}{{if .GameServer}} · {{.GameServer}}{{end}}</div>{{end}}
|
||
</td>
|
||
<td class="muted small">{{if .Contact}}{{.Contact}}{{else}}—{{end}}</td>
|
||
<td>
|
||
<span class="summary due-{{.Level}}">{{.Summary}}</span>
|
||
</td>
|
||
<td>{{range .TagList}}<span class="tagchip">{{.}}</span>{{end}}</td>
|
||
<td class="right"><a class="btn btn-sm" href="/customers/{{.ID}}">详情</a></td>
|
||
</tr>
|
||
{{end}}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{{template "pager" .D.Pager}}
|
||
{{else}}
|
||
<div class="empty">
|
||
<div class="empty-mark">票</div>
|
||
{{if .D.Q}}
|
||
<p>没有匹配「{{.D.Q}}」的客户。</p>
|
||
<a class="btn" href="/customers">看全部客户</a>
|
||
{{else}}
|
||
<p>还没有客户。先建一位,再给他开套餐。</p>
|
||
<a class="btn btn-primary" href="/customers/new">+ 新建客户</a>
|
||
{{end}}
|
||
</div>
|
||
{{end}}
|
||
</div>
|
||
{{end}}
|