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