| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | <script lang="ts">import logo from "@/assets/images/logo.png";import { EMitt, ESidebarLayoutEnum, EThemeSetting } from "@/constants/enum";import emits from "@/utils/emits";import { getThemeConfigCacheByKey } from "@/utils/theme";import { defineComponent, reactive } from "vue";import { useAppStore } from "@/store";import BaseSidebar from "../sidebar/base-sidebar.vue";import Breadcrumb from "./breadcrumb.vue";import CollapseSidebarBtn from "./collapse-sidebar-btn.vue";import Expand from "./expand.vue";import HeaderMixNavMenus from "./header-mix-nav-menus.vue";import Logo from "./logo.vue";import "@/assets/css/header.less";/** * 顶部主区域 */export default defineComponent({  name: "Header",  components: { BaseSidebar, Breadcrumb, CollapseSidebarBtn, Expand, HeaderMixNavMenus, Logo },  setup() {    const store = useAppStore();    const state = reactive({      sidebarLayout: getThemeConfigCacheByKey(EThemeSetting.NavLayout)    });    emits.on(EMitt.OnSetNavLayout, (vl) => {      state.sidebarLayout = vl;    });    const onRefresh = () => {      emits.emit(EMitt.OnReloadTabPage);    };    return { store, state, onRefresh, logo, ESidebarLayoutEnum };  }});</script><template>  <div class="rr-header-ctx">    <div class="rr-header-ctx-logo hidden-xs-only">      <logo :logoUrl="logo" logoName="传秀AI终端管理系统"></logo>    </div>    <div class="rr-header-right">      <div class="rr-header-right-left">        <div class="rr-header-right-items rr-header-action" :style="`display:${state.sidebarLayout === ESidebarLayoutEnum.Top ? 'none' : ''}`">          <collapse-sidebar-btn></collapse-sidebar-btn>          <div @click="onRefresh" style="cursor: pointer">            <div class="el-badge">              <el-icon><refresh-right /></el-icon>            </div>          </div>        </div>        <div class="rr-header-right-left-br ele-scrollbar-hide hidden-xs-only">          <base-sidebar v-if="state.sidebarLayout === ESidebarLayoutEnum.Top" mode="horizontal" :router="true"></base-sidebar>          <header-mix-nav-menus v-else-if="state.sidebarLayout === ESidebarLayoutEnum.Mix"></header-mix-nav-menus>          <breadcrumb v-else></breadcrumb>        </div>      </div>      <div style="flex-shrink: 0">        <expand :userName="store.state.user.username"></expand>      </div>    </div>  </div></template>
 |