import router from '@/router' import useMenuStore from './menu' import useRouteStore from './route' import useSettingsStore from './settings' import useTabbarStore from './tabbar' import api from '@/api' import { clearId } from "@/utils/composables/routeUtils"; // 导入工具方法 const useUserStore = defineStore( // 唯一ID 'user', () => { const settingsStore = useSettingsStore() const routeStore = useRouteStore() const menuStore = useMenuStore() const tabbarStore = useTabbarStore() const userName = ref(localStorage.userName ?? '') const token = ref(localStorage.token ?? '') const avatar = ref(localStorage.avatar ?? '') const userInfo = ref(localStorage.userInfo ?? '') const realName = JSON.parse(userInfo.value)?.name ?? ''; const permissions = ref([]) const staticRouter = ref([]) const isLogin = computed(() => { if (token.value) { return true } return false }) //登录 async function login(data: { userName: string passWord: string captcha: string system: string captchaId: number }) { const res = await api.userApi.login(data) localStorage.setItem('userName', data.userName) localStorage.setItem('token', res.data.token) userName.value = data.userName token.value = res.data.token avatar.value = 'https://fantastic-admin.hurui.me/logo.png' const result = await api.userApi.getCurUserInfo() localStorage.setItem('userDeptId', result.data.deptId) localStorage.setItem('userInfo', JSON.stringify(result.data)) userInfo.value = result.data } //获取运营交付菜单 async function getMenu(codeItem) { const res = await api.menuApi.getTenantConfig({ ...codeItem }) if (res.code === 200) { // staticRouter.value=JSON.parse(res.data.sysConfig) localStorage.setItem("menu", res.data.sysConfig) // routeStore.routesRaw=JSON.parse(res.data.sysConfig) } } // 登出 async function logout(redirect = router.currentRoute.value.fullPath) { localStorage.removeItem('userName') localStorage.removeItem('token') localStorage.removeItem('avatar') localStorage.removeItem('userInfo') userName.value = '' token.value = '' // avatar.value = '' permissions.value = [] routeStore.removeRoutes() menuStore.setActived(0) settingsStore.settings.tabbar.enable && tabbarStore.clean() router.push({ name: 'login', query: { ...(redirect !== settingsStore.settings.home.fullPath && router.currentRoute.value.name !== 'login' && { redirect }), }, }) clearId() } // 获取权限 async function getPermissions() { const res = await api.menuApi.getAllButtons() permissions.value = res.data } // 修改密码 async function editPassword(data: { password: string newpassword: string }) { await api.userApi.passwordEdit(data) } return { userName, realName, token, avatar, permissions, isLogin, staticRouter, login, logout, getPermissions, editPassword, getMenu, userInfo } }, ) export default useUserStore