| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import 'package:flutter/material.dart';
- import 'package:flutter_riverpod/flutter_riverpod.dart';
- import '../../core/theme/app_colors.dart';
- import '../../core/utils/date_utils.dart' as du;
- import '../../core/utils/responsive.dart';
- import '../../shared/widgets/form_section.dart';
- import '../../shared/widgets/form_field_row.dart';
- import 'outing_log_model.dart';
- final outingLogDetailProvider = FutureProvider.autoDispose.family<OutingLogModel, String>((ref, id) async {
- return OutingLogModel(
- id: id,
- visitNo: 'VL202605001',
- salespersonId: 'u-001',
- salespersonName: '张三',
- deptId: 'dept-001',
- deptName: '市场部',
- customerName: '华软科技',
- visitDate: DateTime(2026, 5, 20),
- visitStartTime: DateTime(2026, 5, 20, 9, 0),
- visitEndTime: DateTime(2026, 5, 20, 11, 30),
- visitType: '常规拜访',
- visitPurpose: '产品演示及方案交流',
- visitLocation: '深圳市南山区科技园',
- visitSummary: '向客户展示了公司最新产品功能,客户对数据看板功能比较感兴趣,约定下周安排试用。',
- nextVisitTime: DateTime(2026, 5, 27),
- status: '已完成',
- createTime: DateTime(2026, 5, 20),
- updateTime: DateTime(2026, 5, 20),
- );
- });
- class OutingLogDetailPage extends ConsumerWidget {
- final String id;
- const OutingLogDetailPage({super.key, required this.id});
- @override
- Widget build(BuildContext context, WidgetRef ref) {
- final detailAsync = ref.watch(outingLogDetailProvider(id));
- final r = ResponsiveHelper.of(context);
- return Scaffold(
- appBar: AppBar(title: const Text('日志详情')),
- body: detailAsync.when(
- loading: () => const Center(child: CircularProgressIndicator()),
- error: (_, __) => const Center(child: Text('加载失败')),
- data: (log) => Align(alignment: Alignment.topCenter,
- child: ConstrainedBox(
- constraints: BoxConstraints(maxWidth: r.detailTwoColumns ? 700 : double.infinity),
- child: SingleChildScrollView(
- padding: const EdgeInsets.symmetric(vertical: 8),
- child: FormSection(
- title: '外出日志',
- children: [
- FormFieldRow(label: '拜访单号', value: log.visitNo, showArrow: false),
- FormFieldRow(label: '日期', value: du.DateUtils.formatDate(log.visitDate), showArrow: false),
- FormFieldRow(label: '拜访客户', value: log.customerName.isEmpty ? '-' : log.customerName, showArrow: false),
- FormFieldRow(label: '联系人', value: log.contactName.isEmpty ? '-' : log.contactName, showArrow: false),
- FormFieldRow(label: '拜访方式', value: log.visitType, showArrow: false),
- FormFieldRow(label: '拜访地点', value: log.visitLocation.isEmpty ? '-' : log.visitLocation, showArrow: false),
- FormFieldRow(label: '拜访结果', value: log.visitResult.isEmpty ? '-' : log.visitResult, showArrow: false),
- FormFieldRow(label: '打卡校验', value: log.checkInStatus, showArrow: false),
- FormFieldRow(label: '创建人', value: log.salespersonName, showArrow: false),
- FormFieldRow(label: '创建时间', value: du.DateUtils.formatDateTime(log.createTime), showArrow: false),
- const SizedBox(height: 8),
- const Padding(
- padding: EdgeInsets.symmetric(horizontal: 14),
- child: Text('日志内容', style: TextStyle(fontSize: 13, fontWeight: FontWeight.w600, color: AppColors.textSecondary)),
- ),
- Padding(
- padding: const EdgeInsets.all(14),
- child: Text(log.visitSummary.isEmpty ? '-' : log.visitSummary, style: const TextStyle(color: AppColors.textPrimary, fontSize: 14, height: 1.6)),
- ),
- ],
- ),
- ),
- ),
- ),
- ),
- );
- }
- }
|