feat(web): add login, auth store and router guard

This commit is contained in:
2026-07-07 15:25:47 +08:00
parent bcef04a8cc
commit e731ee7a2e
9 changed files with 227 additions and 1 deletions

View File

@@ -27,11 +27,27 @@
<el-menu-item index="/inbound-flow">
<span>入站流程</span>
</el-menu-item>
<el-menu-item index="/flow-trace">
<span>流程追踪</span>
</el-menu-item>
<el-menu-item index="/message-test">
<span>消息测试</span>
</el-menu-item>
<el-menu-item v-if="authStore.roleCodes.includes('platform_admin')" index="/tenant-management">
<span>租户管理</span>
</el-menu-item>
<el-menu-item index="/user-management">
<span>用户管理</span>
</el-menu-item>
</el-menu>
</el-aside>
<el-container>
<el-header class="header">
<span>{{ $route.meta.title || '消息中台' }}</span>
<div class="header-right">
<span class="user-info">{{ authStore.tenantCode }} / {{ authStore.username }}</span>
<el-button type="primary" text @click="handleLogout">退出登录</el-button>
</div>
</el-header>
<el-main>
<router-view />
@@ -41,8 +57,17 @@
</template>
<script setup lang="ts">
import { useRoute } from 'vue-router'
import { useRoute, useRouter } from 'vue-router'
import { useAuthStore } from '../stores/auth'
const route = useRoute()
const router = useRouter()
const authStore = useAuthStore()
function handleLogout() {
authStore.clearAuth()
router.push('/login')
}
</script>
<style scoped>
@@ -67,6 +92,16 @@ const route = useRoute()
border-bottom: 1px solid #e4e7ed;
display: flex;
align-items: center;
justify-content: space-between;
font-weight: 500;
}
.header-right {
display: flex;
align-items: center;
gap: 16px;
}
.user-info {
color: #606266;
font-size: 14px;
}
</style>