补全页加分页,每页 30 行

218 行在手机上堆成一屏一行有五万多像素长,分页后第 1 页只有八千多。

页码会夹紧:?page=999 停在最后一页而不是给空白页,解析不出来回第一页。
提交后留在同一页——处理完的行会从列表里消失,停在这儿才看得见剩下的。
翻页前若这一页有改过还没提交的下拉,先确认一次(预选的建议不算「改过」)。
This commit is contained in:
tamakyi
2026-09-19 18:25:16 +08:00
parent b311ba202b
commit 824c1e3b3d
3 changed files with 152 additions and 6 deletions
+34 -1
View File
@@ -16,7 +16,7 @@
{{if .Rows}}
<div class="card">
<h2>待补全({{num .Total}})</h2>
<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>补:一次把该地点名下所有没设活动的到访一起填上,不会只改一条。
@@ -25,7 +25,16 @@
右侧「高德参考」写的是高德在这个坐标上找到的 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>
@@ -80,6 +89,13 @@
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">
@@ -87,4 +103,21 @@
</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}}