From 2357e99b5736576a42e325cb44b0336417e129f3 Mon Sep 17 00:00:00 2001 From: 27942 Date: Tue, 30 Dec 2025 15:25:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=A6=BB=E8=81=8C=E7=99=BB?= =?UTF-8?q?=E8=AE=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- User/views.py | 28 +++++++++++++++++++++++----- finance/views.py | 17 ++++++++++++++--- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/User/views.py b/User/views.py index 08a32ee..cc1cb13 100644 --- a/User/views.py +++ b/User/views.py @@ -522,11 +522,29 @@ class roxyExhibition(APIView): if not all([page, per_page]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) - user = User.objects.get(token=token) - approvals = Approval.objects.filter( - state="审核中", - personincharge__in=[user.username, user.department] - ).order_by('-id') + user = User.objects.prefetch_related('department').get(token=token) + + # 获取用户所属的所有部门ID(转为字符串,因为personincharge存储的是字符串) + user_department_ids = list(user.department.values_list('id', flat=True)) + user_department_ids_str = [str(did) for did in user_department_ids] + + # 构建查询条件: + # 1. 如果personincharge是部门ID,匹配用户所属部门 + # 2. 兼容旧数据:如果personincharge是用户名,匹配当前用户名 + query = Q(state="审核中") + + # 部门匹配:personincharge字段存储的是部门ID(字符串格式) + department_query = Q() + if user_department_ids_str: + department_query = Q(personincharge__in=user_department_ids_str) + + # 兼容旧数据:如果personincharge是用户名 + person_query = Q(personincharge=user.username) + + # 组合查询:部门匹配 OR 用户名匹配 + query &= (department_query | person_query) + + approvals = Approval.objects.filter(query).order_by('-id') total = len(approvals) paginator = Paginator(approvals, per_page) diff --git a/finance/views.py b/finance/views.py index 6805fd5..997d3b8 100644 --- a/finance/views.py +++ b/finance/views.py @@ -3,7 +3,7 @@ from rest_framework.response import Response from rest_framework import status import json import ast -from User.models import User,Approval +from User.models import User,Approval,Department import datetime from .models import Invoice,Income,Accounts,Payment,Reimbursement,BonusChange from utility.utility import flies @@ -26,9 +26,17 @@ class UserRegister(APIView): Dateofjoining = request.data.get('Dateofjoining') position = request.data.get('position') salary = request.data.get('salary') - personincharge = request.data.get('personincharge') + approval_department = request.data.get('approval_department') # 审批部门ID if not all([username, card, Dateofjoining, position, salary]): return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) + + # 验证审批部门是否存在 + if approval_department: + try: + department = Department.objects.get(id=approval_department) + except Department.DoesNotExist: + return Response({'status': 'error', 'message': '审批部门不存在', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) + Dateofjoinings = datetime.datetime.strptime(Dateofjoining, "%Y-%m-%d") user = User.objects.get(username=username) user.card = card @@ -40,11 +48,14 @@ class UserRegister(APIView): today = datetime.datetime.now() formatted_date = today.strftime("%Y-%m-%d") + + # 将审批部门ID存储到personincharge字段 + # 这样该部门下的所有人员都能看到审批信息 Approval.objects.create( title=username+"入职财务登记", content=username+"在"+Dateofjoining+"办理入职,身份证:"+card+",岗位:"+position+"薪资:"+salary, times=formatted_date, - personincharge=personincharge, + personincharge=str(approval_department) if approval_department else '', # 存储部门ID state='审核中', type="入职财务登记", user_id=user.id