作者 小范

用户头像及菜单栏折叠按钮位置调整

注:此Home.vue中缺少首页折线图代码
<template>
<el-row class="container darkmenu" style="margin-top: 0px;">
<el-col :span="24" class="header" style="background-position: center">
<el-col :span="10" class="logo" :class="collapsed?'logo-collapse-width':'logo-width'">
<el-col :span="14" class="logo" :class="collapsed?'logo-collapse-width':'logo-width'">
{{collapsed?'':sysName}}
</el-col>
<el-col :span="10">
<div class="tools" @click.prevent="collapse" style="width: 380px">
<i class="fa "></i>
<el-col :span="6">
<div class="tools" @click.prevent="collapse" style="font-size:24px;width: 15px;margin-top: 80px;z-index:9999;margin-left: 10px;position:absolute;">
<!-- ;margin-top: 80px;z-index:9999;margin-left: 170px-->
<i class="el-icon-s-operation" style="color: rgb(38,56,76)"></i>
</div>
<!-- 标签i的图标 fa-align-justify-->
</el-col>
<el-col :span="4" class="userinfo">
<el-dropdown trigger="hover" >
<span class="el-dropdown-link userinfo-inner">{{sysUserName}}<img :src="this.sysUserAvatar"/></span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>我的消息</el-dropdown-item>
<el-dropdown-item @click.native="editPass">修改密码</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>
</el-dropdown>
<!-- <el-col :span="4" class="userinfo">-->
<!-- <el-dropdown trigger="hover" >-->
<!-- <span class="el-dropdown-link userinfo-inner">{{sysUserName}}<img :src="this.sysUserAvatar"/></span>-->
<!-- <el-dropdown-menu slot="dropdown">-->
<!-- <el-dropdown-item>我的消息</el-dropdown-item>-->
<!-- <el-dropdown-item @click.native="editPass">修改密码</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>-->
<!-- </el-dropdown>-->
<!-- </el-col>-->
</el-col>
</el-col>
<el-col>
<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-form-item label="新密码" prop="newpwd">
<el-input type="password" v-model="resetForm.newpwd" autocomplete="off" placeholder="8-20位字符在数字、小写、大写字母以及特殊字符中四选三"></el-input>
</el-form-item>
<el-form-item label="确认密码" prop="renewpwd">
<el-input type="password" v-model="resetForm.renewpwd" auto-complete="off"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitEdit('resetForm')" style="float:right">提 交</el-button>
</el-form-item>
<!-- <el-col>-->
<!-- <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-form-item label="新密码" prop="newpwd">-->
<!-- <el-input type="password" v-model="resetForm.newpwd" autocomplete="off" placeholder="8-20位字符在数字、小写、大写字母以及特殊字符中四选三"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="确认密码" prop="renewpwd">-->
<!-- <el-input type="password" v-model="resetForm.renewpwd" auto-complete="off"></el-input>-->
<!-- </el-form-item>-->
<!-- <el-form-item>-->
<!-- <el-button type="primary" @click="submitEdit('resetForm')" style="float:right">提 交</el-button>-->
<!-- </el-form-item>-->
</el-form>
</el-dialog>
</el-col>
<!-- </el-form>-->
<!-- </el-dialog>-->
<!-- </el-col>-->
<el-col :span="24" class="main">
<aside :class="collapsed?'menu-collapsed':'menu-expanded'">
<!--导航菜单-->
... ... @@ -99,54 +100,54 @@
},
components: {ElFormItem,TabMenu},
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();
}
};
// 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 {
sysName:'',
collapsed:false,
sysUserName: '',
// sysUserName: '',
sysUserId:'',
sysUserAvatar: '',
// sysUserAvatar: '',
isRouterAlive: true,
form: {
name: '',
... ... @@ -158,19 +159,19 @@
resource: '',
desc: ''
},
dialogFormVisible:false,
resetForm: {
newpwd: '',
renewpwd: '',
},
resetFormRules: {
newpwd: [
{ required: true, validator: validatePass, trigger: 'blur' }
],
renewpwd: [
{ required: true, validator: validatePass2, trigger: 'blur' }
]
},
// dialogFormVisible:false,
// resetForm: {
// newpwd: '',
// renewpwd: '',
// },
// resetFormRules: {
// newpwd: [
// { required: true, validator: validatePass, trigger: 'blur' }
// ],
// renewpwd: [
// { required: true, validator: validatePass2, trigger: 'blur' }
// ]
// },
editForm: {
userId: '',
password: '',
... ... @@ -188,53 +189,53 @@
})
})
},
editPass:function(){
this.dialogFormVisible=true;
},
updateCache:function(){
resetToken().then( res =>{
let response = res.data;
if (response.code === '200'){
this.$notify({
title: '成功',
message: '缓存更新成功',
type: 'success'
});
}else{
this.$notify.error({
title: '失败',
message: '缓存更新失败'
});
}
})
},
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;
}
});
},
// editPass:function(){
// this.dialogFormVisible=true;
// },
// updateCache:function(){
// resetToken().then( res =>{
// let response = res.data;
// if (response.code === '200'){
// this.$notify({
// title: '成功',
// message: '缓存更新成功',
// type: 'success'
// });
// }else{
// this.$notify.error({
// title: '失败',
// message: '缓存更新失败'
// });
// }
// })
// },
// 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;
// }
// });
// },
onSubmit() {
console.log('submit!');
},
... ... @@ -248,31 +249,32 @@
this.reload()
},
//退出登录
logout: function () {
var _this = this;
this.$confirm('确认退出吗?', '提示', {
//type: 'warning'
}).then(() => {
sessionStorage.removeItem('user');
sessionStorage.removeItem('menu');
//退出后初始化原来的路由
let sysRoutes = JSON.parse(sessionStorage.getItem('sysMenu'));
console.log(sysRoutes);
_this.$router.options.routes = sysRoutes;
_this.$router.push('/login');
}).catch(() => {
});
},
// logout: function () {
// var _this = this;
// this.$confirm('确认退出吗?', '提示', {
// //type: 'warning'
// }).then(() => {
// sessionStorage.removeItem('user');
// sessionStorage.removeItem('menu');
// //退出后初始化原来的路由
// let sysRoutes = JSON.parse(sessionStorage.getItem('sysMenu'));
// console.log(sysRoutes);
// _this.$router.options.routes = sysRoutes;
//
// _this.$router.push('/login');
// }).catch(() => {
//
// });
//
//
// },
//折叠导航栏
collapse:function(){
this.collapsed=!this.collapsed;
},
showMenu(i,status){
this.$refs.menuCollapsed.getElementsByClassName('submenu-hook-'+i)[0].style.display=status?'block':'none';
this.$refs.menuColl
apsed.getElementsByClassName('submenu-hook-'+i)[0].style.display=status?'block':'none';
}
},
mounted() {
... ... @@ -282,7 +284,8 @@
user = JSON.parse(user);
this.sysUserName = user.username || '';
this.sysUserId=user.userId||'';
this.sysUserAvatar = user.userface || '/static/images/faceDefault.jpg';
this.sysUserAvatar = user.userface || '~img/faceDefault.jpg';
}
//操作路由,判断本地存储的用户栏目列表是否存在,如果存在则加载路由
var userRouters = sessionStorage.getItem('menu');
... ... @@ -312,19 +315,19 @@
.userinfo {
text-align: right;
padding-right: 125px;
padding-top: 71px;
padding-top: 21px;
float: right;
.userinfo-inner {
cursor: pointer;
color:rgb(180,150,121);
img {
width: 40px;
height: 40px;
border-radius: 20px;
margin: 10px 0px 10px 10px;
float: right;
}
}
/*.userinfo-inner {*/
/* cursor: pointer;*/
/* color:rgb(180,150,121);*/
/* img {*/
/* width: 40px;*/
/* height: 40px;*/
/* border-radius: 20px;*/
/* margin: 10px 0px 10px 10px;*/
/* float: right;*/
/* }*/
/*}*/
}
.logo {
//width:230px;
... ... @@ -345,14 +348,14 @@
}
}
.logo-width{
width:230px;
width:380px;
}
.logo-collapse-width{
width:60px
}
.tools{
padding: 0px 23px;
width:14px;
/*padding: 0px 13px;*/
/*width:14px;*/
height: 60px;
line-height: 60px;
cursor: pointer;
... ...
<template>
<div>
<el-row id="me">
<el-col :span="20" id="menu" >
<!-- <el-col :span="3" style="margin-left: 40px;margin-top: 10px">-->
<!-- <div class="tools" @click.prevent="collapse" style="width: 380px;font-size: 24px">-->
<!-- <i class="el-icon-s-operation" style="color: rgb(43,47,58)"></i>-->
<!-- </div>-->
<!-- &lt;!&ndash; 标签i的图标 fa-align-justify&ndash;&gt;-->
<!-- </el-col>-->
<el-col :span="18" id="menu" >
<ul>
<li><a href="" class="drop">政府监管服务</a>
<div class="dropdown_1column">
<ul class="simple">
... ... @@ -48,16 +56,186 @@
</ul>
</div>
</li>
<li>
<el-dropdown trigger="hover" style="margin-top: -20px;margin-left: 130px">
<span class="el-dropdown-link userinfo-inner">{{sysUserName}}<img src="~img/faceDefault.jpg"/></span>
<!-- ../../assets/img/faceDefault.jpg-->
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>我的消息</el-dropdown-item>
<el-dropdown-item @click.native="editPass">修改密码</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>
</el-dropdown>
</li>
</ul>
</el-col>
<el-col>
<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-form-item label="新密码" prop="newpwd">
<el-input type="password" v-model="resetForm.newpwd" autocomplete="off" placeholder="8-20位字符在数字、小写、大写字母以及特殊字符中四选三"></el-input>
</el-form-item>
<el-form-item label="确认密码" prop="renewpwd">
<el-input type="password" v-model="resetForm.renewpwd" auto-complete="off"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitEdit('resetForm')" style="float:right">提 交</el-button>
</el-form-item>
</el-form>
</el-dialog>
</el-col>
</el-row>
</div>
</template>
<script>
import {editPass,resetToken} from "../../api/user";
export default {
name: "NaBar"
data(){
return{
dialogFormVisible:false,
sysUserName: '',
sysUserAvatar: '',
resetForm: {
newpwd: '',
renewpwd: '',
},
resetFormRules: {
newpwd: [
{ required: true, validator: validatePass, trigger: 'blur' }
],
renewpwd: [
{ required: true, validator: validatePass2, trigger: 'blur' }
]
},
};
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();
}
};
},
methods:{
// 折叠导航栏
collapse:function(){
this.collapsed=!this.collapsed;
},
showMenu(i,status){
this.$refs.menuCollapsed.getElementsByClassName('submenu-hook-'+i)[0].style.display=status?'block':'none';
},
// 用户信息
editPass:function(){
this.dialogFormVisible=true;
},
updateCache:function(){
resetToken().then( res =>{
let response = res.data;
if (response.code === '200'){
this.$notify({
title: '成功',
message: '缓存更新成功',
type: 'success'
});
}else{
this.$notify.error({
title: '失败',
message: '缓存更新失败'
});
}
})
},
//退出登录
logout: function () {
var _this = this;
this.$confirm('确认退出吗?', '提示', {
//type: 'warning'
}).then(() => {
sessionStorage.removeItem('user');
sessionStorage.removeItem('menu');
//退出后初始化原来的路由
let sysRoutes = JSON.parse(sessionStorage.getItem('sysMenu'));
console.log(sysRoutes);
_this.$router.options.routes = sysRoutes;
_this.$router.push('/login');
}).catch(() => {
});
},
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;
}
});
},
},
}
</script>
... ... @@ -123,6 +301,27 @@
font-size:13px;
line-height:45px;
}
.userinfo-inner {
cursor: pointer;
color:rgb(180,150,121);
}
.userinfo-inner img {
width: 40px;
height: 40px;
margin: 10px 0px 10px 10px;
float: right;
}
.tools{
/*padding: 0px 23px;*/
/*width:14px;*/
/*height: 60px;*/
/*line-height: 60px;*/
cursor: pointer;
/*padding-left: 180px;*/
/*padding-top: 60px;*/
/*color: rgb(111,130,148);*/
}
</style>
... ...