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
50 lines
2.8 KiB
HTML
50 lines
2.8 KiB
HTML
{{define "layout"}}<!doctype html>
|
|
<html lang="zh-CN"{{if .Theme}} data-theme="{{.Theme}}"{{end}}>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>{{.Title}} · 代打台</title>
|
|
<link rel="icon" href="/static/favicon.svg" type="image/svg+xml">
|
|
<link rel="stylesheet" href="/static/app.css">
|
|
</head>
|
|
<body>
|
|
{{if .User}}
|
|
<header class="topbar">
|
|
<a class="brand" href="/calendar"><span class="brand-mark">代</span><span class="brand-name">代打台</span></a>
|
|
<form class="search" action="/customers" method="get" role="search">
|
|
<input type="search" name="q" value="{{.Query}}" placeholder="手机尾号 / 姓名 / 游戏名" aria-label="搜索客户" autocomplete="off" data-search>
|
|
<kbd>/</kbd>
|
|
</form>
|
|
<nav class="nav">
|
|
<a href="/calendar" class="{{if eq .Nav "calendar"}}on{{end}}">日历</a>
|
|
<a href="/customers" class="{{if eq .Nav "customers"}}on{{end}}">客户</a>
|
|
<a href="/subscriptions" class="{{if eq .Nav "subscriptions"}}on{{end}}">订阅</a>
|
|
<a href="/packages" class="{{if eq .Nav "packages"}}on{{end}}">套餐</a>
|
|
<a href="/screen" target="_blank" rel="noopener" class="nav-screen">大屏 ↗</a>
|
|
</nav>
|
|
<div class="topbar-right">
|
|
<a class="pill pill-due" href="/subscriptions?state=due_today" title="今天到期的订阅">今日到期 <b>{{.DueToday}}</b></a>
|
|
<a class="pill pill-warn" href="/subscriptions?state=due3" title="3 天内到期">3 天内 <b>{{.Due3}}</b></a>
|
|
<a class="pill" href="/subscriptions?state=due7" title="7 天内到期">7 天内 <b>{{.Due7}}</b></a>
|
|
<button class="theme-toggle" type="button" data-theme-toggle aria-label="切换亮色/暗色" title="切换亮色/暗色">
|
|
<span class="ic-moon" aria-hidden="true">☾</span><span class="ic-sun" aria-hidden="true">☀</span>
|
|
</button>
|
|
<div class="me">
|
|
<a href="/settings">{{if .User.DisplayName}}{{.User.DisplayName}}{{else}}{{.User.Username}}{{end}}</a>
|
|
<form method="post" action="/logout"><button type="submit" class="link-btn">退出</button></form>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
{{else}}
|
|
<button class="theme-toggle auth-theme" type="button" data-theme-toggle aria-label="切换亮色/暗色" title="切换亮色/暗色">
|
|
<span class="ic-moon" aria-hidden="true">☾</span><span class="ic-sun" aria-hidden="true">☀</span>
|
|
</button>
|
|
{{end}}
|
|
{{if .Flash}}<div class="flash" data-flash>{{.Flash}}</div>{{end}}
|
|
{{if .Error}}<div class="flash flash-error">{{.Error}}</div>{{end}}
|
|
<main{{if .User}} class="with-top"{{end}}>{{template "content" .}}</main>
|
|
{{if .User}}<footer class="foot">代打台 v{{.Version}} · <a href="/logs">操作日志</a> · <a href="/settings">设置</a> · <a href="/screen" target="_blank" rel="noopener">大屏</a></footer>{{end}}
|
|
<script src="/static/app.js" defer></script>
|
|
</body>
|
|
</html>{{end}}
|