expense_api.dart 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import 'package:flutter_riverpod/flutter_riverpod.dart';
  2. import '../../core/network/api_client.dart';
  3. import '../../core/network/api_response.dart';
  4. import '../../app.dart';
  5. import '../../shared/models/pagination_model.dart';
  6. import 'expense_model.dart';
  7. final expenseApiProvider = Provider<ExpenseApi>(
  8. (ref) => ExpenseApi(ref.read(apiClientProvider)),
  9. );
  10. class ExpenseApi {
  11. final ApiClient _client;
  12. ExpenseApi(this._client);
  13. /// 费用报销列表(分页)
  14. Future<PaginatedData<ExpenseModel>> fetchList({
  15. String status = '',
  16. String keyword = '',
  17. String startDate = '',
  18. String endDate = '',
  19. String usr = '',
  20. int page = 1,
  21. int size = 20,
  22. }) async {
  23. final response = await _client.get<Map<String, dynamic>>(
  24. '/OA/GetExpenseReports',
  25. queryParameters: {
  26. 'status': status,
  27. 'keyword': keyword,
  28. 'startDate': startDate,
  29. 'endDate': endDate,
  30. 'usr': usr,
  31. 'page': page,
  32. 'size': size,
  33. },
  34. );
  35. return PaginatedData.fromJson(response.data!, ExpenseModel.fromJson);
  36. }
  37. /// 费用报销详情(主表+明细)
  38. Future<ExpenseModel> fetchDetail(String billNo) async {
  39. final response = await _client.get<Map<String, dynamic>>(
  40. '/OA/GetExpenseReportDetail',
  41. queryParameters: {'billNo': billNo},
  42. );
  43. return ExpenseModel.fromJson(response.data!);
  44. }
  45. /// 提交审批
  46. Future<void> submit(Map<String, dynamic> data) async {
  47. await _client.post('/OA/BillSave', data: {
  48. 'erpCategory': 'MasterService',
  49. 'billId': 'BX',
  50. 'procId': '',
  51. 'data': data,
  52. });
  53. }
  54. /// 财务核销
  55. Future<void> verify(Map<String, dynamic> data) async {
  56. await _client.post('/OA/ExpenseVerify', data: data);
  57. }
  58. /// 币别查询
  59. Future<ApiResponse<Map<String, dynamic>>> fetchCurrencies({
  60. String keyword = '',
  61. int page = 1,
  62. int size = 50,
  63. }) async {
  64. return await _client.get('/OA/GetCurrencies',
  65. queryParameters: {'keyword': keyword, 'page': page, 'size': size});
  66. }
  67. }