- Changed component names from kebab-case to PascalCase in various files for consistency. - Updated `<router-view>` and `<transition>` to `<RouterView>` and `<Transition>` respectively in App.vue and base-layout.vue. - Refactored AppNaiveUIProvider.vue to use PascalCase for Naive UI providers. - Adjusted language and theme switch buttons to use PascalCase for icon components. - Updated button components in demo pages to use PascalCase for Naive UI buttons. - Modified ESLint rules in route message files to use perfectionist/sort-objects for better key sorting. - Enhanced Vite plugin files to export loadPlugin functions for better plugin management. - Improved plugin loading logic to handle errors and warnings more effectively.
46 lines
1.0 KiB
Vue
46 lines
1.0 KiB
Vue
<script setup lang="tsx">
|
|
const router = useRouter();
|
|
const userStore = useAuthStore();
|
|
const dialog = useDialog();
|
|
|
|
const options = computed(() => [
|
|
{
|
|
label: userStore.userInfo?.nickname || userStore.userInfo?.username || '用户',
|
|
key: 'user',
|
|
disabled: true,
|
|
},
|
|
{
|
|
type: 'divider',
|
|
key: 'd1',
|
|
},
|
|
{
|
|
label: '退出登录',
|
|
key: 'logout',
|
|
icon: () => <icon-material-symbols-logout class="w-4 h-4" />,
|
|
},
|
|
]);
|
|
|
|
function handleSelect(key: string) {
|
|
if (key === 'logout') {
|
|
dialog.warning({
|
|
title: '退出登录',
|
|
content: '确定要退出登录吗?',
|
|
positiveText: '确定',
|
|
negativeText: '取消',
|
|
onPositiveClick: () => {
|
|
userStore.clearToken('用户退出登录');
|
|
router.push('/login');
|
|
},
|
|
});
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<NDropdown :options="options" placement="bottom-end" @select="handleSelect">
|
|
<NButton quaternary circle>
|
|
<IconMaterialSymbolsAccountCircle w-5 h-5 />
|
|
</NButton>
|
|
</NDropdown>
|
|
</template>
|