From 7a925c78c4703b5f3019d5a33bc8fe148b3782f1 Mon Sep 17 00:00:00 2001
From: zhoujianjin <204045053@qq.com>
Date: Sun, 20 Sep 2026 19:02:33 +0800
Subject: [PATCH] =?UTF-8?q?feat(outbound)=E4=B8=BA=E5=87=BA=E5=BA=93?=
=?UTF-8?q?=E5=8D=95=E6=9F=A5=E8=AF=A2=E5=92=8C=E5=AF=BC=E5=87=BA=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=E6=B7=BB=E5=8A=A0=E5=85=A5=E5=BA=93=E5=BD=92=E5=B1=9E?=
=?UTF-8?q?=E5=8D=95=E5=8F=B7=E7=AD=9B=E9=80=89=E6=9D=A1=E4=BB=B6=20-=20?=
=?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=89=8D=E7=AB=AF=E9=A1=B5=E9=9D=A2=E8=A1=A8?=
=?UTF-8?q?=E5=8D=95=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=BD=92=E5=B1=9E=E5=8D=95?=
=?UTF-8?q?=E5=8F=B7=E6=90=9C=E7=B4=A2=E6=A1=86=E5=B9=B6=E7=BB=91=E5=AE=9A?=
=?UTF-8?q?=E5=AF=B9=E5=BA=94=E5=8F=82=E6=95=B0=20-=20=E8=B0=83=E6=95=B4?=
=?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=9F=A5=E8=AF=A2=E4=BB=A3=E7=A0=81=E4=B8=AD?=
=?UTF-8?q?=E5=BD=92=E5=B1=9E=E5=8D=95=E5=8F=B7=E8=BF=87=E6=BB=A4=E6=9D=A1?=
=?UTF-8?q?=E4=BB=B6=E7=9A=84=E4=BD=8D=E7=BD=AE=EF=BC=8C=E4=BC=98=E5=8C=96?=
=?UTF-8?q?=E5=8F=AF=E8=AF=BB=E6=80=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
bj_power_wms/frontend/src/pages/Outbound.vue | 10 +++++++---
bj_power_wms/internal/handler/outbound.go | 12 ++++++++----
2 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/bj_power_wms/frontend/src/pages/Outbound.vue b/bj_power_wms/frontend/src/pages/Outbound.vue
index a2e652f..fe5c9a7 100644
--- a/bj_power_wms/frontend/src/pages/Outbound.vue
+++ b/bj_power_wms/frontend/src/pages/Outbound.vue
@@ -341,7 +341,7 @@ function recDefaultRange() {
const end = new Date(); const start = new Date(); start.setMonth(start.getMonth() - 3)
return [fmt(start), fmt(end)]
}
-const recFilters = reactive({ outboundType: '', status: '', materialCode: '', boxNo: '', ownershipType: '', dateRange: recDefaultRange() })
+const recFilters = reactive({ outboundType: '', status: '', materialCode: '', boxNo: '', ownershipNo: '', dateRange: recDefaultRange() })
const recRows = ref([])
const recTotal = ref(0)
const loadingRec = ref(false)
@@ -357,7 +357,7 @@ async function loadRecords() {
status: recFilters.status,
materialCode: recFilters.materialCode.trim(),
boxNo: recFilters.boxNo.trim(),
- ownershipType: recFilters.ownershipType,
+ ownershipNo: recFilters.ownershipNo.trim(),
page: recPage.current, pageSize: recPage.size
}
if (Array.isArray(recFilters.dateRange) && recFilters.dateRange.length === 2) {
@@ -370,7 +370,7 @@ async function loadRecords() {
} finally { loadingRec.value = false }
}
function searchRec() { recPage.current = 1; loadRecords() }
-function resetRec() { Object.assign(recFilters, { outboundType: '', status: '', materialCode: '', boxNo: '', dateRange: recDefaultRange() }); searchRec() }
+function resetRec() { Object.assign(recFilters, { outboundType: '', status: '', materialCode: '', boxNo: '', ownershipNo: '', dateRange: recDefaultRange() }); searchRec() }
function downloadCSV() {
// 时间窗口与列表保持一致:未选/已清空时回落近 3 个月,保证确认框条数 = 实际导出条数
@@ -380,6 +380,7 @@ function downloadCSV() {
status: recFilters.status,
materialCode: recFilters.materialCode.trim(),
boxNo: recFilters.boxNo.trim(),
+ ownershipNo: recFilters.ownershipNo.trim(),
startDate: dr[0],
endDate: dr[1]
}, '出库管理.xlsx', { countUrl: '/outbound/query', name: '出库记录' })
@@ -634,6 +635,9 @@ onMounted(loadDicts)
+
+
+
diff --git a/bj_power_wms/internal/handler/outbound.go b/bj_power_wms/internal/handler/outbound.go
index bb95fd4..ab806d1 100644
--- a/bj_power_wms/internal/handler/outbound.go
+++ b/bj_power_wms/internal/handler/outbound.go
@@ -333,15 +333,15 @@ func queryOutboundHandler(ctx *svc.ServiceContext) http.HandlerFunc {
if boxNo != "" {
q = q.Where(outboundorder.BoxNoContainsFold(boxNo))
}
+ if ownershipNo != "" {
+ q = q.Where(outboundorder.OwnershipNoContainsFold(ownershipNo))
+ }
if outboundType != "" {
q = q.Where(outboundorder.OutboundTypeEQ(outboundType))
}
if outboundCategory != "" {
q = q.Where(outboundorder.OutboundCategoryEQ(outboundCategory))
}
- if ownershipNo != "" {
- q = q.Where(outboundorder.OwnershipNoContainsFold(ownershipNo))
- }
if materialName != "" {
q = q.Where(outboundorder.MaterialNameContainsFold(materialName))
}
@@ -628,7 +628,7 @@ func snListJSON(sn []string) string {
}
// exportOutboundHandler 统一主表全部出库记录导出
-// 不依赖前端分页,一次返回全部(可按类型/工单/物料/箱号过滤),便于整表导出。
+// 不依赖前端分页,一次返回全部(可按类型/工单/物料/箱号/归属单号过滤),便于整表导出。
func exportOutboundHandler(ctx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
outboundType := r.URL.Query().Get("outboundType")
@@ -636,6 +636,7 @@ func exportOutboundHandler(ctx *svc.ServiceContext) http.HandlerFunc {
orderNo := r.URL.Query().Get("orderNo")
materialCode := r.URL.Query().Get("materialCode")
boxNo := r.URL.Query().Get("boxNo")
+ ownershipNo := r.URL.Query().Get("ownershipNo")
startDate, endDate, rerr := normalizeExportRange(r.URL.Query().Get("startDate"), r.URL.Query().Get("endDate"))
if rerr != nil {
fail(w, http.StatusBadRequest, rerr.Error())
@@ -660,6 +661,9 @@ func exportOutboundHandler(ctx *svc.ServiceContext) http.HandlerFunc {
if boxNo != "" {
q = q.Where(outboundorder.BoxNoContainsFold(boxNo))
}
+ if ownershipNo != "" {
+ q = q.Where(outboundorder.OwnershipNoContainsFold(ownershipNo))
+ }
list, err := q.Order(ent.Desc("created_at"), ent.Desc("id")).All(ctx0())
if err != nil {