初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,240 @@
<template>
<div class="box">
<div class="null-page" v-show="yes"></div>
<div class="member-info" v-loading="loading">
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="基本信息" name="first">
<el-form ref="infoRef" :model="memberInfo" :rules="infoRules" label-width="80px">
<el-form-item label="账号" v-if="memberInfo.userName">
<p>{{ memberInfo.userName }}</p>
</el-form-item>
<!-- <el-form-item label="邮箱">
<p v-if="memberInfo.email">{{ memberInfo.email }}</p>
<p v-else class="toBind" @click="$router.push({ path: '/member/security' })">去绑定</p>
</el-form-item> -->
<el-form-item label="手机号">
<p v-if="memberInfo.tell">{{ memberInfo.tell }}</p>
<p v-else class="toBind" @click="$router.push({ path: '/member/security' })">去绑定</p>
</el-form-item>
<el-form-item label="昵称" prop="nickName">
<el-input v-model="memberInfo.nickName"></el-input>
</el-form-item>
</el-form>
<div class="btn">
<el-button size="medium" type="primary" @click="saveInfo">保存</el-button>
</div>
</el-tab-pane>
<el-tab-pane label="头像照片" name="second">
<div class="preview">
<div class="title">头像预览</div>
<div class="content">
完善个人信息资料上传头像图片有助于您结识更多的朋友
<br />
头像最佳默认尺寸为120x120像素
</div>
</div>
<el-upload :action="uploadActionUrl" :show-file-list="false" :on-success="handleAvatarSuccess" class="upload" accept=".png,.jpg,.jpeg">
<div class="img-wrap">
<img v-if="memberInfo.userHeadImg" :src="$img(memberInfo.userHeadImg)" />
<img v-else :src="$img(defaultHeadImage)" />
</div>
</el-upload>
<div class="btn">
<el-button size="medium" type="primary" @click="uploadHeadImg">保存</el-button>
</div>
</el-tab-pane>
</el-tabs>
</div>
</div>
</template>
<script>
import {info, nickName, headImg} from '@/api/member/info';
import Config from '@/plugins/config';
import {mapGetters} from 'vuex';
import {email} from '@/api/member/security';
export default {
name: 'info',
layout: "member",
components: {},
data: () => {
return {
memberInfo: {
userHeadImg: '',
userName: '', //账号
nickName: '', //昵称
email: '',
tell: ''
},
infoRules: {
nickName: [{required: true, message: '请输入昵称', trigger: 'blur'}, {
max: 30,
message: '最大长度为30个字符',
trigger: 'blur'
}]
},
activeName: 'first',
loading: true,
uploadActionUrl: Config.baseUrl + '/api/upload/headimg',
imgUrl: '',
yes: true
};
},
created() {
this.getInfo();
},
mounted() {
let self = this;
setTimeout(function () {
self.yes = false
}, 300)
},
methods: {
getInfo() {
info().then(res => {
if (res.code == 0) {
this.memberInfo.userHeadImg = res.data.headimg;
this.memberInfo.userName = res.data.username;
this.memberInfo.nickName = res.data.nickname;
this.memberInfo.email = res.data.email;
this.memberInfo.tell = res.data.mobile;
}
this.loading = false;
}).catch(err => {
this.loading = false;
this.$message.error(err.message);
});
},
handleClick(tab, event) {
},
saveInfo() {
this.$refs.infoRef.validate(valid => {
if (valid) {
nickName({nickname: this.memberInfo.nickName}).then(res => {
if (res.code == 0) {
this.$message({message: '修改昵称成功', type: 'success'});
this.getInfo();
this.$store.dispatch('member/member_detail', {refresh: 1});
}
}).catch(err => {
this.$message.error(err.message);
});
} else {
return false;
}
});
},
handleAvatarSuccess(res, file) {
this.imgUrl = res.data.pic_path;
this.memberInfo.userHeadImg = URL.createObjectURL(file.raw);
},
uploadHeadImg() {
headImg({headimg: this.imgUrl}).then(res => {
if (res.code == 0) {
this.$message({message: '头像修改成功', type: 'success'});
this.$store.dispatch('member/member_detail', {refresh: 1});
}
}).catch(err => {
this.$message.error(err.message);
});
}
},
computed: {
...mapGetters(['defaultHeadImage'])
}
};
</script>
<style>
.member-info .el-upload {
display: flex;
justify-content: center;
margin-bottom: 20px;
}
</style>
<style lang="scss" scoped>
.box {
width: 100%;
position: relative;
}
.null-page {
width: 100%;
height: 730px;
background-color: #FFFFFF;
position: absolute;
top: 0;
left: 0;
z-index: 9;
}
.member-info {
background: #ffffff;
padding: 20px;
.el-tab-pane {
display: flex;
flex-direction: column;
justify-content: center;
align-content: center;
.preview {
display: flex;
justify-content: center;
margin-bottom: 20px;
.title {
margin-right: 20px;
line-height: 3;
}
.content {
color: $base-color;
line-height: 1.5;
}
}
.upload {
display: flex;
justify-content: center;
}
.el-upload {
width: 120px;
}
.img-wrap {
width: 120px;
height: 120px;
display: block;
line-height: 120px;
overflow: hidden;
border: 1px solid #f1f1f1;
cursor: pointer;
img {
display: inline-block;
}
}
.el-form {
margin-top: 20px;
width: 500px;
margin-left: 200px;
.toBind {
cursor: pointer;
&:hover {
color: $base-color;
}
}
}
.btn {
text-align: center;
}
}
}
</style>