1 changed files with 154 additions and 0 deletions
@ -0,0 +1,154 @@ |
|||||
|
<template> |
||||
|
<el-dialog class="setting" title="设置" :visible.sync="visible" width="30%" :before-close="handleClose"> |
||||
|
<el-form :model="userInfo" label-width="80px" :rules="rules" ref="settingForm"> |
||||
|
<el-form-item label="头像"> |
||||
|
<el-upload class="avatar-uploader" action="/api/image/upload" :show-file-list="false" :on-success="handleAvatarSuccess" |
||||
|
:before-upload="beforeAvatarUpload" accept="image/jpeg, image/png, image/jpg"> |
||||
|
<img v-if="userInfo.headImage" :src="userInfo.headImage" class="avatar"> |
||||
|
<i v-else class="el-icon-plus avatar-uploader-icon"></i> |
||||
|
</el-upload> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="用户名"> |
||||
|
<el-input disabled v-model="userInfo.userName" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item prop="nickName" label="昵称"> |
||||
|
<el-input v-model="userInfo.nickName" autocomplete="off"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="性别"> |
||||
|
<el-radio-group v-model="userInfo.sex"> |
||||
|
<el-radio :label="0">男</el-radio> |
||||
|
<el-radio :label="1">女</el-radio> |
||||
|
</el-radio-group> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="个性签名"> |
||||
|
<el-input type="textarea" v-model="userInfo.signature"></el-input> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
|
||||
|
<span slot="footer" class="dialog-footer"> |
||||
|
<el-button @click="handleClose()">取 消</el-button> |
||||
|
<el-button type="primary" @click="handleSubmit()">确 定</el-button> |
||||
|
</span> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import HeadImage from "../HeadImage.vue"; |
||||
|
|
||||
|
export default { |
||||
|
name: "setting", |
||||
|
components: { |
||||
|
HeadImage |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
userInfo: { |
||||
|
|
||||
|
}, |
||||
|
rules: { |
||||
|
nickName: [{ |
||||
|
required: true, |
||||
|
message: '请输入昵称', |
||||
|
trigger: 'blur' |
||||
|
}] |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
|
||||
|
handleClose() { |
||||
|
this.visible = false; |
||||
|
this.$emit("close"); |
||||
|
}, |
||||
|
handleSubmit() { |
||||
|
this.$refs['settingForm'].validate((valid) => { |
||||
|
if (!valid) { |
||||
|
return false; |
||||
|
} |
||||
|
this.$http({ |
||||
|
url: "/api/user/update", |
||||
|
method: "put", |
||||
|
data: this.userInfo |
||||
|
}).then(()=>{ |
||||
|
this.$store.commit("setUserInfo",this.userInfo); |
||||
|
this.visible = false; |
||||
|
this.$emit("close"); |
||||
|
this.$message.success("修改成功"); |
||||
|
}) |
||||
|
|
||||
|
|
||||
|
}); |
||||
|
}, |
||||
|
handleAvatarSuccess(res, file) { |
||||
|
console.log(res); |
||||
|
this.loading.close(); |
||||
|
if (res.code == 200) { |
||||
|
this.userInfo.headImage = res.data.originUrl; |
||||
|
this.userInfo.headImageThumb = res.data.thumbUrl; |
||||
|
} else { |
||||
|
this.$message.error(res.message); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
beforeAvatarUpload(file) { |
||||
|
const limitSize = file.size * 1024 * 1024; |
||||
|
if (file.size > limitSize) { |
||||
|
this.$message.error('上传头像图片大小不能超过 5MB!'); |
||||
|
return false |
||||
|
} |
||||
|
this.loading = this.$loading({ |
||||
|
lock: true, |
||||
|
text: '正在上传...', |
||||
|
spinner: 'el-icon-loading', |
||||
|
background: 'rgba(0, 0, 0, 0.7)' |
||||
|
}); |
||||
|
|
||||
|
return true; |
||||
|
} |
||||
|
}, |
||||
|
props: { |
||||
|
visible: { |
||||
|
type: Boolean |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.userInfo = this.$store.state.userStore.userInfo; |
||||
|
console.log(this.userInfo) |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.setting { |
||||
|
.avatar-uploader { |
||||
|
|
||||
|
.el-upload { |
||||
|
border: 1px dashed #d9d9d9 !important; |
||||
|
border-radius: 6px; |
||||
|
cursor: pointer; |
||||
|
position: relative; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.el-upload:hover { |
||||
|
border-color: #409EFF; |
||||
|
} |
||||
|
|
||||
|
.avatar-uploader-icon { |
||||
|
font-size: 28px; |
||||
|
color: #8c939d; |
||||
|
width: 178px; |
||||
|
height: 178px; |
||||
|
line-height: 178px; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.avatar { |
||||
|
width: 178px; |
||||
|
height: 178px; |
||||
|
display: block; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue