fix(layout): 扩大顶栏图标与用户菜单点击热区
This commit is contained in:
1 parent
0d862dfe1d
commit
96b213354b
2 files changed
+39
-8
No files matched your search
@@ -40,10 +40,19 @@ const dialogVisible = ref<boolean>(false)
|
|||||||
const lockScreen = () => {
|
const lockScreen = () => {
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 点击整行菜单项都能触发(之前 click 绑在内层文字 div 上,点到菜单项左右内边距没反应)
|
||||||
|
const handleCommand = (command: string) => {
|
||||||
|
if (command === 'lock') {
|
||||||
|
lockScreen()
|
||||||
|
} else if (command === 'logout') {
|
||||||
|
loginOut()
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<ElDropdown class="custom-hover" :class="prefixCls" trigger="click">
|
<ElDropdown class="custom-hover" :class="prefixCls" trigger="click" @command="handleCommand">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<img
|
<img
|
||||||
v-if="avatarUrl"
|
v-if="avatarUrl"
|
||||||
@@ -63,12 +72,8 @@ const lockScreen = () => {
|
|||||||
</div>
|
</div>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
<ElDropdownMenu>
|
<ElDropdownMenu>
|
||||||
<ElDropdownItem>
|
<ElDropdownItem command="lock">{{ t('lock.lockScreen') }}</ElDropdownItem>
|
||||||
<div @click="lockScreen">{{ t('lock.lockScreen') }}</div>
|
<ElDropdownItem command="logout">{{ t('common.loginOut') }}</ElDropdownItem>
|
||||||
</ElDropdownItem>
|
|
||||||
<ElDropdownItem>
|
|
||||||
<div @click="loginOut">{{ t('common.loginOut') }}</div>
|
|
||||||
</ElDropdownItem>
|
|
||||||
</ElDropdownMenu>
|
</ElDropdownMenu>
|
||||||
</template>
|
</template>
|
||||||
</ElDropdown>
|
</ElDropdown>
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import TranscodeNoticeButton from './TranscodeNoticeButton.vue'
|
|||||||
import { Screenfull } from '@/components/Screenfull'
|
import { Screenfull } from '@/components/Screenfull'
|
||||||
import { Breadcrumb } from '@/components/Breadcrumb'
|
import { Breadcrumb } from '@/components/Breadcrumb'
|
||||||
import { useAppStore } from '@/store/modules/app'
|
import { useAppStore } from '@/store/modules/app'
|
||||||
|
import { useUserStore } from '@/store/modules/user'
|
||||||
import { useDesign } from '@/hooks/web/useDesign'
|
import { useDesign } from '@/hooks/web/useDesign'
|
||||||
|
|
||||||
const { getPrefixCls, variables } = useDesign()
|
const { getPrefixCls, variables } = useDesign()
|
||||||
@@ -18,6 +19,16 @@ const prefixCls = getPrefixCls('tool-header')
|
|||||||
|
|
||||||
const appStore = useAppStore()
|
const appStore = useAppStore()
|
||||||
|
|
||||||
|
const userStore = useUserStore()
|
||||||
|
|
||||||
|
// 转码通知接口要求 drama:list,创作者账号没有该权限。
|
||||||
|
// 不给入口,避免顶栏每 30 秒轮询打一次 403。
|
||||||
|
const canSeeTranscodeNotice = computed(() => {
|
||||||
|
const permissions = userStore.getUserInfo?.permissions
|
||||||
|
if (Array.isArray(permissions)) return permissions.includes('drama:list')
|
||||||
|
return typeof permissions === 'string' && permissions.split(',').includes('drama:list')
|
||||||
|
})
|
||||||
|
|
||||||
// 面包屑
|
// 面包屑
|
||||||
const breadcrumb = computed(() => appStore.getBreadcrumb)
|
const breadcrumb = computed(() => appStore.getBreadcrumb)
|
||||||
|
|
||||||
@@ -74,7 +85,9 @@ export default defineComponent({
|
|||||||
color="var(--top-header-text-color)"
|
color="var(--top-header-text-color)"
|
||||||
></LocaleDropdown>
|
></LocaleDropdown>
|
||||||
) : undefined}
|
) : undefined}
|
||||||
<TranscodeNoticeButton color="var(--top-header-text-color)"></TranscodeNoticeButton>
|
{canSeeTranscodeNotice.value ? (
|
||||||
|
<TranscodeNoticeButton color="var(--top-header-text-color)"></TranscodeNoticeButton>
|
||||||
|
) : undefined}
|
||||||
<UserInfo></UserInfo>
|
<UserInfo></UserInfo>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -95,6 +108,19 @@ export default defineComponent({
|
|||||||
:deep(.v-user-info) {
|
:deep(.v-user-info) {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 顶栏图标的点击热区原来只有 18px 图标本身,容易点偏导致「点了没反应」。
|
||||||
|
// 统一撑满顶栏高度并左右留出内边距。
|
||||||
|
:deep(.v-screenfull),
|
||||||
|
:deep(.v-size-dropdown),
|
||||||
|
:deep(.v-locale-dropdown),
|
||||||
|
:deep(.v-user-info) {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: 100%;
|
||||||
|
padding: 0 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (width <= 768px) {
|
@media (width <= 768px) {
|
||||||
|
|||||||
Reference in new issue
Block a user