| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- import 'package:flutter_riverpod/flutter_riverpod.dart';
- import 'overtime_model.dart';
- final overtimeStatusFilterProvider = StateProvider<String>((ref) => '');
- final mockOvertimes = <OvertimeModel>[
- OvertimeModel(
- id: 'ot-001',
- applicationNo: 'JB-20260520-001',
- applicantId: 'u-001',
- applicantName: '张三',
- deptId: 'dept-001',
- deptName: '市场部',
- otType: 'workday',
- compensationType: 'overtime_pay',
- startTime: DateTime(2026, 5, 20, 18, 0),
- endTime: DateTime(2026, 5, 20, 21, 0),
- netOtHours: 2.5,
- reason: '项目上线前紧急测试',
- status: 'pending',
- approvalInstanceId: 'apr-001',
- createTime: DateTime(2026, 5, 20),
- updateTime: DateTime(2026, 5, 20),
- ),
- OvertimeModel(
- id: 'ot-002',
- applicationNo: 'JB-20260518-002',
- applicantId: 'u-002',
- applicantName: '王五',
- deptId: 'dept-002',
- deptName: '技术部',
- otType: 'rest_day',
- compensationType: 'comp_leave',
- startTime: DateTime(2026, 5, 18, 9, 0),
- endTime: DateTime(2026, 5, 18, 18, 0),
- netOtHours: 7.5,
- reason: '系统架构升级',
- status: 'approved',
- approvalInstanceId: 'apr-002',
- createTime: DateTime(2026, 5, 17),
- updateTime: DateTime(2026, 5, 19),
- ),
- OvertimeModel(
- id: 'ot-003',
- applicationNo: 'JB-20260525-003',
- applicantId: 'u-003',
- applicantName: '赵六',
- deptId: 'dept-003',
- deptName: '财务部',
- otType: 'workday',
- compensationType: 'mixed',
- compLeaveRatio: 0.3,
- startTime: DateTime(2026, 5, 25, 19, 0),
- endTime: DateTime(2026, 5, 25, 22, 0),
- netOtHours: 2.5,
- reason: '季度财务报表汇总',
- status: 'pending',
- approvalInstanceId: 'apr-003',
- createTime: DateTime(2026, 5, 25),
- updateTime: DateTime(2026, 5, 25),
- ),
- OvertimeModel(
- id: 'ot-004',
- applicationNo: 'JB-20260601-004',
- applicantId: 'u-001',
- applicantName: '张三',
- deptId: 'dept-001',
- deptName: '市场部',
- otType: 'legal_holiday',
- compensationType: 'overtime_pay',
- startTime: DateTime(2026, 6, 1, 10, 0),
- endTime: DateTime(2026, 6, 1, 15, 0),
- netOtHours: 4.0,
- reason: '节假日活动筹备',
- status: 'rejected',
- approvalInstanceId: '',
- createTime: DateTime(2026, 5, 30),
- updateTime: DateTime(2026, 6, 1),
- ),
- OvertimeModel(
- id: 'ot-005',
- applicationNo: 'JB-20260602-005',
- applicantId: 'u-002',
- applicantName: '王五',
- deptId: 'dept-002',
- deptName: '技术部',
- otType: 'workday',
- compensationType: 'comp_leave',
- startTime: DateTime(2026, 6, 2, 18, 30),
- endTime: DateTime(2026, 6, 2, 21, 0),
- netOtHours: 2.0,
- reason: '夜间服务器维护',
- status: 'draft',
- approvalInstanceId: '',
- createTime: DateTime(2026, 6, 2),
- updateTime: DateTime(2026, 6, 2),
- ),
- OvertimeModel(
- id: 'ot-006',
- applicationNo: 'JB-20260515-006',
- applicantId: 'u-001',
- applicantName: '张三',
- deptId: 'dept-001',
- deptName: '市场部',
- otType: 'rest_day',
- compensationType: 'overtime_pay',
- startTime: DateTime(2026, 5, 15, 9, 0),
- endTime: DateTime(2026, 5, 15, 17, 0),
- netOtHours: 7.0,
- reason: '周末展会布展',
- status: 'withdrawn',
- approvalInstanceId: '',
- createTime: DateTime(2026, 5, 14),
- updateTime: DateTime(2026, 5, 15),
- ),
- ];
- final overtimePageProvider = StateProvider<int>((ref) => 1);
- final overtimeListProvider = FutureProvider<List<OvertimeModel>>((ref) async {
- ref.watch(overtimeStatusFilterProvider);
- ref.watch(overtimePageProvider);
- final status = ref.read(overtimeStatusFilterProvider);
- if (status.isEmpty) return mockOvertimes;
- return mockOvertimes.where((e) => e.status == status).toList();
- });
|