...
|
...
|
@@ -18,7 +18,7 @@ |
|
|
<el-dropdown-menu slot="dropdown">
|
|
|
<el-dropdown-item>用户:{{sysUserName}}</el-dropdown-item>
|
|
|
<el-dropdown-item>我的消息</el-dropdown-item>
|
|
|
<el-dropdown-item @click.native="editPass">修改密码</el-dropdown-item>
|
|
|
<el-dropdown-item @click.native="changePass">修改密码</el-dropdown-item>
|
|
|
<el-dropdown-item @click.native="updateCache">更新缓存</el-dropdown-item>
|
|
|
<el-dropdown-item divided @click.native="logout">退出登录</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
...
|
...
|
@@ -29,16 +29,43 @@ |
|
|
<TabMenu></TabMenu>
|
|
|
</el-main>
|
|
|
</el-container>
|
|
|
<el-dialog title="修改密码" :visible.sync="dialogFormVisible">
|
|
|
<el-form :model="resetForm" status-icon :rules="resetFormRules" ref="resetForm" label-width="100px">
|
|
|
<el-form-item label="用户名" prop="name">
|
|
|
<span>{{sysUserName}}</span>
|
|
|
</el-form-item>
|
|
|
<el-row :gutter="1">
|
|
|
<el-col :span="11">
|
|
|
<el-form-item label=" " prop="newpwd">
|
|
|
<el-input type="password" v-model="resetForm.newpwd" autocomplete="off" show-password placeholder="8-20位字符在数字、小写、大写字母以及特殊字符中四选三">
|
|
|
<template slot="prepend">新密码</template>
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="11">
|
|
|
<el-form-item label=" " prop="renewpwd">
|
|
|
<el-input type="password" v-model="resetForm.renewpwd" show-password auto-complete="off" placeholder="8-20位字符在数字、小写、大写字母以及特殊字符中四选三">
|
|
|
<template slot="prepend">确认密码</template>
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" @click="submitEdit('resetForm')" style="float:right">提 交</el-button>
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
</el-dialog>
|
|
|
</el-container>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import rt from '../routes'
|
|
|
import { editPass,resetToken} from '../api/user';
|
|
|
import { editPass,resetToken,loginedUserInfo} from '../api/user';
|
|
|
import ElFormItem from "element-ui/packages/form/src/form-item";
|
|
|
import TabMenu from "@/components/TabMenu"
|
|
|
import NavMenu from "@/components/NavMenu"
|
|
|
import loginuserInfo from "@/api/base";
|
|
|
import {mapActions, mapGetters} from 'vuex'
|
|
|
import jsutil from "@/common/js/util";
|
|
|
|
...
|
...
|
@@ -51,6 +78,48 @@ |
|
|
},
|
|
|
components: {ElFormItem,TabMenu,NavMenu},
|
|
|
data() {
|
|
|
var validatePass = (rule, value, callback) => {
|
|
|
if (!value) {
|
|
|
callback(new Error('请输入新密码'));
|
|
|
}else {
|
|
|
var ls=0;
|
|
|
if(value.match(/([a-z])+/)){
|
|
|
ls++;
|
|
|
} if(value.match(/([0-9])+/)){
|
|
|
ls++;
|
|
|
} if(value.match(/([A-Z])+/)){
|
|
|
ls++;
|
|
|
} if((/([\W])+/) && !value.match(/(![\u4E00-\u9FA5])+/)){
|
|
|
ls++;
|
|
|
} if (value.toString().length < 8 || value.toString().length > 20) {
|
|
|
callback(new Error('密码长度为8 - 20个字符'));
|
|
|
ls=0;
|
|
|
} if(value.match(/([\u4E00-\u9FA5])+/)){
|
|
|
callback(new Error('不能包含中文字符'));
|
|
|
ls=0;
|
|
|
}
|
|
|
switch (ls) {
|
|
|
case 0: this.passwordPercent = 0;callback(new Error('数字、小写字母、大写字母以及特殊字符中四选三'));break;
|
|
|
case 1: this.passwordPercent = 33;callback(new Error('数字、小写字母、大写字母以及特殊字符中四选三'));break;
|
|
|
case 2: this.passwordPercent = 66;callback(new Error('数字、小写字母 、大写字母以及特殊字符中四选三'));break;
|
|
|
case 3:
|
|
|
case 4: this.passwordPercent = 100;break;
|
|
|
default: this.passwordPercent = 0;break;
|
|
|
}
|
|
|
callback();
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
var validatePass2 = (rule, value, callback) => {
|
|
|
if (value === '') {
|
|
|
callback(new Error('请再次输入密码'));
|
|
|
} else if (value !== this.resetForm.newpwd) {
|
|
|
callback(new Error('两次输入密码不一致!'));
|
|
|
} else {
|
|
|
callback();
|
|
|
}
|
|
|
};
|
|
|
return {
|
|
|
rotate:false,
|
|
|
sysName:'',
|
...
|
...
|
@@ -73,6 +142,19 @@ |
|
|
userId: '',
|
|
|
password: '',
|
|
|
},
|
|
|
dialogFormVisible:false,
|
|
|
resetForm: {
|
|
|
newpwd: '',
|
|
|
renewpwd: '',
|
|
|
},
|
|
|
resetFormRules: {
|
|
|
newpwd: [
|
|
|
{ required: true, validator: validatePass, trigger: 'blur' }
|
|
|
],
|
|
|
renewpwd: [
|
|
|
{ required: true, validator: validatePass2, trigger: 'blur' }
|
|
|
]
|
|
|
},
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
...
|
...
|
@@ -80,13 +162,10 @@ |
|
|
['setUserInfoStore','setUserMenuStore'] // 相当于this.$store.dispatch('modifyName'),提交这个方法
|
|
|
),
|
|
|
initUserInfo:function() {
|
|
|
if (jsutil.checkNull(this.getUserInfoStore.username)){
|
|
|
this.sysUserName = this.getUserInfoStore.username || '';
|
|
|
this.sysUserId=this.getUserInfoStore.userId||'';
|
|
|
this.sysUserAvatar = this.getUserInfoStore.userface || '~img/faceDefault.jpg';
|
|
|
}else {
|
|
|
this.setUserInfoStore(loginuserInfo);
|
|
|
}
|
|
|
this.setUserInfoStore(loginedUserInfo());
|
|
|
this.sysUserName = this.getUserInfoStore.username || '';
|
|
|
this.sysUserId=this.getUserInfoStore.userId||'';
|
|
|
this.sysUserAvatar = this.getUserInfoStore.userface || '~img/faceDefault.jpg';
|
|
|
},
|
|
|
reload() {
|
|
|
this.$nextTick(function () {
|
...
|
...
|
@@ -143,7 +222,37 @@ |
|
|
//折叠导航栏
|
|
|
collapse:function(){
|
|
|
this.collapsed=!this.collapsed;
|
|
|
}
|
|
|
},
|
|
|
submitEdit(formName){
|
|
|
this.$refs[formName].validate((valid) => {
|
|
|
if (valid) {
|
|
|
this.editForm.userId=this.sysUserId;
|
|
|
this.editForm.password=this.resetForm.renewpwd;
|
|
|
editPass(this.editForm).then(res=>{
|
|
|
let response=res.data;
|
|
|
if(response.code=='200'){
|
|
|
this.$notify({
|
|
|
title: '密码修改成功',
|
|
|
message: '密码修改成功,退出请重新登录',
|
|
|
type: 'success'
|
|
|
});
|
|
|
this.dialogFormVisible=false;
|
|
|
}else{
|
|
|
this.$notify.error({
|
|
|
title: '密码修改失败',
|
|
|
message: '密码修改失败!!!'
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
console.log('error submit!!');
|
|
|
return false;
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
changePass:function(){
|
|
|
this.dialogFormVisible=true;
|
|
|
},
|
|
|
},
|
|
|
computed: {
|
|
|
...mapGetters(['getUserInfoStore','getUserMenuStore']) // 动态计算属性,相当于this.$store.getters.resturantName
|
...
|
...
|
|