218 行在手机上堆成一屏一行有五万多像素长,分页后第 1 页只有八千多。 页码会夹紧:?page=999 停在最后一页而不是给空白页,解析不出来回第一页。 提交后留在同一页——处理完的行会从列表里消失,停在这儿才看得见剩下的。 翻页前若这一页有改过还没提交的下拉,先确认一次(预选的建议不算「改过」)。
124 lines
6.0 KiB
HTML
124 lines
6.0 KiB
HTML
{{define "content"}}
|
||
<div class="wrap">
|
||
<div class="page-head">
|
||
<div>
|
||
<h1>地点补全</h1>
|
||
<div class="sub">
|
||
共 <strong>{{num .Total}}</strong> 个地点缺活动或类别,其中 <strong>{{num .WithHint}}</strong> 个能给出建议。
|
||
<strong>只填空</strong>——已经有活动或类别的一律不动。
|
||
</div>
|
||
</div>
|
||
<div class="row"><a class="btn" href="/admin">← 返回后台</a></div>
|
||
</div>
|
||
|
||
{{if .Flash}}<div class="alert ok">{{.Flash}}</div>{{end}}
|
||
{{if .Err}}<div class="alert err">{{.Err}}</div>{{end}}
|
||
|
||
{{if .Rows}}
|
||
<div class="card">
|
||
<h2>待补全({{num .Total}}){{if gt .PageCount 1}}<span class="muted" style="font-size:13px;font-weight:400"> 第 {{.PageNo}} / {{.PageCount}} 页</span>{{end}}</h2>
|
||
<div class="card-sub">
|
||
建议已经在下拉里<strong>选好</strong>了,不满意的改成别的、或选「(不动)」。
|
||
活动按<strong>地点</strong>补:一次把该地点名下所有没设活动的到访一起填上,不会只改一条。
|
||
填了现有列表之外的名字,会自动建成新的活动类型。
|
||
类别下拉里标着「真机用过」的是导出回 rond 时一定能认的;<br>
|
||
右侧「高德参考」写的是高德在这个坐标上找到的 POI 与类型,猜不出活动时拿它作判断。<br>
|
||
「用高德分析剩下的」每次处理 40 个、约 4 秒,结果会填进上面还没建议的行里,点多几次即可。
|
||
</div>
|
||
{{if gt .PageCount 1}}
|
||
<div class="pager">
|
||
{{if gt .PageNo 1}}<a href="{{.PageLink (sub .PageNo 1)}}">上一页</a>{{end}}
|
||
<span class="cur">第 {{.PageNo}} / {{.PageCount}} 页</span>
|
||
{{if lt .PageNo .PageCount}}<a href="{{.PageLink (add .PageNo 1)}}">下一页</a>{{end}}
|
||
</div>
|
||
<div class="card-sub" style="margin-bottom:10px">只提交<strong>本页</strong>的选择,翻页前先把这页提交掉。</div>
|
||
{{end}}
|
||
<form method="post" action="/admin/fillup/apply">
|
||
<input type="hidden" name="page" value="{{.PageNo}}">
|
||
<div class="tw">
|
||
<table class="tb tb-stack">
|
||
<thead>
|
||
<tr>
|
||
<th>地点</th><th>城市</th><th class="num">待设到访</th><th>缺什么</th>
|
||
<th>活动</th><th>类别</th><th>建议来源</th><th>高德参考</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{{range $row := .Rows}}
|
||
<tr>
|
||
<td>{{if $row.Name}}{{$row.Name}}{{else}}<span class="muted">(未命名)</span>{{end}}</td>
|
||
<td data-label="城市">{{if $row.City}}{{$row.City}}{{else}}<span class="muted">—</span>{{end}}</td>
|
||
<td class="num" data-label="待设到访">{{if $row.NoAct}}{{$row.NoAct}}{{else}}<span class="muted">—</span>{{end}}</td>
|
||
<td data-label="缺什么">{{$row.Missing}}</td>
|
||
<td data-label="活动">
|
||
{{if $row.NoAct}}
|
||
<select name="act_{{$row.PlaceID}}" class="fill-sel">
|
||
<option value=""{{if not $row.ActHint}} selected{{end}}>(不动)</option>
|
||
{{if $row.ActHint}}
|
||
<option value="{{$row.ActHint}}" selected>建议:{{$row.ActHint}}{{if not $row.ActID}}(新建){{end}}</option>
|
||
{{end}}
|
||
{{range $.Activities}}<option value="{{.Name}}">{{.Name}}</option>{{end}}
|
||
</select>
|
||
{{else}}<span class="muted">—</span>{{end}}
|
||
</td>
|
||
<td data-label="类别">
|
||
{{if $row.NoCat}}
|
||
{{$hint := $row.CatHint}}
|
||
<select name="cat_{{$row.PlaceID}}" class="fill-sel">
|
||
<option value=""{{if not $hint}} selected{{end}}>(不动)</option>
|
||
{{range $.Categories}}
|
||
<option value="{{.Value}}"{{if eq .Value $hint}} selected{{end}}>{{.Label}}</option>
|
||
{{end}}
|
||
</select>
|
||
{{else}}<span class="muted">—</span>{{end}}
|
||
</td>
|
||
<td data-label="建议来源">{{if $row.Source}}{{$row.Source}}{{else}}<span class="muted">—</span>{{end}}</td>
|
||
<td data-label="高德参考">
|
||
{{if $row.AmapType}}
|
||
<span style="font-size:12.5px">{{if $row.AmapPoi}}{{$row.AmapPoi}}<br>{{end}}<span class="muted">{{$row.AmapType}}</span></span>
|
||
{{else}}<span class="muted">—</span>{{end}}
|
||
</td>
|
||
</tr>
|
||
{{end}}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="row" style="margin-top:12px">
|
||
<button class="btn primary" type="submit">执行补全</button>
|
||
<button class="btn" type="submit" formaction="/admin/fillup/amap"
|
||
title="用高德按坐标搜一遍,给还没建议的地点补上参考">用高德分析剩下的</button>
|
||
</div>
|
||
</form>
|
||
{{if gt .PageCount 1}}
|
||
<div class="pager" style="margin-top:12px">
|
||
{{if gt .PageNo 1}}<a href="{{.PageLink (sub .PageNo 1)}}">上一页</a>{{end}}
|
||
<span class="cur">第 {{.PageNo}} / {{.PageCount}} 页</span>
|
||
{{if lt .PageNo .PageCount}}<a href="{{.PageLink (add .PageNo 1)}}">下一页</a>{{end}}
|
||
</div>
|
||
{{end}}
|
||
</div>
|
||
{{else}}
|
||
<div class="card">
|
||
<div class="alert ok">所有地点的活动和类别都齐了,没什么要补的。</div>
|
||
</div>
|
||
{{end}}
|
||
</div>
|
||
|
||
<script>
|
||
(function () {
|
||
// 选了东西还没提交就翻页,等于白填——拦一下(预选的那些建议不算「改过」)
|
||
var initial = {};
|
||
document.querySelectorAll('select.fill-sel').forEach(function (s) { initial[s.name] = s.value; });
|
||
document.querySelectorAll('.pager a').forEach(function (a) {
|
||
a.addEventListener('click', function (e) {
|
||
var dirty = false;
|
||
document.querySelectorAll('select.fill-sel').forEach(function (s) {
|
||
if (s.value !== initial[s.name]) dirty = true;
|
||
});
|
||
if (dirty && !confirm('这一页还有没提交的选择,翻页会丢掉。继续翻页?')) e.preventDefault();
|
||
});
|
||
});
|
||
})();
|
||
</script>
|
||
{{end}}
|