perf: 桌面版头部菜单

This commit is contained in:
fit2cloud-chenyw 2024-11-25 10:33:38 +08:00
parent 1d788750fb
commit b32112b3db
4 changed files with 65 additions and 4 deletions

View File

@ -11,8 +11,9 @@ ALTER TABLE `visualization_link_jump_target_view_info`
ADD COLUMN `target_type` varchar(50) NULL COMMENT '联动目标类型 view 图表 filter 过滤组件 outParams 外部参数';
ALTER TABLE `visualization_link_jump_target_view_info`
MODIFY COLUMN `target_view_id` varchar(50) NULL DEFAULT NULL COMMENT '目标图表ID' AFTER `source_field_active_id`,
MODIFY COLUMN `target_field_id` varchar(50) NULL DEFAULT NULL COMMENT '目标字段ID' AFTER `target_view_id`;
MODIFY COLUMN `target_view_id` varchar(50) NULL DEFAULT NULL COMMENT '目标图表ID';
ALTER TABLE `visualization_link_jump_target_view_info`
MODIFY COLUMN `target_field_id` varchar(50) NULL DEFAULT NULL COMMENT '目标字段ID';
update visualization_link_jump_target_view_info set target_type = 'view';
ALTER TABLE `data_visualization_info`

View File

@ -0,0 +1,55 @@
<script lang="ts" setup>
import iconSetting from '@/assets/svg/icon-setting.svg'
import { useRouter } from 'vue-router'
import { useAppearanceStoreWithOut } from '@/store/modules/appearance'
import { computed } from 'vue'
const appearanceStore = useAppearanceStoreWithOut()
const navigateBg = computed(() => appearanceStore.getNavigateBg)
const { push, resolve } = useRouter()
const redirectUser = () => {
const sysMenu = resolve('/sys-setting')
const kidPath = sysMenu.matched[0].children[0].path
push(`${sysMenu.path}/${kidPath}`)
}
</script>
<template>
<el-tooltip class="box-item" effect="dark" content="系统设置" placement="top">
<div
class="sys-setting in-iframe-setting"
:class="{
'is-light-setting': navigateBg && navigateBg === 'light'
}"
>
<el-icon @click="redirectUser">
<Icon class="icon-setting" name="icon-setting"
><iconSetting class="svg-icon icon-setting"
/></Icon>
</el-icon>
</div>
</el-tooltip>
</template>
<style lang="less" scoped>
.sys-setting {
margin: 0 10px 0 0;
padding: 5px;
height: 28px;
width: 28px;
border-radius: 4px;
overflow: hidden;
cursor: pointer;
&:hover {
background-color: #1e2738;
}
}
.in-iframe-setting {
margin-left: 10px !important;
}
.is-light-setting {
&:hover {
background-color: #1f23291a !important;
}
}
</style>

View File

@ -23,6 +23,7 @@ import AiComponent from '@/layout/components/AiComponent.vue'
import { findBaseParams } from '@/api/aiComponent'
import AiTips from '@/layout/components/AiTips.vue'
import CopilotCom from '@/layout/components/Copilot.vue'
import DesktopSetting from './DesktopSetting.vue'
const appearanceStore = useAppearanceStoreWithOut()
const { push } = useRouter()
@ -211,6 +212,9 @@ onMounted(() => {
<div v-if="showOverlay && appearanceStore.getShowAi" class="overlay"></div>
<div v-if="showOverlayCopilot && appearanceStore.getShowCopilot" class="overlay"></div>
</div>
<div v-else class="operate-setting">
<desktop-setting />
</div>
</el-header>
</template>

View File

@ -7,10 +7,11 @@ import { useRouter } from 'vue-router'
import AccountOperator from '@/layout/components/AccountOperator.vue'
import { useAppearanceStoreWithOut } from '@/store/modules/appearance'
import { useI18n } from '@/hooks/web/useI18n'
import { isDesktop } from '@/utils/ModelUtil'
const appearanceStore = useAppearanceStoreWithOut()
const { push } = useRouter()
const { t } = useI18n()
const desktop = isDesktop()
const props = withDefaults(
defineProps<{
title: string
@ -43,7 +44,7 @@ const navigate = computed(() => appearanceStore.getNavigate)
<span class="work">{{ t('work_branch.back_to_work_branch') }}</span>
</span>
<AccountOperator />
<AccountOperator v-if="!desktop" />
</div>
</el-header>
</template>