diff --git a/src/components/Table/src/components/settings/ColumnSetting.vue b/src/components/Table/src/components/settings/ColumnSetting.vue index 85921fa1..5c465641 100644 --- a/src/components/Table/src/components/settings/ColumnSetting.vue +++ b/src/components/Table/src/components/settings/ColumnSetting.vue @@ -210,7 +210,9 @@ // 更新 showIndexColumn showIndexColumnUpdate(e.target.checked); // 更新 showIndexColumn 缓存 - props.cache && tableSettingStore.setShowIndexColumn(e.target.checked); + props.cache && + typeof route.name === 'string' && + tableSettingStore.setShowIndexColumn(route.name, e.target.checked); }; // 是否显示选择列 @@ -220,7 +222,9 @@ // 更新 showRowSelection showRowSelectionUpdate(e.target.checked); // 更新 showRowSelection 缓存 - props.cache && tableSettingStore.setShowRowSelection(e.target.checked); + props.cache && + typeof route.name === 'string' && + tableSettingStore.setShowRowSelection(route.name, e.target.checked); }; // 更新列缓存 @@ -435,12 +439,18 @@ // 从缓存恢复 const restore = () => { - // 设置过才恢复 - if (typeof tableSettingStore.getShowIndexColumn === 'boolean') { - isIndexColumnShow.value = defaultIsIndexColumnShow && tableSettingStore.getShowIndexColumn; - } - if (typeof tableSettingStore.getShowRowSelection === 'boolean') { - isRowSelectionShow.value = defaultIsRowSelectionShow && tableSettingStore.getShowRowSelection; + if (typeof route.name === 'string') { + const isIndexColumnShowCache = tableSettingStore.getShowIndexColumn(route.name); + // 设置过才恢复 + if (typeof isIndexColumnShowCache === 'boolean') { + isIndexColumnShow.value = defaultIsIndexColumnShow && isIndexColumnShowCache; + } + + const isRowSelectionShowCache = tableSettingStore.getShowRowSelection(route.name); + // 设置过才恢复 + if (typeof isRowSelectionShowCache === 'boolean') { + isRowSelectionShow.value = defaultIsRowSelectionShow && isRowSelectionShowCache; + } } // 序号列更新 onIndexColumnShowChange({ diff --git a/src/store/modules/tableSetting.ts b/src/store/modules/tableSetting.ts index a32e5f96..b6055afd 100644 --- a/src/store/modules/tableSetting.ts +++ b/src/store/modules/tableSetting.ts @@ -26,11 +26,15 @@ export const useTableSettingStore = defineStore({ }, // getShowIndexColumn(state) { - return state.setting?.showIndexColumn; + return (routerName: string) => { + return state.setting?.showIndexColumn?.[routerName]; + }; }, // getShowRowSelection(state) { - return state.setting?.showRowSelection; + return (routerName: string) => { + return state.setting?.showRowSelection?.[routerName]; + }; }, // getColumns(state) { @@ -59,18 +63,24 @@ export const useTableSettingStore = defineStore({ ); }, // - setShowIndexColumn(show: boolean) { + setShowIndexColumn(routerName: string, show: boolean) { this.setTableSetting( Object.assign({}, this.setting, { - showIndexColumn: show, + showIndexColumn: { + ...this.setting?.showIndexColumn, + [routerName]: show, + }, }), ); }, // - setShowRowSelection(show: boolean) { + setShowRowSelection(routerName: string, show: boolean) { this.setTableSetting( Object.assign({}, this.setting, { - showRowSelection: show, + showRowSelection: { + ...this.setting?.showRowSelection, + [routerName]: show, + }, }), ); }, diff --git a/types/store.d.ts b/types/store.d.ts index 96cbba70..3bd85830 100644 --- a/types/store.d.ts +++ b/types/store.d.ts @@ -54,7 +54,7 @@ export interface BeforeMiniState { export interface TableSetting { size: Nullable; - showIndexColumn: Nullable; + showIndexColumn: Recordable>; columns: Recordable>>; - showRowSelection: Nullable; + showRowSelection: Recordable>; }