category.ts
1.56 KB
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
import { postShopProductCategory } from '@/service';
import { create, State } from 'zustand';
interface CategoryState extends State {
list: any[];
selectedCategory: string;
selectedSubCategory: string;
selectedFuncCategory: string;
categoryVisible: boolean;
resetFuncValue: string;
resetCategoryValue: string;
}
const useCategoryStore = create<CategoryState>((set, get) => ({
list: [],
selectedCategory: '',
selectedSubCategory: '',
selectedFuncCategory: '',
categoryVisible: true,
resetFuncValue: '',
resetCategoryValue: '',
getList: async () => {
const res = await postShopProductCategory();
const rootList = res.data?.data?.rootCategoryList;
set((state: CategoryState) => {
state.list = rootList || [];
state.resetCategoryValue = state.selectedCategory = rootList[0].categoryDisplayName;
state.selectedSubCategory = rootList[0].list[0].id;
state.resetFuncValue = state.selectedFuncCategory = rootList[0].productFunctions[0].id;
});
},
updateCategory: (value: string) => {
const resetValue = get().resetCategoryValue as string;
set((state: CategoryState) => {
state.selectedCategory = value;
state.selectedFuncCategory = value === resetValue ? get().resetFuncValue : '';
});
},
updateSubCategory: (value: string) => {
set({ selectedSubCategory: value });
},
updateFuncCategory: (value: string = '') => {
set({ selectedFuncCategory: value });
},
updateDisplay: (visible: boolean) => {
set({ categoryVisible: visible });
}
}));
export default useCategoryStore;