feige
2025-03-18 b71b4fa3c592e667e114ba1bcf42a2204d6cbf6d
ruoyi-ui/src/layout/components/Navbar.vue
@@ -7,8 +7,8 @@
    <div class="right-menu">
      <template v-if="device!=='mobile'">
        <search id="header-search" class="right-menu-item" />
      <!--  <search id="header-search" class="right-menu-item" />
        <el-tooltip content="源码地址" effect="dark" placement="bottom">
          <ruo-yi-git id="ruoyi-git" class="right-menu-item hover-effect" />
        </el-tooltip>
@@ -16,7 +16,11 @@
        <el-tooltip content="文档地址" effect="dark" placement="bottom">
          <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />
        </el-tooltip>
 -->
    <el-tooltip  effect="dark" placement="bottom">
      <h1 class="right-menu-item hover-effect" style="text-align: center;display:
     block;line-height: 50px;">{{greeting}}</h1>
    </el-tooltip>
        <screenfull id="screenfull" class="right-menu-item hover-effect" />
        <el-tooltip content="布局大小" effect="dark" placement="bottom">
@@ -27,7 +31,7 @@
      <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
        <div class="avatar-wrapper">
          <img :src="avatar" class="user-avatar">
          <img :src="ximg" class="user-avatar">
          <i class="el-icon-caret-bottom" />
        </div>
        <el-dropdown-menu slot="dropdown">
@@ -68,12 +72,55 @@
    RuoYiGit,
    RuoYiDoc
  },
  data() {
    return {
      xm: {"张":"zhang.png","李":"李.png","曹":"曹.png","曾":"曾.png","赵":"赵.png",
         "陈":"陈.png","邓":"邓.png","范":"范.png","方":"方.png","冯":"冯.png",
        "郭":"郭.png","韩":"韩.png","何":"何.png","胡":"胡.png","黄":"黄.png",
        "蒋":"蒋.png","孔":"孔.png","赖":"赖.png","梁":"梁.png","林":"林.png",
        "马":"马.png","钱":"钱.png","秦":"秦.png","沈":"沈.png","史":"史.png",
        "孙":"孙.png","唐":"唐.png","王":"王.png","卫":"卫.png","吴":"吴.png",
        "肖":"肖.png","许":"许.png","薛":"薛.png","严":"严.png","杨":"杨.png",
       "姚":"姚.png","郑":"郑.png","周":"周.png","朱":"朱.png","庄":"庄.png",
       "钟":"钟.png","苍":"苍.png","岑":"岑.png","昌":"昌.png","成":"成.png",
       "池":"池.png","戴":"戴.png",'狄':"狄.png",'东方':"东方",'费':"费",
       '风':"风.png",'伏':"伏.png",'公孙':"公孙.png",'公羊':"公羊.png",'顾':"顾.png",
       '郭':"郭.png",'韩':"韩.png",'郝':"郝.png",
       "贺":"贺.png","赫连":"赫连.png","花":"花.png","黄":"黄.png","纪":"纪.png",
       "康":"康.png","雷":"雷.png","李":"李.png","廉":"廉.png","梁":"梁.png",
       "皇甫":"皇甫.png","林":"林.png","令狐":"令狐.png","柳":"柳.png",
       "鲁":"鲁.png","罗":"罗.png","孟":"孟.png","米":"米.png","苗":"苗.png",
       "慕容":"慕容.png","穆":"穆.png","南宫":"南宫.png","倪":"倪.png",
       "欧阳":"欧阳.png","庞":"庞.png","彭":"彭.png","皮":"皮.png",
       "平":"平.png","齐":"齐.png","钱":"钱.png","秦":"秦.png","屈":"屈.png",
       "任":"任.png","沙":"沙.png","上官":"上官.png","邵":"邵.png",
       "沈":"沈.png","舒":"舒.png","司马":"司马.png","司徒":"司徒.png",
       "拓跋":"拓跋.png","汤":"汤.png","滕":"滕.png","万俟":"万俟.png","汪":"汪.png","韦":"韦.png",
       "尉迟":"尉迟.png",
       "闻人":"闻人.png","伍":"伍.png","西门":"西门.png","萧":"萧.png","肖":"肖.png",
       "熊":"熊.png","许":"许.png","轩辕":"轩辕.png","薛":"薛.png",
       "严":"严.png","杨":"杨.png","姚":"姚.png",
       "叶":"叶.png","殷":"殷.png","尹":"尹.png","余":"余.png","俞":"俞.png","宇文":"宇文.png",
       "元":"元.png","袁":"袁.png","湛":"湛.png","长孙":"长孙.png","赵":"赵.png",
       "郑":"郑.png","诸葛":"诸葛.png","臧":"臧.png"
     },
      greeting: "",
     ximg: "",
    };
  },
  mounted() {
    this.setGreeting();
  },
  computed: {
    ...mapGetters([
      'sidebar',
      'avatar',
      'device'
    ]),
    setting: {
      get() {
        return this.$store.state.settings.showSettings
@@ -92,9 +139,63 @@
    }
  },
  methods: {
     getLastName(fullname)
     {
        let hyphenated = ['欧阳', '太史', '端木', '上官', '司马', '东方', '独孤', '南宫', '万俟', '闻人',
                          '夏侯', '诸葛', '尉迟', '公羊', '赫连', '澹台', '皇甫', '宗政', '濮阳', '公冶',
                          '太叔', '申屠', '公孙', '慕容', '仲孙', '钟离', '长孙', '宇文', '城池', '司徒',
                          '鲜于', '司空', '汝嫣', '闾丘', '子车', '亓官', '司寇', '巫马', '公西', '颛孙',
                          '壤驷', '公良', '漆雕', '乐正', '宰父', '谷梁', '拓跋', '夹谷', '轩辕', '令狐',
                          '段干', '百里', '呼延', '东郭', '南门', '羊舌', '微生', '公户', '公玉', '公仪',
                          '梁丘', '公仲', '公上', '公门', '公山', '公坚', '左丘', '公伯', '西门', '公祖',
                          '第五', '公乘', '贯丘', '公皙', '南荣', '东里', '东宫', '仲长', '子书', '子桑',
                          '即墨', '达奚', '褚师'];
          let hyset = new Set(hyphenated);
          let vLength = fullname.length;
          // 前为姓,后为名
          let lastname = '', firstname = '';
          if (vLength > 2){
              var preTwoWords = fullname.substr(0, 2);
              // 取命名的前两个字,看是否在复姓库中
              if (hyset.has(preTwoWords)){
                lastname = preTwoWords;
                firstname = fullname.substr(2);
              }else{
                lastname = fullname.substr(0, 1);
                  firstname = fullname.substr(1);
              }
          }else if (vLength === 2){
              // 全名只有两个字时,以前一个为姓,后一下为名
              lastname = fullname.substr(0, 1);
              firstname = fullname.substr(1);
          }else{
            lastname = fullname;
          }
         return lastname;
     },
     setGreeting() {
       const currentTime = new Date();
       const currentHour = currentTime.getHours();
       let name = this.$store.state.user.name
      let lnm = this.getLastName(name)
      if(this.xm[lnm]!=null)
         this.ximg = require("@/assets/images/"+this.xm[lnm])
      else
         this.ximg = require("@/assets/images/login_logo.png")
       if (currentHour < 12) {
         this.greeting = "早上好,"+name;
       } else if (currentHour < 14) {
         this.greeting = "中午好,"+name;
       } else if (currentHour < 18) {
         this.greeting = "下午好,"+name;
       } else {
         this.greeting = "晚上好,"+name;
       }
     },
    toggleSideBar() {
      this.$store.dispatch('app/toggleSideBar')
    },
    async logout() {
      this.$confirm('确定注销并退出系统吗?', '提示', {
        confirmButtonText: '确定',