diff --git a/backend/dvadmin/system/views/user.py b/backend/dvadmin/system/views/user.py
index 3235f2e..151f05c 100644
--- a/backend/dvadmin/system/views/user.py
+++ b/backend/dvadmin/system/views/user.py
@@ -5,7 +5,7 @@ from django_restql.fields import DynamicSerializerMethodField
from rest_framework import serializers
from rest_framework.decorators import action, permission_classes
from rest_framework.permissions import IsAuthenticated
-
+from django.db import connection
from application import dispatch
from dvadmin.system.models import Users, Role, Dept
from dvadmin.system.views.role import RoleSerializer
@@ -15,17 +15,18 @@ from dvadmin.utils.validator import CustomUniqueValidator
from dvadmin.utils.viewset import CustomModelViewSet
-def recursion(instance,parent,result):
- new_instance = getattr(instance,parent,None)
+def recursion(instance, parent, result):
+ new_instance = getattr(instance, parent, None)
res = []
data = getattr(instance, result, None)
if data:
res.append(data)
if new_instance:
- array = recursion(new_instance,parent,result)
- res+=(array)
+ array = recursion(new_instance, parent, result)
+ res += (array)
return res
+
class UserSerializer(CustomModelSerializer):
"""
用户管理-序列化器
@@ -63,12 +64,13 @@ class UsersInitSerializer(CustomModelSerializer):
"""
初始化获取数信息(用于生成初始化json文件)
"""
+
def save(self, **kwargs):
instance = super().save(**kwargs)
- role_key = self.initial_data.get('role_key',[])
- role_ids = Role.objects.filter(key__in=role_key).values_list('id',flat=True)
+ role_key = self.initial_data.get('role_key', [])
+ role_ids = Role.objects.filter(key__in=role_key).values_list('id', flat=True)
instance.role.set(role_ids)
- dept_key = self.initial_data.get('dept_key',None)
+ dept_key = self.initial_data.get('dept_key', None)
dept_id = Dept.objects.filter(key=dept_key).first()
instance.dept = dept_id
instance.save()
@@ -162,6 +164,29 @@ class UserUpdateSerializer(CustomModelSerializer):
}
+class UserInfoUpdateSerializer(CustomModelSerializer):
+ """
+ 用户修改-序列化器
+ """
+ mobile = serializers.CharField(
+ max_length=50,
+ validators=[
+ CustomUniqueValidator(queryset=Users.objects.all(), message="手机号必须唯一")
+ ],
+ allow_blank=True
+ )
+
+ def update(self, instance, validated_data):
+ return super().update(instance, validated_data)
+
+ class Meta:
+ model = Users
+ fields = ['email', 'mobile', 'avatar', 'name', 'gender']
+ extra_kwargs = {
+ "post": {"required": False, "read_only": True},
+ }
+
+
class ExportUserProfileSerializer(CustomModelSerializer):
"""
用户导出 序列化器
@@ -242,15 +267,15 @@ class UserViewSet(CustomModelViewSet):
search_fields = ["username", "name", "gender", "dept__name", "role__name"]
# 导出
export_field_label = {
- "username":"用户账号",
- "name":"用户名称",
- "email":"用户邮箱",
- "mobile":"手机号码",
- "gender":"用户性别",
- "is_active":"帐号状态",
- "last_login":"最后登录时间",
- "dept_name":"部门名称",
- "dept_owner":"部门负责人",
+ "username": "用户账号",
+ "name": "用户名称",
+ "email": "用户邮箱",
+ "mobile": "手机号码",
+ "gender": "用户性别",
+ "is_active": "帐号状态",
+ "last_login": "最后登录时间",
+ "dept_name": "部门名称",
+ "dept_owner": "部门负责人",
}
export_serializer_class = ExportUserProfileSerializer
# 导入
@@ -283,6 +308,7 @@ class UserViewSet(CustomModelViewSet):
user = request.user
result = {
"id": user.id,
+ "username": user.username,
"name": user.name,
"mobile": user.mobile,
"user_type": user.user_type,
@@ -293,6 +319,9 @@ class UserViewSet(CustomModelViewSet):
"is_superuser": user.is_superuser,
"role": user.role.values_list('id', flat=True),
}
+ if hasattr(connection, 'tenant'):
+ result['tenant_id'] = connection.tenant and connection.tenant.id
+ result['tenant_name'] = connection.tenant and connection.tenant.name
dept = getattr(user, 'dept', None)
if dept:
result['dept_info'] = {
@@ -307,8 +336,9 @@ class UserViewSet(CustomModelViewSet):
@action(methods=["PUT"], detail=False, permission_classes=[IsAuthenticated])
def update_user_info(self, request):
"""修改当前用户信息"""
- user = request.user
- Users.objects.filter(id=user.id).update(**request.data)
+ serializer = UserInfoUpdateSerializer(request.user, data=request.data, request=request)
+ serializer.is_valid(raise_exception=True)
+ serializer.save()
return DetailResponse(data=None, msg="修改成功")
@action(methods=["PUT"], detail=True, permission_classes=[IsAuthenticated])
diff --git a/web/public/image/avatar.png b/web/public/image/avatar.png
new file mode 100644
index 0000000..cb82953
Binary files /dev/null and b/web/public/image/avatar.png differ
diff --git a/web/src/layout/header-aside/components/header-color/index.vue b/web/src/layout/header-aside/components/header-color/index.vue
index f3d0d52..c255f21 100644
--- a/web/src/layout/header-aside/components/header-color/index.vue
+++ b/web/src/layout/header-aside/components/header-color/index.vue
@@ -1,10 +1,12 @@
-
+
+
+