81 lines
3.1 KiB
TypeScript
81 lines
3.1 KiB
TypeScript
/**
|
||
* 接单平台(AdminWorkerPlatformPage)的 tab key 名单与切页缓存刷新映射。
|
||
*
|
||
* 抽成独立模块的原因:这些名单原先散落在页面组件里,且**同一份名单写了两遍**
|
||
* (isWorkerPlatformTab 与 loadActiveTabPreference 各一份)。新增 tab 时漏改的后果
|
||
* 不是报错、也不是白屏,而是**点了没反应**——changeTab() 会在 isWorkerPlatformTab()
|
||
* 返回 false 时直接 return,tab 渲染得出来却永远切不过去。
|
||
*
|
||
* 因此这里只保留唯一一份 WORKER_PLATFORM_TAB_KEYS,并配套单测守住
|
||
* 「登记了查询缓存却没登记合法 tab」这类漏改。
|
||
*/
|
||
|
||
/** 所有可作为 tab 的 key(新增 tab 只改这里)。 */
|
||
export const WORKER_PLATFORM_TAB_KEYS: readonly string[] = [
|
||
'orders',
|
||
'consignment-inventory',
|
||
'consignment-contacts',
|
||
'consignment-submissions',
|
||
'leaderboard',
|
||
'cancel-requests',
|
||
'feedbacks',
|
||
'after-sales',
|
||
'announcement',
|
||
'rules',
|
||
'order-service',
|
||
'consignment-config',
|
||
'product-match',
|
||
'categories',
|
||
'workers',
|
||
'finance',
|
||
'levels',
|
||
'notifications',
|
||
'risk-control',
|
||
]
|
||
|
||
/**
|
||
* 切到某个 tab 时需要失效的 react-query key,用于「切入即为最新状态」。
|
||
*
|
||
* 注意:这里的 key 未必都是 tab——例如 `hall-config` 是「杂项配置」tab 内部的一个区块。
|
||
* 未登记的 tab 切换时不额外失效任何查询(仍会刷新概览)。
|
||
*/
|
||
export const WORKER_PLATFORM_TAB_QUERY_KEYS: Record<string, string[][]> = {
|
||
'consignment-inventory': [['admin-consignment-inventories'], ['admin-consignment-stats']],
|
||
'consignment-contacts': [['admin-consignment-contacts']],
|
||
'consignment-submissions': [
|
||
['admin-consignment-submissions'],
|
||
['admin-consignment-submissions-pending-total'],
|
||
],
|
||
orders: [['admin-worker-platform-orders'], ['admin-worker-platform-summary']],
|
||
'cancel-requests': [['admin-work-order-cancel-requests']],
|
||
'after-sales': [['admin-after-sales-orders'], ['admin-after-sales-stats']],
|
||
feedbacks: [['admin-feedbacks']],
|
||
rules: [['admin-product-rules']],
|
||
'order-service': [
|
||
['admin-order-service-profiles'],
|
||
['admin-order-service-auto-publish-jobs'],
|
||
['admin-categories'],
|
||
],
|
||
'consignment-config': [['admin-consignment-profiles'], ['admin-categories']],
|
||
'product-match': [['admin-product-match']],
|
||
categories: [['admin-categories']],
|
||
workers: [['admin-workers'], ['admin-worker-users']],
|
||
leaderboard: [['admin-leaderboard']],
|
||
finance: [['admin-finance-settlements'], ['admin-finance-withdrawals']],
|
||
levels: [['admin-worker-levels']],
|
||
notifications: [['admin-notifications']],
|
||
announcement: [['admin-announcements']],
|
||
'hall-config': [['admin-hall-config']],
|
||
'risk-control': [['admin-worker-risk-overview'], ['admin-worker-risk-events']],
|
||
}
|
||
|
||
/**
|
||
* 只登记了查询缓存、但本身不是 tab 的 key。
|
||
* 目前只有 hall-config:它是「杂项配置」tab 内部的一个区块。
|
||
*/
|
||
export const WORKER_PLATFORM_NON_TAB_QUERY_KEYS: readonly string[] = ['hall-config']
|
||
|
||
export function isWorkerPlatformTab(tab: string | null): tab is string {
|
||
return WORKER_PLATFORM_TAB_KEYS.includes(String(tab || ''))
|
||
}
|