Unverified Commit 9c448f89 authored by Wesley Liddick's avatar Wesley Liddick Committed by GitHub
Browse files

Merge pull request #2118 from DaydreamCoding/fix/restore-pagination-localStorage

fix: 恢复表格分页大小 localStorage 持久化
parents 73b87299 f084d30d
...@@ -123,6 +123,7 @@ import { useI18n } from 'vue-i18n' ...@@ -123,6 +123,7 @@ import { useI18n } from 'vue-i18n'
import Icon from '@/components/icons/Icon.vue' import Icon from '@/components/icons/Icon.vue'
import Select from './Select.vue' import Select from './Select.vue'
import { getConfiguredTablePageSizeOptions, normalizeTablePageSize } from '@/utils/tablePreferences' import { getConfiguredTablePageSizeOptions, normalizeTablePageSize } from '@/utils/tablePreferences'
import { setPersistedPageSize } from '@/composables/usePersistedPageSize'
const { t } = useI18n() const { t } = useI18n()
...@@ -224,6 +225,7 @@ const goToPage = (newPage: number) => { ...@@ -224,6 +225,7 @@ const goToPage = (newPage: number) => {
const handlePageSizeChange = (value: string | number | boolean | null) => { const handlePageSizeChange = (value: string | number | boolean | null) => {
if (value === null || typeof value === 'boolean') return if (value === null || typeof value === 'boolean') return
const newPageSize = normalizeTablePageSize(typeof value === 'string' ? parseInt(value, 10) : value) const newPageSize = normalizeTablePageSize(typeof value === 'string' ? parseInt(value, 10) : value)
setPersistedPageSize(newPageSize)
emit('update:pageSize', newPageSize) emit('update:pageSize', newPageSize)
} }
......
import { getConfiguredTableDefaultPageSize, normalizeTablePageSize } from '@/utils/tablePreferences' import { getConfiguredTableDefaultPageSize, normalizeTablePageSize } from '@/utils/tablePreferences'
/** const STORAGE_KEY = 'table-page-size'
* 读取当前系统配置的表格默认每页条数。
* 不再使用本地持久化缓存,所有页面统一以通用表格设置为准。
*/
export function getPersistedPageSize(fallback = getConfiguredTableDefaultPageSize()): number { export function getPersistedPageSize(fallback = getConfiguredTableDefaultPageSize()): number {
if (typeof window !== 'undefined') {
try {
const stored = window.localStorage.getItem(STORAGE_KEY)
if (stored !== null) {
const parsed = Number(stored)
if (Number.isFinite(parsed)) {
return normalizeTablePageSize(parsed)
}
}
} catch (error) {
console.warn('Failed to read persisted page size:', error)
}
}
return normalizeTablePageSize(getConfiguredTableDefaultPageSize() || fallback) return normalizeTablePageSize(getConfiguredTableDefaultPageSize() || fallback)
} }
export function setPersistedPageSize(size: number): void {
if (typeof window === 'undefined') return
try {
window.localStorage.setItem(STORAGE_KEY, String(size))
} catch (error) {
console.warn('Failed to persist page size:', error)
}
}
import { ref, reactive, onUnmounted, toRaw } from 'vue' import { ref, reactive, onUnmounted, toRaw } from 'vue'
import { useDebounceFn } from '@vueuse/core' import { useDebounceFn } from '@vueuse/core'
import type { BasePaginationResponse, FetchOptions } from '@/types' import type { BasePaginationResponse, FetchOptions } from '@/types'
import { getPersistedPageSize } from './usePersistedPageSize' import { getPersistedPageSize, setPersistedPageSize } from './usePersistedPageSize'
interface PaginationState { interface PaginationState {
page: number page: number
...@@ -88,6 +88,7 @@ export function useTableLoader<T, P extends Record<string, any>>(options: TableL ...@@ -88,6 +88,7 @@ export function useTableLoader<T, P extends Record<string, any>>(options: TableL
const handlePageSizeChange = (size: number) => { const handlePageSizeChange = (size: number) => {
pagination.page_size = size pagination.page_size = size
pagination.page = 1 pagination.page = 1
setPersistedPageSize(size)
load() load()
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment