{{define "pdd/list"}} {{template "header" .}} {{/* 三段式布局的第一段:顶部工具条。 和另外四个页面保持一致,见 docs/admin/05-ui-specification.md §2。 */}}
{{/* 文案写全「添加 PDD 商品」:这条工具条上还有「创建采集任务」, 两个都以「创建」开头的话,第一次用的人分不清哪个是加商品、哪个是发起采集。 */}} {{/* 「创建采集任务」和「删除」用的是**同一个表单**,靠按钮上的 formaction 决定提交到哪个地址。这样表格里的勾选框只需要挂一份, 不用为每个操作各复制一套(复制出来的两套迟早会不同步)。 */}} {{/* 把当前筛选一起带过去,操作完还停在原来的筛选上 */}} {{/* 文案是「创建采集任务」不是「采集」:点完只是排了个队, 真正去手机上采要等客户端来领,可能几秒也可能几分钟 */}}
{{/* search-narrow 把这个框收到 30%,让「搜索」按钮能紧挨着它。 用类名而不是改 .toolbar input[type="text"]——那条规则被 5 个页面共用。 */}}
{{/* 第二段:表格。双击一行打开弹窗,见 static/js/app.js */}}
{{/* 采到 1 个和采到 20 个差别很大:只采到 1 个通常是没点开规格面板, 说明这次采集有问题。这一列就是为了让它一眼能看出来 */}} {{range .Rows}} {{/* 状态是中文文字,不能只靠颜色区分 */}} {{else}} {{/* 空状态要分情况:从没建过 和 筛选没结果,下一步动作完全不同 */}} {{end}}
商品 ID 标题 店铺 PDD 链接 采集状态规格数 采集时间 更新时间
{{/* 勾选框的值是 goods_id:删除和建采集任务都按它定位。 form 属性把它挂到工具条里那个表单上 */}} {{.GoodsID}} {{.Title}} {{.ShopName}} {{.URL}} {{.StatusText}}{{if .CollectMsg}}
{{.CollectMsg}}{{end}}
{{.SkuCountText}} {{.CollectedAt}} {{.UpdatedAt}}
{{if .IsFiltered}} 当前筛选条件下没有商品。
换个采集状态或清空搜索词再试。查看全部 {{else}} 还没有 PDD 商品。
点左上角「创建」,粘贴一个拼多多商品链接就行,其余信息采集后自动回填。 {{end}}

双击任意一行可以查看和编辑这个商品,包括采回来的规格和价格。

{{/* ── 创建弹窗 ───────────────────────────────── 内容是固定的(只有一个输入框),所以直接写在页面里藏着, 不像编辑弹窗那样要去服务端取。 */}} {{/* ── 编辑弹窗的壳子 ─────────────────────────── 里面的内容双击行时由 /pdd/detail 返回,前端只负责放进来和显示。 */}} {{template "footer" .}} {{end}}