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