Newer
Older
KaiFengPC / src / App.vue
@zhangdeliang zhangdeliang on 23 May 2 KB 初始化项目
<template>
  <router-view></router-view>

  <el-popover :width="407" placement="left" v-if="description">
    <template #reference>
      <div class="menuIcons">
        <img src="../src/assets/images/setting/show_menu.png" style="margin-bottom: -3px" />
      </div>
    </template>
    <template #default>
      <div class="menu-description flex flex-v">
        <div class="description-title flex flex-align-center">文档描述</div>
        <div class="description-content" v-html="description"></div>
      </div>
    </template>
  </el-popover>
</template>

<script setup>
import { getToken } from '@/utils/auth';
import { listMenu } from '@/api/menu';
import useSettingsStore from '@/store/modules/settings';
import { handleThemeStyle } from '@/utils/theme';
import { useRouter } from 'vue-router';
const router = useRouter();
const description = ref('');
watch(
  () => router.currentRoute.value.path,
  (newValue, oldValue) => {
    if (!!!router.currentRoute.value.meta.title) return;
    getMenuList(router.currentRoute.value.meta.title);
  },
  { immediate: true }
);
function getMenuList(menuName) {
  if (getToken()) {
    listMenu({ menuName: menuName }).then(res => {
      if (res.data.length) {
        description.value = res.data[0].description;
      } else {
        description.value = '';
      }
    });
  }
}
onMounted(() => {
  nextTick(() => {
    handleThemeStyle(useSettingsStore().theme);
  });
});
</script>
<style lang="scss" scoped>
.menuIcons {
  position: absolute;
  right: 60px;
  bottom: 50px;
  z-index: 999;
  box-shadow: 0px 0px 3px #000000;
  border-radius: 50%;
}
:deep(.el-popper) {
  padding: 0 !important;
}
.menu-description {
  width: 407px;
  border-radius: 2px 2px 0px 0px;

  .description-title {
    width: 400px;
    height: 50px;
    margin: -12px;
    background: #1981ff;
    border-radius: 2px 2px 0px 0px;
    font-size: 18px;
    font-family: Source Han Sans CN;
    font-weight: 500;
    color: #ffffff;
    padding-left: 19px;
  }
  .description-content {
    width: 400px;
    margin-left: -12px;
    margin-right: -12px;
    padding: 24px 12px 12px 12px;
    font-size: 14px;
    font-family: Source Han Sans CN;
    font-weight: 500;
    color: #666666;
  }
}
</style>