优化案件模块
This commit is contained in:
@@ -2163,35 +2163,70 @@ class PaymentRequest(APIView):
|
||||
class PaymentDisplay(APIView):
|
||||
def post(self, request, *args, **kwargs):
|
||||
"""
|
||||
付款申请列表展示
|
||||
只显示:申请人、收款单位、付款金额、支付说明
|
||||
付款申请列表展示接口
|
||||
必填参数:page(页码)、per_page(每页数量)
|
||||
可选参数:times(开始时间)、end_time(结束时间)、payee_name(收款方名称搜索)、applicant(申请人搜索)
|
||||
返回:申请人、收款单位、付款金额、支付说明
|
||||
"""
|
||||
# 必填参数:页数和每页数量
|
||||
page = request.data.get('page')
|
||||
per_page = request.data.get('per_page')
|
||||
times = request.data.get('times')
|
||||
end_time = request.data.get('end_time')
|
||||
payee_name = request.data.get('payee_name') # 收款方名称搜索
|
||||
applicant = request.data.get('applicant') # 申请人搜索
|
||||
|
||||
if not all([page, per_page]):
|
||||
return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST)
|
||||
# 可选参数:搜索条件
|
||||
times = request.data.get('times') # 开始时间(可选)
|
||||
end_time = request.data.get('end_time') # 结束时间(可选)
|
||||
payee_name = request.data.get('payee_name') # 收款方名称搜索(可选)
|
||||
applicant = request.data.get('applicant') # 申请人搜索(可选)
|
||||
|
||||
# 验证必填参数
|
||||
if not page:
|
||||
return Response({
|
||||
'status': 'error',
|
||||
'message': '缺少必填参数: page(页码)',
|
||||
'code': 1
|
||||
}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
if not per_page:
|
||||
return Response({
|
||||
'status': 'error',
|
||||
'message': '缺少必填参数: per_page(每页数量)',
|
||||
'code': 1
|
||||
}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
# 转换为整数
|
||||
try:
|
||||
page = int(page)
|
||||
per_page = int(per_page)
|
||||
except (ValueError, TypeError):
|
||||
return Response({
|
||||
'status': 'error',
|
||||
'message': '参数类型错误: page和per_page必须是数字',
|
||||
'code': 1
|
||||
}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
# 构建查询条件
|
||||
Q_obj = Q(is_deleted=False)
|
||||
|
||||
# 时间范围筛选(可选)
|
||||
if times and end_time:
|
||||
Q_obj &= Q(submit_tiem__gte=times) & Q(submit_tiem__lte=end_time)
|
||||
|
||||
# 收款方名称搜索(可选,兼容新旧字段)
|
||||
if payee_name:
|
||||
# 兼容旧字段
|
||||
Q_obj &= Q(payee__icontains=payee_name)
|
||||
|
||||
# 申请人搜索(可选)
|
||||
if applicant:
|
||||
Q_obj &= Q(applicant__icontains=applicant)
|
||||
|
||||
# 只查询存在的字段,避免访问不存在的字段
|
||||
# 使用only()只查询确定存在的字段
|
||||
# 查询数据(只查询存在的字段,避免访问不存在的字段)
|
||||
pay = Payment.objects.filter(Q_obj).only(
|
||||
'id', 'applicant', 'amount', 'state', 'submit_tiem', 'payee'
|
||||
).order_by('-id')
|
||||
|
||||
total = pay.count()
|
||||
|
||||
# 分页处理
|
||||
paginator = Paginator(pay, per_page)
|
||||
try:
|
||||
user_agents_page = paginator.page(page)
|
||||
@@ -2200,10 +2235,10 @@ class PaymentDisplay(APIView):
|
||||
except EmptyPage:
|
||||
user_agents_page = paginator.page(paginator.num_pages)
|
||||
|
||||
# 构建返回数据
|
||||
data = []
|
||||
for info in user_agents_page.object_list:
|
||||
# 安全地获取字段值,兼容新旧字段
|
||||
# 使用getattr()安全访问可能不存在的字段
|
||||
payee_name_value = getattr(info, 'payee_name', None) or getattr(info, 'payee', None) or ''
|
||||
payment_description_value = getattr(info, 'payment_description', None) or ''
|
||||
|
||||
@@ -2217,7 +2252,13 @@ class PaymentDisplay(APIView):
|
||||
"submit_tiem": info.submit_tiem, # 提交时间
|
||||
}
|
||||
data.append(itme)
|
||||
return Response({'message': '展示成功', "total": total, 'data': data, 'code': 0}, status=status.HTTP_200_OK)
|
||||
|
||||
return Response({
|
||||
'message': '展示成功',
|
||||
"total": total,
|
||||
'data': data,
|
||||
'code': 0
|
||||
}, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class EditPayment(APIView):
|
||||
|
||||
Reference in New Issue
Block a user