From b417ffcc48caff0f1e177b8445d22683cc9b08af Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期四, 29 十二月 2022 17:02:16 +0800
Subject: [PATCH] 1.角色清单 新增系统变色

---
 src/layout/components/Navbar.vue |  215 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 166 insertions(+), 49 deletions(-)

diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 4b04a7c..f5db9f5 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -5,17 +5,29 @@
     <breadcrumb class="breadcrumb-container" />
 
     <div class="right-menu">
+
+      <!--      <template v-if="device!=='mobile'">-->
+      <template>
+        <search id="header-search" class="right-menu-item" />
+        <!--        <error-log class="errLog-container right-menu-item hover-effect" />-->
+        <screenfull id="screenfull" class="right-menu-item hover-effect" />
+        <!--        <el-tooltip content="Global Size" effect="dark" placement="bottom">-->
+        <!--          <size-select id="size-select" class="right-menu-item hover-effect" />-->
+        <!--        </el-tooltip>-->
+      </template>
+
       <el-dropdown class="avatar-container" trigger="click">
         <div class="avatar-wrapper">
           <!--          <img :src="avatar+'?imageView2/1/w/80/h/80'" class="user-avatar">-->
           <div style="display: flex;align-items: center;margin-top: -5px">
-            <div class="headerImg"><i class="el-icon-user" /></div>
-            <div class="headerName">{{ username }}</div>
+
+            <i class="el-icon-user" style="font-weight: bolder;font-size: 18px;margin-right: 5px;color:#A7A7A7" />
+            <div style=" font-size: 18px;font-family: 'Microsoft YaHei';color:#AAAAAA">{{ username }}</div>
           </div>
 
           <!--          <i class="el-icon-caret-bottom" />-->
         </div>
-        <el-dropdown-menu slot="dropdown" class="user-dropdown">
+        <el-dropdown-menu slot="dropdown" class="user-dropdown" style="text-align: center">
           <!--          <router-link to="/">-->
           <!--            <el-dropdown-item>-->
           <!--              Home-->
@@ -27,16 +39,44 @@
           <!--          <a target="_blank" href="https://panjiachen.github.io/vue-element-admin-site/#/">-->
           <!--            <el-dropdown-item>Docs</el-dropdown-item>-->
           <!--          </a>-->
-          <!--          <el-dropdown-item @click.native="logout">-->
-          <!--            <span style="display:block;">淇敼瀵嗙爜</span>-->
-          <!--          </el-dropdown-item>-->
-          <!--          divided-->
-          <el-dropdown-item @click.native="logout">
-            <span style="display:block;">閫�鍑�</span>
+          <el-dropdown-item @click.native="editPassword">
+            <span style="display:block;">淇敼瀵嗙爜</span>
+          </el-dropdown-item>
+          <el-dropdown-item divided @click.native="logout">
+            <span style="display:block;font-weight: bolder">閫�鍑�</span>
           </el-dropdown-item>
         </el-dropdown-menu>
       </el-dropdown>
     </div>
+    <el-dialog
+      title="淇敼瀵嗙爜"
+      :visible.sync="dialogVisible"
+      width="500px"
+      :close-on-click-modal="false"
+      @close="handleClose"
+      @closed="handleClose"
+    >
+      <el-form ref="dialogForm" :rules="formRules" :model="form" label-width="100px">
+        <!--        <el-form-item label="鐢ㄦ埛缂栫爜锛�">-->
+        <!--          <div>{{ usercode }}</div>-->
+        <!--        </el-form-item>-->
+        <!--        <el-form-item label="鐢ㄦ埛鍚嶇О锛�">-->
+        <!--          <div> {{ username }}</div>-->
+        <!--        </el-form-item>-->
+        <el-form-item label="鍘熷瘑鐮侊細" prop="password">
+          <el-input v-model="form.password" style="width: 220px;" />
+        </el-form-item>
+        <el-form-item label="鏂板瘑鐮侊細" prop="newpassword">
+          <el-input v-model="form.newpassword" style="width: 220px;" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="dialogVisibleCancel">杩斿洖</el-button>
+          <el-button type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -44,27 +84,69 @@
 import { mapGetters } from 'vuex'
 import Breadcrumb from '@/components/Breadcrumb'
 import Hamburger from '@/components/Hamburger'
-import { getCookie, removeCookie, removeToken } from '@/utils/auth'
-import { logout } from '@/api/user'
-import { resetRouter } from '@/router'
+import { getCookie } from '@/utils/auth'
+import { UpdateUserPassword } from '@/api/user'
+import Search from '@/components/HeaderSearch'
+import Screenfull from '@/components/Screenfull'
 
+const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   components: {
     Breadcrumb,
-    Hamburger
+    Hamburger,
+    Search,
+    Screenfull
   },
   computed: {
     ...mapGetters([
       'sidebar',
-      'avatar'
+      'avatar',
+      'device'
     ])
   },
   created() {
-    this.username = getCookie('admin')
+    this.usercode = getCookie('navTabId')
+    this.username = getCookie('username')
   },
   data() {
+    const validatePassword1 = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error('璇疯緭鍏ュ師瀵嗙爜锛�'))
+      } else {
+        if (SER_HZ.test(value)) {
+          return callback(new Error('瀵嗙爜涓嶈兘涓轰腑鏂囷紒'))
+        } else {
+          callback()
+        }
+      }
+    }
+    const validatePassword2 = (rule, value, callback) => {
+      if (!value) {
+        return callback(new Error('璇疯緭鍏ユ柊瀵嗙爜锛�'))
+      } else {
+        if (SER_HZ.test(value)) {
+          return callback(new Error('瀵嗙爜涓嶈兘涓轰腑鏂囷紒'))
+        } else {
+          callback()
+        }
+      }
+    }
     return {
-      username: ''
+      usercode: '',
+      username: '',
+      form: {
+        password: '',
+        newpassword: ''
+      },
+      dialogVisible: false,
+      formRules: {
+        password: [
+          { required: true, validator: validatePassword1, trigger: ['blur', 'change'] }
+        ],
+        newpassword: [
+          { required: true, validator: validatePassword2, trigger: ['blur', 'change'] }
+        ]
+      }
     }
   },
   methods: {
@@ -72,42 +154,55 @@
       this.$store.dispatch('app/toggleSideBar')
     },
     async logout() {
-      // await this.$store.dispatch('user/logout')
-      const usercode = getCookie('navTabId')
-      const username = getCookie('admin')
-      const usertype = getCookie('usertype')
-      const userid = getCookie('userid')
-      const data = {
-        usercode,
-        username,
-        usertype,
-        userid
-      }
-      const res = await logout(data)
-      if (res.code === '200') {
-        removeToken()
-        resetRouter()
-        removeCookie('admin')
-        removeCookie('navTabId')
-        removeCookie('usertype')
-        removeCookie('userid')
-        this.$message.success('閫�鍑烘垚鍔燂紒')
-        this.$router.push('/login')
-        // this.$router.push(`/login?redirect=${this.$route.fullPath}`)
-      }
-      // this.$router.push(`/login`)
+      await this.$store.dispatch('user/logout')
+      this.$message.success('閫�鍑烘垚鍔燂紒')
+      this.$router.push(`/login`)
+    },
+    editPassword() {
+      this.dialogVisible = true
+    },
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          const data = {
+            usercode: this.usercode,
+            username: this.username,
+            password: this.form.password,
+            newpassword: this.form.newpassword
+          }
+          console.log(data)
+          UpdateUserPassword(data).then(res => {
+            if (res.code === '200') {
+              this.$message.success('淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+            }
+          })
+        }
+      })
+    },
+    handleClose() {
+      this.form.password = ''
+      this.form.newpassword = ''
+      this.$refs.dialogForm.clearValidate()
     }
   }
 }
 </script>
 
 <style lang="scss" scoped>
+$main_color: #42b983;
+
 .navbar {
   height: 50px;
   overflow: hidden;
   position: relative;
   background: #fff;
-  box-shadow: 0 1px 4px rgba(0,21,41,.08);
+  box-shadow: 0 1px 4px rgba(0, 21, 41, .08);
+
+  //background-color: #f8f8fa;
 
   .hamburger-container {
     line-height: 46px;
@@ -115,7 +210,7 @@
     float: left;
     cursor: pointer;
     transition: background .3s;
-    -webkit-tap-highlight-color:transparent;
+    -webkit-tap-highlight-color: transparent;
 
     &:hover {
       background: rgba(0, 0, 0, .025)
@@ -130,6 +225,7 @@
     float: right;
     height: 100%;
     line-height: 50px;
+    display: flex;
 
     &:focus {
       outline: none;
@@ -160,13 +256,6 @@
         margin-top: 5px;
         position: relative;
         cursor: pointer;
-        .headerImg{
-          margin: 5px;
-        }
-
-        .headerName{
-          font-weight: bolder;
-        }
 
         .user-avatar {
           cursor: pointer;
@@ -185,5 +274,33 @@
       }
     }
   }
+
+  //.footerButton {
+  //  display: flex;
+  //  justify-content: end;
+  //}
+  //
+  //::v-deep .el-button--primary {
+  //  background-color: $main_color !important;
+  //  height: 30px;
+  //  display: flex;
+  //  align-items: center;
+  //  //border: 1px solid $main_color;
+  //  border: none;
+  //  padding: 0 20px;
+  //}
+  //
+  //::v-deep .el-button--default {
+  //  background-color: #ffffff !important;
+  //  height: 30px;
+  //  display: flex;
+  //  align-items: center;
+  //  padding: 0 20px;
+  //}
+  //
+  //::v-deep .el-input__inner {
+  //  height: 30px;
+  //  line-height: 30px;
+  //}
 }
 </style>

--
Gitblit v1.9.3