From ae63493e4767c91d0e28cc5368138c00833d096a Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 16 十二月 2025 17:01:58 +0800
Subject: [PATCH] 优化

---
 admin/src/components/common/CommonHeader.vue |  270 +++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 197 insertions(+), 73 deletions(-)

diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index 2e95744..9c4dce0 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -2,35 +2,56 @@
   <div class="common-header">
     <div class="header">
       <div class="logo">
-        <div class="title">{{ title }}</div>
+        <div class="title"> <img src="@/assets/system.png" alt="" />{{ title }}</div>
         <div class="list">
-          <div class="item active">
-            <div>鏈嶅姟涓績</div>
-            <div class="linellae"></div>
-          </div>
-          <div  class="item" v-for="(item,index) in topMenuList.list" :key="item.id"  @click="getHeaderNav(item)" :index="index">{{item.label}}</div>
-<!--          <div class="item" @click="getHeaderNav('0')">瀹夐槻涓績</div>
-          <div class="item" @click="getHeaderNav('1')">娑堟帶涓績</div>
-          <div class="item" @click="getHeaderNav('2')">鑳界涓績</div>
-          <div class="item" @click="getHeaderNav('7')">鍚庡嫟涓績</div>
-          <div class="item" @click="getHeaderNav('3')">椹鹃┒鑸�</div>-->
-          <!-- <div class="item" @click="handleTest">娴嬭瘯</div> -->
+            <div  :class="index==currentIndex?'item active':'item'" v-for="(item,index) in topMenuList.list" :key="item.id"  @click="getHeaderNav(item,index)" :index="index">{{item.label}}
+              <div v-if="index==currentIndex" class="linellae"></div>
+            </div>
         </div>
-        <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
       </div>
       <div class="user">
-        <el-dropdown v-if="isLogined" trigger="click">
-          <span class="el-dropdown-link">
-            <!-- <img v-if="userInfo != null" :src="userInfo.avatar == null ? `${require('@/assets/avatar/man.png')}` : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i> -->
-            <img v-if="userInfo != null" style="width: 30px !important" src="@/assets/avatar/man.png" alt="" />{{
-              userInfo | displayName
-            }}<i class="el-icon-arrow-down el-icon--right"></i>
-          </span>
-          <el-dropdown-menu slot="dropdown">
-            <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>
-            <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>
-          </el-dropdown-menu>
-        </el-dropdown>
+          <div class="user-search">
+              <div class="user-search-left">
+                <span>鍏ㄩ儴</span>
+                  <img src="@/assets/icons/xl.png" alt="">
+              </div>
+              <div class="user-search-right">
+                  <input type="text" placeholder="璇疯緭鍏�" />
+                  <img src="@/assets/icons/sousuo.png" alt="">
+              </div>
+          </div>
+          <div class="user-images">
+              <img src="@/assets/icons/ic_1.jpg" alt="">
+              <img src="@/assets/icons/ic_2.png" alt="">
+              <img src="@/assets/icons/ic_3.jpg" alt="">
+              <img src="@/assets/icons/ic_4.jpg" alt="">
+              <img src="@/assets/icons/ic_5.jpg" alt="">
+              <img src="@/assets/icons/ic_6.jpg" alt="">
+              <img src="@/assets/icons/ic_7.jpg" alt="">
+              <img src="@/assets/icons/ic_8.jpg" alt="">
+          </div>
+          <el-dropdown v-if="isLogined" trigger="click">
+            <span class="el-dropdown-link" style="cursor: pointer; color: rgba(255,255,255,.56);">
+              {{ userInfo | displayName }}
+              <i class="el-icon-arrow-down el-icon--right"></i>
+            </span>
+            <el-dropdown-menu slot="dropdown">
+              <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>
+              <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>
+            </el-dropdown-menu>
+          </el-dropdown>
+<!--        <el-dropdown v-if="isLogined" trigger="click">-->
+<!--          <span class="el-dropdown-link">-->
+<!--            &lt;!&ndash; <img v-if="userInfo != null" :src="userInfo.avatar == null ? `${require('@/assets/avatar/man.png')}` : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon&#45;&#45;right"></i> &ndash;&gt;-->
+<!--            <img v-if="userInfo != null" style="width: 30px !important" src="@/assets/avatar/man.png" alt="" />{{-->
+<!--              userInfo | displayName-->
+<!--            }}<i class="el-icon-arrow-down el-icon&#45;&#45;right"></i>-->
+<!--          </span>-->
+<!--          <el-dropdown-menu slot="dropdown">-->
+<!--            <el-dropdown-item @click.native="changePwd">淇敼瀵嗙爜</el-dropdown-item>-->
+<!--            <el-dropdown-item @click.native="logout">閫�鍑虹櫥褰�</el-dropdown-item>-->
+<!--          </el-dropdown-menu>-->
+<!--        </el-dropdown>-->
       </div>
     </div>
     <!-- 淇敼瀵嗙爜 -->
@@ -44,7 +65,7 @@
             show-password></el-input>
         </el-form-item>
         <el-form-item label="鏂板瘑鐮�" prop="newPwd" required>
-          <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜锛屽瘑鐮侀渶鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ"
+          <el-input v-model="changePwdData.form.newPwd" type="password" placeholder="璇疯緭鍏ユ柊瀵嗙爜锛岃嚦灏戝寘鎷暟瀛椼�佸ぇ鍐欏瓧姣嶃�佸皬鍐欏瓧姣嶃�佺壒娈婂瓧绗︿腑鐨勪笁绉嶅瓧绗︼紝涓旇嚦灏�8浣嶆暟"
             maxlength="20" show-password></el-input>
         </el-form-item>
         <!-- <div style="font-size: 12px;color:#999999">瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ</div> -->
@@ -107,7 +128,7 @@
     }
   },
   computed: {
-    ...mapState(['menuData', 'userInfo', 'topMenuList'])
+    ...mapState(['menuData', 'userInfo', 'topMenuList', 'currentIndex'])
     // title () {
     //   return this.$route.meta.title
     // }
@@ -134,7 +155,7 @@
     }
   },
   methods: {
-    ...mapMutations(['setUserInfo', 'switchCollapseMenu', 'clearUserInfo']),
+    ...mapMutations(['setUserInfo', 'switchCollapseMenu', 'clearUserInfo', 'setTopMenuCurrent', 'setCurrentIndex']),
     // 淇敼瀵嗙爜
     changePwd () {
       this.visible.changePwd = true
@@ -146,32 +167,54 @@
       if (!value) {
         callback(new Error('璇疯緭鍏ュ瘑鐮�'))
       } else {
-        const lengthValid = /^.{6,20}$/.test(value)
-        const hasLetter = /[a-zA-Z]/.test(value)
-        const hasNumber = /[0-9]/.test(value)
-        const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value)
-
-        const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length
-
-        if (!lengthValid) {
-          callback(new Error('瀵嗙爜闀垮害闇�涓�6鍒�20涓瓧绗�'))
-        } else if (typesCount < 2) {
-          callback(new Error('瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ'))
+        // const lengthValid = /^.{6,20}$/.test(value)
+        // const hasLetter = /[a-zA-Z]/.test(value)
+        // const hasNumber = /[0-9]/.test(value)
+        // const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value)
+        //
+        // const typesCount = [hasLetter, hasNumber, hasSpecial].filter(Boolean).length
+        //
+        // if (!lengthValid) {
+        //   callback(new Error('瀵嗙爜闀垮害闇�涓�6鍒�20涓瓧绗�'))
+        // } else if (typesCount < 2) {
+        //   callback(new Error('瀵嗙爜闇�鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃涓殑鑷冲皯涓ょ'))
+        // } else {
+        //   callback() // 楠岃瘉閫氳繃
+        // }
+        let typeCount = 0;
+        if (/[a-z]/.test(value)) typeCount++; // 灏忓啓瀛楁瘝
+        if (/[A-Z]/.test(value)) typeCount++; // 澶у啓瀛楁瘝
+        if (/\d/.test(value)) typeCount++;    // 鏁板瓧
+        if (/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(value)) typeCount++; // 鐗规畩瀛楃
+        if (typeCount >= 3) {
+          callback()
         } else {
-          callback() // 楠岃瘉閫氳繃
+          callback(new Error('鑷冲皯鍖呮嫭鏁板瓧銆佸ぇ鍐欏瓧姣嶃�佸皬鍐欏瓧姣嶃�佺壒娈婂瓧绗︿腑鐨勪笁绉嶅瓧绗︼紝涓旇嚦灏�8浣嶆暟'))
         }
       }
     },
-    getHeaderNav (item) {
-      if (item.url && item.url === 'goHKAF' && item.params != null) {
-        this.getHKAFHeaderNav(item.params)
-      } else if (item.url && item.url.indexOf('http') === 0) {
-        window.open(item.url, '_blank')
+    getHeaderNav (item,index) {
+      this.setCurrentIndex(index)
+      if(item.linkType === 0){
+        this.setTopMenuCurrent(item)
+      }else{
+        if (item.url && item.url === 'goHKAF' && item.params != null) {
+          this.getHKAFHeaderNav(item.params, item.label)
+        } else if (item.url && item.url.indexOf('http') === 0) {
+          window.open(item.url, '_blank')
+        }
       }
     },
-    getHKAFHeaderNav (type) {
+    getHKAFHeaderNav (type, label) {
       getAppHeaderNav(type).then(res => {
-        window.open(res, '_blank')
+        if (label === '瀹夐槻涓績') {
+          let openWindow = window.open(res, '_blank')
+          setTimeout(() => {
+            openWindow.close()
+          }, 7 * 1000)
+        } else {
+          window.open(res, '_blank')
+        }
       })
     },
     handleTest () {
@@ -257,8 +300,9 @@
           newPwd: this.changePwdData.form.newPwd
         })
           .then(() => {
+            console.log('淇敼鎴愬姛')
             this.$tip.apiSuccess('淇敼鎴愬姛')
-            this.$store.commit('setUserInfo', { needChangePwd: 1 })
+            // this.$store.commit('setUserInfo', { needChangePwd: 1 })
             this.visible.changePwd = false
           })
           .catch(e => {
@@ -295,31 +339,32 @@
 
 .list {
   flex: 1;
-  display: flex;
-  align-items: center;
   margin-left: 60px;
-
-  .item {
-    margin-right: 40px;
-    font-size: 16px;
-    font-weight: 400;
+  margin-top: 10px;
     display: flex;
-    flex-direction: column;
     align-items: center;
-    justify-content: flex-start;
-    height: 40px;
-    cursor: pointer;
+    .item {
+      margin-right: 40px;
+      font-size: 16px;
+      font-weight: 400;
+      display: flex;
+      flex-direction: column;
+      align-items: center;
+      justify-content: flex-start;
+      height: 40px;
+      cursor: pointer;
 
-    .linellae {
-      width: 64px;
-      height: 2px;
-      background: #FFFFFF;
+      .linellae {
+        width: 64px;
+        height: 2px;
+        background: #FFFFFF;
+      }
     }
-  }
 
-  .active {
-    font-weight: 500;
-  }
+    .active {
+      font-weight: 500;
+    }
+
 }
 
 .header {
@@ -334,7 +379,7 @@
     box-sizing: border-box;
     min-width: 360px;
     height: 56px;
-    padding: 10px 30px;
+    padding: 10px 20px;
     // flex-shrink: 0;
     line-height: 36px;
     font-size: 22px;
@@ -344,7 +389,18 @@
     align-items: center;
 
     .title {
-      width: 240px;
+      display: flex;
+      color: rgb(255, 255, 255);
+      font-size: 18px;
+      font-weight: 700;
+      font-family: "Microsoft Yahei", "sans-serif", "segoe UI", "PingFang SC", arial, Helvetica;
+      //font-size: 18px;
+      //width: 320px;
+      img{
+        width:auto ;
+        height: 32px;
+        margin-right: 5px;
+      }
     }
 
     // display: inline;
@@ -356,15 +412,83 @@
   }
 
   .user {
-    width: 212px;
+    /*width: 152px;*/
     box-sizing: border-box;
     height: 56px;
     padding-right: 25px;
-    background: url("../../assets/images/top_ic_bolang@2x.png") no-repeat;
+    /*background: url("../../assets/images/top_ic_bolang@2x.png") no-repeat;*/
     flex-shrink: 0;
     text-align: right;
-    cursor: pointer;
-
+    display: flex;
+    align-items: center;
+    .user-search {
+        width: 346px;
+        height: 32px;
+        border-radius: 30px;
+        border: 1px solid rgba(255,255,255,.56);
+        margin-right: 15px;
+        display: flex;
+        align-items: center;
+        .user-search-left {
+            flex-shrink: 0;
+            width: 106px;
+            height: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            span {
+                font-size: 14px;
+                font-weight: 400;
+                color: rgba(255,255,255,.56);
+                margin-right: 10px;
+            }
+            img {
+                top: 0;
+                margin: 0;
+                width: 20px;
+                height: 16px;
+            }
+        }
+        .user-search-right {
+            flex: 1;
+            height: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            padding-right: 10px;
+            box-sizing: border-box;
+            input {
+                flex: 1;
+                height: 100%;
+                font-size: 14px;
+                font-weight: 400;
+                color: rgba(255,255,255,.56);
+                border: none;
+                outline: none;
+                background-color: rgba(0,0,0,0);
+                &::placeholder {
+                    color: rgba(255,255,255,.56);
+                }
+            }
+            img {
+                top: 0;
+                margin: 0;
+                width: 20px;
+                height: 20px;
+            }
+        }
+    }
+    .user-images {
+        height: 100%;
+        display: flex;
+        align-items: center;
+        img {
+            top: 0 !important;
+            width: 24px;
+            height: 24px;
+            margin-right: 15px;
+        }
+    }
     .el-dropdown {
       top: 2px;
       color: #fff;

--
Gitblit v1.9.3