master
hs 2026-04-01 17:53:42 +08:00
parent fb412d90e3
commit 2d0c587321
8 changed files with 271 additions and 143 deletions

View File

@ -9,11 +9,11 @@ class ApiService {
static final bool isProduct = true; static final bool isProduct = true;
/// ///
// static final String basePath = "http://192.168.198.8:30140"; static final String basePath = "https://skqhdg.porthebei.com:9007";
static final String basePath = // static final String basePath =
isProduct // isProduct
? "https://gbs-gateway.qhdsafety.com" // ? "https://gbs-gateway.qhdsafety.com"
: "http://192.168.20.100:30140"; // : "http://192.168.20.100:30140";
/// ///

View File

@ -4,13 +4,14 @@ import 'package:qhd_prevention/http/HttpManager.dart';
import 'package:qhd_prevention/services/SessionService.dart'; import 'package:qhd_prevention/services/SessionService.dart';
class AppMenuApi { class AppMenuApi {
static Future<Map<String, dynamic>> getAppMenu() async { static Future<Map<String, dynamic>> getAppMenu(Map data) async {
return HttpManager().request( return HttpManager().request(
ApiService.basePath, ApiService.basePath,
'/appmenu/appMenu/appListTree', '/appmenu/appMenu/appListTree',
method: Method.get, method: Method.get,
data: { data: {
'menuAttribution': 'QINGANG_RELATED_PARTIES', 'menuAttribution': 'QINGANG_RELATED_PARTIES',
...data
}, },
); );
} }

View File

@ -70,8 +70,8 @@ class AuthApi {
static Future<Map<String, dynamic>> getUserData() { static Future<Map<String, dynamic>> getUserData() {
return HttpManager().request( return HttpManager().request(
ApiService.basePath, ApiService.basePath,
// '/basicInfo/user/getInfo', '/basicInfo/user/getInfo',
'/basicInfo/user/${SessionService.instance.accountId}', // '/basicInfo/user/${SessionService.instance.accountId}',
method: Method.get, method: Method.get,
data: {}, data: {},
); );

View File

@ -126,6 +126,7 @@ class HomePageState extends RouteAwareState<HomePage>
"todoStats": "dashboard-todo-sort", "todoStats": "dashboard-todo-sort",
"checklist": "dashboard-todo-list", "checklist": "dashboard-todo-list",
"scan": "dashboard-scan", "scan": "dashboard-scan",
"joinFirm": "dashboard-start-work",
}; };
@override @override
@ -419,7 +420,7 @@ class HomePageState extends RouteAwareState<HomePage>
final routeService = RouteService(); final routeService = RouteService();
final bool showScan = routeService.hasPerm(_modulePerms['scan']!); final bool showScan = routeService.hasPerm(_modulePerms['scan']!);
final bool showJoin = true; // final bool showJoin = routeService.hasPerm(_modulePerms['joinFirm']!);
final List<Widget> children = []; final List<Widget> children = [];
if (showScan) { if (showScan) {

View File

@ -4,19 +4,24 @@ import 'dart:convert';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle; import 'package:flutter/services.dart' show rootBundle;
import 'package:qhd_prevention/common/route_service.dart'; import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
import 'package:qhd_prevention/http/modules/appmenu_api.dart'; import 'package:qhd_prevention/http/modules/appmenu_api.dart';
import 'package:qhd_prevention/pages/badge_manager.dart'; import 'package:qhd_prevention/pages/badge_manager.dart';
import 'package:qhd_prevention/pages/home/home_page.dart'; import 'package:qhd_prevention/pages/home/home_page.dart';
import 'package:qhd_prevention/pages/my_appbar.dart'; import 'package:qhd_prevention/pages/my_appbar.dart';
import 'package:qhd_prevention/pages/notif/notif_page.dart'; import 'package:qhd_prevention/pages/notif/notif_page.dart';
import 'package:qhd_prevention/pages/user/login_page.dart';
import 'package:qhd_prevention/services/SessionService.dart';
import 'package:qhd_prevention/services/heartbeat_service.dart'; import 'package:qhd_prevention/services/heartbeat_service.dart';
import 'package:qhd_prevention/tools/tools.dart'; import 'package:qhd_prevention/tools/tools.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'mine/mine_page.dart'; import 'mine/mine_page.dart';
/// tab /// tab
class CurrentTabNotifier extends InheritedWidget { class CurrentTabNotifier extends InheritedWidget {
final int currentIndex; final int currentIndex;
const CurrentTabNotifier({ const CurrentTabNotifier({
required this.currentIndex, required this.currentIndex,
required Widget child, required Widget child,
@ -68,7 +73,6 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
_badgeManager.initAllModules(); _badgeManager.initAllModules();
} }
// **** // ****
_pages = <Widget>[ _pages = <Widget>[
HomePage(key: _homeKey, isChooseFirm: widget.isChooseFirm), HomePage(key: _homeKey, isChooseFirm: widget.isChooseFirm),
@ -91,33 +95,28 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
try { try {
Map? route; Map? route;
// //
// try {
// LoadingDialogHelper.show(message: '加载中...');
// final res = await AppMenuApi.getAppMenu();
// if (res != null && res['success'] == true && res['data'] is List) {
// route = res;
// } else {
// debugPrint('AppMenuApi.getAppMenu returned no data or failed; fallback to local assets.');
// }
// } catch (e) {
// debugPrint('AppMenuApi.getAppMenu error: $e -> fallback to local assets.');
// }
//
try { try {
final routeString = await loadFromAssets(); LoadingDialogHelper.show(message: '加载中...');
route = jsonDecode(routeString) as Map<String, dynamic>; final roleId = SessionService.instance.roleId;
final res = await AppMenuApi.getAppMenu({'roleId': roleId});
LoadingDialogHelper.hide();
if (res['success'] == true) {
route = res;
} else {}
} catch (e) { } catch (e) {
debugPrint('loadFromAssets error: $e'); debugPrint(
} 'AppMenuApi.getAppMenu error: $e -> fallback to local assets.',
);
if (route != null && route['data'] is List) {
final data = route['data'] as List<dynamic>;
RouteService().initializeRoutes(data);
// initializeRoutes notifyListeners -> _onRoutesUpdated
} else {
debugPrint('No valid route data to initialize RouteService.');
} }
//
// try {
// final routeString = await loadFromAssets();
// route = jsonDecode(routeString) as Map<String, dynamic>;
// } catch (e) {
// debugPrint('loadFromAssets error: $e');
// }
final data = route?['data'] ?? [];
RouteService().initializeRoutes(data);
} catch (e) { } catch (e) {
debugPrint('获取路由配置失败: $e'); debugPrint('获取路由配置失败: $e');
} finally { } finally {
@ -145,6 +144,7 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
// 使 mainTabs _tabVisibility // 使 mainTabs _tabVisibility
final mainTabs = routeService.mainTabs; final mainTabs = routeService.mainTabs;
if (mainTabs.isEmpty) { if (mainTabs.isEmpty) {
_showErrorDialog();
return; return;
} }
@ -157,10 +157,10 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
if (!homeVisible && perms == 'dashboard' && m.visible) { if (!homeVisible && perms == 'dashboard' && m.visible) {
homeVisible = true; homeVisible = true;
} }
if (!notifVisible && perms == 'notice'&& m.visible) { if (!notifVisible && perms == 'notice' && m.visible) {
notifVisible = true; notifVisible = true;
} }
if (!mineVisible && perms == 'my-center'&& m.visible) { if (!mineVisible && perms == 'my-center' && m.visible) {
mineVisible = true; mineVisible = true;
} }
if (homeVisible && notifVisible && mineVisible) break; if (homeVisible && notifVisible && mineVisible) break;
@ -168,7 +168,11 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
// //
setState(() { setState(() {
_tabVisibility = [homeVisible, widget.isChooseFirm ? notifVisible : false, mineVisible]; _tabVisibility = [
homeVisible,
widget.isChooseFirm ? notifVisible : false,
mineVisible,
];
// tab tab tab 0 // tab tab tab 0
if (!_isIndexVisible(_currentIndex)) { if (!_isIndexVisible(_currentIndex)) {
@ -176,6 +180,31 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
_currentIndex = first; _currentIndex = first;
} }
}); });
if (!homeVisible && !notifVisible && !mineVisible) {
_showErrorDialog();
}
}
Future<void> _showErrorDialog() async {
final confirmed = await CustomAlertDialog.showConfirm(
context,
title: '温馨提示',
content: '暂无登录权限,请联系管理员授权!',
force: true,
);
if (confirmed) {
//
final prefs = await SharedPreferences.getInstance();
await prefs.remove('isLoggedIn');
// SessionService
SessionService.instance.clear();
//
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (context) => LoginPage()),
(Route<dynamic> route) => false, //
);
}
} }
// tab fallback0 // tab fallback0
@ -292,33 +321,63 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
if (_tabVisibility[i]) { if (_tabVisibility[i]) {
switch (i) { switch (i) {
case 0: case 0:
visibleItems.add(BottomNavigationBarItem( visibleItems.add(
icon: Image.asset('assets/tabbar/basics.png', width: 24, height: 24), BottomNavigationBarItem(
activeIcon: Image.asset('assets/tabbar/basics_cur.png', width: 24, height: 24), icon: Image.asset(
label: '首页', 'assets/tabbar/basics.png',
)); width: 24,
height: 24,
),
activeIcon: Image.asset(
'assets/tabbar/basics_cur.png',
width: 24,
height: 24,
),
label: '首页',
),
);
visiblePages.add(_pages[i]); visiblePages.add(_pages[i]);
break; break;
case 1: case 1:
visibleItems.add(BottomNavigationBarItem( visibleItems.add(
icon: _buildIconWithBadge( BottomNavigationBarItem(
icon: Image.asset('assets/tabbar/works.png', width: 24, height: 24), icon: _buildIconWithBadge(
badgeCount: bm.notifCount, icon: Image.asset(
'assets/tabbar/works.png',
width: 24,
height: 24,
),
badgeCount: bm.notifCount,
),
activeIcon: _buildIconWithBadge(
icon: Image.asset(
'assets/tabbar/works_cur.png',
width: 24,
height: 24,
),
badgeCount: bm.notifCount,
),
label: '通知',
), ),
activeIcon: _buildIconWithBadge( );
icon: Image.asset('assets/tabbar/works_cur.png', width: 24, height: 24),
badgeCount: bm.notifCount,
),
label: '通知',
));
visiblePages.add(_pages[i]); visiblePages.add(_pages[i]);
break; break;
case 2: case 2:
visibleItems.add(BottomNavigationBarItem( visibleItems.add(
icon: Image.asset('assets/tabbar/my.png', width: 24, height: 24), BottomNavigationBarItem(
activeIcon: Image.asset('assets/tabbar/my_cur.png', width: 24, height: 24), icon: Image.asset(
label: '我的', 'assets/tabbar/my.png',
)); width: 24,
height: 24,
),
activeIcon: Image.asset(
'assets/tabbar/my_cur.png',
width: 24,
height: 24,
),
label: '我的',
),
);
visiblePages.add(_pages[i]); visiblePages.add(_pages[i]);
break; break;
} }
@ -329,7 +388,10 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
final bool hasVisiblePages = visiblePages.isNotEmpty; final bool hasVisiblePages = visiblePages.isNotEmpty;
// Tab IndexedStack/BottomNavigationBar // Tab IndexedStack/BottomNavigationBar
final visibleCurrentIndex = _originalToVisibleIndex(_currentIndex, _tabVisibility); final visibleCurrentIndex = _originalToVisibleIndex(
_currentIndex,
_tabVisibility,
);
// ---------- visibleItems ---------- // ---------- visibleItems ----------
Widget? bottomBarWidget; Widget? bottomBarWidget;
@ -341,7 +403,10 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
selectedItemColor: Colors.blue, selectedItemColor: Colors.blue,
unselectedItemColor: Colors.grey, unselectedItemColor: Colors.grey,
onTap: (visibleIndex) { onTap: (visibleIndex) {
final originalIndex = _visibleToOriginalIndex(visibleIndex, _tabVisibility); final originalIndex = _visibleToOriginalIndex(
visibleIndex,
_tabVisibility,
);
setState(() => _currentIndex = originalIndex); setState(() => _currentIndex = originalIndex);
}, },
items: visibleItems, items: visibleItems,
@ -349,11 +414,17 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
} else if (visibleItems.length == 1) { } else if (visibleItems.length == 1) {
// tab BottomNavigationBar // tab BottomNavigationBar
final single = visibleItems[0]; final single = visibleItems[0];
final singleVisibleOriginalIndex = _visibleToOriginalIndex(0, _tabVisibility); final singleVisibleOriginalIndex = _visibleToOriginalIndex(
0,
_tabVisibility,
);
final isSelected = _currentIndex == singleVisibleOriginalIndex; final isSelected = _currentIndex == singleVisibleOriginalIndex;
// icon // icon
final Widget iconWidget = isSelected && single.activeIcon != null ? single.activeIcon! : single.icon; final Widget iconWidget =
isSelected && single.activeIcon != null
? single.activeIcon!
: single.icon;
bottomBarWidget = Material( bottomBarWidget = Material(
elevation: 8, elevation: 8,
@ -400,12 +471,13 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
currentIndex: _currentIndex, currentIndex: _currentIndex,
child: Scaffold( child: Scaffold(
appBar: null, appBar: null,
body: hasVisiblePages body:
? IndexedStack( hasVisiblePages
index: visibleCurrentIndex, ? IndexedStack(
children: visiblePages, index: visibleCurrentIndex,
) children: visiblePages,
: const SizedBox.shrink(), )
: const SizedBox.shrink(),
bottomNavigationBar: bottomBarWidget, bottomNavigationBar: bottomBarWidget,
), ),
); );

View File

@ -26,6 +26,7 @@ import 'package:qhd_prevention/common/route_model.dart';
class MinePage extends StatefulWidget { class MinePage extends StatefulWidget {
const MinePage({super.key, required this.isChooseFirm}); const MinePage({super.key, required this.isChooseFirm});
final bool isChooseFirm; final bool isChooseFirm;
@override @override
@ -63,7 +64,7 @@ class MinePageState extends State<MinePage> {
'title': '扫码入职', 'title': '扫码入职',
'icon': 'assets/images/ico10.png', 'icon': 'assets/images/ico10.png',
// perm [] // perm []
'perms': ['dashboard-scan'], 'perms': ['my-center-Scan-Code-Onboarding'],
'action': 'scanOnboarding', 'action': 'scanOnboarding',
}, },
{ {
@ -130,7 +131,9 @@ class MinePageState extends State<MinePage> {
RouteService().addListener(_onRouteServiceUpdated); RouteService().addListener(_onRouteServiceUpdated);
// route // route
WidgetsBinding.instance.addPostFrameCallback((_) => _updateVisibilityFromRoute()); WidgetsBinding.instance.addPostFrameCallback(
(_) => _updateVisibilityFromRoute(),
);
} }
@override @override
@ -189,20 +192,27 @@ class MinePageState extends State<MinePage> {
} }
} }
// //
Future<void> _getUserInfo() async { Future<void> _getUserInfo() async {
final res = await BasicInfoApi.getUserMessage( setState(() {
'${SessionService.instance.accountId}', name = SessionService.instance.userData?.name ?? "登录/注册";
); phone = SessionService.instance.userData?.phone ?? "";
if (res['success'] == true) { });
final data = res['data'] as Map<String, dynamic>; // final accountId =
SessionService.instance.updateFromApiResponse(data); // SessionService.instance.accountId ??
await SessionService.instance.saveToPrefs(); // SessionService.instance.userData?.id ??
setState(() { // SessionService.instance.userData?.accountId ??
name = SessionService.instance.userData?.name ?? "登录/注册"; // '';
phone = SessionService.instance.userData?.phone ?? ""; // final res = await BasicInfoApi.getUserMessage(accountId);
}); // if (res['success'] == true) {
} // final data = res['data'] as Map<String, dynamic>;
// SessionService.instance.updateFromApiResponse(data);
// await SessionService.instance.saveToPrefs();
// setState(() {
// name = SessionService.instance.userData?.name ?? "登录/注册";
// phone = SessionService.instance.userData?.phone ?? "";
// });
// }
} }
Future<void> _logout() async { Future<void> _logout() async {
@ -228,19 +238,18 @@ class MinePageState extends State<MinePage> {
); );
if (result) { if (result) {
CustomAlertDialog.showInputWithCode( CustomAlertDialog.showInputWithCode(
context, context,
title: '手机号:${SessionService.instance.phone}', title: '手机号:${SessionService.instance.phone}',
onGetCode: () async { onGetCode: () async {
LoadingDialogHelper.show(); LoadingDialogHelper.show();
final res = await BasicInfoApi.sendRegisterSms({ final res = await BasicInfoApi.sendRegisterSms({'phone': phone});
'phone': phone, LoadingDialogHelper.dismiss();
}); return true;
LoadingDialogHelper.dismiss(); },
return true; onConfirm: (code) async {
}, _quit(code);
onConfirm: (code) async { },
_quit(code); );
});
} }
} }
} else { } else {
@ -252,10 +261,7 @@ class MinePageState extends State<MinePage> {
// //
Future<void> _quit(String code) async { Future<void> _quit(String code) async {
LoadingDialogHelper.show(); LoadingDialogHelper.show();
Map data = { Map data = {'id': SessionService.instance.accountId, 'phoneCode': code};
'id': SessionService.instance.accountId,
'phoneCode': code,
};
await BasicInfoApi.logout(data).then((res) async { await BasicInfoApi.logout(data).then((res) async {
LoadingDialogHelper.dismiss(); LoadingDialogHelper.dismiss();
if (res['success'] == true) { if (res['success'] == true) {
@ -343,28 +349,41 @@ class MinePageState extends State<MinePage> {
void _onSettingTapAction(String action) async { void _onSettingTapAction(String action) async {
switch (action) { switch (action) {
case 'userinfo': case 'userinfo':
await pushPage(FullUserinfoPage(isEidt: false, isChooseFirm: true), context); await pushPage(
FullUserinfoPage(isEidt: false, isChooseFirm: true),
context,
);
break; break;
case 'changePwd': case 'changePwd':
await pushPage(MineSetPwdPage('0'), context); await pushPage(MineSetPwdPage('0'), context);
break; break;
case 'scanOnboarding': case 'scanOnboarding':
final result = await pushPage(ScanPage(type: ScanType.Onboarding), context); final result = await pushPage(
ScanPage(type: ScanType.Onboarding),
context,
);
if (result == null) return; if (result == null) return;
pushPage(OnboardingFullPage(scanData: result), context); pushPage(OnboardingFullPage(scanData: result), context);
break; break;
case 'face': case 'face':
pushPage(const FaceRecognitionPage(studentId: '', data: {}, mode: FaceMode.setUpdata), context); pushPage(
const FaceRecognitionPage(
studentId: '',
data: {},
mode: FaceMode.setUpdata,
),
context,
);
break; break;
case 'certificate': case 'certificate':
pushPage(const CertificateListPage(), context); pushPage(const CertificateListPage(), context);
break; break;
case 'version': case 'version':
// //
ToastUtil.showNormal(context, '功能开发中...'); ToastUtil.showNormal(context, '功能开发中...');
break; break;
case 'about': case 'about':
// //
ToastUtil.showNormal(context, '功能开发中...'); ToastUtil.showNormal(context, '功能开发中...');
break; break;
@ -392,12 +411,14 @@ class MinePageState extends State<MinePage> {
// isChooseFirm true // isChooseFirm true
if (title == '切换账户' && !widget.isChooseFirm) continue; if (title == '切换账户' && !widget.isChooseFirm) continue;
children.add(_buildSettingItem( children.add(
title: title, _buildSettingItem(
icon: item['icon'] as String, title: title,
value: false, icon: item['icon'] as String,
onChanged: (_) => _onSettingTapAction(item['action'] as String), value: false,
)); onChanged: (_) => _onSettingTapAction(item['action'] as String),
),
);
} }
return Container( return Container(
@ -414,21 +435,28 @@ class MinePageState extends State<MinePage> {
), ),
], ],
), ),
child: Column( child: Column(children: children),
children: children,
),
); );
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
RouteModel? showLogot = RouteService().findRouteByPerm('my-center-Logout');
bool showLogout = showLogot?.showFlag == 1;
final double headerHeight = 300.0; final double headerHeight = 300.0;
final double overlap = 100.0; final double overlap = 100.0;
return SizedBox( return SizedBox(
height: MediaQuery.of(context).size.height, height: MediaQuery.of(context).size.height,
child: Stack( child: Stack(
children: [ children: [
Positioned(top: 0, left: 0, right: 0, height: headerHeight, child: _buildHeaderSection()), Positioned(
top: 0,
left: 0,
right: 0,
height: headerHeight,
child: _buildHeaderSection(),
),
Positioned.fill( Positioned.fill(
child: NotificationListener<OverscrollIndicatorNotification>( child: NotificationListener<OverscrollIndicatorNotification>(
onNotification: (overscroll) { onNotification: (overscroll) {
@ -436,33 +464,41 @@ class MinePageState extends State<MinePage> {
return false; return false;
}, },
child: ListView( child: ListView(
padding: EdgeInsets.only(top: headerHeight - overlap, bottom: 24, left: 0, right: 0), padding: EdgeInsets.only(
top: headerHeight - overlap,
bottom: 24,
left: 0,
right: 0,
),
children: [ children: [
_buildSettingsList(), _buildSettingsList(),
const SizedBox(height: 15), const SizedBox(height: 15),
Padding( if (showLogout)
padding: const EdgeInsets.symmetric(horizontal: 15), Padding(
child: CustomButton( padding: const EdgeInsets.symmetric(horizontal: 15),
text: '退出登录', child: CustomButton(
textStyle: const TextStyle(fontSize: 16), text: '退出登录',
backgroundColor: Colors.blue, textStyle: const TextStyle(fontSize: 16),
onPressed: () { backgroundColor: Colors.blue,
CustomAlertDialog.showConfirm( onPressed: () {
context, CustomAlertDialog.showConfirm(
title: '确认退出', context,
content: '确定要退出当前账号吗', title: '确认退出',
onConfirm: () async { content: '确定要退出当前账号吗',
await _clearUserSession(); onConfirm: () async {
Navigator.pushAndRemoveUntil( await _clearUserSession();
context, Navigator.pushAndRemoveUntil(
MaterialPageRoute(builder: (context) => const LoginPage()), context,
(Route<dynamic> route) => false, MaterialPageRoute(
); builder: (context) => const LoginPage(),
}, ),
); (Route<dynamic> route) => false,
}, );
},
);
},
),
), ),
),
], ],
), ),
), ),
@ -488,7 +524,11 @@ class MinePageState extends State<MinePage> {
top: 51, top: 51,
child: Text( child: Text(
"我的", "我的",
style: TextStyle(color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold), style: TextStyle(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.bold,
),
), ),
), ),
_buildSloganSection(), _buildSloganSection(),

View File

@ -395,6 +395,8 @@ class SessionService {
// ---------- convenience setters ---------- // ---------- convenience setters ----------
void setToken(String t) => token = t; void setToken(String t) => token = t;
// void setRoleId(String t) => roleId = t;
void setName(String t) => name = t; void setName(String t) => name = t;
void setLoginPhone(String phone) => loginPhone = phone; void setLoginPhone(String phone) => loginPhone = phone;
@ -408,6 +410,8 @@ class SessionService {
print('姓名: ${userData!.name}'); print('姓名: ${userData!.name}');
print('部门: ${userData!.departmentName}'); print('部门: ${userData!.departmentName}');
print('租户ID: ${userData!.tenantId}'); print('租户ID: ${userData!.tenantId}');
print('Account ID: ${userData!.id}');
// printLongString(text) // printLongString(text)
} }
} }

View File

@ -50,6 +50,14 @@ class AuthService {
}; };
return AuthService.gbsLogin(username, password, data); return AuthService.gbsLogin(username, password, data);
} else if (firmList.length > 1) { } else if (firmList.length > 1) {
//
return {
'isChooseFirm': false,
'isInfoComplete': isInfoComplete,
'firmList': firmList,
'userName': username,
'password': password,
};
// //
if (StorageService.instance.getString('key.saveJoinFirmInfo') != null) { if (StorageService.instance.getString('key.saveJoinFirmInfo') != null) {
// //
@ -124,14 +132,14 @@ class AuthService {
final success = result['success'] as bool; final success = result['success'] as bool;
if (!success) { if (!success) {
Fluttertoast.showToast(msg: result['errMessage'] ?? ''); Fluttertoast.showToast(msg: result['errMessage'] ?? '');
return result;
// return false; // return false;
} }
printLongString('token:${jsonEncode(result['data']['token'])}'); printLongString('token:${jsonEncode(result['data']['token'])}');
final data = result['data'] as Map<String, dynamic>; final data = result['data'] as Map<String, dynamic>;
final token = data['token'] ?? ''; final token = data['token'] ?? '';
SessionService.instance.setToken(token); SessionService.instance.setToken(token);
// SessionService.instance.setRo(token);
final prefs = await SharedPreferences.getInstance(); final prefs = await SharedPreferences.getInstance();
await prefs.setString(_keyUser, json.encode(data)); await prefs.setString(_keyUser, json.encode(data));
await prefs.setStringList(_keyRemember, [username, password]); await prefs.setStringList(_keyRemember, [username, password]);
@ -156,6 +164,8 @@ class AuthService {
SessionService.instance.printUserInfo(); SessionService.instance.printUserInfo();
}); });
return result;
} catch (e) { } catch (e) {
LoadingDialogHelper.hide(); LoadingDialogHelper.hide();
Fluttertoast.showToast(msg: '用户信息获取失败,请重试'); Fluttertoast.showToast(msg: '用户信息获取失败,请重试');