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