From 1eda36201af83f63f4f33afef109730895956aa2 Mon Sep 17 00:00:00 2001 From: LiuHao <liuhaoai545@gmail> Date: 星期五, 21 四月 2023 11:17:07 +0800 Subject: [PATCH] update code style --- src/layout/components/Navbar.vue | 179 +++++++++++++++++++++++++++++++---------------------------- 1 files changed, 93 insertions(+), 86 deletions(-) diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 4972956..960bc2d 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -6,36 +6,44 @@ <div class="right-menu flex align-center"> <template v-if="appStore.device !== 'mobile'"> - <el-select v-model="companyName" - clearable - filterable - reserve-keyword - placeholder="璇烽�夋嫨绉熸埛" - v-if="userId === 1" - @change="dynamicTenantEvent" - @clear="dynamicClearEvent"> - <el-option - v-for="item in tenantList" - :key="item.tenantId" - :label="item.companyName" - :value="item.tenantId"> - </el-option> + <el-select + v-model="companyName" + clearable + filterable + reserve-keyword + :placeholder="$t('navbar.selectTenant')" + v-if="userId === 1 && tenantEnabled" + @change="dynamicTenantEvent" + @clear="dynamicClearEvent" + > + <el-option v-for="item in tenantList" :key="item.tenantId" :label="item.companyName" :value="item.tenantId"> </el-option> <template #prefix><svg-icon icon-class="company" class="el-input__icon input-icon" /></template> </el-select> - <header-search id="header-search" class="right-menu-item" /> - - <el-tooltip content="婧愮爜鍦板潃" effect="dark" placement="bottom"> + <!-- <header-search id="header-search" class="right-menu-item" /> --> + <search-menu ref="searchMenuRef" /> + <el-tooltip content="鎼滅储" effect="dark" placement="bottom"> + <div class="right-menu-item hover-effect" @click="openSearchMenu"> + <svg-icon class-name="search-icon" icon-class="search" /> + </div> + </el-tooltip> + <el-tooltip content="Github" effect="dark" placement="bottom"> <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" /> </el-tooltip> - <el-tooltip content="鏂囨。鍦板潃" effect="dark" placement="bottom"> + <el-tooltip :content="$t('navbar.document')" effect="dark" placement="bottom"> <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" /> </el-tooltip> - <screenfull id="screenfull" class="right-menu-item hover-effect" /> + <el-tooltip :content="$t('navbar.full')" effect="dark" placement="bottom"> + <screenfull id="screenfull" class="right-menu-item hover-effect" /> + </el-tooltip> - <el-tooltip content="甯冨眬澶у皬" effect="dark" placement="bottom"> + <el-tooltip :content="$t('navbar.language')" effect="dark" placement="bottom"> + <lang-select id="lang-select" class="right-menu-item hover-effect" /> + </el-tooltip> + + <el-tooltip :content="$t('navbar.layoutSize')" effect="dark" placement="bottom"> <size-select id="size-select" class="right-menu-item hover-effect" /> </el-tooltip> </template> @@ -48,13 +56,13 @@ <template #dropdown> <el-dropdown-menu> <router-link to="/user/profile" v-if="!dynamic"> - <el-dropdown-item>涓汉涓績</el-dropdown-item> + <el-dropdown-item>{{ $t('navbar.personalCenter') }}</el-dropdown-item> </router-link> <el-dropdown-item command="setLayout"> - <span>甯冨眬璁剧疆</span> + <span>{{ $t('navbar.layoutSetting') }}</span> </el-dropdown-item> <el-dropdown-item divided command="logout"> - <span>閫�鍑虹櫥褰�</span> + <span>{{ $t('navbar.logout') }}</span> </el-dropdown-item> </el-dropdown-menu> </template> @@ -64,102 +72,100 @@ </div> </template> -<script setup> -import { ElMessageBox } from 'element-plus' -import Breadcrumb from '@/components/Breadcrumb' -import TopNav from '@/components/TopNav' -import Hamburger from '@/components/Hamburger' -import Screenfull from '@/components/Screenfull' -import SizeSelect from '@/components/SizeSelect' -import HeaderSearch from '@/components/HeaderSearch' -import RuoYiGit from '@/components/RuoYi/Git' -import RuoYiDoc from '@/components/RuoYi/Doc' -import useAppStore from '@/store/modules/app' -import useUserStore from '@/store/modules/user' -import useSettingsStore from '@/store/modules/settings' +<script setup lang="ts"> +import SearchMenu from './topBar/search.vue'; +import useAppStore from '@/store/modules/app'; +import useUserStore from '@/store/modules/user'; +import useSettingsStore from '@/store/modules/settings'; import { getTenantList } from "@/api/login"; import { dynamicClear, dynamicTenant } from "@/api/system/tenant"; +import { ComponentInternalInstance } from "vue"; +import { TenantVO } from "@/api/types"; -const appStore = useAppStore() -const userStore = useUserStore() -const settingsStore = useSettingsStore() +const appStore = useAppStore(); +const userStore = useUserStore(); +const settingsStore = useSettingsStore(); -const { proxy } = getCurrentInstance(); +const { proxy } = getCurrentInstance() as ComponentInternalInstance; const userId = ref(userStore.userId); const companyName = ref(undefined); -const tenantList = ref([]); +const tenantList = ref<TenantVO[]>([]); // 鏄惁鍒囨崲浜嗙鎴� const dynamic = ref(false); +// 绉熸埛寮�鍏� +const tenantEnabled = ref(true); +// 鎼滅储鑿滃崟 +const searchMenuRef = ref<InstanceType<typeof SearchMenu>>(); + +const openSearchMenu = () => { + searchMenuRef.value?.openSearch(); +} // 鍔ㄦ�佸垏鎹� -function dynamicTenantEvent(tenantId) { +const dynamicTenantEvent = async (tenantId: string) => { if (companyName.value != null && companyName.value !== '') { - dynamicTenant(tenantId).then(res => { - dynamic.value = true; - proxy.$tab.closeAllPage() - proxy.$router.push('/') - }); + await dynamicTenant(tenantId); + dynamic.value = true; + proxy?.$tab.closeAllPage(); + proxy?.$router.push('/'); } } -function dynamicClearEvent() { - dynamicClear().then(res => { - dynamic.value = false; - proxy.$tab.closeAllPage() - proxy.$router.push('/') - }); +const dynamicClearEvent = async () => { + await dynamicClear(); + dynamic.value = false; + proxy?.$tab.closeAllPage(); + proxy?.$router.push('/'); } -// 绉熸埛鍒楄〃 -function initTenantList() { - getTenantList().then(res => { - tenantList.value = res.data; - }); +/** 绉熸埛鍒楄〃 */ +const initTenantList = async () => { + const { data } = await getTenantList(); + tenantEnabled.value = data.tenantEnabled === undefined ? true : data.tenantEnabled; + if (tenantEnabled.value) { + tenantList.value = data.voList; + } } defineExpose({ initTenantList, }) -function toggleSideBar() { - appStore.toggleSideBar() +const toggleSideBar = () => { + appStore.toggleSideBar(false); } -function handleCommand(command) { - switch (command) { - case "setLayout": - setLayout(); - break; - case "logout": - logout(); - break; - default: - break; - } -} - -function logout() { - ElMessageBox.confirm('纭畾娉ㄩ攢骞堕��鍑虹郴缁熷悧锛�', '鎻愮ず', { - confirmButtonText: '纭畾', - cancelButtonText: '鍙栨秷', - type: 'warning' - }).then(() => { - userStore.logOut().then(() => { - location.href = import.meta.env.VITE_APP_CONTEXT_PATH + 'index'; +const logout = async () => { + await ElMessageBox.confirm('纭畾娉ㄩ攢骞堕��鍑虹郴缁熷悧锛�', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' }) - }).catch(() => { }); + await userStore.logout() + location.href = import.meta.env.VITE_APP_CONTEXT_PATH + 'index'; } const emits = defineEmits(['setLayout']) -function setLayout() { - emits('setLayout'); +const setLayout = () => { + emits('setLayout'); +} +// 瀹氫箟Command鏂规硶瀵硅薄 閫氳繃key鐩存帴璋冪敤鏂规硶 +const commandMap: {[key: string]: any} = { + setLayout, + logout +}; +const handleCommand = (command: string) => { + // 鍒ゆ柇鏄惁瀛樺湪璇ユ柟娉� + if (commandMap[command]) { + commandMap[command](); + } } </script> -<style lang='scss' scoped> +<style lang="scss" scoped> -:deep .el-select .el-input__wrapper { +:deep(.el-select .el-input__wrapper) { height:30px; } @@ -245,6 +251,7 @@ width: 40px; height: 40px; border-radius: 10px; + margin-top: 10px; } i { -- Gitblit v1.9.3