chenyc
2025-09-23 afa0ffca1673eb61c27496b9988fa8559678bd94
src/layout/navBars/topBar/user.vue
@@ -1,6 +1,22 @@
<template>
   <div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }">
      <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onComponentSizeChange">
      <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click">
         <div class="layout-navbars-breadcrumb-user-icon">
            <span style="font-weight: 800;">{{userInfos.clientName}}</span>   <el-icon><Location /></el-icon>
         </div>
         <template #dropdown>
            <el-dropdown-menu              class="scrollable-menu">
               <el-dropdown-item v-for="(client,key) in userInfos.clientInfos" :key="key" @click="clientSet(client)" >
                  <span :style="{color:userInfos.clientName===client.clientName?'#409EFF':''}">
                     {{client.clientName}}
                  </span>
               </el-dropdown-item>
            </el-dropdown-menu>
         </template>
      </el-dropdown>
      <!-- <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onComponentSizeChange">
         <div class="layout-navbars-breadcrumb-user-icon">
            <i class="iconfont icon-ziti" :title="$t('message.user.title0')"></i>
         </div>
@@ -11,8 +27,8 @@
               <el-dropdown-item command="small" :disabled="state.disabledSize === 'small'">{{ $t('message.user.dropdownSmall') }}</el-dropdown-item>
            </el-dropdown-menu>
         </template>
      </el-dropdown>
      <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onLanguageChange">
      </el-dropdown> -->
      <!-- <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onLanguageChange">
         <div class="layout-navbars-breadcrumb-user-icon">
            <i
               class="iconfont"
@@ -27,16 +43,16 @@
               <el-dropdown-item command="zh-tw" :disabled="state.disabledI18n === 'zh-tw'">繁體中文</el-dropdown-item>
            </el-dropdown-menu>
         </template>
      </el-dropdown>
      <div class="layout-navbars-breadcrumb-user-icon" @click="onSearchClick">
      </el-dropdown> -->
      <!-- <div class="layout-navbars-breadcrumb-user-icon" @click="onSearchClick">
         <el-icon :title="$t('message.user.title2')">
            <ele-Search />
         </el-icon>
      </div>
      <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">
      </div> -->
      <!-- <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">
         <i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>
      </div>
      <div class="layout-navbars-breadcrumb-user-icon" ref="userNewsBadgeRef" v-click-outside="onUserNewsClick">
      </div> -->
      <!-- <div class="layout-navbars-breadcrumb-user-icon" ref="userNewsBadgeRef" v-click-outside="onUserNewsClick">
         <el-badge :is-dot="true">
            <el-icon :title="$t('message.user.title4')">
               <ele-Bell />
@@ -54,14 +70,14 @@
         :persistent="false"
      >
         <UserNews />
      </el-popover>
      <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
      </el-popover> -->
      <!-- <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
         <i
            class="iconfont"
            :title="state.isScreenfull ? $t('message.user.title6') : $t('message.user.title5')"
            :class="!state.isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"
         ></i>
      </div>
      </div> -->
      <el-dropdown :show-timeout="70" :hide-timeout="50" @command="onHandleCommandClick">
         <span class="layout-navbars-breadcrumb-user-link">
            <img :src="userInfos.photo" class="layout-navbars-breadcrumb-user-link-photo mr5" />
@@ -73,10 +89,10 @@
         <template #dropdown>
            <el-dropdown-menu>
               <el-dropdown-item command="/home">{{ $t('message.user.dropdown1') }}</el-dropdown-item>
               <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item>
               <!-- <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item> -->
               <el-dropdown-item command="/personal">{{ $t('message.user.dropdown2') }}</el-dropdown-item>
               <el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item>
               <el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item>
               <el-dropdown-item command="/tongji">患者健康服务统计</el-dropdown-item>
               <el-dropdown-item command="/userAdmin">用户管理</el-dropdown-item>
               <el-dropdown-item divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
            </el-dropdown-menu>
         </template>
@@ -93,6 +109,8 @@
import { useI18n } from 'vue-i18n';
import { storeToRefs } from 'pinia';
import { useUserInfo } from '/@/stores/userInfo';
import {confirmClient} from '/@/api/login'
import { useThemeConfig } from '/@/stores/themeConfig';
import other from '/@/utils/other';
import mittBus from '/@/utils/mitt';
@@ -212,6 +230,16 @@
const initI18nOrSize = (value: string, attr: string) => {
   (<any>state)[attr] = Local.get('themeConfig')[value];
};
const clientSet=(client:any)=>{
   useUserInfo().setUserCilent({code:client.code,clientName:client.clientName});
   // 缓存客户选择
   Local.set('client_'+client.code,client.code)
   confirmClient('clientCode='+client.code).then((res)=>{
      // 更新token
      Session.set('token', res.data);
      window.location.reload();
   })
}
// 页面加载时
onMounted(() => {
   if (Local.get('themeConfig')) {
@@ -219,9 +247,13 @@
      initI18nOrSize('globalI18n', 'disabledI18n');
   }
});
</script>
</script>
<style scoped lang="scss">
.scrollable-menu {
  max-height: 600px;
  overflow: auto;
}
.layout-navbars-breadcrumb-user {
   display: flex;
   align-items: center;