接单工单与资金申请列表支持创建时间区间筛选

This commit is contained in:
yml2213
2026-08-22 09:48:09 +08:00
parent f1e219d1ef
commit 3618df74c5
8 changed files with 104 additions and 2 deletions
@@ -26,6 +26,12 @@ export function normalizeDateQuery(rawValue: unknown, endOfDay = false) {
return normalized
}
/** 校验并归一化 YYYY-MM-DD 日期参数,非法或空值返回空字符串。 */
export function normalizeDateString(rawValue: unknown) {
const normalized = String(rawValue || '').trim()
return /^\d{4}-\d{2}-\d{2}$/.test(normalized) ? normalized : ''
}
export function safeParseJson(rawText: unknown): JsonObject {
if (rawText && typeof rawText === 'object') {
return rawText
@@ -6,7 +6,11 @@ import {
sumPendingUnfreezeByOrderIds,
} from '../../repositories/worker-platform/index.js'
import type { JsonObject } from '../../types/json.js'
import { normalizePage, normalizePageSize } from '../admin/admin-query-utils.js'
import {
normalizeDateString,
normalizePage,
normalizePageSize,
} from '../admin/admin-query-utils.js'
import {
mapWorkOrderAdmin,
mapWorkOrderEvents,
@@ -32,6 +36,8 @@ export async function listAdminWorkOrders(query: JsonObject = {}) {
.filter((levelId): levelId is number => levelId !== null)
const statuses = normalizeStatuses(query.status)
const vipEvidencePending = normalizeBoolean(query.vipEvidencePending, false)
const createdFrom = normalizeDateString(query.createdFrom)
const createdTo = normalizeDateString(query.createdTo)
const filters = {
statuses,
workOrderId,
@@ -40,6 +46,8 @@ export async function listAdminWorkOrders(query: JsonObject = {}) {
workerLevelIds,
vipEvidencePending,
useOperationalStatus: true,
...(createdFrom ? { createdFrom } : {}),
...(createdTo ? { createdTo } : {}),
}
const { items, total } = await listWorkOrders({ page, pageSize, ...filters })
const statistics = await getWorkOrderStatistics(filters)
@@ -10,7 +10,12 @@ import type { WorkerWithdrawalAccountRow } from '../../repositories/worker-platf
import type { JsonObject } from '../../types/json.js'
import { createHttpError } from '../../utils/http.js'
import { nowIso } from '../../utils/time.js'
import { normalizePage, normalizePageSize, safeParseJson } from '../admin/admin-query-utils.js'
import {
normalizeDateString,
normalizePage,
normalizePageSize,
safeParseJson,
} from '../admin/admin-query-utils.js'
import { resolveAdminNotificationEntity } from '../admin/admin-notification-service.js'
import { refreshUploadedFileUrls } from '../file-storage/file-storage-service.js'
import {
@@ -162,6 +167,8 @@ export async function listAdminWorkerFinanceRequests(query: JsonObject = {}) {
const status = normalizeFinanceRequestStatus(query.status)
const requestType = normalizeFinanceRequestType(query.requestType)
const keyword = String(query.keyword || '').trim()
const createdFrom = normalizeDateString(query.createdFrom)
const createdTo = normalizeDateString(query.createdTo)
const { items, total } = await listWorkerFinanceRequests({
page,
pageSize,
@@ -169,6 +176,8 @@ export async function listAdminWorkerFinanceRequests(query: JsonObject = {}) {
status,
requestType,
keyword,
...(createdFrom ? { createdFrom } : {}),
...(createdTo ? { createdTo } : {}),
})
return {
items: items.map(mapFinanceRequest),