feat: 支持顺运宝多订单号搜索 (#217)
This commit is contained in:
@@ -57,9 +57,18 @@ func (h *Handler) renderSybListWithLoginReason(c *gin.Context, keyword, pageRaw,
|
||||
stage := service.ParseSybStage(c.Query("stage"))
|
||||
result, err := service.ListSybOrdersView(h.db, keyword, shop, stage, pageNum)
|
||||
if err != nil {
|
||||
fail(c, http.StatusInternalServerError,
|
||||
"读取顺运宝货运单列表失败,数据没有被改动。刷新页面重试;一直失败请把这句话报给维护者。")
|
||||
return
|
||||
if !service.IsValidationError(err) || result == nil {
|
||||
fail(c, http.StatusInternalServerError,
|
||||
"读取顺运宝货运单列表失败,数据没有被改动。刷新页面重试;一直失败请把这句话报给维护者。")
|
||||
return
|
||||
}
|
||||
}
|
||||
orderNoError := ""
|
||||
if err != nil {
|
||||
orderNoError = err.Error()
|
||||
} else {
|
||||
// 有效输入统一回显成逗号分隔,避免 Excel 换行进入隐藏表单和分页 URL。
|
||||
keyword = result.OrderNoQuery
|
||||
}
|
||||
purchaseRows := append([]service.SybOrderView(nil), result.Rows...)
|
||||
openSybID := strings.TrimSpace(c.Query("open_syb_id"))
|
||||
@@ -192,6 +201,8 @@ func (h *Handler) renderSybListWithLoginReason(c *gin.Context, keyword, pageRaw,
|
||||
|
||||
c.HTML(http.StatusOK, "syb/list", page(c, "syb", "顺运宝数据", gin.H{
|
||||
"Keyword": keyword,
|
||||
"OrderNoError": orderNoError,
|
||||
"OrderNoFeedback": sybOrderNoFeedback(result),
|
||||
"ShopFilter": shop,
|
||||
"StageFilter": stage,
|
||||
"StageOptions": service.SybStageOptions(),
|
||||
@@ -344,7 +355,10 @@ func sybHistoryPartialURL(pageNum int, keyword, shop, stage, dateFrom, dateTo st
|
||||
// `[必须]` 显示筛选后的**全量**总数,不是本页行数,见工单 #43 定下的规则。
|
||||
func sybStatusLine(result *service.SybListResult) string {
|
||||
prefix := fmt.Sprintf("共 %d 条货运单明细", result.Total)
|
||||
if label := service.SybStageLabel(result.Stage); label != "" {
|
||||
if result.OrderNoCount > 0 {
|
||||
prefix = fmt.Sprintf("输入 %d 个订单号,当前筛选命中 %d 个订单、%d 条商品明细",
|
||||
result.OrderNoCount, result.MatchedOrderCount, result.Total)
|
||||
} else if label := service.SybStageLabel(result.Stage); label != "" {
|
||||
prefix = fmt.Sprintf("%s:%d 条", label, result.Total)
|
||||
} else if result.IsFiltered {
|
||||
prefix = fmt.Sprintf("筛选结果:%d 条货运单明细", result.Total)
|
||||
@@ -355,6 +369,18 @@ func sybStatusLine(result *service.SybListResult) string {
|
||||
return fmt.Sprintf("%s · 第 %d/%d 页", prefix, result.Page, result.TotalPages)
|
||||
}
|
||||
|
||||
func sybOrderNoFeedback(result *service.SybListResult) string {
|
||||
if result == nil || result.OrderNoCount == 0 {
|
||||
return ""
|
||||
}
|
||||
feedback := fmt.Sprintf("已输入 %d 个订单号;当前筛选命中 %d 个订单、%d 条商品明细。",
|
||||
result.OrderNoCount, result.MatchedOrderCount, result.Total)
|
||||
if len(result.UnmatchedOrderNos) > 0 {
|
||||
feedback += " 当前筛选未命中:" + strings.Join(result.UnmatchedOrderNos, "、")
|
||||
}
|
||||
return feedback
|
||||
}
|
||||
|
||||
// SybSync 点「同步」按钮的入口。
|
||||
//
|
||||
// 流程见工单 #46/#47:
|
||||
|
||||
Reference in New Issue
Block a user