From 9b85e466d4ce21bb704c01ac3729737f3146bdc8 Mon Sep 17 00:00:00 2001 From: 819527061@qq.com <123456> Date: 星期二, 11 六月 2024 14:47:09 +0800 Subject: [PATCH] docs:密码强度 --- pages/login/resetPassword/resetPassword.vue | 251 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 204 insertions(+), 47 deletions(-) diff --git a/pages/login/resetPassword/resetPassword.vue b/pages/login/resetPassword/resetPassword.vue index b862f88..c94086e 100644 --- a/pages/login/resetPassword/resetPassword.vue +++ b/pages/login/resetPassword/resetPassword.vue @@ -5,21 +5,53 @@ :rules="rules" ref="uForm" label-width="80px"> - <u-form-item prop="password" + <template v-if="isShowPassword"> + <u-form-item prop="originalPassword" label="瀵嗙爜" required borderBottom> <u-input v-if='inputType==="password"' - v-model="modelForm.password" + v-model="modelForm.originalPassword" border="surround" placeholder="璇疯緭鍏ュ瘑鐮�(浠呮敮鎸佹暟瀛楀瓧姣嶄笅鍒掔嚎)" :type='inputType' /> <u-input v-else - v-model="modelForm.password" + v-model="modelForm.originalPassword" border="surround" placeholder="璇疯緭鍏ュ瘑鐮�(浠呮敮鎸佹暟瀛楀瓧姣嶄笅鍒掔嚎)" :type='inputType' /> </u-form-item> + </template> + <u-form-item prop="password" + label="瀵嗙爜" + required + borderBottom> + <u-input v-if='inputType==="password"' + v-model="modelForm.password" + border="surround" + placeholder="璇疯緭鍏ュ瘑鐮�(浠呮敮鎸佹暟瀛楀瓧姣嶄笅鍒掔嚎)" + :type='inputType' /> + <u-input v-else + v-model="modelForm.password" + border="surround" + placeholder="璇疯緭鍏ュ瘑鐮�(浠呮敮鎸佹暟瀛楀瓧姣嶄笅鍒掔嚎)" + :type='inputType' /> + </u-form-item> + <view class="intensity"> + <view class="psdText">瀵嗙爜寮哄害</view> + <view + class="line" + :class="[level.includes('low') ? 'low' : '']"></view> + <view + class="line" + :class="[level.includes('middle') ? 'middle' : '']"></view> + <view + class="line" + :class="[level.includes('high') ? 'high' : '']"></view> + <div class="warningtext"> + 瀵嗙爜搴旂敱8-16浣嶆暟瀛椼�佸瓧姣嶃�佺鍙风粍鎴愩�傝涓嶈浣跨敤瀹规槗琚寽鍒扮殑瀵嗙爜 + </div> + </view> <u-form-item prop="secondPassword" label="浜屾纭" required @@ -62,63 +94,146 @@ <script> export default { data() { + const validatePass = (rule, value, callback) => { + if (this.modelForm.password !== "") { + if (value !== this.modelForm.password) { + callback(new Error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!")); + } else { + callback(); + } + } else { + callback(); + } + }; + const checkPassword = (rule, value, callback) => { + // let roles = this.$store.getters.roles;//褰撳墠鐢ㄦ埛瑙掕壊id + // let passL = 8; + // if (roles.concat(1)){ + // passL = 10 + // } + let passL = 8; + this.level = [] + if(!value) { + return callback('瀵嗙爜涓嶈兘涓虹┖') + } + if(value.length < passL) { + return callback(`瀵嗙爜涓嶈兘灏戜簬${passL}浣峘) + } + if(value.length > 16) { + return callback('瀵嗙爜涓嶈兘澶т簬16浣�') + } + //鏍¢獙鏄暟瀛� + const regex1 = /^\d+$/ + // 鏍¢獙瀛楁瘝 + const regex2 = /^[A-Za-z]+$/ + // 鏍¢獙绗﹀彿 + const regex3 = + /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]路~锛丂#锟�%鈥︹��&*锛堬級鈥斺�擻-+={}|銆娿�嬶紵锛氣�溾�濄�愩�戙�侊紱鈥�'锛屻�傘�乚+$/ + if(regex1.test(value)) { + this.level.push('low') + return callback('瀵嗙爜寮哄害杩囦綆') + }else if(regex2.test(value)) { + this.level.push('low') + return callback('瀵嗙爜寮哄害杩囦綆') + }else if(regex3.test(value)) { + this.level.push('low') + return callback('瀵嗙爜寮哄害杩囦綆') + }else if(/^[A-Za-z\d]+$/.test(value)) { + this.level.push('low') + this.level.push('middle') + return callback('瀵嗙爜寮哄害杩囦綆') + }else if( + /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]路~锛丂#锟�%鈥︹��&*锛堬級鈥斺�擻-+={}|銆娿�嬶紵锛氣�溾�濄�愩�戙�侊紱鈥�'锛屻�傘�乗d]+$/.test( + value + ) + ) { + this.level.push('low') + this.level.push('middle') + return callback('瀵嗙爜寮哄害杩囦綆') + }else if( + /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]路~锛丂#锟�%鈥︹��&*锛堬級鈥斺�擻-+={}|銆娿�嬶紵锛氣�溾�濄�愩�戙�侊紱鈥�'锛屻�傘�丄-Za-z]+$/.test( + value + ) + ) { + this.level.push('low') + this.level.push('middle') + return callback('瀵嗙爜寮哄害杩囦綆') + } else if ( + /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]路~锛丂#锟�%鈥︹��&*锛堬級鈥斺�擻-+={}|銆娿�嬶紵锛氣�溾�濄�愩�戙�侊紱鈥�'锛屻�傘�丄-Za-z\d]+$/.test( + value + ) + ) { + this.level.push('low') + this.level.push('middle') + this.level.push('high') + } + return callback() + }; return { + isShowPassword:true, + level:[], userInfo: {}, checkboxValue: [], inputType: 'password', isFocus: false, modelForm: { + originalPassword:'', //鍘熷瘑鐮� password: '', - secondPassword: '' + secondPassword: '', + username:'', + userId:'' }, processLoading: false, rules: { - password: [{ - type: 'string', - required: true, - message: '璇峰~鍐欏瘑鐮�', - trigger: ['blur', 'change'] - }, - { - min: 2, - max: 10, - message: '瀵嗙爜闀垮害搴斾笉灏忎簬2浣�,涓嶅ぇ浜�10浣� ', - trigger: ['blur', 'change'] - }, - { - pattern: /^[a-zA-Z0-9_]+$/, - message: '璇疯緭鍏ユ纭牸寮忕殑瀵嗙爜', - trigger: ['blur', 'change'] - } - ], - secondPassword: [{ - type: 'string', - required: true, - message: '璇峰~鍐欎簩娆″瘑鐮�', - trigger: ['blur', 'change'] - }, - { - min: 2, - max: 10, - message: '瀵嗙爜闀垮害搴斾笉灏忎簬2,涓嶅ぇ浜�10', - trigger: ['blur', 'change'] - } - ] + originalPassword: [{ + type: 'string', + required: this.isShowPassword, + message: '璇峰~鍐欏瘑鐮�', + trigger: ['blur', 'change'] + } + ], + password:[{ + required: true, + validator: checkPassword, + trigger: 'change' + }], + secondPassword: [{ + required: true, + validator: validatePass, + trigger: "blur" + }] } } }, computed: { roleType() { return uni.getStorageSync('roleType') - } + }, + userId() { + if(uni.getStorageSync('userId')) { + this.modelForm.userId = uni.getStorageSync('userId') + } + return uni.getStorageSync('userId') + } }, onLoad(params) { if (this.roleType === 3) { this.userInfo = JSON.parse(params.userInfo) } else { - this.getUserInfo(params.phone, params.idCard) + const query = JSON.parse(params.userInfo) + this.getUserInfo( query.phone, query.idCard) } - + if(params.userInfo) { + this.modelForm.username = JSON.parse(params.userInfo).username //username + this.modelForm.userId = JSON.parse(params.userInfo).userId //userId + if(JSON.parse(params.userInfo).isShowPassword) { + this.isShowPassword = false + }else { + this.isShowPassword = true + } + }else { + this.isShowPassword = true + } }, onReady() { this.$refs.uForm.setRules(this.rules) @@ -139,12 +254,13 @@ this.isFocus = true }, process() { - if (this.modelForm.password !== this.modelForm.secondPassword) return uni.$u.toast('瀵嗙爜涓嶄竴鑷�,璇锋鏌�') - this.userInfo.password = this.modelForm.secondPassword; - this.processLoading = true; + if(!this.level.includes('middle') && !this.level.includes('high')) { + return this.$u.toast('瀵嗙爜寮哄害澶急') + } this.$refs.uForm.validate().then(res => { - this.$reqAllJson('appUpdateById', this - .userInfo, { method: 'PUT', 'Content-type': 'application/json' }).then(res => { + this.processLoading = true; + console.log(this.modelForm,'this.modelForm===鍙傛暟') + this.$reqAllJson('appUpdateById', this.modelForm, { method: 'PUT', 'Content-type': 'application/json' }).then(res => { this.processLoading = false; if (res.code === 0) { this.$u.toast('淇敼鎴愬姛,鍗冲皢鍥炲埌棣栭〉') @@ -156,9 +272,11 @@ } else { this.$u.toast(res.msg ? res.msg : '淇敼澶辫触') } - }) - }).catch(errors => { - uni.$u.toast('鏍¢獙澶辫触') + }).catch(e => { + // uni.$u.toast('鏍¢獙澶辫触') + }).finally(() => { + this.processLoading = false; + }) }) } } @@ -174,5 +292,44 @@ .process-button { margin-top: vww(20); } + .intensity { + width: 100%; + margin-top: 10rpx; + .psdText { + font-size: 14px; + margin-right: 10px; + } + + .line { + display: inline-block; + width: 70rpx; + height: 8rpx; + background: #d8d8d8; + border-radius: 6rpx; + margin-right: 16rpx; + + &.low { + background: #f4664a; + } + + &.middle { + background: #ffb700; + } + + &.high { + background: #2cbb79; + } + } + + .level { + margin: 0 32rpx 0 16rpx; + } + + .warningtext { + color: #5a5a5a; + font-size: 24rpx; + margin-top: 10rpx; + } + } } -</style> \ No newline at end of file +</style> -- Gitblit v1.9.1