|
@@ -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,
|
|
|
+ ),
|
|
|
+ ];
|
|
|
+ }
|
|
|
}
|
|
|
}
|