feat(records): 出库/借还记录统一高级搜索版式
三个记录页(出库/借还/报废)此前搜索区形态各异:出库用裸 div + 分散样式,
借还缺日期范围,报废只有 SKU 输入框。现统一为 el-form :inline="true" +
.filter-form 版式,并补齐缺失的过滤维度。
借还记录(新增日期范围能力):
· 后端 get_records 增加 start_date/end_date 参数,按「借出时间」过滤;
· 边界补全时分秒(YYYY-MM-DD → 当日 00:00:00 / 23:59:59),
与出库记录同口径,解决零点截断导致当天记录漏查的问题;
· API 层透传两个新参数。
出库记录:
· 版式统一为 inline 表单,日期选择器加 label;
· 新增「重置」按钮;
· 搜索类型切换由 500ms 防抖改为立即查询。
借还记录:
· 新增「重置」按钮;搜索类型/状态切换改为立即查询(取消防抖)。
实测(SUPER_ADMIN):
报废 全部/单号/SKU/操作人/物料名/日期 六类过滤均 200 且命中正确;
借还 无过滤 52 单 / 本月 18 单 / 空区间 0 单(日期过滤生效);
出库 无过滤 395 单 / SKU 277 / 姓名 7 / 物料名 16 / 单号 OUT-2026 命中 395。
This commit is contained in:
@ -414,7 +414,8 @@ class TransService:
|
||||
raise e
|
||||
|
||||
@staticmethod
|
||||
def get_records(page=1, limit=10, status='all', keyword=None, search_type='all', borrower_name=None):
|
||||
def get_records(page=1, limit=10, status='all', keyword=None, search_type='all',
|
||||
borrower_name=None, start_date=None, end_date=None):
|
||||
"""
|
||||
获取借还记录列表(按单号 borrow_no 维度分页,避免明细撑爆 pageSize)
|
||||
|
||||
@ -429,7 +430,14 @@ class TransService:
|
||||
状态过滤按"单号聚合"判定:
|
||||
- borrowed: 单号下至少有一条 is_returned=False
|
||||
- returned: 单号下所有明细 is_returned=True
|
||||
|
||||
日期范围按「借出时间」过滤,边界补全时分秒以解决零点截断问题。
|
||||
"""
|
||||
# 日期补全:与出库记录同口径
|
||||
if end_date and len(str(end_date).strip()) == 10:
|
||||
end_date = f"{str(end_date).strip()} 23:59:59"
|
||||
if start_date and len(str(start_date).strip()) == 10:
|
||||
start_date = f"{str(start_date).strip()} 00:00:00"
|
||||
try:
|
||||
# ====================================================================
|
||||
# 步骤 1a:构造"单号维度"基础子查询(GROUP BY borrow_no 在这里完成)
|
||||
@ -680,6 +688,20 @@ class TransService:
|
||||
order_subq.c.borrow_no.in_(company_borrow_nos_subq)
|
||||
)
|
||||
|
||||
# 日期范围过滤(按借出时间;边界已在入口补全时分秒)
|
||||
if start_date:
|
||||
borrow_no_q = borrow_no_q.filter(order_subq.c.borrow_no.in_(
|
||||
db.session.query(TransBorrow.borrow_no)
|
||||
.filter(TransBorrow.borrow_time >= start_date)
|
||||
.distinct()
|
||||
))
|
||||
if end_date:
|
||||
borrow_no_q = borrow_no_q.filter(order_subq.c.borrow_no.in_(
|
||||
db.session.query(TransBorrow.borrow_no)
|
||||
.filter(TransBorrow.borrow_time <= end_date)
|
||||
.distinct()
|
||||
))
|
||||
|
||||
# 状态过滤(按"单号聚合"判定)
|
||||
if status == 'borrowed':
|
||||
# 单号下至少一条未还
|
||||
|
||||
Reference in New Issue
Block a user