Эх сурвалжийг харах

1、暂时提交菜单权限对接

guanxinyi 1 жил өмнө
parent
commit
d9f1175bf5

+ 18 - 0
lib/managers/account.dart

@@ -95,4 +95,22 @@ class AccountManager implements IAccountManager {
     } catch (e) {}
     return false;
   }
+
+  @override
+  Future<List<MenuDTO>?> getMenuPermission() async {
+    try {
+      var result = await rpc.user.getMenuPermissionAsync(
+        GetMenuPermissionRequest(
+          token: Store.user.token,
+        ),
+      );
+      for (var element in result) {
+        print(element.toJson());
+      }
+      return result;
+    } catch (e) {
+      logger.e("AccountManager call getMenuPermission error", e);
+    }
+    return null;
+  }
 }

+ 2 - 0
lib/managers/device.dart

@@ -15,6 +15,8 @@ class DeviceManager extends IDeviceManager {
     "SpO2": DeviceTypes.SPO2,
     "NIBP": DeviceTypes.NIBP,
     "GLU": DeviceTypes.SUGAR,
+    "Urine": DeviceTypes.Urine,
+    "ICReader": DeviceTypes.ICReader,
     // "ECG": DeviceTypes.HEART,
   };
   final _storage = TextStorage(fileName: "devices.cfg");

+ 3 - 1
lib/managers/interfaces/account.dart

@@ -1,4 +1,4 @@
-import 'package:fis_jsonrpc/services/user.m.dart';
+import 'package:fis_jsonrpc/rpc.dart';
 
 import 'base.dart';
 
@@ -21,4 +21,6 @@ abstract class IAccountManager implements IManager {
   Future<String> getUserPasswordDetailAsync();
 
   Future<bool> updateUserPasswordAsync(String secretPassword);
+
+  Future<List<MenuDTO>?> getMenuPermission();
 }

+ 118 - 51
lib/pages/home/controller.dart

@@ -7,14 +7,74 @@ import 'package:vitalapp/architecture/utils/common_util.dart';
 import 'package:vitalapp/managers/interfaces/account.dart';
 import 'package:vitalapp/pages/controllers/home_nav_mixin.dart';
 import 'package:vitalapp/pages/home/models/menu.dart';
+import 'package:vitalapp/store/store.dart';
 
 import 'state.dart';
 
 class HomeController extends FControllerBase with HomeNavMixin {
+  static Widget _buildImgIcon(String assetName) {
+    return ClipRect(
+      child: SizedBox(
+        height: 34,
+        child: Image.asset(
+          "assets/images/home/$assetName",
+          width: 46,
+          height: 46,
+          fit: BoxFit.fitWidth,
+        ),
+      ),
+    );
+  }
+
   final state = HomeState();
 
   /// 当前选中路由
   int currentIndex = -1;
+  List<HomeMenuItem> homeMenuItems = [
+    HomeMenuItem(
+      key: 'ZY',
+      title: "主页",
+      routeName: "/dashboard",
+      iconData: Icons.home_outlined,
+      isSelected: true,
+    ),
+    HomeMenuItem(
+      key: 'JKDA',
+      title: "健康档案",
+      routeName: "/patient/detail",
+      iconWidget: _buildImgIcon('healthRecord.png'),
+    ),
+    HomeMenuItem(
+      key: 'YSQY',
+      title: "医生签约",
+      routeName: "/contract/package_list",
+      iconWidget: _buildImgIcon('doctorSigning.png'),
+    ),
+    HomeMenuItem(
+      key: 'JKTJ',
+      title: "健康体检",
+      routeName: "/check/form",
+      iconWidget: _buildImgIcon('healthCheckup.png'),
+    ),
+    HomeMenuItem(
+      key: 'RQSF',
+      title: "人群随访",
+      routeName: "/check/follow_up",
+      iconWidget: _buildImgIcon('populationFollowUp.png'),
+    ),
+    HomeMenuItem(
+      key: 'JKJC',
+      title: "健康检测",
+      routeName: "/medical",
+      iconWidget: _buildImgIcon('diagnosisDisplay.png'),
+    ),
+    HomeMenuItem(
+      key: 'SZZX',
+      title: "设置中心",
+      routeName: "/settings",
+      iconData: Icons.settings,
+    ),
+  ];
 
   /// 登出
   Future<void> logOut() async {
@@ -63,17 +123,20 @@ class HomeController extends FControllerBase with HomeNavMixin {
   void initMenus() {
     state.menuItems = [
       HomeMenuItem(
+        key: 'ZY',
         title: "主页",
         routeName: "/dashboard",
         iconData: Icons.home_outlined,
         isSelected: true,
       ),
       HomeMenuItem(
+        key: 'JKJC',
         title: "健康检测",
         routeName: "/medical",
         iconWidget: _buildImgIcon('diagnosisDisplay.png'),
       ),
       HomeMenuItem(
+        key: 'SZZX',
         title: "设置中心",
         routeName: "/settings",
         iconData: Icons.settings,
@@ -81,58 +144,62 @@ class HomeController extends FControllerBase with HomeNavMixin {
     ];
   }
 
+  /// TODO 需要变更
   void updateMenus() {
-    state.menuItems = [
-      HomeMenuItem(
-        title: "主页",
-        routeName: "/dashboard",
-        iconData: Icons.home_outlined,
-        isSelected: true,
-      ),
-      // HomeMenuItem(
-      //   title: "健康档案",
-      //   routeName: "/patient/detail",
-      //   iconWidget: _buildImgIcon('healthRecord.png'),
-      // ),
-      // HomeMenuItem(
-      //   title: "医生签约",
-      //   routeName: "/contract/package_list",
-      //   iconWidget: _buildImgIcon('doctorSigning.png'),
-      // ),
-      // HomeMenuItem(
-      //   title: "健康体检",
-      //   routeName: "/check/form",
-      //   iconWidget: _buildImgIcon('healthCheckup.png'),
-      // ),
-      // HomeMenuItem(
-      //   title: "人群随访",
-      //   routeName: "/check/follow_up",
-      //   iconWidget: _buildImgIcon('populationFollowUp.png'),
-      // ),
-      HomeMenuItem(
-        title: "健康检测",
-        routeName: "/medical",
-        iconWidget: _buildImgIcon('diagnosisDisplay.png'),
-      ),
-      HomeMenuItem(
-        title: "设置中心",
-        routeName: "/settings",
-        iconData: Icons.settings,
-      ),
-    ];
-  }
-
-  Widget _buildImgIcon(String assetName) {
-    return ClipRect(
-      child: SizedBox(
-        height: 34,
-        child: Image.asset(
-          "assets/images/home/$assetName",
-          width: 46,
-          height: 46,
-          fit: BoxFit.fitWidth,
+    if (Store.user.menuPermissionList?.isNotEmpty ?? false) {
+      Store.user.menuPermissionList?.forEach((element) {
+        print(element.toJson());
+        List<HomeMenuItem> menuItems = [];
+        for (var item in homeMenuItems) {
+          if (item.key == element.key) {
+            menuItems.add(item);
+          }
+        }
+        state.menuItems = menuItems;
+        state.menuItems = [
+          HomeMenuItem(
+            key: 'ZY',
+            title: "主页",
+            routeName: "/dashboard",
+            iconData: Icons.home_outlined,
+            isSelected: true,
+          ),
+          HomeMenuItem(
+            key: 'JKJC',
+            title: "健康检测",
+            routeName: "/medical",
+            iconWidget: _buildImgIcon('diagnosisDisplay.png'),
+          ),
+          HomeMenuItem(
+            key: 'SZZX',
+            title: "设置中心",
+            routeName: "/settings",
+            iconData: Icons.settings,
+          ),
+        ];
+      });
+    } else {
+      state.menuItems = [
+        HomeMenuItem(
+          key: 'ZY',
+          title: "主页",
+          routeName: "/dashboard",
+          iconData: Icons.home_outlined,
+          isSelected: true,
         ),
-      ),
-    );
+        HomeMenuItem(
+          key: 'JKJC',
+          title: "健康检测",
+          routeName: "/medical",
+          iconWidget: _buildImgIcon('diagnosisDisplay.png'),
+        ),
+        HomeMenuItem(
+          key: 'SZZX',
+          title: "设置中心",
+          routeName: "/settings",
+          iconData: Icons.settings,
+        ),
+      ];
+    }
   }
 }

+ 2 - 0
lib/pages/home/models/menu.dart

@@ -3,6 +3,7 @@ import 'package:flutter/widgets.dart';
 class HomeMenuItem {
   final String title;
   final String routeName;
+  final String key;
   IconData? iconData;
   Widget? iconWidget;
   bool isSelected;
@@ -10,6 +11,7 @@ class HomeMenuItem {
   HomeMenuItem({
     required this.title,
     required this.routeName,
+    required this.key,
     this.isSelected = false,
     this.iconData,
     this.iconWidget,

+ 10 - 0
lib/store/modules/user.dart

@@ -2,6 +2,7 @@ import 'package:fis_jsonrpc/encrpyt.dart';
 import 'package:fis_jsonrpc/rpc.dart';
 import 'package:get/get.dart';
 import 'package:vitalapp/architecture/types/index.dart';
+import 'package:vitalapp/managers/interfaces/account.dart';
 import 'package:vitalapp/managers/interfaces/template.dart';
 import 'package:vitalapp/rpc.dart';
 
@@ -11,10 +12,12 @@ import '../store.dart';
 class UserState extends StateModuleBase {
   String? _token;
   String? _account;
+  final Rx<List<MenuDTO>?> _menuPermissionList = Rx(null);
   final RxString _displayName = ''.obs;
   final RxList<String> _features = RxList<String>();
   final Rx<String> _headImageToken = Rx('');
   final Rx<PatientDTO?> _currentSelectPatientInfo = Rx(null);
+
   final Rx<bool> _isShowUserCard = Rx(false);
 
   /// 登录令牌
@@ -59,10 +62,15 @@ class UserState extends StateModuleBase {
   String get headImageToken => _headImageToken.value;
   set headImageToken(String val) => _headImageToken.value = val;
 
+  /// 当前选中的病人详情
   PatientDTO? get currentSelectPatientInfo => _currentSelectPatientInfo.value;
   set currentSelectPatientInfo(PatientDTO? val) =>
       _currentSelectPatientInfo.value = val;
 
+  /// 当前用户的菜单权限
+  List<MenuDTO>? get menuPermissionList => _menuPermissionList.value;
+  set menuPermissionList(List<MenuDTO>? val) => _menuPermissionList.value = val;
+
   /// 负责区域(村)集合
   List<StringKVModel> get residence =>
       _userInfo?.residence
@@ -87,6 +95,8 @@ class UserState extends StateModuleBase {
 
     await Store.persistent();
     await Get.find<ITemplateManager>().saveTemplate();
+    _menuPermissionList.value =
+        await Get.find<IAccountManager>().getMenuPermission();
     Future.delayed(const Duration(milliseconds: 300), () {
       isShowUserCard = true;
     });

+ 1 - 1
pubspec.yaml

@@ -79,7 +79,7 @@ dependencies_overrides:
   fis_jsonrpc:
     git:
       url: http://git.ius.plus/Project-Vital/FlutterDevicePlugin.git
-      ref: 5dcaa64
+      ref: 2400b9d
   # fis_ui:
   #   git:
   #     url: http://git.ius.plus:88/Project-Wing/fis_lib_ui.git