123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- <template>
- <el-form ref="form" :model="pwd" :rules="rules" label-width="80px">
- <el-form-item label="旧密码" prop="oldPassword">
- <el-input v-model="pwd.oldPassword" placeholder="请输入旧密码" type="password" show-password/>
- </el-form-item>
- <el-form-item label="新密码" prop="newPassword">
- <el-input v-model="pwd.newPassword" placeholder="请输入新密码" type="password" show-password/>
- </el-form-item>
- <el-form-item label="确认密码" prop="confirmPassword">
- <el-input v-model="pwd.confirmPassword" placeholder="请确认新密码" type="password" show-password/>
- </el-form-item>
- <el-form-item>
- <el-button type="primary" size="mini" @click="submit">保存</el-button>
- <el-button type="danger" size="mini" @click="close">关闭</el-button>
- </el-form-item>
- </el-form>
- </template>
- <script>
- import { mapGetters } from 'vuex'
- import {doEncrypt, doDecryptStr,doSign,doVerifySignature,userinfoEncrypt,userinfoDecrypt} from '@/utils/smutil'
- import { debounce } from 'lodash'
- export default {
- // computed: {
- // ...mapGetters([
- // 'userinfo'
- // ])
- // },
- data() {
- const equalToPassword = (rule, value, callback) => {
- if (this.pwd.newPassword !== value) {
- callback(new Error("新密码两次输入的密码不一致"));
- } else {
- callback();
- }
- };
- return {
- user: {},
- pwd: {
- oldPassword: undefined,
- newPassword: undefined,
- confirmPassword: undefined
- },
- // 表单校验
- rules: {
- oldPassword: [
- { required: true, message: "旧密码不能为空", trigger: "blur" }
- ],
- newPassword: [
- { required: true, message: "新密码不能为空", trigger: "blur" },
- { min: 8, max: 20, message: "长度在 8 到 20 个字符", trigger: "blur" }
- ],
- confirmPassword: [
- { required: true, message: "确认密码不能为空", trigger: "blur" },
- { required: true, validator: equalToPassword, trigger: "blur" }
- ]
- },
- //字母连续规则
- strReg : /(a(?=b)|b(?=c)|c(?=d)|d(?=e)|e(?=f)|f(?=g)|g(?=h)|h(?=i)|i(?=j)|j(?=k)|k(?=l)|l(?=m)|m(?=n)|n(?=o)|o(?=p)|p(?=q)|q(?=r)|r(?=s)|s(?=t)|t(?=u)|u(?=v)|v(?=w)|w(?=x)|x(?=y)|y(?=z)|z(?=a)){3}[a-z]/i,
- strResverReg : /(a(?=z)|z(?=y)|y(?=x)|x(?=w)|w(?=v)|v(?=u)|u(?=t)|t(?=s)|s(?=r)|r(?=q)|q(?=p)|p(?=o)|o(?=n)|n(?=m)|m(?=l)|l(?=k)|k(?=j)|j(?=i)|i(?=h)|h(?=g)|g(?=f)|f(?=e)|e(?=d)|d(?=c)|c(?=b)|b(?=a)){3}[a-z]/i,
- //数字连续规则
- numReg : /(0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){3}\d/,
- numResverReg : /(0(?=9)|9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){3}\d/,
- //键盘字母横向连续规则
- keyboardHorizontalReg : /(q(?=w)|w(?=e)|e(?=r)|r(?=t)|t(?=y)|y(?=u)|u(?=i)|i(?=o)|o(?=p)|p(?=q)|a(?=s)|s(?=d)|d(?=f)|f(?=g)|g(?=h)|h(?=j)|j(?=k)|k(?=l)|l(?=a)|z(?=x)|x(?=c)|c(?=v)|v(?=b)|b(?=n)|n(?=m)|m(?=z)){3}[a-z]/i,
- keyboardHorizontalResverReg : /(p(?=o)|o(?=i)|i(?=u)|u(?=y)|y(?=t)|t(?=r)|r(?=e)|e(?=w)|w(?=q)|q(?=p)|l(?=k)|k(?=j)|j(?=h)|h(?=g)|g(?=f)|f(?=d)|d(?=s)|s(?=a)|a(?=l)|m(?=n)|n(?=b)|b(?=v)|v(?=c)|c(?=x)|x(?=z)|z(?=m)){3}[a-z]/i,
- //多个相同字母、数字规则
- sameReg : /([0-9a-zA-Z])\1{3}/,
- keyboardSlopeArr : ["1qaz", "2wsx", "3edc", "4rfv", "5tgb", "6yhn", "7ujm", "8ik,", "9ol.", "0p;/", "/;p0", ".lo9", ",ki8", "mju7", "nhy6", "bgt5", "vfr4", "cde3", "xsw2", "zaq1", "4esz", "5rdx", "6tfc", "7ygv", "8uhb", "9ijn", "0okm", "-pl,", "=[;.", ".;[=", ",lp-", "mko0", "nji9", "bhu8", "vgy7", "cft6", "xdr5", "zse4"],
- keyboardSlopeShiftArr : ["!qaz", "@wsx", "#edc","$rfv", "%tgb", "^yhn", "&ujm", "*ik<", "(ol>", ")p:?", "?:p)", ">lo(", "<ki*", "mju&", "nhy^", "bgt%", "vfr$", "cde#", "xsw@", "zaq!", "$esz", "%rdx", "^tfc", "&ygv", "*uhb", "(ijn", ")okm", "_pl<", "+{:>", ">:{+", "<lp_", "mko)", "nji(", "bhu*", "vgy&", "cft^", "xdr%", "zse$"],
- lastReg: /^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\W_!@#$%^&*`~()-+=]+$)(?![0-9\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\W_!@#$%^&*`~()-+=]{8,20}$/
- };
- },
- methods: {
- // 表单重置
- pwdReset() {
- this.pwd={
- oldPassword: undefined,
- newPassword: undefined,
- confirmPassword: undefined
- }
- },
- submit:debounce(function(){
- this.$refs["form"].validate(valid => {
- if (valid) {
- // 密码验证规则
- if (this.sameReg.test(this.pwd.newPassword)) {
- this.$message.error('密码不能含有连续4位相同的数字或字母')
- return
- } else if (this.strResverReg.test(this.pwd.newPassword.toLowerCase())) {
- this.$message.error('密码不能含有4位连续的字母')
- return
- } else if (this.strReg.test(this.pwd.newPassword.toLowerCase())) {
- this.$message.error('密码不能含有4位连续的字母')
- return
- } else if (this.numReg.test(this.pwd.newPassword)) {
- this.$message.error('密码不能含有4位连续的数字')
- return
- } else if (this.numResverReg.test(this.pwd.newPassword)) {
- this.$message.error('密码不能含有4位连续的数字')
- return
- } else if (this.keyboardHorizontalReg.test(this.pwd.newPassword)) {
- this.$message.error('密码不能含有4位横向连续的字母')
- return
- } else if (this.keyboardHorizontalResverReg.test(this.pwd.newPassword)) {
- this.$message.error('密码不能含有4位横向连续的字母')
- return
- } else if (this.keyboardSlopeArr.some(v => this.pwd.newPassword.toLowerCase().indexOf(v) > -1)) {
- this.$message.error('密码不能含有4位键盘斜向连续的字符')
- return
- } else if (this.keyboardSlopeShiftArr.some(v => this.pwd.newPassword.toLowerCase().indexOf(v) > -1)) {
- this.$message.error('密码不能含有4位键盘斜向连续的字符')
- return
- } else if (!this.lastReg.test(this.pwd.newPassword)) {
- this.$message.error('密码不满足8~20位大写字母、小写字母、数字、特殊字符三种以上的组合')
- return
- }
- // 用户信息解密
- let decryptUserInfo = userinfoDecrypt(sessionStorage.getItem('userinfo'))
- this.user = JSON.parse(decryptUserInfo).sysUser
- const param = {
- id: this.user.id,
- oldPassword: this.pwd.oldPassword,
- newPassword: this.pwd.newPassword,
- confirmPassword: this.pwd.confirmPassword
- }
- this.$axios.post('/sysUserController/updatePassword', param).then((res) => {
- if (res.code==0){
- this.$message.success('密码修改成功')
- this.pwdReset()
- }
- if (res.code==1){
- this.$message.error(res.data)
- }
- }).catch((error) => {
- // this.$message.error(error)
- })
- }
- });
- },1000),
- close() {
- this.$tab.closePage();
- }
- }
- };
- </script>
|