- 后端新增聚合用户偏好 paginationPrefs(每页条数候选列表与默认每页条数),提供 GET/PUT /api/setting/pagination-prefs,默认候选 [10,20,50,100]、默认每页 20,非法值自动过滤并回退 - 后端新增 /category/page、/tag/page、/channel/page、/email-bill/configs/page、/email-bill/sender-rules/page 分页接口,原全量接口保持不变以免影响下拉、筛选、AI 与导出 - 前端新增共享 composables/usePageSizeOptions.ts 与 useTablePageSize.ts,所有表格统一取用候选列表并记住各自上次选择的每页条数,优先级为表格记忆 > 全局默认 > 20 - 各表格上次选择以聚合偏好 finance.pagination.tablePageSizes 存于本机 localStorage,收支记录页旧的 filterPrefs.pageSize 自动迁移 - 设置页外观设置新增「表格每页条数选项」分组,可增删候选值并配置默认每页条数,保存后全局即时生效 - 路由守卫在已登录时预加载分页偏好,保证表格页首次渲染即使用配置值 - 前端分类、标签、渠道、邮箱配置、发件人规则表格接入后端分页 - 补充中文、英文、日文三语文案
50 lines
2.0 KiB
TypeScript
50 lines
2.0 KiB
TypeScript
// 本地存储键常量:界面/用户偏好统一以 finance. 前缀命名,作为唯一来源供路由与各页面复用
|
|
|
|
/** 当前使用的本地存储键 */
|
|
export const STORAGE_KEYS = {
|
|
// 语言偏好
|
|
locale: 'finance.locale',
|
|
// 邮箱账单页标签页
|
|
emailBillTab: 'finance.emailBill.tab',
|
|
// 系统日志页标签页
|
|
logsTab: 'finance.logs.tab',
|
|
// 账单导入的账单类型
|
|
billImportBillType: 'finance.billImport.billType',
|
|
// 统计面板偏好
|
|
dashboardPrefs: 'finance.dashboard.prefs',
|
|
// 统计面板 AI 查询历史
|
|
dashboardAiSearchHistory: 'finance.dashboard.aiSearchHistory',
|
|
// 统计面板 AI 查询浮窗位置尺寸
|
|
dashboardAiQueryWindow: 'finance.dashboard.aiQueryWindow',
|
|
// 收支记录 AI 建议范围
|
|
transactionAiScope: 'finance.transaction.aiScope',
|
|
// 收支记录 AI 记账方式
|
|
transactionAiRecordTab: 'finance.transaction.aiRecordTab',
|
|
// 收支记录备注关键词历史
|
|
transactionRemarkHistory: 'finance.transaction.remarkHistory',
|
|
// 收支记录筛选偏好(收支记录页与统计面板共用)
|
|
transactionFilterPrefs: 'finance.transaction.filterPrefs',
|
|
// 各表格每页大小偏好(聚合 JSON,按表格键区分,本机记忆)
|
|
paginationTablePageSizes: 'finance.pagination.tablePageSizes',
|
|
// 账单关系类型
|
|
transactionRelationType: 'finance.transaction.relationType',
|
|
// 收支记录 AI 查询历史
|
|
transactionAiQueryHistory: 'finance.transaction.aiQueryHistory',
|
|
// 收支记录 AI 查询浮窗位置尺寸
|
|
transactionAiQueryWindow: 'finance.transaction.aiQueryWindow',
|
|
// 内容区滚动位置(sessionStorage,按路由拼接后缀)
|
|
scrollPrefix: 'finance.scroll.',
|
|
} as const
|
|
|
|
/** 历史遗留的存储键(未带 finance. 前缀),首次读取时迁移到新键 */
|
|
export const LEGACY_STORAGE_KEYS = {
|
|
locale: 'locale',
|
|
emailBillTab: 'emailBill.tab',
|
|
logsTab: 'logs.tab',
|
|
} as const
|
|
|
|
/** 生成指定路由的滚动位置存储键 */
|
|
export function scrollKey(path: string): string {
|
|
return `${STORAGE_KEYS.scrollPrefix}${path}`
|
|
}
|