Procházet zdrojové kódy

Add AppConfig增加isPda配置

Yue před 1 dnem
rodič
revize
9b925e9869

+ 5 - 2
UI/CF.APP/chicken_farm/lib/core/config/app_config.dart

@@ -1,6 +1,8 @@
-// import 'package:chicken_farm/core/config/env/dev_config.dart';
-import 'package:chicken_farm/core/config/env/dev_offline_config.dart';
+import 'package:chicken_farm/core/config/env/dev_config.dart';
+// import 'package:chicken_farm/core/config/env/dev_no_pda_config.dart';
+// import 'package:chicken_farm/core/config/env/dev_offline_config.dart';
 // import 'package:chicken_farm/core/config/env/prod_config.dart';
+// import 'package:chicken_farm/core/config/env/prod_no_pda_config.dart';
 import 'package:chicken_farm/core/utils/storage.dart';
 
 class AppConfig {
@@ -19,6 +21,7 @@ class AppConfig {
 
   static String get appVersion => Config.appVersion;
   static bool get isOffline => Config.isOffline;
+  static bool get isPda => Config.isPda;
 
   // 初始化配置
   static Future<void> init() async {

+ 1 - 0
UI/CF.APP/chicken_farm/lib/core/config/env/dev_config.dart

@@ -4,5 +4,6 @@ class Config {
   static const String baseApiUrl = 'http://192.168.0.81:8380';
   static const String clientId = '35aee70ae7224eb9a48bc527955ddedc';
   static const bool isOffline = false;
+  static const bool isPda = true;
   static const String appVersion = '1.0.0-dev';
 }

+ 9 - 0
UI/CF.APP/chicken_farm/lib/core/config/env/dev_no_pda_config.dart

@@ -0,0 +1,9 @@
+class Config {
+  static const String appEnv = 'dev';
+  static const String appName = '养殖场管理系统';
+  static const String baseApiUrl = 'http://192.168.0.81:8380';
+  static const String clientId = '35aee70ae7224eb9a48bc527955ddedc';
+  static const bool isOffline = false;
+  static const bool isPda = false;
+  static const String appVersion = '1.0.0-dev';
+}

+ 1 - 0
UI/CF.APP/chicken_farm/lib/core/config/env/dev_offline_config.dart

@@ -4,5 +4,6 @@ class Config {
   static const String baseApiUrl = 'http://192.168.0.81:8380';
   static const String clientId = '35aee70ae7224eb9a48bc527955ddedc';
   static const bool isOffline = true;
+  static const bool isPda = true;
   static const String appVersion = '1.0.0-dev';
 }

+ 1 - 0
UI/CF.APP/chicken_farm/lib/core/config/env/prod_config.dart

@@ -4,5 +4,6 @@ class Config {
   static const String baseApiUrl = 'https://prod-api.example.com';
   static const String clientId = 'prod_client_id';
   static const bool isOffline = false;
+  static const bool isPda = true;
   static const String appVersion = '1.0.0';
 }

+ 9 - 0
UI/CF.APP/chicken_farm/lib/core/config/env/prod_no_pda_config.dart

@@ -0,0 +1,9 @@
+class Config {
+  static const String appEnv = 'prod';
+  static const String appName = '养殖场管理系统';
+  static const String baseApiUrl = 'http://192.168.0.81:8380';
+  static const String clientId = '35aee70ae7224eb9a48bc527955ddedc';
+  static const bool isOffline = false;
+  static const bool isPda = false;
+  static const String appVersion = '1.0.0-dev';
+}

+ 1 - 0
UI/CF.APP/chicken_farm/lib/core/config/env/prod_offline_config.dart

@@ -4,5 +4,6 @@ class Config {
   static const String baseApiUrl = 'https://prod-api.example.com';
   static const String clientId = 'prod_client_id';
   static const bool isOffline = true;
+  static const bool isPda = true;
   static const String appVersion = '1.0.0';
 }

+ 2 - 0
UI/CF.APP/chicken_farm/lib/modes/menu_item.dart

@@ -7,6 +7,7 @@ class MenuItem {
   final String? permission;
   // 平台类型,0:所有平台,1:Android,2:windows
   final int platform;
+  final bool isPda;
 
   const MenuItem({
     required this.name,
@@ -14,5 +15,6 @@ class MenuItem {
     this.icon,
     this.permission,
     this.platform = 0,
+    this.isPda = true,
   });
 }

+ 2 - 30
UI/CF.APP/chicken_farm/lib/pages/home/menu_buttons.dart

@@ -1,5 +1,3 @@
-import 'dart:io' show Platform;
-import 'package:chicken_farm/stores/auth_store.dart';
 import 'package:chicken_farm/stores/menu_store.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_riverpod/flutter_riverpod.dart';
@@ -10,33 +8,7 @@ class MenuButtons extends ConsumerWidget {
 
   @override
   Widget build(BuildContext context, WidgetRef ref) {
-    final authState = ref.watch(authStoreProvider);
-    final authStore = ref.watch(authStoreProvider.notifier);
-
-    final isSuperAdmin = authStore.isSuperAdmin();
-
-    // 获取当前平台类型
-    // 平台类型,0:所有平台,1:Android手机,2:Windows
-    int currentPlatform = 0;
-    if (Platform.isAndroid) {
-      currentPlatform = 1;
-    } else if (Platform.isWindows) {
-      currentPlatform = 2;
-    }
-
-    // 根据权限和平台类型过滤菜单项
-    final visibleMenuItems = MenuStore.menuItems.where((item) {
-      // 平台过滤
-      if (item.platform != 0 && item.platform != currentPlatform) {
-        return false;
-      }
-      
-      // 权限过滤
-      if (isSuperAdmin) return true;
-      if (item.permission == null) return true;
-      return authState.permissions?.contains(item.permission) ?? false;
-    }).toList();
-
+    final visibleMenuItems = MenuStore.getVisibleMenuItems(ref);
     final screenWidth = MediaQuery.of(context).size.width;
     final buttonWidth = screenWidth * 0.8;
 
@@ -70,4 +42,4 @@ class MenuButtons extends ConsumerWidget {
       ),
     );
   }
-}
+}

+ 41 - 2
UI/CF.APP/chicken_farm/lib/stores/menu_store.dart

@@ -1,7 +1,12 @@
+import 'dart:io' show Platform;
+
+import 'package:chicken_farm/core/config/app_config.dart';
 import 'package:chicken_farm/modes/menu_item.dart';
 import 'package:chicken_farm/routes/app_routes.dart';
+import 'package:chicken_farm/stores/auth_store.dart';
 import 'package:flutter/material.dart';
 import 'package:chicken_farm/core/permissions/permission_keys.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
 
 class MenuStore {
   static const List<MenuItem> menuItems = [
@@ -45,14 +50,16 @@ class MenuStore {
       routeName: AppRouteNames.checkin,
       icon: Icons.check_circle_outline,
       permission: PermissionKeys.inspectionCheckin,
-      platform: 0,
+      platform: 1,
+      isPda: false,
     ),
     MenuItem(
       name: '样品查询',
       routeName: AppRouteNames.sample,
       icon: Icons.search,
       permission: PermissionKeys.sampleQuery,
-      platform: 0,
+      platform: 1,
+      isPda: false,
     ),
     MenuItem(
       name: '个体绑定',
@@ -69,4 +76,36 @@ class MenuStore {
       platform: 2,
     ),
   ];
+
+  static List<MenuItem> getVisibleMenuItems(WidgetRef ref) {
+    final authState = ref.watch(authStoreProvider);
+    final authStore = ref.watch(authStoreProvider.notifier);
+
+    final isSuperAdmin = authStore.isSuperAdmin();
+
+    // 获取当前平台类型
+    // 平台类型,0:所有平台,1:Android手机,2:Windows
+    int currentPlatform = 0;
+    if (Platform.isAndroid) {
+      currentPlatform = 1;
+    } else if (Platform.isWindows) {
+      currentPlatform = 2;
+    }
+    // 根据权限和平台类型过滤菜单项
+    final visibleMenuItems = MenuStore.menuItems.where((item) {
+      // 平台过滤
+      if (item.platform != 0 && item.platform != currentPlatform) {
+        return false;
+      }
+      if (AppConfig.isPda && !item.isPda || !AppConfig.isPda && item.isPda) {
+        return false;
+      }
+
+      // 权限过滤
+      if (isSuperAdmin) return true;
+      if (item.permission == null) return true;
+      return authState.permissions?.contains(item.permission) ?? false;
+    }).toList();
+    return visibleMenuItems;
+  }
 }