web/manager/src/views/personal-center/personal-center.vue
2021-05-13 18:09:36 +08:00

176 lines
5.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<style lang="scss" scoped>
@import "./personal-center.scss";
</style>
<template>
<div class="own-space">
<Card class="own-space-new">
<div class="own-wrap">
<div style="width:240px">
<Menu :active-name="activeName" theme="light" @on-select="changeMenu">
<MenuItem name="基本信息">基本信息</MenuItem>
<MenuItem name="安全设置">安全设置</MenuItem>
</Menu>
</div>
<div style="padding: 8px 40px;width:100%">
<div class="title">{{ currMenu }}</div>
<div>
<div v-show="currMenu=='基本信息'">
<Form ref="userForm" :model="userForm" :label-width="90" label-position="left">
<FormItem label="用户头像:">
<upload-pic-thumb
v-model="userForm.avatar"
:multiple="false"
></upload-pic-thumb>
</FormItem>
<FormItem label="用户名:">
{{ userForm.memberName }}
</FormItem>
<FormItem label="昵称:" prop="nickName">
<Input v-model="userForm.nickName" style="width: 250px"/>
</FormItem>
<FormItem>
<Button
type="primary"
style="width: 100px;margin-right:5px"
:loading="saveLoading"
@click="saveEdit"
>保存
</Button>
</FormItem>
</Form>
</div>
<div v-show="currMenu=='安全设置'" class="safe">
<div class="item">
<div>
<div class="title">账户密码</div>
</div>
<div>
<a @click="changePassword">修改</a>
</div>
</div>
<!-- #TODO 这块目前好像没有这个功能 -->
<!-- <div class="item">
<div>
<div class="title">绑定手机</div>
<div class="desc">
<span v-if="userForm.mobile">已绑定手机{{ userForm.mobile }}</span>
<span v-else>未绑定手机号</span>
</div>
</div>
</div>
<div class="item">
<div>
<div class="title">绑定邮箱</div>
<div class="desc">
<span v-if="userForm.email">已绑定邮箱{{ userForm.email }}</span>
<span v-else>未绑定邮箱</span>
</div>
</div>
</div> -->
</div>
</div>
</div>
</div>
</Card>
</div>
</template>
<script>
import {
userInfo,
userInfoEdit,
} from "@/api/index";
import CountDownButton from "@/views/my-components/lili/count-down-button";
import uploadPicThumb from "@/views/my-components/lili/upload-pic-thumb";
import Cookies from "js-cookie";
import util from "@/libs/util";
export default {
components: {
uploadPicThumb,
CountDownButton
},
name: "personal-enter",
data() {
return {
activeName: "基本信息", // 激活的tab
userForm: { // 用户信息
avatar: "",
nickname: ""
},
currMenu: "基本信息" // 当前菜单
};
},
methods: {
init() {
let v = JSON.parse(Cookies.get("userInfo"));
// 转换null为""
for (let attr in v) {
if (v[attr] == null) {
v[attr] = "";
}
}
let userInfo = JSON.parse(JSON.stringify(v));
this.userForm = userInfo;
console.log(userInfo)
},
changePassword() {
util.openNewPage(this, "change-password");
this.$router.push({
name: "change_password"
});
},
changeMenu(v) {
this.currMenu = v;
},
saveEdit() {
this.saveLoading = true;
let params = this.userForm;
userInfoEdit(params).then(res => {
this.saveLoading = false;
if (res.success) {
this.$Message.success("保存成功");
// 更新用户信息
Cookies.set("userInfo", this.userForm);
// 更新头像
this.$store.commit("setAvatarPath", this.userForm.avatar);
setTimeout(()=>{
this.$router.go(0)
},500)
}
});
},
updateUserInfo() {
// 更新用户信息
userInfo().then(res => {
if (res.success) {
// 避免超过大小限制
delete res.result.permissions;
if (this.getStore("saveLogin")) {
// 保存7天
Cookies.set("userInfo", JSON.stringify(res.result), {
expires: 7
});
} else {
Cookies.set("userInfo", JSON.stringify(res.result));
}
this.setStore("userInfo", res.result);
}
});
},
changeMessage(v) {
this.setStore("messageOpen", v);
}
},
mounted() {
let type = this.$route.query.type;
this.init();
}
};
</script>