权限管理,没有页面修改之前版本
This commit is contained in:
@ -52,11 +52,13 @@
|
||||
import { ref, reactive } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import { ElMessageBox } from 'element-plus' // 引入 ElMessageBox
|
||||
import { usePermissionStore } from '@/stores/permission' // [新增] 引入权限Store
|
||||
import { ElMessageBox } from 'element-plus'
|
||||
import { User, Lock } from '@element-plus/icons-vue'
|
||||
|
||||
const router = useRouter()
|
||||
const userStore = useUserStore()
|
||||
const permissionStore = usePermissionStore() // [新增]
|
||||
const loading = ref(false)
|
||||
const loginFormRef = ref()
|
||||
|
||||
@ -74,23 +76,25 @@ const onLogin = async () => {
|
||||
if (valid) {
|
||||
loading.value = true
|
||||
try {
|
||||
// 执行登录请求
|
||||
// 1. 执行登录请求
|
||||
const success = await userStore.handleLogin(loginForm)
|
||||
|
||||
if (success) {
|
||||
// 成功:跳转
|
||||
// [新增] 2. 登录成功后,立即拉取当前用户的权限字典
|
||||
// 这样进入 Dashboard 时,所有按钮/列的显示状态就已经确定了
|
||||
await permissionStore.loadPermissions()
|
||||
|
||||
// 3. 跳转
|
||||
router.push('/dashboard')
|
||||
} else {
|
||||
// 失败(业务逻辑拒绝,如账号密码错):弹出模态框
|
||||
// 失败(业务逻辑拒绝):弹出模态框
|
||||
showLoginFailAlert('用户名或密码错误')
|
||||
}
|
||||
} catch (error: any) {
|
||||
// 失败(系统错误,如网络断开/500报错):弹出模态框
|
||||
// 优先取后端的报错信息,没有则显示默认
|
||||
// 失败(系统错误):弹出模态框
|
||||
const msg = error.response?.data?.msg || error.message || '登录遇到未知错误'
|
||||
showLoginFailAlert(msg)
|
||||
} finally {
|
||||
// 停止转圈,让用户可以看清弹窗
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
@ -103,8 +107,6 @@ const showLoginFailAlert = (msg: string) => {
|
||||
confirmButtonText: '确定',
|
||||
type: 'error',
|
||||
callback: () => {
|
||||
// 点击确定后,清空密码框,让用户重试
|
||||
// 页面绝对不会刷新,光标还在
|
||||
loginForm.password = ''
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user