ll
liukangdong
2024-10-18 e6acb39a2475e211f2c1decc45a95c868239c25f
admin/src/components/common/CommonHeader.vue
@@ -2,7 +2,17 @@
  <div class="common-header">
    <div class="header">
      <div class="logo">
        <div>{{ title }}</div>
        <div class="title">{{ title }}</div>
        <div class="list">
          <div class="item active">
            <div>服务中心</div>
            <div class="linellae"></div>
          </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('3')">驾驶舱</div>
        </div>
        <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
      </div>
      <div class="user">
@@ -74,6 +84,7 @@
import { mapState, mapMutations } from 'vuex'
import GlobalAlertWindow from './GlobalAlertWindow'
import { logout, updatePwd } from '@/api/system/common'
import { getAppHeaderNav } from '@/api'
export default {
  name: 'CommonHeader',
  components: { GlobalAlertWindow },
@@ -86,6 +97,7 @@
  data() {
    return {
      title: process.env.VUE_APP_TITLE,
      headerNavData: {},
      visible: {
        // 修改密码
        changePwd: false
@@ -107,7 +119,8 @@
            { required: true, message: '请输入原始密码' }
          ],
          newPwd: [
            { required: true, message: '请输入新密码' }
          { required: true, message: '请输入密码', trigger: 'blur' },
          { validator: this.validatePassword, trigger: 'blur' },
          ],
          confirmPwd: [
            { required: true, message: '请再次输入新密码' }
@@ -121,6 +134,10 @@
    // title () {
    //   return this.$route.meta.title
    // }
  },
  mounted() {
    console.log('userInfo',this.userInfo);
  },
  filters: {
    // 展示名称
@@ -141,6 +158,31 @@
      this.visible.changePwd = true
      this.$nextTick(() => {
        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(); // 验证通过
        }
      }
    },
    getHeaderNav(type){
      getAppHeaderNav(type).then(res => {
        window.open(res, "_blank");
      })
    },
    // 确定修改密码
@@ -168,7 +210,7 @@
            this.visible.changePwd = false
          })
          .catch(e => {
            this.$tip.apiFailed(e)
           //  this.$tip.apiFailed(e)
          })
          .finally(() => {
            this.isWorking.changePwd = false
@@ -185,7 +227,7 @@
          window.location.reload()
        })
        .catch(e => {
          this.$tip.apiFailed(e)
          // this.$tip.apiFailed(e)
        })
    }
  }
@@ -197,6 +239,31 @@
.common-header {
  background-color: #2080f7;
}
.list{
  flex: 1;
  display: flex;
  align-items: center;
  margin-left: 60px;
  .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;
    }
  }
  .active{
    font-weight: 500;
  }
}
.header {
  overflow: hidden;
  // background: #fff;
@@ -205,16 +272,21 @@
  justify-content: space-between;
  .logo {
    background: url("../../assets/images/top_ic_chilun@2x.png") no-repeat;
    /* background: url("../../assets/images/top_ic_chilun@2x.png") no-repeat; */
    box-sizing: border-box;
    min-width: 280px;
    height: 70px;
    padding: 17px 30px;
    min-width: 360px;
    height: 56px;
    padding: 10px 30px;
    // flex-shrink: 0;
    line-height: 36px;
    font-size: 22px;
    font-weight: 600;
    color: #fff;
    display: flex;
    align-items: center;
    .title{
      width: 200px;
    }
    // display: inline;
    .title-en {
      font-size: 11px;
@@ -223,15 +295,16 @@
    }
  }
  .user {
    width: 712px;
    width: 212px;
    box-sizing: border-box;
    height: 70px;
    height: 56px;
    padding-right: 25px;
    background: url("../../assets/images/top_ic_bolang@2x.png") no-repeat;
    flex-shrink: 0;
    text-align: right;
    cursor: pointer;
    .el-dropdown {
      top: 10px;
      top: 2px;
      color: #fff;
    }
    img {