1 14.退出功能实现
封装弹窗提示
// src/composables/util.js
import { ElNotification, ElMessageBox } from 'element-plus'
export function showModal(content="提示内容", type="warning", title=""){
return ElMessageBox.confirm(
content,
title,
{
confirmButtonText: "确认",
cancelButtonText: "取消",
type,
}
)
}
退出接口
// src/api/manager.js
export function logout() {
return axios.post("/admin/logout")
}
store 管理退出
// src/sore/index.js
actions: {
...略
// 退出登录
logout({ commit }) {
// 移除 cookie 里的 token
removeToken()
// 清除当用用户状态, vuex
commit('SET_USERINFO',{})
}
}
页面组件
// src/pages/index.vue
<template>
<div>
后台首页
{{ $store.state.user.username }}
<el-button @click="handleLogout">退出登录</el-button>
</div>
</template>
<script setup>
import { logout } from "~/api/manager"
import { showModal,toast } from "~/composables/util"
import { useRouter } from "vue-router"
import { useStore } from "vuex"
const store = useStore()
const router = useRouter()
function handleLogout(){
showModal("是否要退出登录?").then(res=>{
logout()
.finally(()=>{
// 退出
store.dispatch('logout')
// 跳转回登录页
router.push('/login')
// 提示退出登录成功
toast('退出登录成功')
})
})
}
</script>
Last updated