feat(mobile-next): 工号查询防抖、开关接入,资料页不再把工号当手机号
Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
co-authored by
Cursor
multica-agent
parent
3b87812db8
commit
26622676ed
@@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -18,6 +20,7 @@ class AddColleagueLogic extends GetxController {
|
|||||||
final loadFailed = false.obs;
|
final loadFailed = false.obs;
|
||||||
|
|
||||||
final _directory = DirectoryApi();
|
final _directory = DirectoryApi();
|
||||||
|
Timer? _lookupDebounce;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
@@ -27,11 +30,18 @@ class AddColleagueLogic extends GetxController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
|
_lookupDebounce?.cancel();
|
||||||
staffCtrl.dispose();
|
staffCtrl.dispose();
|
||||||
msgCtrl.dispose();
|
msgCtrl.dispose();
|
||||||
super.onClose();
|
super.onClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void onStaffChanged(String _) {
|
||||||
|
staffError.value = null;
|
||||||
|
_lookupDebounce?.cancel();
|
||||||
|
_lookupDebounce = Timer(const Duration(milliseconds: 300), lookupDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> reload() async {
|
Future<void> reload() async {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
loadFailed.value = false;
|
loadFailed.value = false;
|
||||||
@@ -98,7 +108,7 @@ class AddColleaguePage extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final logic = Get.put(AddColleagueLogic());
|
final logic = Get.find<AddColleagueLogic>();
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: AppColors.pageBg,
|
backgroundColor: AppColors.pageBg,
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
@@ -125,10 +135,7 @@ class AddColleaguePage extends StatelessWidget {
|
|||||||
height: 48,
|
height: 48,
|
||||||
error: logic.staffError.value,
|
error: logic.staffError.value,
|
||||||
enabled: !logic.sending.value,
|
enabled: !logic.sending.value,
|
||||||
onChanged: (_) {
|
onChanged: logic.onStaffChanged,
|
||||||
logic.staffError.value = null;
|
|
||||||
logic.lookupDirectory();
|
|
||||||
},
|
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() {
|
||||||
final hint = logic.directoryHint.value;
|
final hint = logic.directoryHint.value;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import 'package:openim_common/openim_common.dart';
|
|||||||
import '../auth/company_login_logic.dart';
|
import '../auth/company_login_logic.dart';
|
||||||
import '../brand/app_tokens.dart';
|
import '../brand/app_tokens.dart';
|
||||||
import '../feature_flags.dart';
|
import '../feature_flags.dart';
|
||||||
|
import 'state_views.dart';
|
||||||
|
|
||||||
/// 登录页第一批:v2 布局 + Token,保留 OpenIM 标识,不做畅联换标。
|
/// 登录页第一批:v2 布局 + Token,保留 OpenIM 标识,不做畅联换标。
|
||||||
class CompanyLoginPage extends StatelessWidget {
|
class CompanyLoginPage extends StatelessWidget {
|
||||||
@@ -66,9 +67,13 @@ class CompanyLoginPage extends StatelessWidget {
|
|||||||
const SizedBox(height: AppGap.x4),
|
const SizedBox(height: AppGap.x4),
|
||||||
Obx(() => _loginButton(logic)),
|
Obx(() => _loginButton(logic)),
|
||||||
const SizedBox(height: AppGap.x3),
|
const SizedBox(height: AppGap.x3),
|
||||||
|
if (!FeatureFlags.hideRegisterAndReset)
|
||||||
|
const SizedBox.shrink(),
|
||||||
const Text(
|
const Text(
|
||||||
'登录即代表同意内部使用规范',
|
'登录即代表同意内部使用规范',
|
||||||
style: TextStyle(fontSize: AppFont.small, color: AppColors.textSecondary),
|
style: TextStyle(
|
||||||
|
fontSize: AppFont.small,
|
||||||
|
color: AppColors.textSecondary),
|
||||||
),
|
),
|
||||||
const Spacer(flex: 3),
|
const Spacer(flex: 3),
|
||||||
],
|
],
|
||||||
@@ -79,30 +84,7 @@ class CompanyLoginPage extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Obx(() {
|
Obx(() => CompanyToastBanner(message: logic.toast.value)),
|
||||||
final msg = logic.toast.value;
|
|
||||||
if (msg == null) return const SizedBox.shrink();
|
|
||||||
return SafeArea(
|
|
||||||
child: Align(
|
|
||||||
alignment: Alignment.topCenter,
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.fromLTRB(AppGap.x4, AppGap.x2, AppGap.x4, 0),
|
|
||||||
child: Material(
|
|
||||||
color: AppColors.bannerBg,
|
|
||||||
borderRadius: BorderRadius.circular(AppRadius.control),
|
|
||||||
child: Padding(
|
|
||||||
padding: const EdgeInsets.symmetric(horizontal: AppGap.x4, vertical: AppGap.x3),
|
|
||||||
child: Text(
|
|
||||||
msg,
|
|
||||||
textAlign: TextAlign.center,
|
|
||||||
style: const TextStyle(fontSize: AppFont.sub, color: Colors.white),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|||||||
+4
-3
@@ -3,6 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:openim_common/openim_common.dart';
|
import 'package:openim_common/openim_common.dart';
|
||||||
|
|
||||||
|
import '../../../company/feature_flags.dart';
|
||||||
import 'personal_info_logic.dart';
|
import 'personal_info_logic.dart';
|
||||||
|
|
||||||
class PersonalInfoPage extends StatelessWidget {
|
class PersonalInfoPage extends StatelessWidget {
|
||||||
@@ -52,9 +53,9 @@ class PersonalInfoPage extends StatelessWidget {
|
|||||||
_buildCornerBgView(
|
_buildCornerBgView(
|
||||||
children: [
|
children: [
|
||||||
_buildItemView(
|
_buildItemView(
|
||||||
label: StrRes.mobile,
|
label: FeatureFlags.staffLoginOnly ? '工号' : StrRes.mobile,
|
||||||
value: logic.phoneNumber,
|
value: FeatureFlags.staffLoginOnly ? logic.userID : logic.phoneNumber,
|
||||||
onTap: logic.clickPhoneNumber,
|
onTap: FeatureFlags.staffLoginOnly ? null : logic.clickPhoneNumber,
|
||||||
),
|
),
|
||||||
_buildItemView(
|
_buildItemView(
|
||||||
label: StrRes.email,
|
label: StrRes.email,
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import 'package:common_utils/common_utils.dart';
|
import 'package:common_utils/common_utils.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:openim_common/openim_common.dart';
|
import 'package:openim_common/openim_common.dart';
|
||||||
|
|
||||||
|
import '../../../company/feature_flags.dart';
|
||||||
import '../../../core/controller/im_controller.dart';
|
import '../../../core/controller/im_controller.dart';
|
||||||
import 'my_info_logic.dart';
|
import 'my_info_logic.dart';
|
||||||
|
|
||||||
@@ -57,9 +59,11 @@ class MyInfoPage extends StatelessWidget {
|
|||||||
_buildCornerBgView(
|
_buildCornerBgView(
|
||||||
children: [
|
children: [
|
||||||
_buildItemView(
|
_buildItemView(
|
||||||
label: StrRes.mobile,
|
label: FeatureFlags.staffLoginOnly ? '工号' : StrRes.mobile,
|
||||||
value: imLogic.userInfo.value.phoneNumber,
|
value: FeatureFlags.staffLoginOnly
|
||||||
showRightArrow: false,
|
? OpenIM.iMManager.userID
|
||||||
|
: imLogic.userInfo.value.phoneNumber,
|
||||||
|
showRightArrow: !FeatureFlags.staffLoginOnly,
|
||||||
),
|
),
|
||||||
_buildItemView(
|
_buildItemView(
|
||||||
label: StrRes.email,
|
label: StrRes.email,
|
||||||
|
|||||||
@@ -168,6 +168,9 @@ class AppPages {
|
|||||||
_pageBuilder(
|
_pageBuilder(
|
||||||
name: AppRoutes.addColleague,
|
name: AppRoutes.addColleague,
|
||||||
page: () => const AddColleaguePage(),
|
page: () => const AddColleaguePage(),
|
||||||
|
binding: BindingsBuilder(() {
|
||||||
|
Get.lazyPut(() => AddColleagueLogic());
|
||||||
|
}),
|
||||||
),
|
),
|
||||||
_pageBuilder(
|
_pageBuilder(
|
||||||
name: AppRoutes.addContactsMethod,
|
name: AppRoutes.addContactsMethod,
|
||||||
|
|||||||
Reference in New Issue
Block a user