diff --git a/miniprogram/stores/user.js b/miniprogram/stores/user.js index 569009ae1..c5134fad3 100644 --- a/miniprogram/stores/user.js +++ b/miniprogram/stores/user.js @@ -9,6 +9,8 @@ export const useUserStore = defineStore('user', () => { const refreshToken = ref('') const userInfo = ref(null) const isLoading = ref(false) + const menuAll = ref(false) + const menuCodes = ref([]) function normalizeUserInfo(raw) { if (!raw || typeof raw !== 'object') return raw || null @@ -68,6 +70,34 @@ export const useUserStore = defineStore('user', () => { uni.setStorageSync(USER_INFO_KEY, userInfo.value) } + async function fetchMenuCodes() { + if (!token.value || !String(token.value).trim()) { + menuAll.value = false + menuCodes.value = [] + return + } + try { + const res = await request({ + url: AUTH_API.MENU_CODES, + method: 'GET' + }) + const result = parseResponseJson(res) + if (!result || result.code !== 200 || !result.data) { + menuAll.value = false + menuCodes.value = [] + return + } + const data = result.data + menuAll.value = !!(data.all || data.isSuperAdmin) + menuCodes.value = Array.isArray(data.menuCodes) + ? data.menuCodes.map((c) => String(c || '').trim()).filter(Boolean) + : [] + } catch { + menuAll.value = false + menuCodes.value = [] + } + } + async function login(params) { isLoading.value = true try { @@ -84,6 +114,7 @@ export const useUserStore = defineStore('user', () => { refreshToken: result.data.refreshToken, userInfo: result.data.userInfo }) + await fetchMenuCodes() return true } uni.showToast({ title: (result && result.message) || '登录失败', icon: 'none' }) @@ -106,6 +137,8 @@ export const useUserStore = defineStore('user', () => { uni.removeStorageSync(TOKEN_KEY) uni.removeStorageSync(REFRESH_TOKEN_KEY) uni.removeStorageSync(USER_INFO_KEY) + menuAll.value = false + menuCodes.value = [] } async function logout() { @@ -158,6 +191,8 @@ export const useUserStore = defineStore('user', () => { refreshToken, userInfo, isLoading, + menuAll, + menuCodes, isLoggedIn, userRole, homePath, @@ -167,6 +202,7 @@ export const useUserStore = defineStore('user', () => { clearLoginInfo, navigateToHome, updateUserInfo, - refreshUserInfo + refreshUserInfo, + fetchMenuCodes } })