feat: add SingleRecordMnt component for student record maintenance with search, add, edit, view, and delete functionalities

This commit is contained in:
skytek_xinliang
2026-03-26 11:24:37 +08:00
parent 507afcc99c
commit 069141794e
116 changed files with 15247 additions and 107 deletions
+26
View File
@@ -0,0 +1,26 @@
// 全域 Session 事件(Playground 專用)
//
// 目的:
// - 避免 axios interceptor 直接 import Pinia store / router 造成循環依賴
// - 由 App.vue 在 UI 層統一處理登出流程(清狀態、導頁、提示訊息)
export const SESSION_FORCE_LOGOUT_EVENT = 'sk-playground:session-force-logout'
type ForceLogoutDetail = {
message?: string
}
let forceLogoutEmitted = false
export function emitForceLogout (detail: ForceLogoutDetail) {
// 避免同一波大量 401 觸發多次登出流程
if (forceLogoutEmitted) return
forceLogoutEmitted = true
window.dispatchEvent(new CustomEvent(SESSION_FORCE_LOGOUT_EVENT, { detail }))
// 下一個 event loop 再允許觸發(避免把 guard 永久鎖住)
setTimeout(() => {
forceLogoutEmitted = false
}, 0)
}