Files
cmautobuy/admin/templates/inner_code/list.html
T

157 lines
7.8 KiB
HTML
Raw Normal View History

{{define "inner_code/list"}}
{{template "header" .}}
<div class="toolbar inner-code-toolbar" data-inner-code-page>
<div class="inline">
<label for="inner-code-date">业务日期</label>
<input id="inner-code-date" type="date" value="{{.BusinessDate}}" data-inner-code-date>
</div>
<form class="inline" method="post" action="/inner-codes/import" enctype="multipart/form-data"
data-upload-form>
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
<button type="button" data-inner-code-file-open>选择 Excel</button>
<input id="inner-code-file" type="file" name="file" accept=".xlsx" required data-file-input hidden>
<span class="file-field" data-file-name>未选择文件</span>
<button type="submit" data-upload-submit>导入</button>
</form>
<form id="inner-code-filter" class="inline grow" method="get" action="/inner-codes">
<input type="hidden" name="date" value="{{.BusinessDate}}" data-inner-code-date-field>
<label for="inner-code-status">状态</label>
<select id="inner-code-status" name="status">
{{range .StatusOptions}}<option value="{{.Value}}" {{if eq .Value $.StatusFilter}}selected{{end}}>{{.Text}}</option>{{end}}
</select>
<label class="visually-hidden" for="inner-code-keyword">搜索订单号、档口、规格或入库码</label>
<input id="inner-code-keyword" class="inner-code-search" type="text" name="q" value="{{.Keyword}}"
placeholder="订单号 / 档口 / 规格 / 入库码">
<button type="submit">搜索</button>
<a class="button-link" href="/inner-codes?date={{.BusinessDate}}">清除</a>
</form>
<form id="inner-code-match-form" method="post" action="/inner-codes/match" hidden>
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
<input type="hidden" name="date" value="{{.BusinessDate}}" data-inner-code-date-field>
<input type="hidden" name="status" value="{{.StatusFilter}}">
<input type="hidden" name="q" value="{{.Keyword}}">
<input type="hidden" name="page" value="{{.CurrentPage}}">
</form>
<button type="submit" class="primary" form="inner-code-match-form"
data-need-checked="inner-code-match" disabled>匹配已选 <span data-inner-code-match-count>0</span> 条</button>
<form id="inner-code-apply-form" method="post" action="/inner-codes/apply" hidden>
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
<input type="hidden" name="date" value="{{.BusinessDate}}" data-inner-code-date-field>
<input type="hidden" name="status" value="{{.StatusFilter}}">
<input type="hidden" name="q" value="{{.Keyword}}">
<input type="hidden" name="page" value="{{.CurrentPage}}">
</form>
<button type="button" data-modal-open="inner-code-apply-modal" data-need-checked="inner-code-apply"
data-inner-code-apply-open disabled>回写已选 <span data-inner-code-selected-count>0</span> 条</button>
<form id="inner-code-delete-form" method="post" action="/inner-codes/delete" hidden
data-confirm-delete="将删除 {n} 条档口入库码记录。删除不会撤销顺运宝已写入的快递单号,也不会取消正在回写的请求;重新导入相同数据可以恢复。"
data-confirm-delete-action="inner-code-delete">
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
<input type="hidden" name="date" value="{{.BusinessDate}}" data-inner-code-date-field>
<input type="hidden" name="status" value="{{.StatusFilter}}">
<input type="hidden" name="q" value="{{.Keyword}}">
<input type="hidden" name="page" value="{{.CurrentPage}}">
</form>
<button type="submit" class="danger" form="inner-code-delete-form"
data-need-checked="inner-code-delete" disabled>删除已选 <span data-inner-code-delete-count>0</span> 条</button>
</div>
{{if .Message}}<p class="notice inner-code-notice" role="status" aria-live="polite">{{.Message}}</p>{{end}}
<div class="table-wrap inner-code-table-wrap" role="region" aria-label="档口入库码记录列表" tabindex="0">
<table class="inner-code-table">
<thead>
<tr>
<th class="col-check"><input type="checkbox" data-check-all aria-label="全选当前页记录"></th>
<th>业务日期</th>
<th>订单号</th>
<th>档口及货号</th>
<th>Excel 颜色尺码</th>
<th>顺运宝规格</th>
<th>档口入库码</th>
<th>远端原值</th>
<th>状态</th>
<th>结果 / 原因</th>
<th>更新时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{{range .Rows}}
<tr {{if or (eq .Status "failed") (eq .Status "needs_check")}}class="row-warn"{{end}}>
<td class="col-check">
<input type="checkbox" value="{{.ID}}" data-inner-code-id="{{.ID}}"
data-select-action="inner-code-delete {{if .CanMatch}}inner-code-match{{end}}{{if .CanApply}} inner-code-apply{{end}}"
data-inner-code-old-value="{{if .HasRemoteOldCode}}1{{else}}0{{end}}"
aria-label="选择订单 {{.OrderNumber}}">
</td>
<td>{{.BusinessDate}}</td>
<td>{{.OrderNumber}}</td>
<td class="truncate" title="{{.Stall}}">{{.Stall}}</td>
<td class="truncate" title="{{.SpecRaw}}">{{.SpecRaw}}</td>
<td class="truncate" title="{{.SybSpec}}">{{.SybSpec}}</td>
<td>{{.InnerCode}}</td>
<td>{{.RemoteInnerCode}}</td>
<td><span class="status-pill {{.StatusClass}}">{{.StatusText}}</span></td>
<td class="inner-code-message"><span class="truncate" title="{{.ResultMessage}}">{{.ResultMessage}}</span></td>
<td>{{.UpdatedAt}}</td>
<td>
{{if .CanRecheck}}
<form method="post" action="/inner-codes/recheck">
<input type="hidden" name="csrf_token" value="{{$.CSRFToken}}">
<input type="hidden" name="id" value="{{.ID}}">
<input type="hidden" name="date" value="{{$.BusinessDate}}">
<input type="hidden" name="status" value="{{$.StatusFilter}}">
<input type="hidden" name="q" value="{{$.Keyword}}">
<input type="hidden" name="page" value="{{$.CurrentPage}}">
<button type="submit" class="link-button">重新核对</button>
</form>
{{else}}—{{end}}
</td>
</tr>
{{else}}
<tr class="empty"><td colspan="12">
{{if .IsFiltered}}
当前筛选条件下没有记录。<br><small>请清除状态或关键词后再试。</small>
{{else if .HasAny}}
当前业务日期没有记录。<br><small>请选择其他日期,或导入这个日期的 Excel。</small>
{{else}}
还没有档口入库码记录。<br><small>选择业务日期并导入线下 Excel 后开始匹配。</small>
{{end}}
</td></tr>
{{end}}
</tbody>
</table>
</div>
<div class="modal-backdrop" id="inner-code-apply-modal" hidden>
<section class="modal modal-narrow" role="dialog" aria-modal="true" aria-labelledby="inner-code-apply-title">
<div class="modal-head">
<h2 id="inner-code-apply-title">确认回写档口入库码</h2>
<button type="button" class="modal-x" data-modal-close aria-label="关闭">×</button>
</div>
<div class="modal-body">
<p class="confirm-box">将回写 <strong data-inner-code-confirm-count>0</strong> 条记录,其中
<strong data-inner-code-replace-count>0</strong> 条有旧快递单号,需要先删除旧值再写入。</p>
<ul>
<li>每条写入前会重新读取顺运宝详情并核验商品。</li>
<li>写入后会再次读取;只有远端值一致才标记“已回写”。</li>
<li class="missing">超时或结果不确定时只标记“需核对”,不会自动重复写入。</li>
</ul>
</div>
<div class="modal-foot">
<button type="button" data-modal-close>取消</button>
<button type="submit" class="primary" form="inner-code-apply-form">确认回写</button>
</div>
</section>
</div>
{{template "footer" .}}
{{end}}