一个简单的图床项目,由java实现,搭配nginx使用,依赖admin项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

182 lines
5.1 KiB

<template>
<div id="header">
<el-row>
<el-col :span="12">
<el-row class="menu-row">
<el-menu class="el-menu-demo" :default-active="activeGroup" mode="horizontal" text-color="#000"
active-text-color="#4669e7">
<el-menu-item v-for="item in $store.state.menuGroups" :key="item.id" :index="item.id"
@click="clickGroup(item)">
{{ item.name }}
</el-menu-item>
</el-menu>
<el-radio-group :size="$store.state.size" v-model="active">
<el-radio-button v-for="item in menus" :label="item.id">
{{ item.name }}
</el-radio-button>
</el-radio-group>
</el-row>
</el-col>
<el-col :span="12">
<el-row class="info" type="flex" justify="end" align="middle">
<el-button class="info-btn" icon="el-icon-user-solid" type="text">
{{ $store.state.userInfo.userId }}
</el-button>
<el-button :size="$store.state.size" icon="el-icon-setting" type="info" @click="update = true">
修改密码
</el-button>
<el-button :size="$store.state.size" icon="el-icon-switch-button" type="info"
@click="$store.commit('logout')">
注销登录
</el-button>
</el-row>
</el-col>
</el-row>
<el-dialog title="修改密码" :visible.sync="update" width="40%" top="15vh" :close-on-click-modal="false"
@keydown.enter.native="confirm()">
<el-form ref="update" :model="user" :rules="rules" label-width="180px">
<el-form-item label="旧密码" prop="password">
<el-input type="password" v-model="user.password"></el-input>
</el-form-item>
<el-form-item label="新密码" prop="newPwd">
<el-input type="password" v-model="user.newPwd"></el-input>
</el-form-item>
<el-form-item label="重复新密码" prop="rePwd">
<el-input type="password" v-model="user.rePwd" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="update = false;"> 取 消 </el-button>
<el-button type="primary" @click="confrim"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
Vue,
Component,
Prop,
Watch
} from 'vue-property-decorator';
import md5 from 'js-md5';
import {
password
} from '@/static/tool/validate.js';
@Component
export default class NavHeader extends Vue {
menus = [];
active = 'home';
activeGroup = 'home';
update = false;
user = {};
rules = {
password: [{
required: true,
message: '请输入密码',
trigger: 'blur'
}],
newPwd: [{
validator: password,
trigger: 'blur'
}],
rePwd: [{
validator: this.reKey,
trigger: 'blur'
}]
};
clickGroup(group) {
this.activeGroup = group.id
this.menus = group.child
const child = group.child
if (child.length == 0) {
this.active = group.id
} else {
this.active = child[0].id
}
}
clickMenu(id) {
this.active = id
}
toHome() {
this.clickGroup(this.$store.state.menuGroups[0]);
}
confrim() {
const that = this
this.$refs.update.validate((valid) => {
if (valid) {
const param = JSON.parse(JSON.stringify(that.user));
param.userId = that.$store.state.userInfo.userId;
param.password = md5(param.password)
param.newPwd = md5(param.newPwd)
delete param.rePwd;
that.$post('public/update/password', param).then(rsp => {
if (rsp) {
that.update = false;
that.user = {};
that.$store.commit('logout')
}
});
} else {
return false
}
});
}
reKey(rule, value, callback) {
if (!value) {
callback(new Error('请重复输入新密码'));
} else if (value != this.user.newPwd) {
callback(new Error('两次输入的新密码不一致'));
} else {
callback();
}
}
@Watch('active')
activeChang(n, o) {
this.$router.push('/' + n)
}
created() {}
mounted() {} // 生命周期 - 挂载完成(可以访问DOM元素
beforeCreate() {} // 生命周期 - 创建之前
beforeMount() {} // 生命周期 - 挂载之前
beforeUpdate() {} // 生命周期 - 更新之前
updated() {} // 生命周期 - 更新之后
beforeDestroy() {} // 生命周期 - 销毁之前
destroyed() {} // 生命周期 - 销毁完成
activated() {} // 如果页面有keep-alive缓存功能,这个函数会触发
}
</script>
<style scoped>
.info {
/* background-color: cadetblue; */
height: 80px;
padding-right: 100px;
}
.el-menu.el-menu--horizontal {
border-bottom: none;
}
.info-btn {
font-size: 17px;
color: #2D3748;
margin-left: 30px !important;
}
.menu-row {
background-color: #FFFFFF;
padding-left: 30px;
}
</style>