From 3cdaa5801c5cad9a06256b906233f9e73a6786b8 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期五, 24 三月 2023 20:26:11 +0800
Subject: [PATCH] 提交密码策略配置代码

---
 Source/UBCS-WEB/src/page/login/index.vue     |    2 
 Source/UBCS-WEB/src/page/login/userlogin.vue |  376 ++++++++++++++++++++++++-----------------
 Source/UBCS-WEB/src/api/user.js              |    9 
 Source/UBCS-WEB/src/page/index/logo.vue      |    8 
 Source/UBCS-WEB/src/views/wel/index.vue      |  124 +-----------
 Source/UBCS-WEB/src/store/modules/user.js    |    3 
 Source/UBCS-WEB/src/router/router.js         |    2 
 7 files changed, 256 insertions(+), 268 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/user.js b/Source/UBCS-WEB/src/api/user.js
index c869e41..4a65255 100644
--- a/Source/UBCS-WEB/src/api/user.js
+++ b/Source/UBCS-WEB/src/api/user.js
@@ -116,5 +116,12 @@
   url: '/api/blade-system/tenant/tenant-map',
   method: 'get',
 });
-
+// 鎻愰啋鏃堕棿
+export const check = (userid) => request({
+  url: '/api/blade-user/tenant/check-renexpr',
+  method: 'post',
+  params:{
+    userid
+  }
+})
 
diff --git a/Source/UBCS-WEB/src/page/index/logo.vue b/Source/UBCS-WEB/src/page/index/logo.vue
index 4553c2e..3bc5957 100644
--- a/Source/UBCS-WEB/src/page/index/logo.vue
+++ b/Source/UBCS-WEB/src/page/index/logo.vue
@@ -2,9 +2,8 @@
   <div class="avue-logo">
     <transition name="fade">
       <span v-if="keyCollapse"
-            class="avue-logo_subtitle"
             key="0">
-        {{ website.logo }}
+      <img src="favicon.png" class="logimg">
       </span>
     </transition>
     <transition-group name="fade">
@@ -94,4 +93,9 @@
   top: 15px;
   left: 37px;
 }
+.logimg{
+  position: absolute;
+  top: 20px;
+  left: 12px;
+}
 </style>
diff --git a/Source/UBCS-WEB/src/page/login/index.vue b/Source/UBCS-WEB/src/page/login/index.vue
index b57c1b8..5e47bb9 100644
--- a/Source/UBCS-WEB/src/page/login/index.vue
+++ b/Source/UBCS-WEB/src/page/login/index.vue
@@ -8,7 +8,7 @@
         <div class="login-time">
           {{time}}
         </div>
-        <p class="title">{{ $t('login.info') }}</p>
+        <p class="title">UBCS 缁熶竴涓氬姟鍗忓悓骞冲彴</p>
         <div style="font-size: 15px">
           <span>----------------------------------------------</span>
           <br>
diff --git a/Source/UBCS-WEB/src/page/login/userlogin.vue b/Source/UBCS-WEB/src/page/login/userlogin.vue
index 5ccde5a..4ce26b8 100644
--- a/Source/UBCS-WEB/src/page/login/userlogin.vue
+++ b/Source/UBCS-WEB/src/page/login/userlogin.vue
@@ -1,11 +1,12 @@
 <template>
-  <el-form class="login-form"
-           status-icon
-           :rules="loginRules"
-           ref="loginForm"
-           :model="loginForm"
-           label-width="0"
-         >
+  <div>
+    <el-form ref="loginForm"
+             :model="loginForm"
+             :rules="loginRules"
+             class="login-form"
+             label-width="0"
+             status-icon
+    >
 
       <el-form-item prop="selectInput">
         <el-select v-model="loginForm.value" placeholder="璇烽�夋嫨缁勭粐" style="width: 326px" @change="selectchange">
@@ -19,160 +20,212 @@
         </el-select>
       </el-form-item>
       <el-form-item prop="username">
-        <el-input size="small"
-                  @keyup.enter.native="handleLogin"
-                  v-model="loginForm.username"
+        <el-input v-model="loginForm.username"
+                  :placeholder="$t('login.username')"
                   auto-complete="off"
-                  :placeholder="$t('login.username')">
+                  size="small"
+                  @keyup.enter.native="handleLogin">
           <i slot="prefix" class="icon-yonghu"/>
         </el-input>
       </el-form-item>
       <el-form-item prop="password">
-        <el-input size="small"
-                  @keyup.enter.native="handleLogin"
+        <el-input v-model="loginForm.password"
+                  :placeholder="$t('login.password')"
                   :type="passwordType"
-                  v-model="loginForm.password"
                   auto-complete="off"
-                  :placeholder="$t('login.password')">
-          <i class="el-icon-view el-input__icon" slot="suffix" @click="showPassword"/>
+                  size="small"
+                  @keyup.enter.native="handleLogin">
+          <i slot="suffix" class="el-icon-view el-input__icon" @click="showPassword"/>
           <i slot="prefix" class="icon-mima"/>
         </el-input>
       </el-form-item>
 
       <el-form-item>
-        <el-button type="primary"
+        <el-button class="login-submit"
                    size="small"
-                   @click.native.prevent="handleLogin"
-                   class="login-submit">{{$t('login.submit')}}
+                   type="primary"
+                   @click.native.prevent="handleLogin">{{ $t('login.submit') }}
         </el-button>
       </el-form-item>
+      <!--瀵嗙爜淇敼寮瑰嚭妗�-->
+    </el-form>
+    <el-dialog title="淇敼瀵嗙爜" :visible.sync="dialogFormVisible" append-to-body  >
+      <el-form :model="form"  :rules="rules">
+        <el-form-item label="鍘熷瘑鐮�" :label-width="formLabelWidth" prop="oldname">
+          <el-input v-model="form.oldPassword" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="鏂板瘑鐮�" :label-width="formLabelWidth" prop="newname">
+          <el-input v-model="form.newPassword" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="纭瀵嗙爜" :label-width="formLabelWidth" prop="newname1">
+          <el-input v-model="form.newPassword1" autocomplete="off"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="addok">纭� 瀹�</el-button>
+      </div>
+    </el-dialog>
+  </div>
 
 
-
-
-  </el-form>
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import {info} from "@/api/system/tenant";
-  import {getTopUrl} from "@/util/util";
+import {mapGetters} from "vuex";
+import {info} from "@/api/system/tenant";
+import {getTopUrl} from "@/util/util";
+import {updatePassword} from "@/api/system/user.js"
+import md5 from "js-md5";
+export default {
+  name: "userlogin",
+  data() {
+    return {
+      tenantMode: this.website.tenantMode,
+      ButtonList: [],
+      dialogFormVisible:false,
+      form: {
+        oldPassword: '',
+        newPassword: '',
+        newPassword1: '',
+      },
+      rules: {
+        oldname: [
+          { required: true, message: '璇疯緭鍏ュ師瀵嗙爜', trigger: 'blur' }
+        ],
+        newname:[
+          { required: true, message: '璇疯緭鍏ユ柊瀵嗙爜', trigger: 'blur' }
+        ],
+        newname1:[
+          { required: true, message: '璇疯緭纭瀵嗙爜', trigger: 'blur' }
+        ]
+      },
+      loginForm: {
+        //绉熸埛ID
+        tenantId: "000000",
+        //閮ㄩ棬ID
+        deptId: "",
+        //瑙掕壊ID
+        roleId: "",
+        //鐢ㄦ埛鍚�
+        username: "admin",
+        //瀵嗙爜
+        password: "admin",
+        selectInput: '',
+        //涓嬫媺input鏁版嵁
+        value: '绠$悊缁�',
+        //涓嬫媺鑿滃崟
+        region: [],
+        //璐﹀彿绫诲瀷
+        type: "account",
+        //楠岃瘉鐮佺殑绱㈠紩
+        key: "",
+        //棰勫姞杞界櫧鑹茶儗鏅�
+        image: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
 
-  export default {
-    name: "userlogin",
-    data() {
-      return {
-        tenantMode: this.website.tenantMode,
-        ButtonList:[],
-        loginForm: {
-          //绉熸埛ID
-          tenantId: "000000",
-          //閮ㄩ棬ID
-          deptId: "",
-          //瑙掕壊ID
-          roleId: "",
-          //鐢ㄦ埛鍚�
-          username: "admin",
-          //瀵嗙爜
-          password: "admin",
-          selectInput:'',
-          //涓嬫媺input鏁版嵁
-          value:'绠$悊缁�',
-          //涓嬫媺鑿滃崟
-          region:[],
-          //璐﹀彿绫诲瀷
-          type: "account",
-          //楠岃瘉鐮佺殑绱㈠紩
-          key: "",
-          //棰勫姞杞界櫧鑹茶儗鏅�
-          image: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",
+      },
+      value: {
+        selectInput: [
+          {required: true, message: "璇烽�夋嫨缁勭粐", trigger: "blur"}
+        ],
+        username: [
+          {required: true, message: "璇疯緭鍏ョ敤鎴峰悕", trigger: "blur"}
+        ],
+        password: [
+          {required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur"},
+          {min: 1, message: "瀵嗙爜闀垮害鏈�灏戜负6浣�", trigger: "blur"}
+        ]
+      },
+      passwordType: "password",
+      userBox: false,
+      userForm: {
+        deptId: '',
+        roleId: ''
+      },
+      userinfo: []
+    };
+  },
+  created() {
+    this.getTenant();
+  },
+  mounted() {
+    //鍦╩ounted鑾峰彇棣栭〉涓嬫媺鑿滃崟鏁版嵁
+    this.$axios.get('/api/blade-system/tenant/tenant-map').then(res => {
+      if (res.data.code == 200) {
+        this.loginForm.region = res.data.data
+      }
+    })
+  },
+  watch: {
+    'loginForm.deptId'() {
+      const column = this.findObject(this.userOption.column, "deptId");
+      if (this.loginForm.deptId.includes(",")) {
+        column.dicUrl = `/api/blade-system/dept/select?deptId=${this.loginForm.deptId}`;
+        column.display = true;
+      } else {
+        column.dicUrl = '';
+      }
+    },
+    'loginForm.roleId'() {
+      const column = this.findObject(this.userOption.column, "roleId");
+      if (this.loginForm.roleId.includes(",")) {
+        column.dicUrl = `/api/blade-system/role/select?roleId=${this.loginForm.roleId}`;
+        column.display = true;
+      } else {
+        column.dicUrl = '';
+      }
+    }
+  },
+  computed: {
+    ...mapGetters(["tagWel", "userInfo"])
+  },
+  props: [],
+  methods: {
+    addok(){
+      this.dialogFormVisible = false
+      updatePassword(md5(this.form.oldPassword), this.form.newPassword, this.form.newPassword1).then(res=>{
+        if(res.data.code==200){
+          this.$message({
+            type:"success",
+            message:"淇敼鎴愬姛锛�"
+          })
 
-        },
-        value: {
-          selectInput: [
-            {required: true, message: "璇烽�夋嫨缁勭粐", trigger: "blur"}
-          ],
-          username: [
-            {required: true, message: "璇疯緭鍏ョ敤鎴峰悕", trigger: "blur"}
-          ],
-          password: [
-            {required: true, message: "璇疯緭鍏ュ瘑鐮�", trigger: "blur"},
-            {min: 1, message: "瀵嗙爜闀垮害鏈�灏戜负6浣�", trigger: "blur"}
-          ]
-        },
-        passwordType: "password",
-        userBox: false,
-        userForm: {
-          deptId: '',
-          roleId: ''
-        },
-      };
-    },
-    created() {
-      this.getTenant();
-    },
-    mounted() {
-      //鍦╩ounted鑾峰彇棣栭〉涓嬫媺鑿滃崟鏁版嵁
-      this.$axios.get('/api/blade-system/tenant/tenant-map').then(res=>{
-        if(res.data.code == 200){
-          this.loginForm.region=res.data.data
+          this.$router.push({path: this.tagWel.value})
         }
       })
     },
-    watch: {
-      'loginForm.deptId'() {
-        const column = this.findObject(this.userOption.column, "deptId");
-        if (this.loginForm.deptId.includes(",")) {
-          column.dicUrl = `/api/blade-system/dept/select?deptId=${this.loginForm.deptId}`;
-          column.display = true;
-        } else {
-          column.dicUrl = '';
-        }
-      },
-      'loginForm.roleId'() {
-        const column = this.findObject(this.userOption.column, "roleId");
-        if (this.loginForm.roleId.includes(",")) {
-          column.dicUrl = `/api/blade-system/role/select?roleId=${this.loginForm.roleId}`;
-          column.display = true;
-        } else {
-          column.dicUrl = '';
-        }
+    // 缁戝畾涓嬫媺鑿滃崟鍔ㄦ�両D
+    selectchange(value) {
+      this.loginForm.tenantId = value
+      console.log(this.loginForm.tenantId)
+    },
+    showPassword() {
+      this.passwordType === ""
+        ? (this.passwordType = "password")
+        : (this.passwordType = "");
+    },
+    submitLogin(form, done) {
+      if (form.deptId !== '') {
+        this.loginForm.deptId = form.deptId;
       }
+      if (form.roleId !== '') {
+        this.loginForm.roleId = form.roleId;
+      }
+      this.handleLogin();
+      done();
+
     },
-    computed: {
-      ...mapGetters(["tagWel", "userInfo"])
-    },
-    props: [],
-    methods: {
-      // 缁戝畾涓嬫媺鑿滃崟鍔ㄦ�両D
-      selectchange(value) {
-        this.loginForm.tenantId=value
-        console.log(this.loginForm.tenantId)
-      },
-      showPassword() {
-        this.passwordType === ""
-          ? (this.passwordType = "password")
-          : (this.passwordType = "");
-      },
-      submitLogin (form, done) {
-        if (form.deptId !== '') {
-          this.loginForm.deptId = form.deptId;
-        }
-        if (form.roleId !== '') {
-          this.loginForm.roleId = form.roleId;
-        }
-        this.handleLogin();
-        done();
-      },
-      handleLogin() {
-        this.$refs.loginForm.validate(valid => {
-          if (valid) {
-            const loading = this.$loading({
-              lock: true,
-              text: '鐧诲綍涓�,璇风◢鍚庛�傘�傘��',
-              spinner: "el-icon-loading"
-            });
-            this.$store.dispatch("LoginByUsername", this.loginForm).then(() => {
+    handleLogin: function () {
+      this.userInfo = this.$store.state.upadatastatus
+      this.$refs.loginForm.validate(valid => {
+        if (valid) {
+          const loading = this.$loading({
+            lock: true,
+            text: '鐧诲綍涓�,璇风◢鍚庛�傘�傘��',
+            spinner: "el-icon-loading"
+          });
+          this.$store.dispatch("LoginByUsername", this.loginForm).then(() => {
+            if (this.userInfo.strategyUpdateStatus != 0) {
               if (this.website.switchMode) {
                 const deptId = this.userInfo.dept_id;
                 const roleId = this.userInfo.role_id;
@@ -183,33 +236,44 @@
                   this.$store.dispatch("LogOut").then(() => {
                     loading.close();
                   });
-                  return false;
                 }
+                return false
               }
               this.$router.push({path: this.tagWel.value});
-              loading.close();
-            }).catch(() => {
-              loading.close();
+            } else {
+              this.$message({
+                type: "warning",
+                message: "瀵嗙爜绛栫暐宸茶淇敼锛岃閲嶆柊淇敼瀵嗙爜锛�"
+              })
+             setTimeout(()=>{
+               this.dialogFormVisible=true
+             },1500)
+            }
+            console.log(this.userInfo)
 
-            });
-          }
-        });
-      },
-      getTenant() {
-        let domain = getTopUrl();
-        // 涓存椂鎸囧畾鍩熷悕锛屾柟渚挎祴璇�
-        //domain = "https://bladex.vip";
-        info(domain).then(res => {
-          const data = res.data;
-          if (data.success && data.data.tenantId) {
-            this.tenantMode = false;
-            this.loginForm.tenantId = data.data.tenantId;
-            this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`;
-          }
-        })
-      }
+            loading.close();
+          }).catch(() => {
+            loading.close();
+
+          });
+        }
+      });
+    },
+    getTenant() {
+      let domain = getTopUrl();
+      // 涓存椂鎸囧畾鍩熷悕锛屾柟渚挎祴璇�
+      //domain = "https://bladex.vip";
+      info(domain).then(res => {
+        const data = res.data;
+        if (data.success && data.data.tenantId) {
+          this.tenantMode = false;
+          this.loginForm.tenantId = data.data.tenantId;
+          this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`;
+        }
+      })
     }
-  };
+  }
+};
 </script>
 
 <style>
diff --git a/Source/UBCS-WEB/src/router/router.js b/Source/UBCS-WEB/src/router/router.js
index 017af95..7d9c189 100644
--- a/Source/UBCS-WEB/src/router/router.js
+++ b/Source/UBCS-WEB/src/router/router.js
@@ -35,7 +35,7 @@
     router: Router,
     store: Store,
     i18n: i18n,
-    keepAlive: false,
+
   });
 }
 export default Router
diff --git a/Source/UBCS-WEB/src/store/modules/user.js b/Source/UBCS-WEB/src/store/modules/user.js
index f1c8eb1..1647416 100644
--- a/Source/UBCS-WEB/src/store/modules/user.js
+++ b/Source/UBCS-WEB/src/store/modules/user.js
@@ -43,6 +43,7 @@
     menuAll: getStore({name: 'menuAll'}) || [],
     token: getStore({name: 'token'}) || '',
     refreshToken: getStore({name: 'refreshToken'}) || '',
+    upadatastatus:[]
   },
   actions: {
     //鏍规嵁鐢ㄦ埛鍚嶇櫥褰�
@@ -263,6 +264,8 @@
       setStore({name: 'tenantId', content: state.tenantId})
     },
     SET_USER_INFO: (state, userInfo) => {
+      console.log('hahahha',userInfo)
+      state.upadatastatus=userInfo
       if (validatenull(userInfo.avatar)) {
         userInfo.avatar = "/img/bg/img-logo.png";
       }
diff --git a/Source/UBCS-WEB/src/views/wel/index.vue b/Source/UBCS-WEB/src/views/wel/index.vue
index 14e9ab6..b076aab 100644
--- a/Source/UBCS-WEB/src/views/wel/index.vue
+++ b/Source/UBCS-WEB/src/views/wel/index.vue
@@ -25,117 +25,21 @@
     </el-row>
     <el-row>
       <el-col :span="16">
-        <basic-container>
-          <el-collapse v-model="activeNames" @change="handleChange">
-            <el-collapse-item title="娆㈣繋浣跨敤Saber" name="1">
-              <div>1.Saber鏄疊ladeX鍓嶇UI绯荤粺</div>
-              <div>2.瀵圭幇鏈夌殑avue2.0銆乪lement-ui搴撹繘琛屼簩娆″皝瑁�</div>
-              <div>3.100%鍏煎鍘熺敓element-ui搴�</div>
-              <div>4.鍩轰簬json椹卞姩鐨勬ā鍧楅厤缃紝鎵撻�犳渶濂界敤鐨剉uejs涓悗鍙拌剼鎵嬫灦</div>
-              <div>5.浣跨敤Saber鍙互澶у箙搴︽彁鍗囧紑鍙戞晥鐜囷紝涓嶅啀涓洪噸澶嶅伐浣滃彂鎰�</div>
+        <basic-container class="aaa">
+          <el-collapse v-model="activeNames" @change="handleChange" class="fontcoll">
+            <el-collapse-item title="娆㈣繋浣跨敤UBCS" name="1">
+              <div style="font-size: 16px">1.UBCS鏄竴娆剧簿蹇冭璁$殑寰湇鍔℃灦鏋勶紝鎻愪緵 SpringCloud 鍏ㄥ瑙e喅鏂规锛屽畬缇庨泦鎴� SpringCloud Alibaba 绯诲垪缁勪欢</div>
+              <div style="font-size: 16px">2.UBCS鏄负浼佷笟鎻愪緵缁熶竴涓氬姟鍗忓悓绯荤粺骞冲彴</div>
+              <div style="font-size: 16px">3.UBCS杩芥眰浼佷笟寮�鍙戞洿鍔犻珮鏁堬紝閮ㄧ讲鏇村姞鏂逛究锛岀敓浜ф洿鍔犵ǔ瀹�</div>
+              <div style="font-size: 16px">4.绯荤粺瀹炵幇涓�濂椾唬鐮佸吋瀹筂ySql銆丱racle銆丳ostgreSQL銆丼qlServer銆佽揪姊︼紝閫傚簲浼佷笟鍚勭涓嶅悓鍦烘櫙鐨勯渶姹�</div>
+              <div style="font-size: 16px">5.闆嗘垚浜嗗緢澶氫紒涓氭�ュ垏鎵�闇�鐨勪緥濡傚绉熸埛銆丱auth2鎺堟潈璁よ瘉銆佸伐浣滄祦銆佸垎甯冨紡浜嬪姟绛夌瓑鍔熻兘</div>
+              <div style="font-size: 16px">5.绯荤粺娣卞害瀹氬埗浜咶lowable宸ヤ綔娴侊紝瀹岀編鏀寔SpringCloud鍒嗗竷寮忔湇鍔$殑鍦烘櫙锛屼互杩滅▼璋冪敤鐨勬柟寮忚繘琛屾搷浣�</div>
             </el-collapse-item>
-            <el-collapse-item title="浠�涔堟槸BladeX" name="2">
-              <div>1.BladeX鏄竴娆剧簿蹇冭璁$殑寰湇鍔℃灦鏋勶紝鎻愪緵 SpringCloud 鍏ㄥ瑙e喅鏂规</div>
-              <div>2.寮�婧愪腑鍥介鎵瑰畬缇庨泦鎴� SpringCloud Alibaba 绯诲垪缁勪欢鐨勫井鏈嶅姟鏋舵瀯</div>
-              <div>3.鍩轰簬绋冲畾鐢熶骇鐨勫晢涓氶」鐩崌绾т紭鍖栬�屾潵锛屾洿鍔犺创杩戜紒涓氱骇鐨勯渶姹�</div>
-              <div>4.杩芥眰浼佷笟寮�鍙戞洿鍔犻珮鏁堬紝閮ㄧ讲鏇村姞鏂逛究锛岀敓浜ф洿鍔犵ǔ瀹�</div>
-              <div>5.GVP-鐮佷簯鏈�鏈変环鍊煎紑婧愰」鐩�</div>
-              <div>6.BladeX鎺堟潈鍦板潃:<a target="_blank" href="https://bladex.vip/#/vip">鐐瑰嚮鎺堟潈</a></div>
-            </el-collapse-item>
-            <el-collapse-item title="涓轰綍闇�瑕丅ladeX" name="3">
-              <div>1.缁忓巻杩囪緝闀跨殑绾夸笂鐢熶骇锛岀Н绱簡寰堝浼佷笟鐥涚偣鐨勮В鍐虫柟妗�</div>
-              <div>2.涓�濂椾唬鐮佸吋瀹筂ySql銆丱racle銆丳ostgreSQL銆丼qlServer銆佽揪姊︼紝閫傚簲浼佷笟鍚勭涓嶅悓鍦烘櫙鐨勯渶姹�</div>
-              <div>3.闆嗘垚浜嗗緢澶氫紒涓氭�ュ垏鎵�闇�鐨勪緥濡傚绉熸埛銆丱auth2鎺堟潈璁よ瘉銆佸伐浣滄祦銆佸垎甯冨紡浜嬪姟绛夌瓑鍔熻兘</div>
-              <div>4.娣卞害瀹氬埗浜咶lowable宸ヤ綔娴侊紝瀹岀編鏀寔SpringCloud鍒嗗竷寮忔湇鍔$殑鍦烘櫙锛屼互杩滅▼璋冪敤鐨勬柟寮忚繘琛屾搷浣�</div>
-              <div>5.鍗囩骇浜嗘牳蹇冮┍鍔紝鏂板姛鑳藉畬鍏ㄥ彲浠ュ紑绠卞嵆鐢紝鑰屽紑婧愮増闇�瑕佽嚜宸卞啀鑺辨椂闂磋繘琛岄泦鎴愶紝闇�瑕佽姳鎺夋洿澶氱殑鏃堕棿鎴愭湰</div>
-              <div>6.鎷ユ姳寰湇鍔℃椂浠o紝寰堝浼佷笟鐢变簬椤圭洰杞瀷鎴栧崌绾э紝浼犵粺鐨勬妧鏈凡鐒朵笉鑳芥弧瓒筹紝鍙嶈�屼細鑺辨洿澶氭垚鏈紝鑰孊ladeX灏辨槸涓烘鑰岀敓</div>
-              <div>7.鍚屾椂鎻愪緵SpringCloud鐗堟湰鍜孲pringBoot鐗堟湰锛屼袱涓増鏈殑api鍙互涓嶴word鍜孲aber鏃犵紳瀵规帴锛屼负灏忓瀷椤圭洰鑷冲ぇ鍨嬮」鐩繚椹炬姢鑸�</div>
-              <div>8.鎺堟潈璐拱鍗虫案涔咃紝婧愮爜娌℃湁娣锋穯锛屽畬鍏ㄥ紑鏀撅紝鍚庣画鍗囩骇瀹屽叏鍏嶈垂銆備紒涓氬彧闇�鑺卞緢灏戠殑閽卞嵆鍙幏寰椾竴鏁村鎴愮啛鐨勮В鍐虫柟妗堬紝浣犺繕鍦ㄧ瓑浠�涔堬紵</div>
-            </el-collapse-item>
-            <el-collapse-item title="鎷ユ湁鐨勬牳蹇冨姛鑳�" name="4">
-              <div>1.鍓嶅悗绔垎绂�-閲囩敤鍓嶅悗绔垎绂绘ā寮忥紝鍓嶇鎻愪緵涓ゅ鏋舵瀯锛孲word鍩轰簬React锛孲aber鍩轰簬Vue</div>
-              <div>2. 鍒嗗竷寮忓崟浣撳紡鍚庣鏋舵瀯-鎻愪緵涓ゅ鍚庣鏋舵瀯锛屽熀浜嶴pringCloud鐨勫垎甯冨紡鏋舵瀯浠ュ強鍩轰簬SpringBoot鐨勫崟浣撳紡鏋舵瀯</div>
-              <div>3.API瀹屽叏鍏煎-涓ゅ鍚庣鏋舵瀯涓庝袱濂楀墠绔灦鏋勶紝鍏卞洓濂楁灦鏋勫彲浠ヤ换鎰忕粍鍚堬紝鎵�鏈堿PI瀹屽叏鍏煎</div>
-              <div>4.鍓嶅悗绔唬鐮佺敓鎴�-瀹氬埗閽堝涓ゅ鍓嶇涓庡悗绔殑浠g爜鐢熸垚妯℃澘锛岃交鏉剧敓鎴愭暣涓ā鍧楃殑鍓嶅悗绔唬鐮侊紝鍑忓皯閲嶅宸ヤ綔閲�</div>
-              <div>5.缁勪欢鍖栥�佹彃浠跺寲鏋舵瀯-閽堝鍔熻兘娣卞害瀹氬埗鍚勪釜starter锛屽紩鍏ュ紑绠卞嵆鐢紝涓烘暣涓灦鏋勮В鑰︼紝鎻愬崌鏁堢巼</div>
-              <div>6.Nacos-闆嗘垚闃块噷宸村反鐨凬acos瀹屾垚缁熶竴鐨勬湇鍔℃敞鍐屼笌閰嶇疆</div>
-              <div>7.Sentinel-闆嗘垚Sentinel浠庢祦閲忔帶鍒躲�佺啍鏂檷绾с�佺郴缁熻礋杞界瓑澶氫釜缁村害淇濇姢鏈嶅姟鐨勭ǔ瀹氭��</div>
-              <div>8.Dubbo-瀹岀編闆嗘垚Dubbo鏈�鏂扮増锛屾敮鎸佽繙绋婻PC璋冪敤</div>
-              <div>9.澶氱鎴风郴缁�-瀹屾暣鐨凷aaS澶氱鎴锋灦鏋�</div>
-              <div>10.Oauth2-闆嗘垚Oauth2鍗忚锛屽畬缇庢敮鎸佸缁堢鐨勬帴鍏ヤ笌璁よ瘉鎺堟潈</div>
-              <div>11.宸ヤ綔娴�-娣卞害瀹氬埗SpringCloud鍒嗗竷寮忓満鏅殑Flowable宸ヤ綔娴侊紝涓哄鏉傛祦绋嬩繚椹炬姢鑸�傚悓鏃舵彁渚汼pringBoot闆嗘垚鐗堟湰</div>
-              <div>12.鐙珛娴佺▼璁捐鍣�-鎻愪緵鐙珛鐨勫畬鍏ㄦ眽鍖栫殑娴佺▼璁捐鍣紝杞绘澗瀹氬埗娴佺▼妯″瀷</div>
-              <div>13.鍔ㄦ�佺綉鍏�-闆嗘垚鍩轰簬Nacos鐨勮交閲忕骇銆侀珮鎷撳睍鎬у姩鎬佺綉鍏�</div>
-              <div>14.鍔ㄦ�佽仛鍚堟枃妗�-瀹炵幇鍩轰簬Nacos鐨凷wagger SpringCloud鑱氬悎鏂囨。</div>
-              <div>15.鍒嗗竷寮忔枃浠舵湇鍔�-闆嗘垚minio銆乹iniu銆乤lioss绛変紭绉�鐨勭涓夋柟锛屾彁渚涗究鎹风殑鏂囦欢涓婁紶涓庣鐞�</div>
-              <div>16.澶氱鎴峰璞″瓨鍌ㄧ郴缁�-鍦⊿aaS绯荤粺涓紝鍚勭鎴峰彲鑷閰嶇疆鏂囦欢涓婁紶鑷宠嚜宸辩殑绉佹湁OSS</div>
-              <div>17.鏉冮檺绠$悊-绮惧績璁捐鐨勬潈闄愮鐞嗘柟妗堬紝瑙掕壊鏉冮檺绮剧‘鍒版寜閽�</div>
-              <div>18.鍔ㄦ�佹暟鎹潈闄�-楂樺害鐏垫椿鐨勫姩鎬佹暟鎹潈闄愶紝鎻愪緵娉ㄨВ+Web鍙鍖栦袱绉嶉厤缃柟寮忥紝Web閰嶇疆鏃犻渶閲嶅惎鐩存帴鐢熸晥</div>
-              <div>19.鍔ㄦ�佹帴鍙f潈闄�-楂樺害鐏垫椿鐨勫姩鎬佹帴鍙f潈闄愶紝鎻愪緵娉ㄨВ+Web鍙鍖栦袱绉嶉厤缃柟寮忥紝Web閰嶇疆鏃犻渶閲嶅惎鐩存帴鐢熸晥</div>
-              <div>20.澶氱鎴烽《閮ㄨ彍鍗曢厤缃�-鎻愪緵缁欐瘡涓鎴风嫭绔嬬殑椤堕儴鑿滃崟閰嶇疆妯″潡锛屽彲浠ヨ嚜瀹氫箟椤堕儴鑿滃崟鍒囨崲</div>
-              <div>21.涓绘祦鏁版嵁搴撳吋瀹�-涓�濂椾唬鐮佸畬鍏ㄥ吋瀹筂ysql銆丳ostgresql銆丱racle涓夊ぇ涓绘祦鏁版嵁搴�</div>
-              <div>22.鍔ㄦ�佺綉鍏抽壌鏉�-鍩轰簬Nacos鐨勫姩鎬佺綉鍏抽壌鏉冿紝鍙湪绾块厤缃紝瀹炴椂鐢熸晥</div>
-              <div>23.鍏ㄨ兘浠g爜鐢熸垚鍣�-鏀寔鑷畾涔夋ā鍨嬨�佹ā鐗� 銆佷笟鍔″缓妯★紝鏀寔澶氱妯℃澘寮曟搸锛屽湪绾块厤缃�傚ぇ骞呭害鎻愬崌寮�鍙戞晥鐜囷紝涓嶅啀涓洪噸澶嶅伐浣滃彂鎰�</div>
-              <div>24.Seata鍒嗗竷寮忎簨鍔�-瀹氬埗闆嗘垚Seata锛屾敮鎸佸垎甯冨紡浜嬪姟锛屾棤浠g爜渚靛叆锛屼笉澶辩伒娲讳笌绠�娲�</div>
-              <div>25.鏈畬寰呯画...</div>
-            </el-collapse-item>
-            <el-collapse-item title="杞欢瀹氬埗寮�鍙戝悎浣�" name="5">
-              <div>1.鎺ladeX绯诲垪鏋舵瀯鐨勫畾鍒舵湇鍔�</div>
-              <div>2.鎺�3涓湀浠ュ唴宸ユ湡鐨剅eact銆乿ue銆乻pringboot銆乻pringcloud銆乤pp銆佸皬绋嬪簭绛夎蒋浠跺畾鍒舵湇鍔�</div>
-              <div>3.鏈夋剰鍚戣鑱旂郴鍞竴鎸囧畾QQ:1272154962</div>
-            </el-collapse-item>
+
           </el-collapse>
         </basic-container>
       </el-col>
       <el-col :span="8">
-        <el-row>
-          <basic-container>
-            <div class="el-font-size">
-              <span>浜у搧鍚嶇О</span>
-              <el-divider direction="vertical"/>
-              <span><el-tag>BladeX浼佷笟绾у井鏈嶅姟寮�鍙戝钩鍙�</el-tag></span>
-              <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider>
-              <span>璐﹀彿瀵嗙爜</span>
-              <el-divider direction="vertical"/>
-              <el-tag type="info" effect="plain">浜轰簨(hr)</el-tag>
-              <el-divider direction="vertical"/>
-              <el-tag type="success" effect="plain">缁忕悊(manager)</el-tag>
-              <el-divider direction="vertical"/>
-              <el-tag type="warning" effect="plain">鑰佹澘(boss)</el-tag>
-              <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider>
-              <span>瀹樼綉鍦板潃</span>
-              <el-divider direction="vertical"/>
-              <span><el-link href="https://bladex.vip" target="_blank"
-                             type="primary">https://bladex.vip</el-link></span>
-              <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider>
-              <span>绀惧尯鍦板潃</span>
-              <el-divider direction="vertical"/>
-              <span><el-link href="https://sns.bladex.vip" target="_blank"
-                             type="primary">https://sns.bladex.vip</el-link></span>
-              <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider>
-              <span>鑾峰彇鏂囨。</span>
-              <el-divider direction="vertical"/>
-              <span class="tag-group">
-                <el-tag type="success" style="cursor: pointer"
-                        onclick="window.open('https://sns.bladex.vip/note/view/1.html')">鍏嶈垂鐗�</el-tag>
-                <el-divider direction="vertical"/>
-                <el-tooltip class="item" effect="dark" content="鍓嶅線鍟嗕笟缇ゆ枃浠跺厤璐逛笅杞�,姣忎唤鎺堟潈鏈変竴涓悕棰濆叆缇�" placement="top">
-                  <el-tag type="danger" style="cursor: pointer">鏀惰垂鐗�</el-tag>
-                </el-tooltip>
-              </span>
-              <el-divider content-position="right"><i class="el-icon-star-off"/></el-divider>
-              <span>鑾峰彇婧愮爜</span>
-              <el-divider direction="vertical"/>
-              <span class="tag-group">
-                <el-tag type="success" effect="dark" style="cursor: pointer"
-                        onclick="window.open('https://gitee.com/smallc/SpringBlade')">寮�婧愮増</el-tag>
-                <el-divider direction="vertical"/>
-                <el-tag type="danger" effect="dark" style="cursor: pointer"
-                        onclick="window.open('https://bladex.vip/#/vip')">鍟嗕笟鐗�</el-tag>
-              </span>
-            </div>
-          </basic-container>
-        </el-row>
         <el-row>
           <basic-container>
             <el-collapse v-model="logActiveNames" @change="handleChange">
@@ -771,8 +675,13 @@
     data() {
       return {
         activeNames: ['1', '2', '3', '5'],
-        logActiveNames: ['28']
+        logActiveNames: ['28'],
+        aaa:[]
       };
+    },
+    created() {
+      this.aaa=this.$store.state.upadatastatus
+      console.log(this.aaa)
     },
     computed: {
       ...mapGetters(["userInfo"]),
@@ -789,5 +698,6 @@
   .el-font-size {
     font-size: 14px;
   }
+
 </style>
 

--
Gitblit v1.9.3