MrShi
2025-08-19 30e858fa504b268b9b436afca0a1259cf6e8c488
admin/src/components/common/Header.vue
@@ -7,9 +7,9 @@
        {{title}}
      </h2>
      <div class="user">
              <el-dropdown trigger="click">
          <span class="el-dropdown-link">
            <img v-if="userInfo != null" :src="userInfo.avatar == null ? '@/assets/images/avatar/man.png' : userInfo.avatar" alt="">{{userInfo | displayName}}<i class="el-icon-arrow-down el-icon--right"></i>
        <el-dropdown trigger="click">
          <span class="el-dropdown-link" style="color: white">
            <img v-if="userInfo != null" :src="userInfo.avatar == null ? '@/assets/avatar/man.png' : userInfo.avatar" 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>
@@ -72,7 +72,8 @@
            { required: true, message: '请输入原始密码' }
          ],
          newPwd: [
            { required: true, message: '请输入新密码' }
            { required: true, message: '请输入密码', trigger: 'blur' },
            { validator: this.validatePassword, trigger: 'blur' },
          ],
          confirmPwd: [
            { required: true, message: '请再次输入新密码' }
@@ -110,6 +111,26 @@
        this.$refs.changePwdDataForm.resetFields()
      })
    },
    validatePassword(rule, value, callback) {
      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('密码需包含字母、数字及特殊字符中的至少两种'))
        } else {
          callback() // 验证通过
        }
      }
    },
    /**
     * 确定修改密码
     */
@@ -131,7 +152,7 @@
        updatePwd({
          oldPwd: this.changePwdData.form.oldPwd,
          newPwd: this.changePwdData.form.newPwd
        })
        },true)
          .then(() => {
            this.visible.changePwd = false
            setTimeout(() => {
@@ -171,7 +192,7 @@
.header {
  overflow: hidden;
  padding: 0 25px;
  background: #fff;
  background: #0c6ce3;
  height: 100%;
  display: flex;
  h2 {
@@ -180,7 +201,7 @@
    line-height: $header-height;
    font-size: 19px;
    font-weight: 600;
    color: #606263;
    color: white;
    display: inline;
    & > i {
      font-size: 20px;
@@ -190,6 +211,7 @@
  .user {
    width: 50%;
    flex-shrink: 0;
    color: white;
    text-align: right;
    .el-dropdown {
      top: 2px;