feat: 统一顺运宝日期同步并记录历史 (#59)
This commit is contained in:
@@ -2,13 +2,19 @@
|
||||
{{template "header" .}}
|
||||
|
||||
<div class="toolbar">
|
||||
<form class="inline" method="post" action="/syb/sync">
|
||||
<form class="inline sync-range-form" method="post" action="/syb/sync">
|
||||
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
|
||||
<input type="hidden" name="order_no" value="{{.Keyword}}">
|
||||
<label for="sync-date-from">开始日期</label>
|
||||
<input id="sync-date-from" type="date" name="date_from"
|
||||
value="{{.SyncDateFrom}}" max="{{.Today}}" required>
|
||||
<label for="sync-date-to">结束日期</label>
|
||||
<input id="sync-date-to" type="date" name="date_to"
|
||||
value="{{.SyncDateTo}}" max="{{.Today}}" required>
|
||||
<button type="submit" class="primary">同步</button>
|
||||
</form>
|
||||
|
||||
<button type="button" data-modal-open="sync-range-modal">指定日期同步</button>
|
||||
<button type="button" data-modal-open="sync-history-modal">同步记录</button>
|
||||
|
||||
<form class="inline" method="post" action="/syb/create-task">
|
||||
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
|
||||
@@ -30,44 +36,65 @@
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{{/* 指定日期只用于补拉历史数据。日常增量仍走工具栏第一个“同步”按钮,
|
||||
避免操作员忘记清掉旧日期、下一次又误跑同一段历史数据。 */}}
|
||||
<div class="modal-backdrop" id="sync-range-modal" {{if not .NeedRangeSync}}hidden{{end}}>
|
||||
<div class="modal modal-narrow" role="dialog" aria-modal="true"
|
||||
aria-labelledby="sync-range-modal-title">
|
||||
{{if .RangeError}}<p class="missing sync-range-message" role="alert">{{.RangeError}}</p>{{end}}
|
||||
{{if .RangeWarning}}<p class="hint sync-range-message">{{.RangeWarning}}</p>{{end}}
|
||||
<p class="hint sync-range-message">
|
||||
按顺运宝货运单创建日期(UTC+8)同步,开始日和结束日都包含,每次最多 31 天。
|
||||
</p>
|
||||
|
||||
<div class="modal-backdrop" id="sync-history-modal" {{if not .NeedSyncHistory}}hidden{{end}}>
|
||||
<div class="modal modal-wide" role="dialog" aria-modal="true"
|
||||
aria-labelledby="sync-history-modal-title">
|
||||
<div class="modal-head">
|
||||
<h2 id="sync-range-modal-title">指定日期同步</h2>
|
||||
<h2 id="sync-history-modal-title">同步记录</h2>
|
||||
<button type="button" class="modal-x" data-modal-close aria-label="关闭">×</button>
|
||||
</div>
|
||||
<form method="post" action="/syb/sync">
|
||||
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
|
||||
<input type="hidden" name="order_no" value="{{.Keyword}}">
|
||||
<div class="modal-body">
|
||||
{{if .RangeError}}
|
||||
<p class="missing" role="alert">{{.RangeError}}</p>
|
||||
{{end}}
|
||||
<div class="field-row">
|
||||
<div class="field">
|
||||
<label for="sync-date-from">开始日期</label>
|
||||
<input id="sync-date-from" type="date" name="date_from"
|
||||
value="{{.SyncDateFrom}}" max="{{.Today}}" required autofocus>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label for="sync-date-to">结束日期</label>
|
||||
<input id="sync-date-to" type="date" name="date_to"
|
||||
value="{{.SyncDateTo}}" max="{{.Today}}" required>
|
||||
</div>
|
||||
</div>
|
||||
<p class="hint">
|
||||
按顺运宝货运单创建日期(UTC+8)同步,开始日和结束日都包含。
|
||||
每次最多选择 31 天;日常同步请直接使用工具栏的“同步”。
|
||||
</p>
|
||||
<div class="modal-body">
|
||||
<p class="hint">共 {{.SyncHistory.Total}} 条,按发起时间从新到旧排列。</p>
|
||||
<div class="table-wrap sync-history-table">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>状态</th><th>日期范围</th><th>操作账号</th><th>开始时间</th>
|
||||
<th>完成时间</th><th>同步结果</th><th>覆盖进度</th><th>失败原因</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{range .SyncHistory.Rows}}
|
||||
<tr>
|
||||
<td><span class="sync-status {{.StatusClass}}">{{.StatusText}}</span></td>
|
||||
<td>{{.DateRange}}</td>
|
||||
<td>{{.Username}}</td>
|
||||
<td>{{.StartedAt}}</td>
|
||||
<td>{{.FinishedAt}}</td>
|
||||
<td>{{.Summary}}</td>
|
||||
<td>{{.CursorText}}</td>
|
||||
<td class="sync-error">{{if .ErrorMessage}}{{.ErrorMessage}}{{else}}—{{end}}</td>
|
||||
</tr>
|
||||
{{else}}
|
||||
<tr class="empty"><td colspan="8">还没有同步记录。</td></tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="modal-foot">
|
||||
<button type="button" data-modal-close>取消</button>
|
||||
<button type="submit" class="primary">开始同步</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-foot sync-history-foot">
|
||||
<span>第 {{.SyncHistory.Page}} / {{.SyncHistory.TotalPages}} 页</span>
|
||||
<span class="grow"></span>
|
||||
{{if .HistoryPagination.HasPrev}}
|
||||
<a class="button-link" href="{{.HistoryPagination.FirstURL}}">首页</a>
|
||||
<a class="button-link" href="{{.HistoryPagination.PrevURL}}">上一页</a>
|
||||
{{else}}
|
||||
<span class="button-link disabled">首页</span><span class="button-link disabled">上一页</span>
|
||||
{{end}}
|
||||
{{if .HistoryPagination.HasNext}}
|
||||
<a class="button-link" href="{{.HistoryPagination.NextURL}}">下一页</a>
|
||||
<a class="button-link" href="{{.HistoryPagination.LastURL}}">末页</a>
|
||||
{{else}}
|
||||
<span class="button-link disabled">下一页</span><span class="button-link disabled">末页</span>
|
||||
{{end}}
|
||||
<button type="button" data-modal-close>关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -161,11 +188,9 @@
|
||||
<form method="post" action="/syb/login-and-sync">
|
||||
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
|
||||
<input type="hidden" name="order_no" value="{{.Keyword}}">
|
||||
{{/* 指定日期同步遇到登录时必须把范围带过来;为空就是普通增量同步。 */}}
|
||||
{{if .HasSyncRange}}
|
||||
{{/* 登录和 OCR 降级后必须把工具栏里已确认的日期范围原样带回来。 */}}
|
||||
<input type="hidden" name="date_from" value="{{.SyncDateFrom}}">
|
||||
<input type="hidden" name="date_to" value="{{.SyncDateTo}}">
|
||||
{{end}}
|
||||
<div class="modal-body">
|
||||
{{/* `[必须]` 工单 #47:自动识别验证码失败/降级时要说明原因
|
||||
(已尝试 N 次 / 服务不可用),操作员才知道是配置错了还是
|
||||
|
||||
Reference in New Issue
Block a user