From ad8cf4f0fc8302f97da36bfce5fe7127d4ff5785 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8C=BF=E5=B0=8F=E5=A4=A9?= <1638245306@qq.com>
Date: Fri, 15 Apr 2022 21:26:01 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8F=98=E5=8C=96:?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
优化用户头像
---
backend/dvadmin/system/models.py | 2 +-
backend/dvadmin/system/views/file_list.py | 3 +-
backend/dvadmin/system/views/login.py | 1 +
backend/dvadmin/system/views/user.py | 3 +-
.../components/header-user/index.vue | 1 +
.../components/header-user/userinfo.vue | 31 ++++++++++
web/src/router/routes.js | 56 +++++++++----------
.../store/modules/d2admin/modules/account.js | 2 +-
web/src/views/system/user/crud.js | 7 +--
9 files changed, 70 insertions(+), 36 deletions(-)
diff --git a/backend/dvadmin/system/models.py b/backend/dvadmin/system/models.py
index 6d0fcda..27dea49 100644
--- a/backend/dvadmin/system/models.py
+++ b/backend/dvadmin/system/models.py
@@ -206,7 +206,7 @@ class OperationLog(CoreModel):
def media_file_name(instance, filename):
h = instance.md5sum
basename, ext = os.path.splitext(filename)
- return os.path.join('media/files', h[0:1], h[1:2], h + ext.lower())
+ return os.path.join('files', h[0:1], h[1:2], h + ext.lower())
class FileList(CoreModel):
diff --git a/backend/dvadmin/system/views/file_list.py b/backend/dvadmin/system/views/file_list.py
index e9f8b07..87c4355 100644
--- a/backend/dvadmin/system/views/file_list.py
+++ b/backend/dvadmin/system/views/file_list.py
@@ -17,7 +17,7 @@ class FileSerializer(CustomModelSerializer):
url = serializers.SerializerMethodField(read_only=True)
def get_url(self, instance):
- return str(instance.url)
+ return 'media/'+str(instance.url)
class Meta:
model = FileList
@@ -41,3 +41,4 @@ class FileViewSet(CustomModelViewSet):
queryset = FileList.objects.all()
serializer_class = FileSerializer
filter_fields = ['name', ]
+ permission_classes = []
diff --git a/backend/dvadmin/system/views/login.py b/backend/dvadmin/system/views/login.py
index 2c3e291..3a85d10 100644
--- a/backend/dvadmin/system/views/login.py
+++ b/backend/dvadmin/system/views/login.py
@@ -88,6 +88,7 @@ class LoginSerializer(TokenObtainPairSerializer):
data = super().validate(attrs)
data['name'] = self.user.name
data['userId'] = self.user.id
+ data['avatar'] = self.user.avatar
return {
"code": 2000,
"msg": "请求成功",
diff --git a/backend/dvadmin/system/views/user.py b/backend/dvadmin/system/views/user.py
index 5144952..36cb938 100644
--- a/backend/dvadmin/system/views/user.py
+++ b/backend/dvadmin/system/views/user.py
@@ -156,7 +156,8 @@ class UserViewSet(CustomModelViewSet):
"name": user.name,
"mobile": user.mobile,
"gender": user.gender,
- "email": user.email
+ "email": user.email,
+ 'avatar':user.avatar
}
return DetailResponse(data=result, msg="获取成功")
diff --git a/web/src/layout/header-aside/components/header-user/index.vue b/web/src/layout/header-aside/components/header-user/index.vue
index fd7a566..d60058d 100644
--- a/web/src/layout/header-aside/components/header-user/index.vue
+++ b/web/src/layout/header-aside/components/header-user/index.vue
@@ -20,6 +20,7 @@
注销
+
diff --git a/web/src/layout/header-aside/components/header-user/userinfo.vue b/web/src/layout/header-aside/components/header-user/userinfo.vue
index e1cf799..67c8dff 100644
--- a/web/src/layout/header-aside/components/header-user/userinfo.vue
+++ b/web/src/layout/header-aside/components/header-user/userinfo.vue
@@ -20,6 +20,21 @@
:label-position="position"
center
>
+
+
+
+
+
+
+
@@ -130,6 +145,11 @@ export default {
return {
position: 'left',
activeName: 'userInfo',
+ action: util.baseURL() + 'api/system/file/',
+ headers: {
+ Authorization: 'JWT ' + util.cookies.get('token')
+ },
+ fileList:[],
userInfo: {
name: '',
gender: '',
@@ -177,6 +197,7 @@ export default {
params: {}
}).then((res) => {
_self.userInfo = res.data
+ _self.fileList = [{name:'avatar.png',url:res.data.avatar}]
})
},
/**
@@ -251,6 +272,16 @@ export default {
this.$message.error('表单校验失败,请检查')
}
})
+ },
+ /**
+ * 头像上传
+ * @param res
+ * @param file
+ */
+ handleAvatarSuccess(res, file) {
+ console.log(11,res)
+ this.fileList =[{ url: util.baseURL() + res.data.url, name:file.name }]
+ this.userInfo.avatar = util.baseURL() + res.data.url;
}
}
}
diff --git a/web/src/router/routes.js b/web/src/router/routes.js
index 51916e0..7d9b192 100644
--- a/web/src/router/routes.js
+++ b/web/src/router/routes.js
@@ -88,25 +88,25 @@ const frameIn = [{
// component: _import('system/user')
// },
// // 系统 按钮配置
- {
- path: 'button',
- name: 'button',
- meta: {
- title: '按钮',
- auth: true
- },
- component: _import('system/button')
- },
- // // 系统 菜单权限
- {
- path: 'menuButton/:id',
- name: 'menuButton',
- meta: {
- title: '菜单按钮',
- auth: true
- },
- component: _import('system/menuButton')
- },
+ // {
+ // path: 'button',
+ // name: 'button',
+ // meta: {
+ // title: '按钮',
+ // auth: true
+ // },
+ // component: _import('system/button')
+ // },
+ // // // 系统 菜单权限
+ // {
+ // path: 'menuButton/:id',
+ // name: 'menuButton',
+ // meta: {
+ // title: '菜单按钮',
+ // auth: true
+ // },
+ // component: _import('system/menuButton')
+ // },
// // 系统 角色管理
// {
// path: 'role',
@@ -149,15 +149,15 @@ const frameIn = [{
// component: _import('system/log/operationLog')
// },
// 系统 前端日志
- {
- path: 'frontendLog',
- name: 'frontendLog',
- meta: {
- title: '前端日志',
- auth: true
- },
- component: _import('system/log/frontendLog')
- },
+ // {
+ // path: 'frontendLog',
+ // name: 'frontendLog',
+ // meta: {
+ // title: '前端日志',
+ // auth: true
+ // },
+ // component: _import('system/log/frontendLog')
+ // },
// 刷新页面 必须保留
{
path: 'refresh',
diff --git a/web/src/store/modules/d2admin/modules/account.js b/web/src/store/modules/d2admin/modules/account.js
index e01badb..ce612c4 100644
--- a/web/src/store/modules/d2admin/modules/account.js
+++ b/web/src/store/modules/d2admin/modules/account.js
@@ -42,7 +42,7 @@ export default {
util.cookies.set('token', res.access)
util.cookies.set('refresh', res.refresh)
// 设置 vuex 用户信息
- await dispatch('d2admin/user/set', { name: res.name, user_id: res.userId }, { root: true })
+ await dispatch('d2admin/user/set', { name: res.name, user_id: res.userId,avatar:res.avatar }, { root: true })
// 用户登录后从持久化数据加载一系列的设置
await dispatch('load')
},
diff --git a/web/src/views/system/user/crud.js b/web/src/views/system/user/crud.js
index f0cd911..e151be8 100644
--- a/web/src/views/system/user/crud.js
+++ b/web/src/views/system/user/crud.js
@@ -3,7 +3,7 @@ import { BUTTON_STATUS_BOOL } from '@/config/button'
import { urlPrefix as deptPrefix } from '../dept/api'
import util from '@/libs/util'
-const uploadUrl = util.baseURL() + 'api/system/img/'
+const uploadUrl = util.baseURL() + 'api/system/file/'
export const crudOptions = (vm) => {
return {
pageOptions: {
@@ -261,7 +261,6 @@ export const crudOptions = (vm) => {
props: {
uploader: {
action: uploadUrl,
- name: 'url',
headers: {
Authorization: 'JWT ' + util.cookies.get('token')
},
@@ -270,7 +269,7 @@ export const crudOptions = (vm) => {
if (ret.data === null || ret.data === '') {
throw new Error('上传失败')
}
- return { url: ret.data.data.url, key: option.data.key }
+ return { url: util.baseURL() + ret.data.url, key: option.data.key }
}
},
elProps: { // 与el-uploader 配置一致
@@ -297,7 +296,7 @@ export const crudOptions = (vm) => {
props: {
buildUrl (value, item) {
if (value && value.indexOf('http') !== 0) {
- return '/api/upload/form/download?key=' + value
+ return util.baseURL() + value
}
return value
}