Browse Source

离线情况实现身份证搜索

finlay 1 year ago
parent
commit
10a60f0d1b

+ 8 - 5
lib/managers/account.dart

@@ -1,3 +1,5 @@
+import 'dart:convert';
+
 import 'package:fis_jsonrpc/rpc.dart';
 import 'package:vitalapp/rpc.dart';
 import 'package:vitalapp/store/store.dart';
@@ -121,12 +123,13 @@ class AccountManager implements IAccountManager {
   @override
   Future<List<UserFeatureDTO>?> getOperationPermission() async {
     try {
-      var result = await rpc.user.getOperationPermissionAsync(
-        GetOperationPermissionRequest(
-          token: Store.user.token,
-          appType: ApplicationTypeEnum.App,
-        ),
+      var request = GetOperationPermissionRequest(
+        token: Store.user.token,
+        appType: ApplicationTypeEnum.App,
       );
+      var result = await rpc.user.getOperationPermissionAsync(request);
+      // var json = jsonEncode(request);
+      // print(jsonEncode(request.toJson()));
       for (var element in result) {
         print(element.toJson());
         logger.i('新增权限${element.toJson()}');

+ 1 - 1
lib/mock/services/patient.dart

@@ -105,7 +105,7 @@ class PatientServiceMock extends VitalPatientService {
       final keyword = request.keyword;
       if (keyword != null && keyword.isNotEmpty) {
         // TODO: 暂时只支持姓名模糊
-        arr.add(x.name.like("%$keyword%"));
+        arr.add(x.name.like("%$keyword%' OR code like '%$keyword%"));
       } else {
         if (request.startTime != null) {
           arr.add(x.createTime.gte(request.startTime));

+ 15 - 0
lib/pages/patient/create/controller.dart

@@ -650,4 +650,19 @@ class CreatePatientController extends FControllerBase with HomeNavMixin {
       patient.cardNo!,
     );
   }
+
+  Future<void> setGender(String cardNo) async {
+    if (cardNo.isNotEmpty && cardNo.length > 17) {
+      var sexNum = cardNo.substring(16, 17);
+      if (sexNum.isNotEmpty && RegExp(r'^\d+$').hasMatch(sexNum)) {
+        if (int.parse(sexNum) % 2 == 1) {
+          state.gender = GenderEnum.Male;
+        } else {
+          state.gender = GenderEnum.Female;
+        }
+      } else {
+        state.gender = GenderEnum.Unknown;
+      }
+    }
+  }
 }

+ 1 - 12
lib/pages/patient/create/widgets/patient_info.dart

@@ -60,18 +60,7 @@ class PatientInfo extends GetView<CreatePatientController> {
               ).show();
               if (result != null) {
                 controller.state.cardNo = result.toString().toUpperCase();
-                if (!result.isEmpty && result.length > 17) {
-                  var sexNum = result.substring(16, 17);
-                  if (!sexNum.isEmpty && RegExp(r'^\d+$').hasMatch(sexNum)) {
-                    if (int.parse(sexNum) % 2 == 1) {
-                      controller.state.gender = GenderEnum.Male;
-                    } else {
-                      controller.state.gender = GenderEnum.Female;
-                    }
-                  } else {
-                    controller.state.gender = GenderEnum.Unknown;
-                  }
-                }
+                controller.setGender(result);
               }
             },
           ),

+ 1 - 1
lib/pages/patient/detail/widgets/functions_panel.dart

@@ -35,7 +35,7 @@ class FunctionsPanel extends GetView<PatientDetailController> {
         children: [
           if (Store.user.hasFeature(FeatureKeys.HealthRecordHandling))
             FunctionButton(
-              label: "档案详情",
+              label: "个人基本信息",
               icon: _buildImgIcon("档案.png"),
               onTap: controller.gotoInfo,
             ),

+ 1 - 1
lib/pages/patient/info/view.dart

@@ -77,7 +77,7 @@ class PatientInfoPage extends GetView<PatientInfoController> {
 
   VSideNavMenuItem _buildBasicInformationItem() {
     return VSideNavMenuItem(
-      title: "个人基本信息",
+      title: "基本信息",
       icon: Icon(Icons.edit_document, color: Colors.grey.shade700),
       pageBuilder: (_) => const _NavWidget(anchor: NavAnchorType.base),
     );