上传头像功能

pull/2/head
李强 2021-03-24 22:56:09 +08:00
parent 8075c55859
commit 29993485bb
5 changed files with 31 additions and 10 deletions

View File

@ -28,6 +28,8 @@ urlpatterns = [
re_path('user/resetPwd/', UserProfileModelViewSet.as_view({'put': 'reset_pwd'})),
# 用户自己重置密码
re_path('user/profile/updatePwd/', UserProfileModelViewSet.as_view({'put': 'update_pwd'})),
# 更新用户头像
re_path('user/profile/avatar/', UserProfileModelViewSet.as_view({'put': 'put_avatar'})),
# 获取、更新用户个人信息
re_path('user/profile/', UserProfileModelViewSet.as_view({'get': 'profile', 'put': 'put_profile'})),
# 导出用户

View File

@ -359,6 +359,22 @@ class UserProfileModelViewSet(CustomModelViewSet):
self.handle_logging(request, instance=instance, *args, **kwargs)
return SuccessResponse(serializer.data)
def put_avatar(self, request: Request, *args, **kwargs):
"""
更新用户头像
:param request:
:param args:
:param kwargs:
:return:
"""
instance = self.queryset.get(id=request.user.id)
instance.avatar = request.data.get('avatar_url', None)
instance.save()
serializer = self.get_serializer(instance)
if hasattr(self, 'handle_logging'):
self.handle_logging(request, instance=instance, *args, **kwargs)
return SuccessResponse(serializer.data)
def update_pwd(self, request: Request, *args, **kwargs):
"""
个人修改密码

View File

@ -1,4 +1,4 @@
from django.db.models import CharField, BooleanField
from django.db.models import CharField, BooleanField, TextField
from ...op_drf.models import CoreModel
@ -8,7 +8,7 @@ class LoginInfor(CoreModel):
browser = CharField(max_length=64, verbose_name="浏览器")
ipaddr = CharField(max_length=32, verbose_name="ip地址", null=True, blank=True)
loginLocation = CharField(max_length=64, verbose_name="登录位置", null=True, blank=True)
msg = CharField(max_length=64, verbose_name="操作信息", null=True, blank=True)
msg = TextField(verbose_name="操作信息", null=True, blank=True)
os = CharField(max_length=64, verbose_name="操作系统", null=True, blank=True)
status = BooleanField(default=False, verbose_name="登录状态")

View File

@ -113,7 +113,7 @@ export function updateUserPwd(oldPassword, newPassword) {
export function uploadAvatar(data) {
return request({
url: '/admin/permission/user/profile/avatar/',
method: 'post',
method: 'put',
data: data
})
}

View File

@ -56,6 +56,7 @@
import store from "@/store";
import { VueCropper } from "vue-cropper";
import { uploadAvatar } from "@/api/vadmin/permission/user";
import {addSaveFile} from "@/api/vadmin/system/savefile";
export default {
components: { VueCropper },
@ -123,13 +124,15 @@ export default {
uploadImg() {
this.$refs.cropper.getCropBlob(data => {
let formData = new FormData();
formData.append("avatarfile", data);
uploadAvatar(formData).then(response => {
this.open = false;
this.options.img = process.env.VUE_APP_BASE_API + response.imgUrl;
store.commit('SET_AVATAR', this.options.img);
this.msgSuccess("修改成功");
this.visible = false;
formData.append("file", data);
addSaveFile(formData).then(res => {
uploadAvatar({avatar_url:res.data.file_url}).then(response => {
this.open = false;
this.options.img = process.env.VUE_APP_BASE_API + response.data.avatar;
store.commit('SET_AVATAR', this.options.img);
this.msgSuccess("修改成功");
this.visible = false;
})
});
});
},