follow_up_from.dart 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import 'package:fis_jsonrpc/rpc.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:get/get.dart';
  4. import 'package:intl/intl.dart';
  5. import 'package:vnoteapp/components/cell.dart';
  6. import 'package:vnoteapp/components/dialog_date.dart';
  7. import 'package:vnoteapp/components/dialog_select.dart';
  8. import 'package:vnoteapp/consts/rpc_enum_labels.dart';
  9. import 'package:vnoteapp/pages/check/follow_up/controller.dart';
  10. import 'package:vnoteapp/store/store.dart';
  11. import '../models/select_model.dart';
  12. class FollowUpFrom extends GetView<FollowUpController> {
  13. const FollowUpFrom({super.key});
  14. @override
  15. Widget build(BuildContext context) {
  16. return _buildFollowUp();
  17. }
  18. Widget _buildFollowUp() {
  19. return Card(
  20. elevation: 6,
  21. shape: RoundedRectangleBorder(
  22. borderRadius: BorderRadius.circular(8),
  23. ),
  24. margin: const EdgeInsets.all(16),
  25. child: Material(
  26. color: Colors.white,
  27. borderRadius: const BorderRadius.all(
  28. Radius.circular(8),
  29. ),
  30. child: Container(
  31. padding: const EdgeInsets.symmetric(horizontal: 16),
  32. child: Column(
  33. children: [
  34. _buildFrom(),
  35. ],
  36. )),
  37. ),
  38. );
  39. }
  40. Widget _buildFrom() {
  41. return Obx(
  42. () => VListFormCellGroup(
  43. // mainAxisAlignment: MainAxisAlignment.center,
  44. children: [
  45. VListFormCell(
  46. label: '病人姓名',
  47. labelWidth: 130,
  48. content: controller.patientName,
  49. ),
  50. VListFormCell(
  51. label: '随访医生',
  52. labelWidth: 130,
  53. content: Store.user.displayName,
  54. ),
  55. VListFormCell(
  56. label: '本次随访日期',
  57. labelWidth: 130,
  58. content: getFollowUpTime(controller.state.followUpTime),
  59. onTap: () async {
  60. final result = await VDialogDate(
  61. title: '本次随访日期',
  62. initialValue: controller.state.followUpTime,
  63. ).show();
  64. controller.state.followUpTime = result;
  65. },
  66. ),
  67. VListFormCell(
  68. label: '下次随访日期',
  69. labelWidth: 130,
  70. content: getFollowUpTime(controller.state.nextFollowUpTime),
  71. onTap: () async {
  72. final result = await VDialogDate(
  73. title: '下次随访日期',
  74. initialValue: controller.state.nextFollowUpTime,
  75. minimumDate: controller.state.followUpTime,
  76. ).show();
  77. controller.state.nextFollowUpTime = result;
  78. },
  79. ),
  80. VListFormCell(
  81. label: '随访方式',
  82. labelWidth: 130,
  83. content: RpcEnumLabels.followUpMode[controller.state.followUpMode],
  84. onTap: () async {
  85. final result = await VDialogSelect<SelectModel, FollowUpModeEnum>(
  86. source: controller.state.followUpModeEnumSelectList,
  87. valueGetter: (data) => data.code,
  88. labelGetter: (data) => data.name,
  89. initialValue: controller.state.followUpMode,
  90. ).show();
  91. controller.state.followUpMode = result;
  92. },
  93. ),
  94. ],
  95. ),
  96. );
  97. }
  98. String getFollowUpTime(DateTime? time) {
  99. // print(time);
  100. if (time != null) {
  101. return DateFormat('yyyy-MM-dd').format(time);
  102. }
  103. return '';
  104. }
  105. }