feat: 统一列表搜索清除入口 (#248)

This commit is contained in:
chengma
2026-08-15 17:47:45 +08:00
parent e55e2b59ca
commit 9f354198c7
7 changed files with 65 additions and 4 deletions
+51
View File
@@ -0,0 +1,51 @@
package main
import (
"os"
"strings"
"testing"
)
func TestListFilterTemplates_清除入口紧邻搜索且只保留必要参数(t *testing.T) {
tests := []struct {
name string
path string
clearURL string
}{
{
name: "蝦皮数据保留独立查看范围",
path: "templates/shopee/list.html",
clearURL: `/shopee?{{if .DeletedFilter}}deleted=1&{{end}}{{if .UnlinkedFilter}}unlinked=1&{{end}}page_size={{.CurrentPageSize}}`,
},
{name: "PDD 商品", path: "templates/pdd/list.html", clearURL: `/pdd?page_size={{.CurrentPageSize}}`},
{name: "采集采购", path: "templates/task/list.html", clearURL: `/tasks?page_size={{.CurrentPageSize}}`},
{name: "客户端列表", path: "templates/client/list.html", clearURL: `/clients?page_size={{.CurrentPageSize}}`},
{name: "用户管理", path: "templates/user/list.html", clearURL: `/users?page_size={{.CurrentPageSize}}`},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
raw, err := os.ReadFile(tt.path)
if err != nil {
t.Fatal(err)
}
page := string(raw)
clearLink := `class="button-link" href="` + tt.clearURL + `">清除</a>`
clearIndex := strings.Index(page, clearLink)
if clearIndex < 0 {
t.Fatalf("缺少清除入口或链接参数不正确: %s", clearLink)
}
searchIndex := strings.Index(page[clearIndex:], `<button type="submit">搜索</button>`)
if searchIndex < 0 {
t.Fatal("清除入口后没有搜索按钮")
}
between := page[clearIndex+len(clearLink) : clearIndex+searchIndex]
if strings.Contains(between, "<button") || strings.Contains(between, "<a ") {
t.Fatalf("清除入口必须紧邻搜索按钮,中间出现了其他操作: %q", between)
}
if strings.Contains(tt.clearURL, "page=") {
t.Fatalf("清除链接不能保留旧页码: %s", tt.clearURL)
}
})
}
}
+1
View File
@@ -6,6 +6,7 @@
<input type="hidden" name="page_size" value="{{.CurrentPageSize}}">
<label for="q">名称</label>
<input id="q" type="text" name="name" value="{{.Keyword}}" placeholder="客户端名称">
<a class="button-link" href="/clients?page_size={{.CurrentPageSize}}">清除</a>
<button type="submit">搜索</button>
</form>
+1
View File
@@ -40,6 +40,7 @@
用类名而不是改 .toolbar input[type="text"]——那条规则被 5 个页面共用。 */}}
<input id="q" type="text" name="q" value="{{.Keyword}}"
class="search-narrow" placeholder="商品 ID 或链接的一部分">
<a class="button-link" href="/pdd?page_size={{.CurrentPageSize}}">清除</a>
<button type="submit">搜索</button>
</form>
+1
View File
@@ -41,6 +41,7 @@
</select>
<label for="q">关键词</label>
<input id="q" class="shopee-search-field" type="text" name="q" value="{{.Keyword}}" placeholder="请输入搜索关键词">
<a class="button-link" href="/shopee?{{if .DeletedFilter}}deleted=1&{{end}}{{if .UnlinkedFilter}}unlinked=1&{{end}}page_size={{.CurrentPageSize}}">清除</a>
<button type="submit">搜索</button>
</form>
+1
View File
@@ -40,6 +40,7 @@
用类名而不是改 .toolbar input[type="text"]——那条被五个页面共用。 */}}
<input id="q" type="text" name="q" value="{{.Keyword}}"
class="search-narrow" placeholder="任务编号 / 订单号 / 商品 ID">
<a class="button-link" href="/tasks?page_size={{.CurrentPageSize}}">清除</a>
<button type="submit">搜索</button>
</form>
+1
View File
@@ -13,6 +13,7 @@
<option value="active" {{if eq .StatusFilter "active"}}selected{{end}}>启用</option>
<option value="disabled" {{if eq .StatusFilter "disabled"}}selected{{end}}>禁用</option>
</select>
<a class="button-link" href="/users?page_size={{.CurrentPageSize}}">清除</a>
<button type="submit">搜索</button>
</form>
<button type="button" class="primary" data-modal-open="create-user-modal">新增采购员</button>