From 1b9fea7d4af68d8f933b2dc42bf6084b9646f64c Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期二, 04 三月 2025 08:39:55 +0800
Subject: [PATCH] 修改作业等级名称

---
 src/layout/navBars/breadcrumb/user.vue | 1005 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 533 insertions(+), 472 deletions(-)

diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue
index 9c7cc17..826a1bf 100644
--- a/src/layout/navBars/breadcrumb/user.vue
+++ b/src/layout/navBars/breadcrumb/user.vue
@@ -1,520 +1,581 @@
 <template>
-    <div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }">
-        <div class="logo">
-            <img src="../../../assets/menu/companyLogo.png" />
-            <span>{{ systemName }}</span>
+  <div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }">
+    <div class="logo">
+      <!--            <img src="../../../assets/menu/companyLogo.png" />-->
+      <h2>智能安全数字化平台</h2>
+      <span>{{ systemName }}</span>
+    </div>
+    <div style="display: flex; align-items: center; padding-right: 5px">
+      <div @click="backToMenu()" class="backBtn">返回首页</div>
+      <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>
-        <div style="display: flex; align-items: center; padding-right: 5px">
-            <div @click="backToMenu()" class="backBtn">返回首页</div>
-            <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>
-                <template #dropdown>
-                    <el-dropdown-menu>
-                        <el-dropdown-item command="large" :disabled="disabledSize === 'large'">{{ $t('message.user.dropdownLarge') }}</el-dropdown-item>
-                        <el-dropdown-item command="default" :disabled="disabledSize === 'default'">{{ $t('message.user.dropdownDefault') }}</el-dropdown-item>
-                        <el-dropdown-item command="small" :disabled="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">-->
-            <!--            <div class="layout-navbars-breadcrumb-user-icon">-->
-            <!--                <i class="iconfont" :class="disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'" :title="$t('message.user.title1')"></i>-->
-            <!--            </div>-->
-            <!--            <template #dropdown>-->
-            <!--                <el-dropdown-menu>-->
-            <!--                    <el-dropdown-item command="zh-cn" :disabled="disabledI18n === 'zh-cn'">简体中文</el-dropdown-item>-->
-            <!--                    <el-dropdown-item command="en" :disabled="disabledI18n === 'en'">English</el-dropdown-item>-->
-            <!--                    <el-dropdown-item command="zh-tw" :disabled="disabledI18n === 'zh-tw'">繁體中文</el-dropdown-item>-->
-            <!--                </el-dropdown-menu>-->
-            <!--            </template>-->
-            <!--        </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">-->
-            <!--            <i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>-->
-            <!--        </div>-->
-            <!--        <div class="layout-navbars-breadcrumb-user-icon">-->
-            <!--            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">-->
-            <!--                <template #reference>-->
-            <!--                    <el-badge :is-dot="true">-->
-            <!--                        <el-icon :title="$t('message.user.title4')">-->
-            <!--                            <ele-Bell />-->
-            <!--                        </el-icon>-->
-            <!--                    </el-badge>-->
-            <!--                </template>-->
-            <!--                <template #default>-->
-            <!--                    <UserNews />-->
-            <!--                </template>-->
-            <!--            </el-popover>-->
-            <!--        </div>-->
-            <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
-                <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')" :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
-            </div>
-            <el-dropdown :show-timeout="70" :hide-timeout="50" @command="onHandleCommandClick">
+        <template #dropdown>
+          <el-dropdown-menu>
+            <el-dropdown-item command="large" :disabled="disabledSize === 'large'">{{
+                $t('message.user.dropdownLarge')
+              }}
+            </el-dropdown-item>
+            <el-dropdown-item command="default" :disabled="disabledSize === 'default'">
+              {{ $t('message.user.dropdownDefault') }}
+            </el-dropdown-item>
+            <el-dropdown-item command="small" :disabled="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">-->
+      <!--            <div class="layout-navbars-breadcrumb-user-icon">-->
+      <!--                <i class="iconfont" :class="disabledI18n === 'en' ? 'icon-fuhao-yingwen' : 'icon-fuhao-zhongwen'" :title="$t('message.user.title1')"></i>-->
+      <!--            </div>-->
+      <!--            <template #dropdown>-->
+      <!--                <el-dropdown-menu>-->
+      <!--                    <el-dropdown-item command="zh-cn" :disabled="disabledI18n === 'zh-cn'">简体中文</el-dropdown-item>-->
+      <!--                    <el-dropdown-item command="en" :disabled="disabledI18n === 'en'">English</el-dropdown-item>-->
+      <!--                    <el-dropdown-item command="zh-tw" :disabled="disabledI18n === 'zh-tw'">繁體中文</el-dropdown-item>-->
+      <!--                </el-dropdown-menu>-->
+      <!--            </template>-->
+      <!--        </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">-->
+      <!--            <i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>-->
+      <!--        </div>-->
+      <!--        <div class="layout-navbars-breadcrumb-user-icon">-->
+      <!--            <el-popover placement="bottom" trigger="click" transition="el-zoom-in-top" :width="300" :persistent="false">-->
+      <!--                <template #reference>-->
+      <!--                    <el-badge :is-dot="true">-->
+      <!--                        <el-icon :title="$t('message.user.title4')">-->
+      <!--                            <ele-Bell />-->
+      <!--                        </el-icon>-->
+      <!--                    </el-badge>-->
+      <!--                </template>-->
+      <!--                <template #default>-->
+      <!--                    <UserNews />-->
+      <!--                </template>-->
+      <!--            </el-popover>-->
+      <!--        </div>-->
+      <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
+        <i class="iconfont" :title="isScreenfull ? $t('message.user.title6') : $t('message.user.title5')"
+           :class="!isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"></i>
+      </div>
+      <el-dropdown :show-timeout="70" :hide-timeout="50" @command="onHandleCommandClick">
                 <span class="layout-navbars-breadcrumb-user-link">
-                    <img src="../../../assets/avator.png" class="layout-navbars-breadcrumb-user-link-photo mr5" style="width: 24px;height: 24px"/>
+                    <img src="../../../assets/avator.png" class="layout-navbars-breadcrumb-user-link-photo mr5"
+                         style="width: 24px;height: 24px"/>
                     {{ userInfos.userName }}
                     <el-icon class="el-icon--right">
-                        <ele-ArrowDown />
+                        <ele-ArrowDown/>
                     </el-icon>
                 </span>
-                <template #dropdown>
-                    <el-dropdown-menu>
-                        <el-dropdown-item command="/newMenu">{{ $t('message.user.dropdown1') }}</el-dropdown-item>
-                        <el-dropdown-item @click="showPwdDialog = true">修改密码</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 divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
-                    </el-dropdown-menu>
-                </template>
-            </el-dropdown>
-          <el-dialog title="修改密码" v-model="showPwdDialog" width="500px">
-            <el-form :model="pwdForm" size="default" ref="pwdRef" :rules="pwdFormRules" label-width="110px">
-              <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-                <el-form-item label="新密码" prop="newPassword">
-                  <el-input v-model.trim="pwdForm.newPassword" placeholder="请输入" type="password" show-password>
-                  </el-input>
-                </el-form-item>
-                <el-form-item label="确认新密码" prop="rePassword">
-                  <el-input v-model.trim="pwdForm.rePassword" placeholder="请输入" type="password" show-password>
-                  </el-input>
-                </el-form-item>
-              </el-col>
-            </el-form>
-            <template #footer>
+        <template #dropdown>
+          <el-dropdown-menu>
+            <el-dropdown-item command="/newMenu">{{ $t('message.user.dropdown1') }}</el-dropdown-item>
+            <el-dropdown-item @click="showPwdDialog = true">修改密码</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 divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
+          </el-dropdown-menu>
+        </template>
+      </el-dropdown>
+      <el-dialog title="修改密码" v-model="showPwdDialog" width="500px">
+        <el-form :model="pwdForm" size="default" ref="pwdRef" :rules="pwdFormRules" label-width="110px">
+          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+            <el-form-item label="新密码" prop="newPassword">
+              <el-input v-model.trim="pwdForm.newPassword" placeholder="请输入" type="password" show-password>
+              </el-input>
+            </el-form-item>
+            <el-form-item label="确认新密码" prop="rePassword">
+              <el-input v-model.trim="pwdForm.rePassword" placeholder="请输入" type="password" show-password>
+              </el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+        <template #footer>
                 <span class="dialog-footer">
                     <el-button @click="showPwdDialog = !showPwdDialog" size="default">取 消</el-button>
                     <el-button type="primary" v-throttle @click="onPwdSubmit" size="default">确 定</el-button>
                 </span>
-            </template>
-          </el-dialog>
-            <Search ref="searchRef" />
-        </div>
+        </template>
+      </el-dialog>
+      <Search ref="searchRef"/>
     </div>
+  </div>
 </template>
 
 <script lang="ts">
-import { ref, getCurrentInstance, computed, reactive, toRefs, onMounted, defineComponent } from 'vue';
-import { useRouter } from 'vue-router';
-import { ElMessageBox, ElMessage } from 'element-plus';
+import {ref, getCurrentInstance, computed, reactive, toRefs, onMounted, defineComponent} from 'vue';
+import {useRouter} from 'vue-router';
+import {ElMessageBox, ElMessage} from 'element-plus';
 import screenfull from 'screenfull';
-import { useI18n } from 'vue-i18n';
-import { storeToRefs } from 'pinia';
-import { useUserInfo } from '/@/stores/userInfo';
-import { useThemeConfig } from '/@/stores/themeConfig';
+import {useI18n} from 'vue-i18n';
+import {storeToRefs} from 'pinia';
+import {useUserInfo} from '/@/stores/userInfo';
+import {useThemeConfig} from '/@/stores/themeConfig';
 import other from '/@/utils/other';
-import { Session, Local } from '/@/utils/storage';
+import {Session, Local} from '/@/utils/storage';
 import UserNews from '/@/layout/navBars/breadcrumb/userNews.vue';
 import Search from '/@/layout/navBars/breadcrumb/search.vue';
-import { useLoginApi } from '/@/api/login';
-import { useMenuApi } from '/@/api/systemManage/menu/index';
+import {useLoginApi} from '/@/api/login';
+import {useMenuApi} from '/@/api/systemManage/menu/index';
 
 const menuApi = useMenuApi();
-import { backEndComponent, getBackEndControlRoutes, initBackEndControlRoutes, setAddRoute, setFilterMenuAndCacheTagsViewRoutes } from '../../../router/backEnd';
-import { NextLoading } from '/@/utils/loading';
-import { useRequestOldRoutes } from '/@/stores/requestOldRoutes';
-import { dynamicRoutes } from '/@/router/route';
+import {
+  backEndComponent,
+  getBackEndControlRoutes,
+  initBackEndControlRoutes,
+  setAddRoute,
+  setFilterMenuAndCacheTagsViewRoutes
+} from '../../../router/backEnd';
+import {NextLoading} from '/@/utils/loading';
+import {useRequestOldRoutes} from '/@/stores/requestOldRoutes';
+import {dynamicRoutes} from '/@/router/route';
 import Cookies from 'js-cookie';
 import {useRoutesList} from "/@/stores/routesList";
 import {verifyPwd} from "/@/utils/toolsValidate";
 import {userApi} from "/@/api/systemManage/user";
 
 export default defineComponent({
-    name: 'layoutBreadcrumbUser',
-    components: { UserNews, Search },
-    setup() {
-        const { t } = useI18n();
-        const { proxy } = <any>getCurrentInstance();
-        const router = useRouter();
-        const stores = useUserInfo();
-        const routeList = storeToRefs(useRoutesList())
-        const storesThemeConfig = useThemeConfig();
-        const { userInfos } = storeToRefs(stores);
-        const { themeConfig } = storeToRefs(storesThemeConfig);
-        const searchRef = ref();
-      const pwdRef = ref();
-      const validatePwd = (rule: any, value: any, callback: any)=>{
-        if(value === ''){
-          callback(new Error('请输入密码'))
-        }else{
-          if(!verifyPwd(value)){
-            callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间'))
-          }else{
-            callback()
-          }
+  name: 'layoutBreadcrumbUser',
+  components: {UserNews, Search},
+  setup() {
+    const {t} = useI18n();
+    const {proxy} = <any>getCurrentInstance();
+    const router = useRouter();
+    const stores = useUserInfo();
+    const routeList = storeToRefs(useRoutesList())
+    const storesThemeConfig = useThemeConfig();
+    const {userInfos} = storeToRefs(stores);
+    const {themeConfig} = storeToRefs(storesThemeConfig);
+    const searchRef = ref();
+    const pwdRef = ref();
+    const validatePwd = (rule: any, value: any, callback: any) => {
+      if (value === '') {
+        callback(new Error('请输入密码'))
+      } else {
+        if (!verifyPwd(value)) {
+          callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间'))
+        } else {
+          callback()
         }
       }
-      const equalToPassword = (rule: any, value: any, callback: any) => {
-        if(value == ''){
-          callback(new Error("请再次确认密码"))
-        }else if (state.pwdForm.newPassword !== value) {
-          callback(new Error("两次输入的密码不一致"))
-        } else {
-          callback();
-        }
-      };
-        const state = reactive({
-            isScreenfull: false,
-            disabledI18n: 'zh-cn',
-            disabledSize: 'large',
-            systemName: '',
-          showPwdDialog: false,
-          pwdForm: {
-            uid: Cookies.get('uid'),
-            newPassword: '',
-            rePassword: ''
-          },
-          pwdFormRules: {
-            newPassword: [{ required: true, validator: validatePwd, trigger: 'blur' }],
-            rePassword: [{ required: true, validator: equalToPassword, trigger: "blur" }]
-          }
-        });
-        // 设置分割样式
-        const layoutUserFlexNum = computed(() => {
-            let num: string | number = '';
-            const { layout, isClassicSplitMenu } = themeConfig.value;
-            const layoutArr: string[] = ['defaults', 'columns'];
-            if (layoutArr.includes(layout) || (layout === 'classic' && !isClassicSplitMenu)) num = '1';
-            else num = '';
-            return num;
-        });
+    }
+    const equalToPassword = (rule: any, value: any, callback: any) => {
+      if (value == '') {
+        callback(new Error("请再次确认密码"))
+      } else if (state.pwdForm.newPassword !== value) {
+        callback(new Error("两次输入的密码不一致"))
+      } else {
+        callback();
+      }
+    };
+    const state = reactive({
+      isScreenfull: false,
+      disabledI18n: 'zh-cn',
+      disabledSize: 'large',
+      systemName: '',
+      showPwdDialog: false,
+      pwdForm: {
+        uid: Cookies.get('uid'),
+        newPassword: '',
+        rePassword: ''
+      },
+      pwdFormRules: {
+        newPassword: [{required: true, validator: validatePwd, trigger: 'blur'}],
+        rePassword: [{required: true, validator: equalToPassword, trigger: "blur"}]
+      }
+    });
+    // 设置分割样式
+    const layoutUserFlexNum = computed(() => {
+      let num: string | number = '';
+      const {layout, isClassicSplitMenu} = themeConfig.value;
+      const layoutArr: string[] = ['defaults', 'columns'];
+      if (layoutArr.includes(layout) || (layout === 'classic' && !isClassicSplitMenu)) num = '1';
+      else num = '';
+      return num;
+    });
 
-      const onPwdSubmit = async () => {
-        pwdRef.value.validate(async (valid:Boolean) => {
-          if(valid){
-            const {rePassword,...data} = state.pwdForm
-            let res = await userApi().pwdModSelf(data);
-            if (res.data.code === '200') {
-              state.showPwdDialog = false
-              ElMessage({
-                type: 'success',
-                message: '密码修改成功,请重新登录',
-                duration: 2000
-              })
-              setTimeout(()=>{
-                useLoginApi()
-                    .signOut()
-                    .then(() => {
-                      Session.clear()
-                      window.location.href = '/'
-                    })
-              },2000)
-            } else {
-              ElMessage({
-                type: 'warning',
-                message: res.data.msg
-              });
-            }
-          }else{
+    const onPwdSubmit = async () => {
+      pwdRef.value.validate(async (valid: Boolean) => {
+        if (valid) {
+          const {rePassword, ...data} = state.pwdForm
+          let res = await userApi().pwdModSelf(data);
+          if (res.data.code === '200') {
+            state.showPwdDialog = false
             ElMessage({
-              type:'warning',
-              message:'请完善信息'
+              type: 'success',
+              message: '密码修改成功,请重新登录',
+              duration: 2000
             })
+            setTimeout(() => {
+              useLoginApi()
+                  .signOut()
+                  .then(() => {
+                    Session.clear()
+                    window.location.href = '/'
+                  })
+            }, 2000)
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: res.data.msg
+            });
+          }
+        } else {
+          ElMessage({
+            type: 'warning',
+            message: '请完善信息'
+          })
+        }
+      })
+    }
+
+    // 全屏点击时
+    const onScreenfullClick = () => {
+      if (!screenfull.isEnabled) {
+        ElMessage.warning('暂不不支持全屏');
+        return false;
+      }
+      screenfull.toggle();
+      screenfull.on('change', () => {
+        if (screenfull.isFullscreen) state.isScreenfull = true;
+        else state.isScreenfull = false;
+      });
+    };
+    // 布局配置 icon 点击时
+    const onLayoutSetingClick = () => {
+      proxy.mittBus.emit('openSetingsDrawer');
+    };
+    // 下拉菜单点击时
+    const onHandleCommandClick = (path: string) => {
+      if (path === 'logOut') {
+        ElMessageBox({
+          closeOnClickModal: false,
+          closeOnPressEscape: false,
+          title: t('message.user.logOutTitle'),
+          message: t('message.user.logOutMessage'),
+          showCancelButton: true,
+          confirmButtonText: t('message.user.logOutConfirm'),
+          cancelButtonText: t('message.user.logOutCancel'),
+          buttonSize: 'default',
+          beforeClose: (action, instance, done) => {
+            if (action === 'confirm') {
+              instance.confirmButtonLoading = true;
+              instance.confirmButtonText = t('message.user.logOutExit');
+              setTimeout(() => {
+                done();
+                setTimeout(() => {
+                  instance.confirmButtonLoading = false;
+                }, 300);
+              }, 700);
+            } else {
+              done();
+            }
           }
         })
-      }
-
-        // 全屏点击时
-        const onScreenfullClick = () => {
-            if (!screenfull.isEnabled) {
-                ElMessage.warning('暂不不支持全屏');
-                return false;
-            }
-            screenfull.toggle();
-            screenfull.on('change', () => {
-                if (screenfull.isFullscreen) state.isScreenfull = true;
-                else state.isScreenfull = false;
-            });
-        };
-        // 布局配置 icon 点击时
-        const onLayoutSetingClick = () => {
-            proxy.mittBus.emit('openSetingsDrawer');
-        };
-        // 下拉菜单点击时
-        const onHandleCommandClick = (path: string) => {
-            if (path === 'logOut') {
-                ElMessageBox({
-                    closeOnClickModal: false,
-                    closeOnPressEscape: false,
-                    title: t('message.user.logOutTitle'),
-                    message: t('message.user.logOutMessage'),
-                    showCancelButton: true,
-                    confirmButtonText: t('message.user.logOutConfirm'),
-                    cancelButtonText: t('message.user.logOutCancel'),
-                    buttonSize: 'default',
-                    beforeClose: (action, instance, done) => {
-                        if (action === 'confirm') {
-                            instance.confirmButtonLoading = true;
-                            instance.confirmButtonText = t('message.user.logOutExit');
-                            setTimeout(() => {
-                                done();
-                                setTimeout(() => {
-                                    instance.confirmButtonLoading = false;
-                                }, 300);
-                            }, 700);
-                        } else {
-                            done();
-                        }
-                    }
-                })
-                    .then(async () => {
-                        let res = await useLoginApi().signOut();
-                        if (res.data.code === '200') {
-                            Session.clear(); // 清除缓存/token等
-                            // 使用 reload 时,不需要调用 resetRoute() 重置路由
-                            window.location.reload();
-                        } else {
-                            ElMessage({
-                                type: 'warning',
-                                message: res.data.msg
-                            });
-                        }
-                    })
-                    .catch(() => {});
-            } else if (path === 'wareHouse') {
-                window.open('https://gitee.com/lyt-top/vue-next-admin');
-            } else {
-                router.push(path);
-            }
-        };
-        // 菜单搜索点击
-        const onSearchClick = () => {
-            searchRef.value.openSearch();
-        };
-        // 组件大小改变
-        const onComponentSizeChange = (size: string) => {
-            Local.remove('themeConfig');
-            themeConfig.value.globalComponentSize = size;
-            Local.set('themeConfig', themeConfig.value);
-            initComponentSize();
-            window.location.reload();
-        };
-        // 语言切换
-        const onLanguageChange = (lang: string) => {
-            Local.remove('themeConfig');
-            themeConfig.value.globalI18n = lang;
-            Local.set('themeConfig', themeConfig.value);
-            proxy.$i18n.locale = lang;
-            initI18n();
-            other.useTitle();
-        };
-        // 设置 element plus 组件的国际化
-        const setI18nConfig = (locale: string) => {
-            proxy.mittBus.emit('getI18nConfig', proxy.$i18n.messages[locale]);
-        };
-        // 初始化言语国际化
-        const initI18n = () => {
-            switch (Local.get('themeConfig').globalI18n) {
-                case 'zh-cn':
-                    state.disabledI18n = 'zh-cn';
-                    setI18nConfig('zh-cn');
-                    break;
-                case 'en':
-                    state.disabledI18n = 'en';
-                    setI18nConfig('en');
-                    break;
-                case 'zh-tw':
-                    state.disabledI18n = 'zh-tw';
-                    setI18nConfig('zh-tw');
-                    break;
-            }
-        };
-        // 初始化全局组件大小
-        const initComponentSize = () => {
-            switch (Local.get('themeConfig').globalComponentSize) {
-                case 'large':
-                    state.disabledSize = 'large';
-                    break;
-                case 'default':
-                    state.disabledSize = 'default';
-                    break;
-                case 'small':
-                    state.disabledSize = 'small';
-                    break;
-            }
-        };
-
-        const getSysName = async () => {
-            if (window.nextLoading === undefined) NextLoading.start();
-            if (!Cookies.get('token')) return false;
-            const res = await menuApi.getMenuAdmin(Cookies.get('projectId') === null ? '' : Cookies.get('projectId'));
-            if (res.data.code === '200') {
-              if(res.data.data && res.data.data[0]){
-                state.systemName = res.data.data[0].project.projectName;
-              }else{
-                state.systemName = ''
+            .then(async () => {
+              let res = await useLoginApi().signOut();
+              if (res.data.code === '200') {
+                Session.clear(); // 清除缓存/token等
+                // 使用 reload 时,不需要调用 resetRoute() 重置路由
+                window.location.reload();
+              } else {
+                ElMessage({
+                  type: 'warning',
+                  message: res.data.msg
+                });
               }
-            } else {
-                console.log('有问题');
-            }
-        };
-        const backToMenu = () => {
-            router.push({ path: 'newMenu' }).then(()=>{
-                routeList.routesList.value = []
+            })
+            .catch(() => {
             });
-        };
-        // const toHome = () => {
-        //     router.push({ path: 'newMenu' });
-        // };
-        // 页面加载时
-        onMounted(() => {
-            if (Local.get('themeConfig')) {
-                initI18n();
-                initComponentSize();
-            }
-            getSysName();
-        });
-        return {
-            userInfos,
-          pwdRef,
-          onPwdSubmit,
-            backToMenu,
-            onLayoutSetingClick,
-            onHandleCommandClick,
-            onScreenfullClick,
-            onSearchClick,
-            onComponentSizeChange,
-            onLanguageChange,
-            searchRef,
-            layoutUserFlexNum,
-            ...toRefs(state)
-        };
-    }
+      } else if (path === 'wareHouse') {
+        window.open('https://gitee.com/lyt-top/vue-next-admin');
+      } else {
+        router.push(path);
+      }
+    };
+    // 菜单搜索点击
+    const onSearchClick = () => {
+      searchRef.value.openSearch();
+    };
+    // 组件大小改变
+    const onComponentSizeChange = (size: string) => {
+      Local.remove('themeConfig');
+      themeConfig.value.globalComponentSize = size;
+      Local.set('themeConfig', themeConfig.value);
+      initComponentSize();
+      window.location.reload();
+    };
+    // 语言切换
+    const onLanguageChange = (lang: string) => {
+      Local.remove('themeConfig');
+      themeConfig.value.globalI18n = lang;
+      Local.set('themeConfig', themeConfig.value);
+      proxy.$i18n.locale = lang;
+      initI18n();
+      other.useTitle();
+    };
+    // 设置 element plus 组件的国际化
+    const setI18nConfig = (locale: string) => {
+      proxy.mittBus.emit('getI18nConfig', proxy.$i18n.messages[locale]);
+    };
+    // 初始化言语国际化
+    const initI18n = () => {
+      switch (Local.get('themeConfig').globalI18n) {
+        case 'zh-cn':
+          state.disabledI18n = 'zh-cn';
+          setI18nConfig('zh-cn');
+          break;
+        case 'en':
+          state.disabledI18n = 'en';
+          setI18nConfig('en');
+          break;
+        case 'zh-tw':
+          state.disabledI18n = 'zh-tw';
+          setI18nConfig('zh-tw');
+          break;
+      }
+    };
+    // 初始化全局组件大小
+    const initComponentSize = () => {
+      switch (Local.get('themeConfig').globalComponentSize) {
+        case 'large':
+          state.disabledSize = 'large';
+          break;
+        case 'default':
+          state.disabledSize = 'default';
+          break;
+        case 'small':
+          state.disabledSize = 'small';
+          break;
+      }
+    };
+
+    const getSysName = async () => {
+      if (window.nextLoading === undefined) NextLoading.start();
+      if (!Cookies.get('token')) return false;
+      const res = await menuApi.getMenuAdmin(Cookies.get('projectId') === null ? '' : Cookies.get('projectId'));
+      if (res.data.code === '200') {
+        if (res.data.data && res.data.data[0]) {
+          state.systemName = res.data.data[0].project.projectName;
+        } else {
+          state.systemName = ''
+        }
+      } else {
+        console.log('有问题');
+      }
+    };
+    const backToMenu = () => {
+      router.push({path: 'newMenu'}).then(() => {
+        routeList.routesList.value = []
+      });
+    };
+    // const toHome = () => {
+    //     router.push({ path: 'newMenu' });
+    // };
+    // 页面加载时
+    onMounted(() => {
+      if (Local.get('themeConfig')) {
+        initI18n();
+        initComponentSize();
+      }
+      getSysName();
+    });
+    return {
+      userInfos,
+      pwdRef,
+      onPwdSubmit,
+      backToMenu,
+      onLayoutSetingClick,
+      onHandleCommandClick,
+      onScreenfullClick,
+      onSearchClick,
+      onComponentSizeChange,
+      onLanguageChange,
+      searchRef,
+      layoutUserFlexNum,
+      ...toRefs(state)
+    };
+  }
 });
 </script>
 
 <style scoped lang="scss">
-    @media screen and (min-width: 1400px) {
-        .logo{
-            img {
-                height: 100%;
-            }
-            span{
-                font-size: 32px;
-                color: #409eff;
-                font-weight: bolder;
-                border-left: 2px solid #409eff;
-                padding-left: 10px
-            }
-        }
-        .backBtn {
-            font-size: 16px;
-            cursor: pointer;
-            margin-right: 20px;
-
-            &:hover {
-                color: #409eff;
-                font-weight: bolder;
-            }
-        }
+@media screen and (min-width: 1400px) {
+  .logo {
+    display: flex;
+    align-items: center;
+    img {
+      height: 100%;
     }
-    @media screen and (min-width: 1200px) and (max-width: 1400px) {
-        .logo{
-            img {
-                height: 90%;
-            }
-            span{
-                font-size: 28px;
-                color: #409eff;
-                font-weight: bolder;
-                border-left: 2px solid #409eff;
-                padding-left: 10px
-            }
-        }
-        .backBtn {
-            font-size: 14px;
-            cursor: pointer;
-            margin-right: 20px;
 
-            &:hover {
-                color: #409eff;
-                font-weight: bolder;
-            }
-        }
+    h2 {
+      width: 220px;
+      font-size: clamp(1.25rem, 0.833rem + 0.56vw, 1.5rem);
+      font-weight: bolder;
+      text-align: center;
+      color: #409eff;
     }
-    @media screen and (max-width: 1024px) {
-        .logo{
-            img {
-                width: 60%;
-                height: auto;
-            }
-            span{
-                font-size: 22px;
-                color: #409eff;
-                font-weight: bolder;
-                border-left: 2px solid #409eff;
-                padding-left: 10px
-            }
-        }
-        .backBtn {
-            font-size: 12px;
-            cursor: pointer;
-            margin-right: 20px;
 
-            &:hover {
-                color: #409eff;
-                font-weight: bolder;
-            }
-        }
+    span {
+      font-size: clamp(1.25rem, 0.833rem + 0.56vw, 1.5rem);
+      color: #333;
+      font-weight: bolder;
+      border-left: 2px solid #409eff;
+      padding-left: 15px
     }
-    .layout-navbars-breadcrumb-user {
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
+  }
+  .backBtn {
+    font-size: 16px;
+    cursor: pointer;
+    margin-right: 20px;
 
-        .logo {
-            height: 75%;
-            padding: 5px 10px;
-            display: flex;
-            align-items: center;
-            overflow: hidden;
-            box-sizing: border-box;
-        }
-        &-link {
-            height: 100%;
-            display: flex;
-            align-items: center;
-            white-space: nowrap;
-            &-photo {
-                width: 25px;
-                height: 25px;
-                border-radius: 100%;
-            }
-        }
-        &-icon {
-            padding: 0 10px;
-            cursor: pointer;
-            color: var(--next-bg-topBarColor);
-            height: 80px;
-            line-height: 80px;
-            display: flex;
-            align-items: center;
-            &:hover {
-                background: var(--next-color-user-hover);
-                i {
-                    display: inline-block;
-                    animation: logoAnimation 0.3s ease-in-out;
-                }
-            }
-        }
-        ::v-deep(.el-dropdown) {
-            color: var(--next-bg-topBarColor);
-        }
-        ::v-deep(.el-badge) {
-            height: 40px;
-            line-height: 40px;
-            display: flex;
-            align-items: center;
-        }
-        ::v-deep(.el-badge__content.is-fixed) {
-            top: 12px;
-        }
+    &:hover {
+      color: #409eff;
+      font-weight: bolder;
     }
+  }
+}
+
+@media screen and (min-width: 1200px) and (max-width: 1400px) {
+  .logo {
+    display: flex;
+    align-items: center;
+    img {
+      height: 100%;
+    }
+
+    h2 {
+      width: 220px;
+      font-size: clamp(1.25rem, 0.833rem + 0.56vw, 1.5rem);
+      font-weight: bolder;
+      text-align: center;
+      color: #409eff;
+    }
+
+    span {
+      font-size: clamp(1.25rem, 0.833rem + 0.56vw, 1.5rem);
+      color: #333;
+      font-weight: bolder;
+      border-left: 2px solid #409eff;
+      padding-left: 15px
+    }
+  }
+  .backBtn {
+    font-size: 14px;
+    cursor: pointer;
+    margin-right: 20px;
+
+    &:hover {
+      color: #409eff;
+      font-weight: bolder;
+    }
+  }
+}
+
+@media screen and (max-width: 1024px) {
+  .logo {
+    display: flex;
+    align-items: center;
+    img {
+      height: 100%;
+    }
+
+    h2 {
+      width: 220px;
+      font-size: clamp(1.25rem, 0.833rem + 0.56vw, 1.5rem);
+      font-weight: bolder;
+      text-align: center;
+      color: #409eff;
+    }
+
+    span {
+      font-size: clamp(1.25rem, 0.833rem + 0.56vw, 1.5rem);
+      color: #333;
+      font-weight: bolder;
+      border-left: 2px solid #409eff;
+      padding-left: 15px
+    }
+  }
+  .backBtn {
+    font-size: 12px;
+    cursor: pointer;
+    margin-right: 20px;
+
+    &:hover {
+      color: #409eff;
+      font-weight: bolder;
+    }
+  }
+}
+
+.layout-navbars-breadcrumb-user {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+
+  .logo {
+    height: 75%;
+    padding: 5px 0;
+    display: flex;
+    align-items: center;
+    overflow: hidden;
+    box-sizing: border-box;
+  }
+
+  &-link {
+    height: 100%;
+    display: flex;
+    align-items: center;
+    white-space: nowrap;
+
+    &-photo {
+      width: 25px;
+      height: 25px;
+      border-radius: 100%;
+    }
+  }
+
+  &-icon {
+    padding: 0 10px;
+    cursor: pointer;
+    color: var(--next-bg-topBarColor);
+    height: 80px;
+    line-height: 80px;
+    display: flex;
+    align-items: center;
+
+    &:hover {
+      background: var(--next-color-user-hover);
+
+      i {
+        display: inline-block;
+        animation: logoAnimation 0.3s ease-in-out;
+      }
+    }
+  }
+
+  ::v-deep(.el-dropdown) {
+    color: var(--next-bg-topBarColor);
+  }
+
+  ::v-deep(.el-badge) {
+    height: 40px;
+    line-height: 40px;
+    display: flex;
+    align-items: center;
+  }
+
+  ::v-deep(.el-badge__content.is-fixed) {
+    top: 12px;
+  }
+}
 </style>

--
Gitblit v1.9.2