[탭 기능 개선] 탭 초기화 및 활성 탭 변경 로직 추가, 주석 정리
This commit is contained in:
@@ -15,7 +15,7 @@ export const useTabsStore = defineStore("tabs", {
|
|||||||
activeTab: 1,
|
activeTab: 1,
|
||||||
}),
|
}),
|
||||||
actions: {
|
actions: {
|
||||||
// ✅ 새 탭 추가 (기본 페이지는 "/")
|
// 새 탭 추가 (기본 페이지는 "/")
|
||||||
addTab() {
|
addTab() {
|
||||||
const { $router } = useNuxtApp();
|
const { $router } = useNuxtApp();
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ export const useTabsStore = defineStore("tabs", {
|
|||||||
return key;
|
return key;
|
||||||
},
|
},
|
||||||
|
|
||||||
// ✅ 활성 탭 내용 변경 (서브메뉴 클릭)
|
// 활성 탭 내용 변경 (서브메뉴 클릭)
|
||||||
updateActiveTab(sub: { label: string; to: string; componentName: string }) {
|
updateActiveTab(sub: { label: string; to: string; componentName: string }) {
|
||||||
const { $router } = useNuxtApp();
|
const { $router } = useNuxtApp();
|
||||||
|
|
||||||
@@ -46,6 +46,7 @@ export const useTabsStore = defineStore("tabs", {
|
|||||||
$router.push(`/${tab?.key}${tab?.to}`);
|
$router.push(`/${tab?.key}${tab?.to}`);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 활설 탭 제거
|
||||||
removeTab(key: number) {
|
removeTab(key: number) {
|
||||||
this.tabs = this.tabs.filter(t => t.key !== key);
|
this.tabs = this.tabs.filter(t => t.key !== key);
|
||||||
if (this.activeTab === key) {
|
if (this.activeTab === key) {
|
||||||
@@ -55,6 +56,7 @@ export const useTabsStore = defineStore("tabs", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 활성 탭 변경
|
||||||
setActiveTab(key: number) {
|
setActiveTab(key: number) {
|
||||||
const { $router } = useNuxtApp();
|
const { $router } = useNuxtApp();
|
||||||
this.activeTab = key;
|
this.activeTab = key;
|
||||||
@@ -62,6 +64,15 @@ export const useTabsStore = defineStore("tabs", {
|
|||||||
const tab = this.tabs.find(t => t.key === this.activeTab);
|
const tab = this.tabs.find(t => t.key === this.activeTab);
|
||||||
$router.push(`/${tab?.key}${tab?.to}`);
|
$router.push(`/${tab?.key}${tab?.to}`);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 탭 초기화
|
||||||
|
resetTabs() {
|
||||||
|
const { $router } = useNuxtApp();
|
||||||
|
|
||||||
|
this.tabs = [defaultTab];
|
||||||
|
this.activeTab = 1;
|
||||||
|
$router.push(defaultTab.to);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
persist: true,
|
persist: true,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import { useTabsStore } from "./tab";
|
||||||
|
|
||||||
export const useUserStore = defineStore(
|
export const useUserStore = defineStore(
|
||||||
"user",
|
"user",
|
||||||
() => {
|
() => {
|
||||||
@@ -11,6 +13,8 @@ export const useUserStore = defineStore(
|
|||||||
|
|
||||||
// 권한 스토어 참조
|
// 권한 스토어 참조
|
||||||
const permissionsStore = usePermissionsStore();
|
const permissionsStore = usePermissionsStore();
|
||||||
|
// 탭 스토어 참조
|
||||||
|
const tabsStore = useTabsStore();
|
||||||
|
|
||||||
interface LoginData {
|
interface LoginData {
|
||||||
userId: string;
|
userId: string;
|
||||||
@@ -29,7 +33,10 @@ export const useUserStore = defineStore(
|
|||||||
user.value = data;
|
user.value = data;
|
||||||
isLoggedIn.value = true;
|
isLoggedIn.value = true;
|
||||||
|
|
||||||
// 로그인 성공 시 권한 데이터 가져오기
|
// 로그인 성공 시
|
||||||
|
// 탭 초기화
|
||||||
|
tabsStore.resetTabs();
|
||||||
|
// 권한 데이터 가져오기
|
||||||
await permissionsStore.fetchPermissions();
|
await permissionsStore.fetchPermissions();
|
||||||
|
|
||||||
return { success, data };
|
return { success, data };
|
||||||
@@ -45,8 +52,10 @@ export const useUserStore = defineStore(
|
|||||||
user.value = null;
|
user.value = null;
|
||||||
isLoggedIn.value = false;
|
isLoggedIn.value = false;
|
||||||
|
|
||||||
// 권한 데이터도 초기화
|
// 권한 데이터 초기화
|
||||||
permissionsStore.clearPermissions();
|
permissionsStore.clearPermissions();
|
||||||
|
// 탭 초기화
|
||||||
|
tabsStore.resetTabs();
|
||||||
|
|
||||||
useApi("/members/logout", { method: "post" });
|
useApi("/members/logout", { method: "post" });
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user