feat: 统一蝦皮与顺运宝 PDD 关联入口 (#68)
This commit is contained in:
@@ -1,61 +1,65 @@
|
||||
{{define "shopee/detail_modal"}}
|
||||
{{/* 双击一行时弹出的内容。
|
||||
这是一个**片段**,不是整页——外面的弹窗壳子在 shopee/list.html 里。
|
||||
|
||||
`[必须]` 这个弹窗只读,没有保存表单——ShopeeSave 仍是 501,
|
||||
不要放一个点了没反应的保存按钮,见工单 #41。 */}}
|
||||
{{with .D}}
|
||||
<div class="modal-head">
|
||||
<h2>商品 {{.GoodsID}}</h2>
|
||||
<button type="button" class="modal-x" data-modal-close aria-label="关闭">×</button>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<div class="modal-body form-stack">
|
||||
<dl class="detail">
|
||||
<dt>商品名称</dt><dd>{{.Title}}</dd>
|
||||
<dt>蝦皮状态</dt><dd>{{.ShopeeStatus}}</dd>
|
||||
<dt>主商品货号</dt><dd>{{.MainSKUCode}}</dd>
|
||||
{{/* PDD 链接本工单只读展示,不做保存,见 #41「不做」清单 */}}
|
||||
<dt>PDD 链接</dt>
|
||||
<dd{{if .PddMissing}} class="missing"{{end}}>{{.PddURL}}</dd>
|
||||
<dt>采集状态</dt><dd>{{.StatusText}}</dd>
|
||||
<dt>PDD 商品 ID</dt><dd{{if .PddMissing}} class="missing"{{end}}>{{if .PddGoodsID}}{{.PddGoodsID}}{{else}}未关联{{end}}</dd>
|
||||
<dt>采集状态</dt><dd>{{.StatusText}}{{if .CollectMsg}}:{{.CollectMsg}}{{end}}</dd>
|
||||
</dl>
|
||||
|
||||
<h3>
|
||||
规格({{len .SKUs}} 个{{if gt .PendingCount 0}},{{.PendingCount}} 个待人工补{{end}})
|
||||
</h3>
|
||||
<form method="post" action="/shopee/save" class="form-stack">
|
||||
<input type="hidden" name="csrf_token" value="{{$.CSRFToken}}">
|
||||
<input type="hidden" name="shopee_goods_id" value="{{.GoodsID}}">
|
||||
<input type="hidden" name="list_goods_id" value="{{$.Keyword}}">
|
||||
<input type="hidden" name="status" value="{{$.StatusFilter}}">
|
||||
<input type="hidden" name="page" value="{{$.CurrentPage}}">
|
||||
<div class="field">
|
||||
<label for="shopee-pdd-url">PDD 商品链接</label>
|
||||
<input id="shopee-pdd-url" type="url" name="pdd_url" value="{{.PddURL}}" required placeholder="https://mobile.yangkeduo.com/goods.html?goods_id=...">
|
||||
<small>保存后会按链接中的 goods_id 建立或复用 PDD 商品档案。</small>
|
||||
</div>
|
||||
{{if .PddGoodsID}}
|
||||
<label class="check-line">
|
||||
<input type="checkbox" name="confirm_replace" value="1">
|
||||
如果新链接是其他商品,我确认更换当前关联(现有规格映射不会删除)
|
||||
</label>
|
||||
{{end}}
|
||||
<div><button type="submit" class="primary">保存 PDD 关联</button></div>
|
||||
</form>
|
||||
|
||||
{{if .PddGoodsID}}
|
||||
<form method="post" action="/shopee/collect" class="inline">
|
||||
<input type="hidden" name="csrf_token" value="{{$.CSRFToken}}">
|
||||
<input type="hidden" name="shopee_goods_id" value="{{.GoodsID}}">
|
||||
<input type="hidden" name="list_goods_id" value="{{$.Keyword}}">
|
||||
<input type="hidden" name="status" value="{{$.StatusFilter}}">
|
||||
<input type="hidden" name="page" value="{{$.CurrentPage}}">
|
||||
{{if .CanCollect}}
|
||||
<button type="submit">{{if eq .CollectStatus "failed"}}重新创建采集任务{{else}}创建采集任务{{end}}</button>
|
||||
{{else}}
|
||||
<span class="hint">{{if eq .CollectStatus "collecting"}}采集任务正在执行,请稍后刷新。{{else}}PDD 数据已采集,可继续处理顺运宝规格映射。{{end}}</span>
|
||||
{{end}}
|
||||
</form>
|
||||
{{end}}
|
||||
|
||||
<h3>规格({{len .SKUs}} 个{{if gt .PendingCount 0}},{{.PendingCount}} 个待人工补{{end}})</h3>
|
||||
{{if not .SKUs}}
|
||||
<p class="missing">这个商品在报表里没有任何 SKU。</p>
|
||||
{{else}}
|
||||
<div class="table-wrap">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>规格ID</th>
|
||||
<th>颜色</th>
|
||||
<th>尺码</th>
|
||||
<th>建議</th>
|
||||
{{/* 状态列要有文字(✓ / 待补),不能只靠颜色区分,见 #41 */}}
|
||||
<th>状态</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<thead><tr><th>规格ID</th><th>颜色</th><th>尺码</th><th>建議</th><th>状态</th></tr></thead>
|
||||
<tbody>
|
||||
{{range .SKUs}}
|
||||
<tr{{if .Pending}} class="row-warn"{{end}}>
|
||||
<td>{{.SKUID}}</td>
|
||||
<td>{{.Color}}</td>
|
||||
<td>{{.Size}}</td>
|
||||
<td>{{.Advice}}</td>
|
||||
<td>{{.StatusText}}</td>
|
||||
</tr>
|
||||
{{if .Pending}}
|
||||
{{/* `[必须]` 待补的行要显示 spec_raw 原文——不显示的话人工不知道
|
||||
该填什么,这正是保留原文这个设计的全部意义,见 #41。 */}}
|
||||
<tr class="row-warn">
|
||||
<td colspan="5"><small>原文:{{.SpecRaw}}</small></td>
|
||||
</tr>
|
||||
{{end}}
|
||||
<tr{{if .Pending}} class="row-warn"{{end}}><td>{{.SKUID}}</td><td>{{.Color}}</td><td>{{.Size}}</td><td>{{.Advice}}</td><td>{{.StatusText}}</td></tr>
|
||||
{{if .Pending}}<tr class="row-warn"><td colspan="5"><small>原文:{{.SpecRaw}}</small></td></tr>{{end}}
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -63,8 +67,6 @@
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
<div class="modal-foot">
|
||||
<button type="button" data-modal-close>关闭</button>
|
||||
</div>
|
||||
<div class="modal-foot"><button type="button" data-modal-close>关闭</button></div>
|
||||
{{end}}
|
||||
{{end}}
|
||||
|
||||
@@ -9,11 +9,6 @@
|
||||
<button type="submit">导入 Excel</button>
|
||||
</form>
|
||||
|
||||
<form class="inline" method="post" action="/shopee/collect">
|
||||
<input type="hidden" name="csrf_token" value="{{.CSRFToken}}">
|
||||
<button type="submit" data-need-checked>批量采集</button>
|
||||
</form>
|
||||
|
||||
<form class="inline grow" method="get" action="/shopee">
|
||||
{{/* 状态筛选是刚需(找待补规格 / 找没填链接的),不是锦上添花,
|
||||
见 docs/admin/05-ui-specification.md §4.1、工单 #43。
|
||||
@@ -128,11 +123,8 @@
|
||||
复用 #18 的机制(data-detail-url / data-detail-slot / data-detail-id),
|
||||
app.js 不需要改,见工单 #41。
|
||||
|
||||
这个弹窗**只读**:商品信息 + 完整规格表,没有保存按钮。
|
||||
从蝦皮商品出发录入 PDD 链接、发起采集的入口(含 ShopeeSave/
|
||||
ShopeeCollect 的实现)由后续的「蝦皮↔PDD 关联入口」工单负责,
|
||||
本工单不做,ShopeeSave/ShopeeDelete/ShopeeCollect 仍是 501。 */}}
|
||||
<div class="modal-backdrop" id="detail-modal" data-detail-url="/shopee/detail" hidden>
|
||||
弹窗同时提供当前 PDD 关联和单商品采集入口。 */}}
|
||||
<div class="modal-backdrop" id="detail-modal" data-detail-url="{{.DetailURL}}" hidden>
|
||||
<div class="modal" role="dialog" aria-modal="true" data-detail-slot>
|
||||
<div class="modal-body">正在加载…</div>
|
||||
</div>
|
||||
|
||||
@@ -20,10 +20,10 @@
|
||||
{{if not .ShopeeExists}}
|
||||
<p class="missing">蝦皮数据中找不到商品 {{.ShopeeGoodsID}}。请先导入该商品,或核对顺运宝商品链接提取出的 ID。</p>
|
||||
<p><a class="button-link" href="/shopee?goods_id={{.ShopeeGoodsID}}">到蝦皮数据查看</a></p>
|
||||
{{else if not .Candidates}}
|
||||
{{else if and (not .ShopeeSKUID) (not .Candidates)}}
|
||||
<p class="missing">这个蝦皮商品没有可选 SKU。请先在蝦皮数据中补充规格。</p>
|
||||
<p><a class="button-link" href="/shopee?goods_id={{.ShopeeGoodsID}}">到蝦皮数据补充</a></p>
|
||||
{{else}}
|
||||
{{else if not .ShopeeSKUID}}
|
||||
<form method="post" action="/syb/select-sku" class="form-stack">
|
||||
<input type="hidden" name="csrf_token" value="{{$.CSRFToken}}">
|
||||
<input type="hidden" name="syb_id" value="{{.SybID}}">
|
||||
@@ -44,6 +44,39 @@
|
||||
<button type="submit" class="primary">确认蝦皮规格</button>
|
||||
</div>
|
||||
</form>
|
||||
{{else}}
|
||||
<h3>关联采购商品</h3>
|
||||
<form method="post" action="/syb/associate-pdd" class="form-stack">
|
||||
<input type="hidden" name="csrf_token" value="{{$.CSRFToken}}">
|
||||
<input type="hidden" name="syb_id" value="{{.SybID}}">
|
||||
<input type="hidden" name="order_no" value="{{$.Keyword}}">
|
||||
<input type="hidden" name="stage" value="{{$.StageFilter}}">
|
||||
<input type="hidden" name="page" value="{{$.CurrentPage}}">
|
||||
<div class="field">
|
||||
<label for="syb-pdd-url">PDD 商品链接</label>
|
||||
<input id="syb-pdd-url" type="url" name="pdd_url" value="{{.PddURL}}" required placeholder="https://mobile.yangkeduo.com/goods.html?goods_id=...">
|
||||
<small>{{if .PddGoodsID}}当前 PDD 商品 ID:{{.PddGoodsID}}{{else}}保存后会从完整链接解析商品 ID,并建立 PDD 商品档案。{{end}}</small>
|
||||
</div>
|
||||
{{if .PddGoodsID}}
|
||||
<label class="check-line"><input type="checkbox" name="confirm_replace" value="1">如果新链接是其他商品,我确认更换当前关联</label>
|
||||
{{end}}
|
||||
<div><button type="submit" class="primary">保存 PDD 关联</button></div>
|
||||
</form>
|
||||
|
||||
{{if .PddGoodsID}}
|
||||
<form method="post" action="/syb/collect-pdd" class="inline">
|
||||
<input type="hidden" name="csrf_token" value="{{$.CSRFToken}}">
|
||||
<input type="hidden" name="syb_id" value="{{.SybID}}">
|
||||
<input type="hidden" name="order_no" value="{{$.Keyword}}">
|
||||
<input type="hidden" name="stage" value="{{$.StageFilter}}">
|
||||
<input type="hidden" name="page" value="{{$.CurrentPage}}">
|
||||
{{if .CanCollect}}
|
||||
<button type="submit">{{if eq .CollectStatus "failed"}}重新创建采集任务{{else}}创建采集任务{{end}}</button>
|
||||
{{else}}
|
||||
<span class="hint">{{if eq .CollectStatus "collecting"}}采集任务正在执行,请稍后刷新。{{else}}PDD 数据已采集,下一步匹配采购规格。{{end}}</span>
|
||||
{{end}}
|
||||
</form>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user