feat(consignment): 寄售仓库增加入库时间筛选

This commit is contained in:
yml2213
2026-11-05 21:19:28 +08:00
parent bd7dd4efcc
commit 1bf1280877
6 changed files with 117 additions and 0 deletions
@@ -6,6 +6,7 @@ import {
ThunderboltOutlined,
} from '@ant-design/icons'
import { useQuery } from '@tanstack/react-query'
import dayjs from 'dayjs'
import {
Alert,
App,
@@ -28,7 +29,9 @@ import {
Tooltip,
Typography,
} from 'antd'
import { AdminRangePicker } from '@/components/admin/AdminDatePicker'
import PercentTable from '@/components/common/PercentTable'
import { ADMIN_DATE_FORMAT } from '@/lib/dayjs'
import { buildAdminTablePagination } from '@/utils/admin-pagination'
import type { TableColumnsType } from 'antd'
import { useState } from 'react'
@@ -148,6 +151,7 @@ export default function ConsignmentInventoryPanel() {
const [series, setSeries] = useState<string>('')
const [diamondLevel, setDiamondLevel] = useState<number>(0)
const [allowMatching, setAllowMatching] = useState<string>('')
const [inboundRange, setInboundRange] = useState<[string, string] | null>(null)
const [keyword, setKeyword] = useState<string>('')
const [page, setPage] = useState<number>(1)
const [pageSize, setPageSize] = useState<number>(20)
@@ -205,6 +209,8 @@ export default function ConsignmentInventoryPanel() {
series,
diamondLevel,
allowMatching,
inboundRange?.[0],
inboundRange?.[1],
keyword,
page,
pageSize,
@@ -217,6 +223,8 @@ export default function ConsignmentInventoryPanel() {
series: series || undefined,
diamondLevel: diamondLevel > 0 ? diamondLevel : undefined,
allowMatching: allowMatching === 'yes' ? true : allowMatching === 'no' ? false : undefined,
dateFrom: inboundRange?.[0],
dateTo: inboundRange?.[1],
keyword: keyword || undefined,
page,
pageSize,
@@ -835,6 +843,21 @@ export default function ConsignmentInventoryPanel() {
]}
/>
<AdminRangePicker
allowClear
style={{ width: 250 }}
placeholder={['入库开始日期', '入库结束日期']}
value={inboundRange ? [dayjs(inboundRange[0]), dayjs(inboundRange[1])] : null}
onChange={(dates) => {
setInboundRange(
dates?.[0] && dates[1]
? [dates[0].format(ADMIN_DATE_FORMAT), dates[1].format(ADMIN_DATE_FORMAT)]
: null,
)
setPage(1)
}}
/>
<Input.Search
placeholder="搜索物品名/编号/收购人/店铺/卖家"
allowClear
@@ -0,0 +1,28 @@
import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import test from 'node:test'
test('寄售仓库必须提供通过审核入库时间范围筛选,并透传到库存查询', () => {
const source = readFileSync(
new URL('../src/pages/admin/panels/ConsignmentInventoryPanel.tsx', import.meta.url).pathname,
'utf8',
)
assert.ok(
source.includes("from '@/components/admin/AdminDatePicker'"),
'必须复用后台日期范围控件',
)
assert.ok(source.includes("placeholder={['入库开始日期', '入库结束日期']}"), '必须明确筛选口径')
assert.ok(source.includes('dateFrom: inboundRange?.[0]'), '开始日期必须透传后端')
assert.ok(source.includes('dateTo: inboundRange?.[1]'), '结束日期必须透传后端')
assert.ok(
source.includes('inboundRange?.[0],\n inboundRange?.[1],'),
'日期变化必须进入 React Query key 并触发重新查询',
)
assert.ok(
source
.slice(source.indexOf('<AdminRangePicker'), source.indexOf('<Input.Search'))
.includes('setPage(1)'),
'修改日期筛选后必须回到第一页',
)
})