diff --git a/finance/views.py b/finance/views.py index 7b6ca61..9bb7e2b 100644 --- a/finance/views.py +++ b/finance/views.py @@ -2513,13 +2513,42 @@ class reimbursement(APIView): class reimbursementdetail(APIView): def post(self, request, *args, **kwargs): + """ + 报销申请列表展示接口 + 必填参数:page(页码)、per_page(每页数量) + 可选参数:times(开始时间)、end_time(结束时间)、person(报销人搜索) + """ page = request.data.get('page') per_page = request.data.get('per_page') times = request.data.get('times') end_time = request.data.get('end_time') person = request.data.get('person') - if not all([page, per_page]): - return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) + + # 验证必填参数 + 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() if times and end_time: Q_obj &= Q(times__gte=times) & Q(times__lte=end_time) @@ -2724,13 +2753,42 @@ class Change(APIView): class ChangeDetail(APIView): def post(self, request, *args, **kwargs): + """ + 工资/奖金变更列表展示接口 + 必填参数:page(页码)、per_page(每页数量) + 可选参数:times(开始时间)、end_time(结束时间)、username(用户名搜索) + """ page = request.data.get('page') per_page = request.data.get('per_page') times = request.data.get('times') end_time = request.data.get('end_time') username = request.data.get('username') - if not all([page, per_page]): - return Response({'status': 'error', 'message': '缺少参数', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) + + # 验证必填参数 + 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() if times and end_time: Q_obj &= Q(times__gte=times) & Q(times__lte=end_time) diff --git a/接口列表文档.md b/接口列表文档.md new file mode 100644 index 0000000..76eb3cc --- /dev/null +++ b/接口列表文档.md @@ -0,0 +1,133 @@ +# 接口列表文档 + +本文档列出了系统中的所有主要接口及其说明。 + +## 用户相关接口 (`/user/`) + +### 1. 待办列表 +- **接口地址**: `POST /user/roxyexhibition` +- **说明**: 代办展示,显示当前用户的待办事项列表 +- **主要功能**: 根据用户角色和部门显示待办审批事项 + +### 2. 审批处理 +- **接口地址**: `POST /user/approval_processing` +- **说明**: 审批处理接口,用于处理各种类型的审批(开票、收入确认、付款申请、报销申请等) +- **主要功能**: 根据审批类型和团队类型进行多级审批流程处理 + +### 3. 审批状态查询 +- **接口地址**: `POST /user/approval-status-check` +- **说明**: 查询待办是否已经审核完全通过 +- **主要功能**: 前端财务查看时,传入类型和待办ID,返回审批状态 + +### 4. 人员列表 +- **接口地址**: `GET /user/personneldisplay` +- **说明**: 人员列表展示 +- **主要功能**: 显示所有人员信息 + +## 财务相关接口 (`/finance/`) + +### 1. 入职财务登记 +- **接口地址**: `POST /finance/user-register` +- **说明**: 入职财务登记,只需填写姓名、入职时间、工资三个字段 + +### 2. 已入职用户列表 +- **接口地址**: `POST /finance/registered-user-list` +- **说明**: 查询已完成入职财务登记的用户列表 + +### 3. 未入职用户列表 +- **接口地址**: `POST /finance/unregistered-user-list` +- **说明**: 查询在人事管理中已创建,但还没有完成入职财务登记的用户 + +### 4. 开票申请 +- **接口地址**: `POST /finance/issue-invoice` +- **说明**: 财务开票,合同号从案件表选择,负责人自动同步 + +### 5. 开票详情 +- **接口地址**: `POST /finance/issue-Detail` +- **说明**: 开票记录详情查询 + +### 6. 收入确认 +- **接口地址**: `POST /finance/confirm` +- **说明**: 收入确认,根据团队类型判断是否需要审批 + +### 7. 收入确认列表 +- **接口地址**: `POST /finance/confirmdisplay` +- **说明**: 收入确认展示,权限控制:律师只能看自己的数据,管委会和财务部能查看所有 + +### 8. 调账申请 +- **接口地址**: `POST /finance/loan` +- **说明**: 调账申请,直接抄送财务负责人储存、办理,不需要审核流程 + +### 9. 调账申请列表 +- **接口地址**: `POST /finance/loandisplay` +- **说明**: 调账申请列表展示,CustomerID字段直接返回客户名字 + +### 10. 付款申请 +- **接口地址**: `POST /finance/payment-request` +- **说明**: 付款申请,根据团队类型判断是否需要审批(独立律师不需要,团队律师需要) + +### 11. 付款申请列表 +- **接口地址**: `POST /finance/PaymentDisplay` +- **说明**: 付款申请列表展示接口,必填参数:page(页码)、per_page(每页数量) + +### 12. 报销申请 +- **接口地址**: `POST /finance/reimbursement` +- **说明**: 报销申请,根据团队类型判断是否需要审批(独立律师不需要,团队律师需要多级审批) + +### 13. 报销申请列表 +- **接口地址**: `POST /finance/reidetail` +- **说明**: 报销申请列表展示接口,必填参数:page(页码)、per_page(每页数量) + +### 14. 工资/奖金变更 +- **接口地址**: `POST /finance/change` +- **说明**: 工资/奖金变更申请 + +### 15. 工资/奖金变更列表 +- **接口地址**: `POST /finance/ChangeDetail` +- **说明**: 工资/奖金变更列表展示接口 + +### 16. 离职财务登记 +- **接口地址**: `POST /finance/user-departure` +- **说明**: 离职财务登记,只需填写姓名和离职时间,其余字段从人事管理中同步 + +### 17. 离职登记列表 +- **接口地址**: `POST /finance/user-departure-detail` +- **说明**: 离职登记列表查询 + +## 业务相关接口 (`/business/`) + +### 1. 案件下拉列表 +- **接口地址**: `POST /business/case-dropdown-list` +- **说明**: 获取案件下拉列表,用于选择案件 + +## 审批流程说明 + +### 团队类型判断 +- **个人团队(personal/独立律师)**: + - 不触发审批流程 + - 直接抄送财务 + - 状态直接设为"已通过" + +- **团队(team/团队律师)**: + - 需要审批流程 + - 必须提供 `approvers` 参数(审批人列表) + - 按审批人顺序依次审批 + - 最后一个审批人通过后,抄送财务 + - 状态初始为"审核中" + +### 审批流程 +``` +提交申请 → 审批人1 → 审批人2 → ... → 审批人N → 财务 → 完成 +``` + +- 每个审批人按顺序审核 +- 如果任一审批人拒绝,流程终止,状态设为"未通过" +- 所有审批人通过后,自动抄送财务 +- 财务查看后,状态更新为"已通过" + +## 注意事项 + +1. 所有列表接口都需要 `page` 和 `per_page` 参数 +2. 审批相关接口需要根据团队类型提供 `approvers` 参数 +3. 财务查看时,`state` 参数可选,默认为"已通过" +4. 所有接口都支持通过 `token` 自动获取当前用户信息