diff --git a/packages/business/src/components/TablePage.vue b/packages/business/src/components/TablePage.vue index 4bff1193a9..4d496a2f55 100644 --- a/packages/business/src/components/TablePage.vue +++ b/packages/business/src/components/TablePage.vue @@ -94,7 +94,7 @@ :page-sizes="[10, 20, 50, 100]" :page-size.sync="page.size" :total="page.total" - @size-change="fetch(1)" + @size-change="handleSizeChange" @current-change="handleCurrent" > @@ -118,6 +118,44 @@ import { makeDragNodeImage } from '../shared' import SelectClassify from './SelectClassify' +const tableSettings = { + settings: {}, + + init() { + this.load() + }, + + getPageSize(routeName, defaultSize = 20) { + return this.settings[routeName]?.pageSize || defaultSize + }, + + setPageSize(routeName, pageSize) { + const setting = this.settings[routeName] + + if (setting) { + setting.pageSize = pageSize + } else { + this.settings[routeName] = { pageSize } + } + + this.save() + }, + + save() { + localStorage.setItem('TAPDATA_TABLE_SETTINGS', JSON.stringify(this.settings)) + }, + + load() { + const settings = localStorage.getItem('TAPDATA_TABLE_SETTINGS') + if (settings) { + this.settings = JSON.parse(settings) + } + } +} + +// Initialize settings on creation +tableSettings.init() + export default { components: { Classification, @@ -148,11 +186,16 @@ export default { draggable: Boolean }, data() { + const isDaas = process.env.VUE_APP_PLATFORM === 'DAAS' + + console.log('settings', localStorage.getItem('TAPDATA_TABLE_SETTINGS'), this.settings,) + return { + isDaas, loading: false, page: { current: 1, - size: this.defaultPageSize, + size: tableSettings.getPageSize(this.$route.name, this.defaultPageSize), total: 0 }, list: [], @@ -306,11 +349,14 @@ export default { } catch (e) { console.error(e) } + }, + handleSizeChange(val) { + tableSettings.setPageSize(this.$route.name, val) + this.fetch(1) } } } -