feat(v1.2): 亮暗主题、按尾号快速完成、加急置顶、按套餐分日历、大屏升级
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
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{{define "layout"}}<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<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">
|
||||
@@ -25,12 +25,19 @@
|
||||
<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>
|
||||
<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}}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{{define "screenlayout"}}<!doctype html>
|
||||
<html lang="zh-CN">
|
||||
<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">
|
||||
|
||||
@@ -2,19 +2,31 @@
|
||||
<div class="cal-page">
|
||||
<header class="cal-head">
|
||||
<div class="cal-title">
|
||||
<a class="btn btn-ghost btn-square" href="/calendar?y={{.D.PrevY}}&m={{.D.PrevM}}" aria-label="上个月">‹</a>
|
||||
<a class="btn btn-ghost btn-square" href="/calendar?y={{.D.PrevY}}&m={{.D.PrevM}}&pkg={{.D.PkgID}}" aria-label="上个月">‹</a>
|
||||
<h1>{{.D.Title}}</h1>
|
||||
<a class="btn btn-ghost btn-square" href="/calendar?y={{.D.NextY}}&m={{.D.NextM}}" aria-label="下个月">›</a>
|
||||
<a class="btn btn-sm" href="/calendar">回到今天</a>
|
||||
<a class="btn btn-ghost btn-square" href="/calendar?y={{.D.NextY}}&m={{.D.NextM}}&pkg={{.D.PkgID}}" aria-label="下个月">›</a>
|
||||
<a class="btn btn-sm" href="/calendar?pkg={{.D.PkgID}}">回到今天</a>
|
||||
</div>
|
||||
<div class="cal-stats">
|
||||
<span><em>{{.D.MonthDue}}</em>本月到期</span>
|
||||
<span><em>{{.D.MonthTasks}}</em>本月待打</span>
|
||||
<span><em>{{.D.MonthDone}}</em>已完成</span>
|
||||
{{if gt .D.MonthUrgent 0}}<span class="text-urgent"><em>{{.D.MonthUrgent}}</em>加急</span>{{end}}
|
||||
<a class="btn btn-primary btn-sm" href="/customers/new">+ 新建客户</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{if .D.HasTabs}}
|
||||
<nav class="pkg-tabs">
|
||||
{{range .D.Tabs}}
|
||||
<a class="{{if eq .ID $.D.PkgID}}on{{end}}" style="--tab:{{.Color}}"
|
||||
href="/calendar?y={{$.D.Year}}&m={{$.D.Month}}&d={{$.D.Selected}}&pkg={{.ID}}">
|
||||
<i></i>{{.Name}}{{if gt .Count 0}}<em>{{.Count}}</em>{{end}}
|
||||
</a>
|
||||
{{end}}
|
||||
</nav>
|
||||
{{end}}
|
||||
|
||||
{{if .D.NoPackages}}
|
||||
<div class="notice">还没有服务套餐,先去 <a href="/packages/new">新建套餐</a>,再给客户开通。</div>
|
||||
{{else if .D.NoCustomers}}
|
||||
@@ -30,17 +42,20 @@
|
||||
<div class="cal-week" role="row">
|
||||
{{range .}}
|
||||
<a class="cal-cell heat-{{.Heat}}{{if not .InMonth}} out{{end}}{{if .IsToday}} today{{end}}{{if .IsSelected}} sel{{end}}{{if .IsWeekend}} weekend{{end}}{{if .DueCount}} has-due{{end}}"
|
||||
href="/calendar?y={{$.D.Year}}&m={{$.D.Month}}&d={{.Date}}" role="gridcell">
|
||||
href="/calendar?y={{$.D.Year}}&m={{$.D.Month}}&d={{.Date}}&pkg={{$.D.PkgID}}" role="gridcell">
|
||||
<div class="cell-top">
|
||||
<span class="dnum">{{.Day}}</span>
|
||||
{{if .DueCount}}<span class="due-badge"><em>到期</em>{{.DueCount}}</span>{{end}}
|
||||
<span class="cell-badges">
|
||||
{{if gt .UrgentCnt 0}}<span class="urgent-dot" title="{{.UrgentCnt}} 项加急"></span>{{end}}
|
||||
{{if .DueCount}}<span class="due-badge"><em>到期</em>{{.DueCount}}</span>{{end}}
|
||||
</span>
|
||||
</div>
|
||||
{{if .TaskCount}}
|
||||
<div class="cell-load">{{.DoneCount}}/{{.TaskCount}} 单</div>
|
||||
{{end}}
|
||||
<div class="cell-tickets">
|
||||
{{range .Tickets}}
|
||||
<span class="ticket{{if .Done}} done{{end}}{{if .Skipped}} skipped{{end}}" style="--tag:{{.Color}}"><b>{{.Tail}}</b><span class="tk-name">{{.Name}}</span><i>{{.Pkg}}</i></span>
|
||||
<span class="ticket{{if .Done}} done{{end}}{{if .Skipped}} skipped{{end}}{{if .Urgent}} urgent{{end}}" style="--tag:{{.Color}}"><b>{{.Tail}}</b><span class="tk-name">{{.Name}}</span><i>{{.Pkg}}</i></span>
|
||||
{{end}}
|
||||
{{if gt .More 0}}<span class="ticket more">+{{.More}}</span>{{end}}
|
||||
</div>
|
||||
@@ -56,38 +71,65 @@
|
||||
<div class="drawer-tags">
|
||||
{{if .D.SelectedIsToday}}<span class="chip chip-active">今天</span>{{end}}
|
||||
{{if .D.SelectedIsPast}}<span class="chip chip-closed">已过去</span>{{end}}
|
||||
<span class="chip chip-plain">{{len .D.Tasks}} 待打</span>
|
||||
<span class="chip chip-plain">{{.D.TaskPending}} 待完成</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section class="drawer-block">
|
||||
<h3>这天到期 <em>{{len .D.Due}}</em></h3>
|
||||
{{if .D.Due}}
|
||||
<ul class="due-list">
|
||||
{{range .D.Due}}
|
||||
<li>
|
||||
<a class="due-main" href="/customers/{{.CustomerID}}">
|
||||
<span class="ticket" style="--tag:{{.PackageColor}}"><b>{{.CustomerTail}}</b>{{.CustomerName}}</span>
|
||||
<span class="pkg">{{.PackageName}}</span>
|
||||
<span class="rem">{{.RemainShort}}</span>
|
||||
</a>
|
||||
<a class="btn btn-sm" href="/calendar?y={{$.D.Year}}&m={{$.D.Month}}&d={{$.D.Selected}}&extend={{.ID}}#extend">追加</a>
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
{{else}}<p class="muted">没有到期订阅。</p>{{end}}
|
||||
</section>
|
||||
<h3>当日待完成 <em>{{.D.TaskPending}}</em><span class="muted small">/ {{len .D.Tasks}} 单</span></h3>
|
||||
<form class="quick-form" method="post" action="/checkins/quick">
|
||||
<input type="hidden" name="date" value="{{.D.Selected}}">
|
||||
<input type="hidden" name="pkg" value="{{.D.PkgID}}">
|
||||
<input type="hidden" name="back" value="{{.D.Back}}">
|
||||
<input type="text" name="tail" placeholder="输入手机尾号,回车即可完成" maxlength="8" autocomplete="off" inputmode="numeric" aria-label="手机尾号快速完成">
|
||||
<button class="btn btn-sm btn-primary" type="submit">完成</button>
|
||||
</form>
|
||||
<p class="muted small quick-hint">唯一匹配直接完成;同尾号多人 / 一单多服务会列出让你勾选。</p>
|
||||
|
||||
{{if .D.PickTail}}
|
||||
<section class="picker">
|
||||
<header class="picker-head">
|
||||
<h4>尾号 {{.D.PickTail}} 的待完成项</h4>
|
||||
<a class="btn btn-sm btn-ghost" href="{{.D.Back}}">收起</a>
|
||||
</header>
|
||||
{{if .D.PickRows}}
|
||||
<form method="post" action="/checkins/batch">
|
||||
<input type="hidden" name="date" value="{{.D.Selected}}">
|
||||
<input type="hidden" name="back" value="{{.D.Back}}">
|
||||
<ul class="pick-list">
|
||||
{{range .D.PickRows}}
|
||||
<li>
|
||||
<label>
|
||||
<input type="checkbox" name="sub_ids" value="{{.ID}}"{{if not .Done}}{{if not .Skipped}} checked{{end}}{{end}}>
|
||||
<span class="ticket" style="--tag:{{.PackageColor}}"><b>{{.CustomerTail}}</b>{{.CustomerName}}</span>
|
||||
<span class="pick-pkg">{{.PackageName}}</span>
|
||||
<span class="pick-remain">{{.RemainShort}}</span>
|
||||
{{if .Done}}<span class="chip chip-active">已完成</span>{{end}}
|
||||
{{if .Skipped}}<span class="chip chip-paused">已跳过</span>{{end}}
|
||||
</label>
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
<div class="actions">
|
||||
<button class="btn btn-primary btn-sm" type="submit">确认完成选中项</button>
|
||||
<a class="btn btn-sm" href="{{.D.Back}}">取消</a>
|
||||
</div>
|
||||
</form>
|
||||
{{else}}
|
||||
<p class="muted">{{.D.PickMsg}}</p>
|
||||
{{end}}
|
||||
</section>
|
||||
{{end}}
|
||||
|
||||
<section class="drawer-block">
|
||||
<h3>当日待打 <em>{{len .D.Tasks}}</em></h3>
|
||||
{{if .D.Tasks}}
|
||||
<ul class="task-list">
|
||||
{{range .D.Tasks}}
|
||||
<li class="task{{if .Done}} done{{end}}{{if .Skipped}} skipped{{end}}">
|
||||
<li class="task{{if .Done}} done{{end}}{{if .Skipped}} skipped{{end}}{{if .Urgent}} urgent{{end}}">
|
||||
<div class="task-main">
|
||||
<a class="task-title" href="/customers/{{.CustomerID}}">
|
||||
<span class="ticket" style="--tag:{{.PackageColor}}"><b>{{.CustomerTail}}</b>{{.CustomerName}}</span>
|
||||
<span class="pkg">{{.PackageName}}</span>
|
||||
{{if .Urgent}}<span class="tag-urgent">加急</span>{{end}}
|
||||
</a>
|
||||
<div class="task-meta">
|
||||
<span>{{.RemainText}}</span>
|
||||
@@ -116,7 +158,14 @@
|
||||
<button class="btn btn-sm btn-ghost">跳过</button>
|
||||
</form>
|
||||
{{end}}
|
||||
<a class="btn btn-sm" href="/calendar?y={{$.D.Year}}&m={{$.D.Month}}&d={{$.D.Selected}}&extend={{.ID}}#extend">追加</a>
|
||||
<form method="post" action="/tasks/urgent">
|
||||
<input type="hidden" name="sub_id" value="{{.ID}}">
|
||||
<input type="hidden" name="date" value="{{$.D.Selected}}">
|
||||
<input type="hidden" name="urgent" value="{{if .Urgent}}0{{else}}1{{end}}">
|
||||
<input type="hidden" name="back" value="{{$.D.Back}}">
|
||||
<button class="btn btn-sm {{if .Urgent}}btn-urgent{{else}}btn-ghost{{end}}">{{if .Urgent}}取消加急{{else}}加急{{end}}</button>
|
||||
</form>
|
||||
<a class="btn btn-sm" href="/calendar?y={{$.D.Year}}&m={{$.D.Month}}&d={{$.D.Selected}}&pkg={{$.D.PkgID}}&extend={{.ID}}#extend">追加</a>
|
||||
</div>
|
||||
</li>
|
||||
{{end}}
|
||||
@@ -126,6 +175,24 @@
|
||||
|
||||
{{if .D.Extend}}{{template "extend-panel" .D.Extend}}{{end}}
|
||||
|
||||
<section class="drawer-block">
|
||||
<h3>这天到期 <em>{{len .D.Due}}</em></h3>
|
||||
{{if .D.Due}}
|
||||
<ul class="due-list">
|
||||
{{range .D.Due}}
|
||||
<li>
|
||||
<a class="due-main" href="/customers/{{.CustomerID}}">
|
||||
<span class="ticket" style="--tag:{{.PackageColor}}"><b>{{.CustomerTail}}</b>{{.CustomerName}}</span>
|
||||
<span class="pkg">{{.PackageName}}</span>
|
||||
<span class="rem">{{.RemainShort}}</span>
|
||||
</a>
|
||||
<a class="btn btn-sm" href="/calendar?y={{$.D.Year}}&m={{$.D.Month}}&d={{$.D.Selected}}&pkg={{$.D.PkgID}}&extend={{.ID}}#extend">追加</a>
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
{{else}}<p class="muted">没有到期订阅。</p>{{end}}
|
||||
</section>
|
||||
|
||||
<section class="drawer-block">
|
||||
<h3>近 7 天到期</h3>
|
||||
{{if .D.OtherDue}}
|
||||
|
||||
@@ -44,6 +44,11 @@
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<label class="check-line">
|
||||
<input type="checkbox" name="calendar_separate" value="1"{{if .D.Package.CalendarSeparate}} checked{{end}}>
|
||||
<span>在日历中独立显示<small>勾选后工作台和大屏的日历会为该套餐单独开一个标签页,便于把“每日任务”和其他委托分开看</small></span>
|
||||
</label>
|
||||
|
||||
<label class="field"><span>说明</span>
|
||||
<textarea name="note" rows="2" maxlength="200" placeholder="套餐包含什么、怎么个打法">{{.D.Package.Note}}</textarea>
|
||||
</label>
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<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>
|
||||
|
||||
@@ -1,7 +1,27 @@
|
||||
{{define "content"}}
|
||||
<div class="scr">
|
||||
<div class="scr" data-pkg="{{.D.PkgID}}" data-heat="{{.D.HeatMode}}" data-api="/api/screen/day">
|
||||
<header class="scr-head">
|
||||
<div class="scr-brand"><span class="mark">代</span>代打台<em>控制台</em></div>
|
||||
|
||||
{{if .D.HasTabs}}
|
||||
<nav class="scr-tabs">
|
||||
{{range .D.Tabs}}
|
||||
<a class="{{if eq .ID $.D.PkgID}}on{{end}}" style="--tab:{{.Color}}"
|
||||
href="/screen?pkg={{.ID}}&heat={{$.D.HeatMode}}">{{.Name}}</a>
|
||||
{{end}}
|
||||
</nav>
|
||||
{{end}}
|
||||
|
||||
<div class="scr-tools">
|
||||
<a class="scr-switch" href="/screen?pkg={{.D.PkgID}}&heat={{if eq .D.HeatMode "due"}}task{{else}}due{{end}}"
|
||||
title="切换热力统计口径">
|
||||
{{if eq .D.HeatMode "due"}}热力:到期{{else}}热力:待完成{{end}} ⇄
|
||||
</a>
|
||||
<button class="scr-theme" type="button" data-theme-toggle aria-label="切换亮色/暗色">
|
||||
<span class="ic-moon">☾</span><span class="ic-sun">☀</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="scr-clock"><b data-clock>--:--:--</b><span data-date></span></div>
|
||||
<div class="scr-links">每 {{.D.Refresh}} 秒刷新 · <a href="/calendar">进入工作台</a></div>
|
||||
</header>
|
||||
@@ -24,24 +44,28 @@
|
||||
<section class="scr-main">
|
||||
<div class="panel panel-cal">
|
||||
<div class="panel-head">
|
||||
<h2>到期热力</h2>
|
||||
<span>{{.D.MonthTitle}} · 本月 {{.D.Stats.MonthDue}} 条到期</span>
|
||||
<h2>{{if eq .D.HeatMode "due"}}到期热力{{else}}每日待完成{{end}}</h2>
|
||||
<span>{{.D.MonthTitle}} · 本月合计 {{.D.HeatTotal}} 单</span>
|
||||
</div>
|
||||
<div class="heat-grid">
|
||||
<div class="heat-dow">{{range .D.Weekdays}}<span>{{.}}</span>{{end}}</div>
|
||||
{{range .D.Weeks}}
|
||||
<div class="heat-row">
|
||||
{{range .}}
|
||||
<div class="heat-cell h{{.Heat}}{{if not .InMonth}} out{{end}}{{if .IsToday}} today{{end}}">
|
||||
<div class="heat-cell h{{.Heat}}{{if not .InMonth}} out{{end}}{{if .IsToday}} today{{end}}{{if .IsPast}} past{{end}}"
|
||||
data-date="{{.Date}}" title="{{.Date}}">
|
||||
<span>{{.Day}}</span>
|
||||
{{if .Due}}<b>{{.Due}}</b>{{end}}
|
||||
{{if gt .Urgent 0}}<u class="cell-urgent"></u>{{end}}
|
||||
{{if .Count}}<b>{{.Count}}</b>{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="heat-legend">
|
||||
<span>到期数</span><i class="h0"></i><i class="h1"></i><i class="h2"></i><i class="h3"></i><i class="h4"></i>
|
||||
<span>{{if eq .D.HeatMode "due"}}到期数{{else}}待完成单量{{end}}</span>
|
||||
<i class="h0"></i><i class="h1"></i><i class="h2"></i><i class="h3"></i><i class="h4"></i>
|
||||
<em class="legend-hint">悬停格子看当日明细</em>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -69,12 +93,12 @@
|
||||
<section class="scr-bottom">
|
||||
<div class="panel">
|
||||
<div class="panel-head">
|
||||
<h2>今日待打</h2>
|
||||
<span>{{.D.TodayDone}} / {{.D.TodayTasks}} 已完成</span>
|
||||
<h2>今日到期</h2>
|
||||
<span>{{len .D.DueToday}} 条</span>
|
||||
</div>
|
||||
{{if .D.TodayList}}
|
||||
{{if .D.DueToday}}
|
||||
<ul class="today-list">
|
||||
{{range .D.TodayList}}
|
||||
{{range .D.DueToday}}
|
||||
<li class="lv-{{.Eval.Level}}">
|
||||
<span class="tchip" style="--tag:{{.PackageColor}}"><b>{{.CustomerTail}}</b>{{.CustomerName}}</span>
|
||||
<span class="pkg">{{.PackageName}}</span>
|
||||
@@ -83,31 +107,50 @@
|
||||
{{end}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<p class="scr-empty">今天没有待打任务</p>
|
||||
<p class="scr-empty">今天没有到期</p>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
<div class="panel">
|
||||
<div class="panel-head"><h2>最近追加</h2><span>服务时长变更流水</span></div>
|
||||
{{if .D.Recent}}
|
||||
<ul class="recent-list">
|
||||
{{range .D.Recent}}
|
||||
<li>
|
||||
<span class="time mono">{{.CreatedAt}}</span>
|
||||
<span class="who"><b>{{.CustomerTail}}</b>{{.CustomerName}}</span>
|
||||
<div class="panel-head">
|
||||
<h2>今日待打</h2>
|
||||
<span>{{.D.TodayDone}} / {{.D.TodayTasks}} 已完成{{if gt .D.TodayUrgent 0}} · 加急 {{.D.TodayUrgent}}{{end}}</span>
|
||||
</div>
|
||||
{{if .D.TodayList}}
|
||||
<ul class="today-list">
|
||||
{{range .D.TodayList}}
|
||||
<li class="{{if .Urgent}}urgent{{end}} lv-{{.Eval.Level}}">
|
||||
<span class="tchip" style="--tag:{{.PackageColor}}"><b>{{.CustomerTail}}</b>{{.CustomerName}}</span>
|
||||
<span class="pkg">{{.PackageName}}</span>
|
||||
{{if gt .DaysAdded 0}}<em class="plus">+{{.DaysAdded}} 天</em>{{end}}
|
||||
{{if gt .CountAdded 0}}<em class="plus">+{{.CountAdded}} 次</em>{{end}}
|
||||
<span class="op">{{.OperatorName}}</span>
|
||||
{{if .Urgent}}<span class="tag-urgent">加急</span>{{end}}
|
||||
<span class="rem">{{.RemainShort}}</span>
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
{{else}}
|
||||
<p class="scr-empty">还没有追加记录</p>
|
||||
<p class="scr-empty">今天没有待打任务</p>
|
||||
{{end}}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<footer class="scr-foot">代打台 v{{.D.Version}} · 数据每 {{.D.Refresh}} 秒自动刷新 · 按 F 进入全屏</footer>
|
||||
<section class="scr-recent">
|
||||
<span class="recent-label">最近追加</span>
|
||||
{{if .D.Recent}}
|
||||
<div class="recent-track">
|
||||
{{range .D.Recent}}
|
||||
<span class="recent-item"><b>{{.CustomerTail}}</b>{{.CustomerName}} · {{.PackageName}}
|
||||
{{if gt .DaysAdded 0}}<em>+{{.DaysAdded}} 天</em>{{end}}
|
||||
{{if gt .CountAdded 0}}<em>+{{.CountAdded}} 次</em>{{end}}
|
||||
</span>
|
||||
{{end}}
|
||||
</div>
|
||||
{{else}}
|
||||
<span class="scr-empty-inline">还没有追加记录</span>
|
||||
{{end}}
|
||||
</section>
|
||||
|
||||
<footer class="scr-foot">代打台 v{{.D.Version}} · 数据每 {{.D.Refresh}} 秒自动刷新 · 按 F 全屏</footer>
|
||||
|
||||
<div class="day-pop" id="day-pop" hidden></div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
Reference in New Issue
Block a user