新增财务申请时间类型筛选
This commit is contained in:
@@ -20,7 +20,11 @@ import { useState } from 'react'
|
||||
import { AdminRangePicker } from '@/components/admin/AdminDatePicker'
|
||||
import PageHeader from '@/components/admin/PageHeader'
|
||||
import dayjs from '@/lib/dayjs'
|
||||
import { fetchAdminFinanceSummary, fetchAdminFinanceTransactions } from '@/services/admin'
|
||||
import {
|
||||
fetchAdminFinanceSummary,
|
||||
fetchAdminFinanceTransactions,
|
||||
type AdminFinanceDateType,
|
||||
} from '@/services/admin'
|
||||
import type {
|
||||
AdminFinanceChannelDailyItem,
|
||||
AdminFinanceDailyItem,
|
||||
@@ -30,7 +34,7 @@ import { ADMIN_DEFAULT_PAGE_SIZE, buildAdminTablePagination } from '@/utils/admi
|
||||
import { formatAdminDateTime } from '@/utils/admin-time'
|
||||
import { formatMoney } from './panels/shared'
|
||||
|
||||
type FinanceFilterForm = { dateRange?: unknown }
|
||||
type FinanceFilterForm = { dateRange?: unknown; dateType?: AdminFinanceDateType }
|
||||
|
||||
const CATEGORY_OPTIONS = [
|
||||
{ value: '', label: '全部账目' },
|
||||
@@ -45,7 +49,11 @@ const CATEGORY_OPTIONS = [
|
||||
|
||||
export default function AdminFinancePage() {
|
||||
const [form] = Form.useForm<FinanceFilterForm>()
|
||||
const [filters, setFilters] = useState({ dateFrom: '', dateTo: '' })
|
||||
const [filters, setFilters] = useState<{
|
||||
dateFrom: string
|
||||
dateTo: string
|
||||
dateType: AdminFinanceDateType
|
||||
}>({ dateFrom: '', dateTo: '', dateType: 'occurred' })
|
||||
const [category, setCategory] = useState('')
|
||||
const [channel, setChannel] = useState('')
|
||||
const [channelSummaryFilter, setChannelSummaryFilter] = useState('')
|
||||
@@ -83,7 +91,7 @@ export default function AdminFinancePage() {
|
||||
? dayjs(range[1]).second(59).format('YYYY-MM-DD HH:mm:ss')
|
||||
: ''
|
||||
setPage(1)
|
||||
setFilters({ dateFrom, dateTo })
|
||||
setFilters({ dateFrom, dateTo, dateType: values.dateType || 'occurred' })
|
||||
}
|
||||
|
||||
function resetFilters() {
|
||||
@@ -92,7 +100,7 @@ export default function AdminFinancePage() {
|
||||
setChannel('')
|
||||
setChannelSummaryFilter('')
|
||||
setPage(1)
|
||||
setFilters({ dateFrom: '', dateTo: '' })
|
||||
setFilters({ dateFrom: '', dateTo: '', dateType: 'occurred' })
|
||||
}
|
||||
|
||||
const dailyColumns: TableColumnsType<AdminFinanceDailyItem> = [
|
||||
@@ -161,7 +169,17 @@ export default function AdminFinancePage() {
|
||||
className="filter-form"
|
||||
onFinish={applyFilters}
|
||||
>
|
||||
<Form.Item name="dateRange" label="账务日期">
|
||||
<Form.Item name="dateType" label="时间类型" initialValue="occurred">
|
||||
<Select
|
||||
style={{ width: 160 }}
|
||||
options={[
|
||||
{ value: 'occurred', label: '账务发生时间' },
|
||||
{ value: 'created', label: '打手申请时间' },
|
||||
{ value: 'reviewed', label: '审核通过时间' },
|
||||
]}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item name="dateRange" label="时间范围">
|
||||
<AdminRangePicker showTime={{ format: 'HH:mm' }} format="YYYY-MM-DD HH:mm" />
|
||||
</Form.Item>
|
||||
<Form.Item>
|
||||
|
||||
@@ -61,6 +61,7 @@ type FinanceConfigFormValues = {
|
||||
}
|
||||
|
||||
type FinanceReviewAction = 'approved' | 'rejected' | 'cancelled'
|
||||
type FinanceRequestDateType = 'created' | 'reviewed'
|
||||
|
||||
export default function FinancePanel() {
|
||||
const { message } = App.useApp()
|
||||
@@ -74,7 +75,8 @@ export default function FinancePanel() {
|
||||
const [requestType, setRequestType] = useState('')
|
||||
const [keywordInput, setKeywordInput] = useState('')
|
||||
const [keyword, setKeyword] = useState('')
|
||||
const [createdRange, setCreatedRange] = useState<[string, string] | null>(null)
|
||||
const [requestDateType, setRequestDateType] = useState<FinanceRequestDateType>('created')
|
||||
const [requestDateRange, setRequestDateRange] = useState<[string, string] | null>(null)
|
||||
const [accountChannel, setAccountChannel] = useState('')
|
||||
const [page, setPage] = useState(1)
|
||||
const [pageSize, setPageSize] = useState(ADMIN_DEFAULT_PAGE_SIZE)
|
||||
@@ -116,8 +118,9 @@ export default function FinancePanel() {
|
||||
keyword,
|
||||
page,
|
||||
pageSize,
|
||||
createdRange ? createdRange[0] : '',
|
||||
createdRange ? createdRange[1] : '',
|
||||
requestDateType,
|
||||
requestDateRange ? requestDateRange[0] : '',
|
||||
requestDateRange ? requestDateRange[1] : '',
|
||||
accountChannel,
|
||||
],
|
||||
queryFn: () =>
|
||||
@@ -129,7 +132,11 @@ export default function FinancePanel() {
|
||||
page,
|
||||
pageSize,
|
||||
accountChannel,
|
||||
...(createdRange ? { createdFrom: createdRange[0], createdTo: createdRange[1] } : {}),
|
||||
...(requestDateRange
|
||||
? requestDateType === 'created'
|
||||
? { createdFrom: requestDateRange[0], createdTo: requestDateRange[1] }
|
||||
: { reviewedFrom: requestDateRange[0], reviewedTo: requestDateRange[1] }
|
||||
: {}),
|
||||
}),
|
||||
})
|
||||
const financeRequestsPagination = financeRequestsQuery.data?.data.pagination
|
||||
@@ -507,16 +514,31 @@ export default function FinancePanel() {
|
||||
setPage(1)
|
||||
}}
|
||||
/>
|
||||
<Select
|
||||
value={requestDateType}
|
||||
style={{ width: 150 }}
|
||||
options={[
|
||||
{ value: 'created', label: '申请提现时间' },
|
||||
{ value: 'reviewed', label: '审核通过时间' },
|
||||
]}
|
||||
onChange={(nextType: FinanceRequestDateType) => {
|
||||
setRequestDateType(nextType)
|
||||
setPage(1)
|
||||
}}
|
||||
/>
|
||||
<AdminRangePicker
|
||||
placeholder={['请选择时间范围', '请选择时间范围']}
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
showTime={{
|
||||
format: 'HH:mm',
|
||||
defaultValue: [dayjs('00:00:00', 'HH:mm:ss'), dayjs('23:59:59', 'HH:mm:ss')],
|
||||
}}
|
||||
value={createdRange ? [dayjs(createdRange[0]), dayjs(createdRange[1])] : null}
|
||||
value={
|
||||
requestDateRange ? [dayjs(requestDateRange[0]), dayjs(requestDateRange[1])] : null
|
||||
}
|
||||
onChange={(dates) => {
|
||||
const [start, end] = dates || []
|
||||
setCreatedRange(
|
||||
setRequestDateRange(
|
||||
start && end
|
||||
? [
|
||||
// 起止各占满整分钟:开始 xx:00、结束 xx:59
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
import { apiGet } from '@/lib/http'
|
||||
import type { AdminFinanceSummary, AdminFinanceTransactionResult } from '@/types/admin/finance'
|
||||
|
||||
export function fetchAdminFinanceSummary(params: { dateFrom?: string; dateTo?: string } = {}) {
|
||||
export type AdminFinanceDateType = 'occurred' | 'created' | 'reviewed'
|
||||
|
||||
export function fetchAdminFinanceSummary(
|
||||
params: { dateFrom?: string; dateTo?: string; dateType?: AdminFinanceDateType } = {},
|
||||
) {
|
||||
return apiGet<AdminFinanceSummary>('/api/v1/admin/finance/summary', params)
|
||||
}
|
||||
|
||||
@@ -9,6 +13,7 @@ export function fetchAdminFinanceTransactions(
|
||||
params: {
|
||||
dateFrom?: string
|
||||
dateTo?: string
|
||||
dateType?: AdminFinanceDateType
|
||||
category?: string
|
||||
channel?: string
|
||||
page?: number
|
||||
|
||||
Reference in New Issue
Block a user