vehicle_list_controller.dart 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import 'package:flutter_riverpod/flutter_riverpod.dart';
  2. import '../../shared/models/approval_status.dart';
  3. import 'vehicle_model.dart';
  4. final vehicleStatusFilterProvider = StateProvider<String>((ref) => '');
  5. final _mockVehicles = <VehicleModel>[
  6. VehicleModel(
  7. id: 'veh-001',
  8. applicationNo: 'VH202605001',
  9. applicantId: 'u-001',
  10. applicantName: '张三',
  11. deptId: 'dept-001',
  12. deptName: '市场部',
  13. vehicleType: '轿车',
  14. purpose: '客户拜访',
  15. startTime: DateTime(2026, 5, 22, 8, 0),
  16. endTime: DateTime(2026, 5, 22, 18, 0),
  17. origin: '公司总部',
  18. destination: '深圳分公司',
  19. passengerCount: 3,
  20. driver: '刘师傅',
  21. licensePlate: '京A·88888',
  22. estimatedMileage: 120.0,
  23. estimatedCost: 500.0,
  24. reason: '拜访重要客户,需前往深圳',
  25. status: 'pending',
  26. createTime: DateTime(2026, 5, 20),
  27. updateTime: DateTime(2026, 5, 20),
  28. approvalRecords: [
  29. ApprovalRecord(
  30. id: 'ar-vh-001',
  31. bizId: 'veh-001',
  32. bizType: 'vehicle',
  33. approverId: 'u-mgr',
  34. approverName: '李四',
  35. approvalLevel: 1,
  36. action: 'pending',
  37. opinion: '',
  38. approvalTime: DateTime(2026, 5, 20),
  39. ),
  40. ],
  41. ),
  42. VehicleModel(
  43. id: 'veh-002',
  44. applicationNo: 'VH202605002',
  45. applicantId: 'u-002',
  46. applicantName: '王五',
  47. deptId: 'dept-002',
  48. deptName: '技术部',
  49. vehicleType: 'SUV',
  50. purpose: '设备运输',
  51. startTime: DateTime(2026, 5, 25, 9, 0),
  52. endTime: DateTime(2026, 5, 25, 17, 0),
  53. origin: '公司仓库',
  54. destination: '数据中心',
  55. passengerCount: 2,
  56. driver: '王师傅',
  57. licensePlate: '京B·66666',
  58. estimatedMileage: 60.0,
  59. estimatedCost: 300.0,
  60. reason: '运送服务器设备至数据中心',
  61. status: 'approved',
  62. createTime: DateTime(2026, 5, 23),
  63. updateTime: DateTime(2026, 5, 24),
  64. approvalRecords: [
  65. ApprovalRecord(
  66. id: 'ar-vh-002',
  67. bizId: 'veh-002',
  68. bizType: 'vehicle',
  69. approverId: 'u-mgr',
  70. approverName: '李四',
  71. approvalLevel: 1,
  72. action: 'approve',
  73. opinion: '同意,注意安全',
  74. approvalTime: DateTime(2026, 5, 24),
  75. ),
  76. ],
  77. ),
  78. ];
  79. final vehicleListProvider =
  80. FutureProvider.autoDispose.family<List<VehicleModel>, int>(
  81. (ref, page) async {
  82. final status = ref.watch(vehicleStatusFilterProvider);
  83. if (status.isEmpty) {
  84. return _mockVehicles;
  85. }
  86. return _mockVehicles.where((e) => e.status == status).toList();
  87. });