From 3d7be16ba28560f6d308d4e405310b0d1c0d5855 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 17 十二月 2025 09:35:42 +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..945df5a 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">-->
+<!-- <!– <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>
</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