1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
| import { defineStore } from 'pinia';
|
| import { TABLE_SETTING_KEY } from '@/enums/cacheEnum';
|
| import { Persistent } from '@/utils/cache/persistent';
|
| import type { TableSetting } from '#/store';
| import type { SizeType, ColumnOptionsType } from '@/components/Table/src/types/table';
|
| interface TableSettingState {
| setting: Nullable<Partial<TableSetting>>;
| }
|
| export const useTableSettingStore = defineStore({
| id: 'table-setting',
| state: (): TableSettingState => ({
| setting: Persistent.getLocal(TABLE_SETTING_KEY),
| }),
| getters: {
| getTableSetting(state): Nullable<Partial<TableSetting>> {
| return state.setting;
| },
| //
| getTableSize(state) {
| return state.setting?.size || 'middle';
| },
| //
| getShowIndexColumn(state) {
| return (routerName: string) => {
| return state.setting?.showIndexColumn?.[routerName];
| };
| },
| //
| getShowRowSelection(state) {
| return (routerName: string) => {
| return state.setting?.showRowSelection?.[routerName];
| };
| },
| //
| getColumns(state) {
| return (routerName: string) => {
| return state.setting?.columns && state.setting?.columns[routerName]
| ? state.setting?.columns[routerName]
| : null;
| };
| },
| },
| actions: {
| setTableSetting(setting: Partial<TableSetting>) {
| this.setting = Object.assign({}, this.setting, setting);
| Persistent.setLocal(TABLE_SETTING_KEY, this.setting, true);
| },
| resetTableSetting() {
| Persistent.removeLocal(TABLE_SETTING_KEY, true);
| this.setting = null;
| },
| //
| setTableSize(size: SizeType) {
| this.setTableSetting(
| Object.assign({}, this.setting, {
| size,
| }),
| );
| },
| //
| setShowIndexColumn(routerName: string, show: boolean) {
| this.setTableSetting(
| Object.assign({}, this.setting, {
| showIndexColumn: {
| ...this.setting?.showIndexColumn,
| [routerName]: show,
| },
| }),
| );
| },
| //
| setShowRowSelection(routerName: string, show: boolean) {
| this.setTableSetting(
| Object.assign({}, this.setting, {
| showRowSelection: {
| ...this.setting?.showRowSelection,
| [routerName]: show,
| },
| }),
| );
| },
| //
| setColumns(routerName: string, columns: Array<ColumnOptionsType>) {
| this.setTableSetting(
| Object.assign({}, this.setting, {
| columns: {
| ...this.setting?.columns,
| [routerName]: columns,
| },
| }),
| );
| },
| clearColumns(routerName: string) {
| this.setTableSetting(
| Object.assign({}, this.setting, {
| columns: {
| ...this.setting?.columns,
| [routerName]: undefined,
| },
| }),
| );
| },
| },
| });
|
|