|
|
@@ -9,7 +9,6 @@ import '../../core/theme/app_colors_extension.dart';
|
|
|
import '../../core/utils/date_utils.dart' as du;
|
|
|
import '../../core/utils/responsive.dart';
|
|
|
import '../../shared/widgets/list_card.dart';
|
|
|
-import '../../shared/widgets/status_tag.dart';
|
|
|
import '../../shared/widgets/empty_state.dart';
|
|
|
import '../../shared/widgets/skeleton_list_card.dart';
|
|
|
import '../../shared/widgets/list_footer.dart';
|
|
|
@@ -175,7 +174,11 @@ class _ExpenseListContent extends ConsumerWidget {
|
|
|
final oldItems = itemsAsync.valueOrNull ?? [];
|
|
|
if (oldItems.isEmpty) return ListView(children: [const SizedBox(height: 120), EmptyState(message: l10n.get('noExpenses'))]);
|
|
|
return ListView.builder(padding: const EdgeInsets.fromLTRB(16, 16, 16, 24), itemCount: oldItems.length, itemBuilder: (_, i) {
|
|
|
- final card = ListCard(cardNo: oldItems[i].expenseNo, amount: '¥${oldItems[i].totalAmount.toStringAsFixed(2)}', applicant: oldItems[i].applicantName, description: oldItems[i].purpose, date: du.DateUtils.formatDate(oldItems[i].createTime), statusTag: StatusTag.fromStatus(oldItems[i].status, l10n), onTap: () { context.push('/expense/detail/${oldItems[i].expenseNo}'); });
|
|
|
+ final item = oldItems[i];
|
|
|
+ final applicant = item.deptName.isNotEmpty
|
|
|
+ ? '${item.applicantName} · ${item.deptName}'
|
|
|
+ : item.applicantName;
|
|
|
+ final card = ListCard(cardNo: item.expenseNo, amount: '¥${item.totalAmount.toStringAsFixed(2)}', applicant: applicant, description: item.purpose, date: du.DateUtils.formatDate(item.expenseDate ?? item.createTime), onTap: () { context.push('/expense/detail/${item.expenseNo}'); });
|
|
|
return Padding(padding: const EdgeInsets.only(bottom: 16), child: card);
|
|
|
});
|
|
|
}
|
|
|
@@ -184,7 +187,11 @@ class _ExpenseListContent extends ConsumerWidget {
|
|
|
if (items.isEmpty) return ListView(children: [const SizedBox(height: 120), EmptyState(message: l10n.get('noExpenses'))]);
|
|
|
return ListView.builder(padding: const EdgeInsets.fromLTRB(16, 16, 16, 24), itemCount: items.length + 1, itemBuilder: (_, i) {
|
|
|
if (i == items.length) return ListFooter(itemCount: items.length);
|
|
|
- final card = ListCard(cardNo: items[i].expenseNo, amount: '¥${items[i].totalAmount.toStringAsFixed(2)}', applicant: items[i].applicantName, description: items[i].purpose, date: du.DateUtils.formatDate(items[i].createTime), statusTag: StatusTag.fromStatus(items[i].status, l10n), onTap: () { context.push('/expense/detail/${items[i].expenseNo}'); });
|
|
|
+ final item = items[i];
|
|
|
+ final applicant = item.deptName.isNotEmpty
|
|
|
+ ? '${item.applicantName} · ${item.deptName}'
|
|
|
+ : item.applicantName;
|
|
|
+ final card = ListCard(cardNo: item.expenseNo, amount: '¥${item.totalAmount.toStringAsFixed(2)}', applicant: applicant, description: item.purpose, date: du.DateUtils.formatDate(item.expenseDate ?? item.createTime), onTap: () { context.push('/expense/detail/${item.expenseNo}'); });
|
|
|
return Padding(padding: const EdgeInsets.only(bottom: 16), child: card);
|
|
|
});
|
|
|
}
|