Bladeren bron

选择业主还是租户

liukai 2 weken geleden
bovenliggende
commit
9e11134c90

+ 64 - 0
packages/cpt_auth/lib/modules/select_role/screen_owner.dart

@@ -0,0 +1,64 @@
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:widgets/my_text_view.dart';
+
+class ScreenOwner extends StatelessWidget {
+  const ScreenOwner({Key? key}) : super(key: key);
+
+  @override
+  Widget build(BuildContext context) {
+    return SingleChildScrollView(
+      scrollDirection: Axis.vertical,
+      physics: const BouncingScrollPhysics(),
+      child: Column(
+        mainAxisSize: MainAxisSize.max,
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          MyTextView(
+            S.current.who_are_owners,
+            fontSize: 23.5,
+            marginTop: 25,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+          MyTextView(
+            S.current.owners_desc1,
+            fontSize: 15,
+            marginTop: 22,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+          MyTextView(
+            S.current.owners_desc2,
+            fontSize: 15,
+            marginTop: 22,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+          MyTextView(
+            S.current.owners_desc3,
+            fontSize: 15,
+            marginTop: 22,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+          MyTextView(
+            S.current.owners_desc4,
+            fontSize: 15,
+            marginTop: 22,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+          MyTextView(
+            S.current.owners_desc5,
+            fontSize: 15,
+            marginTop: 22,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 57 - 0
packages/cpt_auth/lib/modules/select_role/screen_tenant.dart

@@ -0,0 +1,57 @@
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/cupertino.dart';
+import 'package:widgets/my_text_view.dart';
+
+class ScreenTenant extends StatelessWidget {
+  const ScreenTenant({Key? key}) : super(key: key);
+
+  @override
+  Widget build(BuildContext context) {
+    return SingleChildScrollView(
+      scrollDirection: Axis.vertical,
+      physics: const BouncingScrollPhysics(),
+      child: Column(
+        mainAxisSize: MainAxisSize.max,
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          MyTextView(
+            S.current.who_are_tenants,
+            fontSize: 23.5,
+            marginTop: 25,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+          MyTextView(
+            S.current.tenants_desc1,
+            fontSize: 15,
+            marginTop: 22,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+          MyTextView(
+            S.current.tenants_desc2,
+            fontSize: 15,
+            marginTop: 22,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+          MyTextView(
+            S.current.tenants_desc3,
+            fontSize: 15,
+            marginTop: 22,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+          MyTextView(
+            S.current.tenants_desc4,
+            fontSize: 15,
+            marginTop: 22,
+            isFontMedium: true,
+            textColor: context.appColors.textBlack,
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 115 - 0
packages/cpt_auth/lib/modules/select_role/select_role_page.dart

@@ -0,0 +1,115 @@
+import 'package:cpt_auth/modules/select_role/screen_owner.dart';
+import 'package:cpt_auth/modules/select_role/screen_tenant.dart';
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/material.dart';
+import 'package:auto_route/auto_route.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:router/ext/auto_router_extensions.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/my_appbar.dart';
+import 'package:widgets/my_button.dart';
+import 'package:widgets/my_text_view.dart';
+
+import '../../router/page/auth_page_router.dart';
+import 'select_role_view_model.dart';
+
+@RoutePage()
+class SelectRolePage extends HookConsumerWidget {
+  const SelectRolePage({Key? key}) : super(key: key);
+
+  //启动当前页面
+  static void startInstance({BuildContext? context}) {
+    if (context != null) {
+      context.router.push(const SelectRolePageRoute());
+    } else {
+      appRouter.push(const SelectRolePageRoute());
+    }
+  }
+
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+    final viewModel = ref.read(selectRoleViewModelProvider.notifier);
+    final state = ref.watch(selectRoleViewModelProvider);
+
+    return Scaffold(
+      appBar: MyAppBar.appBar(context, ""),
+      backgroundColor: context.appColors.backgroundDefault,
+      body: Container(
+        padding: const EdgeInsets.symmetric(horizontal: 15),
+        width: double.infinity,
+        child: Column(
+          mainAxisSize: MainAxisSize.max,
+          crossAxisAlignment: CrossAxisAlignment.center,
+          children: [
+            MyTextView(
+              S.current.owner_or_tenant,
+              fontSize: 23.5,
+              marginTop: 25,
+              marginBottom: 25,
+              textAlign: TextAlign.center,
+              isFontMedium: true,
+              textColor: context.appColors.textBlack,
+            ),
+
+            //顶部的Tab切换
+            Row(
+              children: [
+                MyTextView(
+                  S.current.owner,
+                  textColor: state.selectedIndex == 0 ? context.appColors.tabTextSelectedPrimary : context.appColors.tabTextUnSelectedPrimary,
+                  fontSize: 16,
+                  isFontMedium: true,
+                  paddingTop: 16,
+                  paddingBottom: 16,
+                  cornerRadius: 5,
+                  textAlign: TextAlign.center,
+                  onClick: () {
+                    viewModel.selectRole(0);
+                  },
+                  backgroundColor: state.selectedIndex == 0 ? context.appColors.tabBgSelectedPrimary : context.appColors.tabBgUnSelectedPrimary,
+                ).expanded(),
+                MyTextView(
+                  S.current.tenant,
+                  textColor: state.selectedIndex == 1 ? context.appColors.tabTextSelectedPrimary : context.appColors.tabTextUnSelectedPrimary,
+                  fontSize: 16,
+                  marginLeft: 15,
+                  paddingTop: 16,
+                  paddingBottom: 16,
+                  textAlign: TextAlign.center,
+                  isFontMedium: true,
+                  cornerRadius: 5,
+                  onClick: () {
+                    viewModel.selectRole(1);
+                  },
+                  backgroundColor: state.selectedIndex == 1 ? context.appColors.tabBgSelectedPrimary : context.appColors.tabBgUnSelectedPrimary,
+                ).expanded(),
+              ],
+            ),
+
+            IndexedStack(
+              index: state.selectedIndex,
+              children: const [
+                ScreenOwner(),
+                ScreenTenant(),
+              ],
+            ).expanded(),
+
+            //底部的按钮
+            MyButton(
+              onPressed: viewModel.submitRole,
+              text: S.current.next,
+              textColor: Colors.white,
+              backgroundColor: context.appColors.btnBgDefault,
+              fontWeight: FontWeight.w500,
+              type: ClickType.throttle,
+              fontSize: 16,
+              minHeight: 50,
+              radius: 5,
+            ).marginOnly(top: 32, bottom: 32, left: 18, right: 18),
+          ],
+        ),
+      ),
+    );
+  }
+}

+ 15 - 0
packages/cpt_auth/lib/modules/select_role/select_role_state.dart

@@ -0,0 +1,15 @@
+class SelectRoleState {
+  int selectedIndex;
+
+  SelectRoleState({
+    this.selectedIndex = 0,
+  });
+
+  SelectRoleState copyWith({
+    int? selectedIndex,
+  }) {
+    return SelectRoleState(
+      selectedIndex: selectedIndex ?? this.selectedIndex,
+    );
+  }
+}

+ 21 - 0
packages/cpt_auth/lib/modules/select_role/select_role_view_model.dart

@@ -0,0 +1,21 @@
+import 'package:cpt_auth/modules/select_role/select_role_state.dart';
+import 'package:riverpod_annotation/riverpod_annotation.dart';
+
+part 'select_role_view_model.g.dart';
+
+@riverpod
+class SelectRoleViewModel extends _$SelectRoleViewModel {
+  @override
+  SelectRoleState build() {
+    return SelectRoleState();
+  }
+
+  void submitRole() {
+
+  }
+
+  //选择角色
+  void selectRole(int index) {
+    state = state.copyWith(selectedIndex: index);
+  }
+}

+ 27 - 0
packages/cpt_auth/lib/modules/select_role/select_role_view_model.g.dart

@@ -0,0 +1,27 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'select_role_view_model.dart';
+
+// **************************************************************************
+// RiverpodGenerator
+// **************************************************************************
+
+String _$selectRoleViewModelHash() =>
+    r'3b03e884e98d9c7186bc5f7871061d91577fef50';
+
+/// See also [SelectRoleViewModel].
+@ProviderFor(SelectRoleViewModel)
+final selectRoleViewModelProvider =
+    AutoDisposeNotifierProvider<SelectRoleViewModel, SelectRoleState>.internal(
+  SelectRoleViewModel.new,
+  name: r'selectRoleViewModelProvider',
+  debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
+      ? null
+      : _$selectRoleViewModelHash,
+  dependencies: null,
+  allTransitiveDependencies: null,
+);
+
+typedef _$SelectRoleViewModel = AutoDisposeNotifier<SelectRoleState>;
+// ignore_for_file: type=lint
+// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package

+ 3 - 3
packages/cpt_auth/lib/modules/select_unit/select_unit_view_model.dart

@@ -1,4 +1,4 @@
-
+import 'package:cpt_auth/modules/select_role/select_role_page.dart';
 import 'package:cpt_auth/modules/select_unit/select_unit_state.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
@@ -8,13 +8,13 @@ part 'select_unit_view_model.g.dart';
 class SelectUnitViewModel extends _$SelectUnitViewModel {
 
   @override
-  SelectUnitState build(){
+  SelectUnitState build() {
     return SelectUnitState();
   }
 
   /// 提交选择的街道与单元
   void submitUnit() {
-
+    SelectRolePage.startInstance();
   }
 
   void setRemainingSpace(double remainingSpace) {

+ 2 - 0
packages/cpt_auth/lib/router/page/auth_page_router.dart

@@ -11,6 +11,7 @@ import '../../modules/sing_up_verify/sign_up_verify_page.dart';
 import '../../modules/sing_up_success/sign_up_success_page.dart';
 import '../../modules/select_estate/select_estate_page.dart';
 import '../../modules/select_unit/select_unit_page.dart';
+import '../../modules/select_role/select_role_page.dart';
 
 
 
@@ -31,5 +32,6 @@ class AuthPageRouter extends _$AuthPageRouter {
     CustomRoute(page: SignUpSuccessPageRoute.page, path: RouterPath.authSignUpSuccess, transitionsBuilder: applySlideTransition),
     CustomRoute(page: SelectEstatePageRoute.page, path: RouterPath.authSelectEstate, transitionsBuilder: applySlideTransition),
     CustomRoute(page: SelectUnitPageRoute.page, path: RouterPath.authSelectUnit, transitionsBuilder: applySlideTransition),
+    CustomRoute(page: SelectRolePageRoute.page, path: RouterPath.authSelectRole, transitionsBuilder: applySlideTransition),
   ];
 }

+ 20 - 0
packages/cpt_auth/lib/router/page/auth_page_router.gr.dart

@@ -41,6 +41,12 @@ abstract class _$AuthPageRouter extends RootStackRouter {
         child: SelectEstatePage(key: args.key),
       );
     },
+    SelectRolePageRoute.name: (routeData) {
+      return AutoRoutePage<dynamic>(
+        routeData: routeData,
+        child: const SelectRolePage(),
+      );
+    },
     SelectUnitPageRoute.name: (routeData) {
       final args = routeData.argsAs<SelectUnitPageRouteArgs>(
           orElse: () => const SelectUnitPageRouteArgs());
@@ -142,6 +148,20 @@ class SelectEstatePageRouteArgs {
 }
 
 /// generated route for
+/// [SelectRolePage]
+class SelectRolePageRoute extends PageRouteInfo<void> {
+  const SelectRolePageRoute({List<PageRouteInfo>? children})
+      : super(
+          SelectRolePageRoute.name,
+          initialChildren: children,
+        );
+
+  static const String name = 'SelectRolePageRoute';
+
+  static const PageInfo<void> page = PageInfo<void>(name);
+}
+
+/// generated route for
 /// [SelectUnitPage]
 class SelectUnitPageRoute extends PageRouteInfo<SelectUnitPageRouteArgs> {
   SelectUnitPageRoute({

+ 26 - 0
packages/cs_resources/lib/generated/intl/messages_en.dart

@@ -60,6 +60,19 @@ class MessageLookup extends MessageLookupByLibrary {
         "notice_board": MessageLookupByLibrary.simpleMessage("Notice Board"),
         "notification": MessageLookupByLibrary.simpleMessage("Notification"),
         "other": MessageLookupByLibrary.simpleMessage("Other"),
+        "owner": MessageLookupByLibrary.simpleMessage("Owner"),
+        "owner_or_tenant":
+            MessageLookupByLibrary.simpleMessage("Are you an owner or tenant?"),
+        "owners_desc1": MessageLookupByLibrary.simpleMessage(
+            "My name is in the strata title"),
+        "owners_desc2": MessageLookupByLibrary.simpleMessage(
+            "My name is in the strata title and l have rented out my unit"),
+        "owners_desc3": MessageLookupByLibrary.simpleMessage(
+            "I live in the same household as the named owner"),
+        "owners_desc4": MessageLookupByLibrary.simpleMessage(
+            "I am the shareholder of the company that owns the unit"),
+        "owners_desc5": MessageLookupByLibrary.simpleMessage(
+            "The Management will verify your application accordingly"),
         "password": MessageLookupByLibrary.simpleMessage("Password"),
         "password_format":
             MessageLookupByLibrary.simpleMessage("8 Digits Alphanumeric"),
@@ -77,6 +90,15 @@ class MessageLookup extends MessageLookupByLibrary {
             "Now, let\'s get you connected to your estate and community"),
         "sign_up_verify_txt": MessageLookupByLibrary.simpleMessage(
             "We have sent you an SMS verification code Please enter it below"),
+        "tenant": MessageLookupByLibrary.simpleMessage("Tenant"),
+        "tenants_desc1": MessageLookupByLibrary.simpleMessage(
+            "My name is in the lease agreement"),
+        "tenants_desc2": MessageLookupByLibrary.simpleMessage(
+            "I live in the same household as the named tenant"),
+        "tenants_desc3": MessageLookupByLibrary.simpleMessage(
+            "I am the tenant of the company that rented the unit"),
+        "tenants_desc4": MessageLookupByLibrary.simpleMessage(
+            "The Management will verify your application accordingly"),
         "terms_of_service":
             MessageLookupByLibrary.simpleMessage("Terms of Service"),
         "tries_left": MessageLookupByLibrary.simpleMessage("Tries Left"),
@@ -85,6 +107,10 @@ class MessageLookup extends MessageLookupByLibrary {
         "verification_code":
             MessageLookupByLibrary.simpleMessage("Verification Code"),
         "welcome_name": m0,
+        "who_are_owners":
+            MessageLookupByLibrary.simpleMessage("Who are owners?"),
+        "who_are_tenants":
+            MessageLookupByLibrary.simpleMessage("Who are tenants?"),
         "you_have": MessageLookupByLibrary.simpleMessage("You have"),
         "yy_home_accounts":
             MessageLookupByLibrary.simpleMessage("YY Home Accounts")

+ 15 - 0
packages/cs_resources/lib/generated/intl/messages_zh_CN.dart

@@ -54,6 +54,14 @@ class MessageLookup extends MessageLookupByLibrary {
         "notice_board": MessageLookupByLibrary.simpleMessage("消息板"),
         "notification": MessageLookupByLibrary.simpleMessage("通知"),
         "other": MessageLookupByLibrary.simpleMessage("其他"),
+        "owner": MessageLookupByLibrary.simpleMessage("业主"),
+        "owner_or_tenant": MessageLookupByLibrary.simpleMessage("您是业主还是租户?"),
+        "owners_desc1": MessageLookupByLibrary.simpleMessage("我的名字在分层标题上"),
+        "owners_desc2":
+            MessageLookupByLibrary.simpleMessage("我的名字在分层标题上,并且我已经把我的单元租出去了"),
+        "owners_desc3": MessageLookupByLibrary.simpleMessage("我和名字的主人住在同一个家庭"),
+        "owners_desc4": MessageLookupByLibrary.simpleMessage("我是拥有该单元的公司的股东"),
+        "owners_desc5": MessageLookupByLibrary.simpleMessage("管理员将相应地验证您的申请"),
         "password": MessageLookupByLibrary.simpleMessage("密码"),
         "password_format": MessageLookupByLibrary.simpleMessage("8位数字或字母"),
         "payment": MessageLookupByLibrary.simpleMessage("支付"),
@@ -69,12 +77,19 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("现在,让我们把你和你的社区关联起来"),
         "sign_up_verify_txt":
             MessageLookupByLibrary.simpleMessage("我们已经向您发送了短信验证码,请在下面输入"),
+        "tenant": MessageLookupByLibrary.simpleMessage("租户"),
+        "tenants_desc1": MessageLookupByLibrary.simpleMessage("我的名字在租赁协议上"),
+        "tenants_desc2": MessageLookupByLibrary.simpleMessage("我和指定的租户住在同一个家庭"),
+        "tenants_desc3": MessageLookupByLibrary.simpleMessage("我是租用该单元的公司的租户"),
+        "tenants_desc4": MessageLookupByLibrary.simpleMessage("管理员将相应地验证您的申请"),
         "terms_of_service": MessageLookupByLibrary.simpleMessage("服务条款"),
         "tries_left": MessageLookupByLibrary.simpleMessage("次尝试机会"),
         "type_here": MessageLookupByLibrary.simpleMessage("在此输入"),
         "unit_number": MessageLookupByLibrary.simpleMessage("单元"),
         "verification_code": MessageLookupByLibrary.simpleMessage("验证码"),
         "welcome_name": m0,
+        "who_are_owners": MessageLookupByLibrary.simpleMessage("怎样才算业主?"),
+        "who_are_tenants": MessageLookupByLibrary.simpleMessage("怎样才算租户?"),
         "you_have": MessageLookupByLibrary.simpleMessage("你还有"),
         "yy_home_accounts": MessageLookupByLibrary.simpleMessage("YY Home 账户")
       };

+ 140 - 0
packages/cs_resources/lib/generated/l10n.dart

@@ -480,6 +480,146 @@ class S {
     );
   }
 
+  /// `Are you an owner or tenant?`
+  String get owner_or_tenant {
+    return Intl.message(
+      'Are you an owner or tenant?',
+      name: 'owner_or_tenant',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Owner`
+  String get owner {
+    return Intl.message(
+      'Owner',
+      name: 'owner',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Tenant`
+  String get tenant {
+    return Intl.message(
+      'Tenant',
+      name: 'tenant',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Who are owners?`
+  String get who_are_owners {
+    return Intl.message(
+      'Who are owners?',
+      name: 'who_are_owners',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `My name is in the strata title`
+  String get owners_desc1 {
+    return Intl.message(
+      'My name is in the strata title',
+      name: 'owners_desc1',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `My name is in the strata title and l have rented out my unit`
+  String get owners_desc2 {
+    return Intl.message(
+      'My name is in the strata title and l have rented out my unit',
+      name: 'owners_desc2',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `I live in the same household as the named owner`
+  String get owners_desc3 {
+    return Intl.message(
+      'I live in the same household as the named owner',
+      name: 'owners_desc3',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `I am the shareholder of the company that owns the unit`
+  String get owners_desc4 {
+    return Intl.message(
+      'I am the shareholder of the company that owns the unit',
+      name: 'owners_desc4',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `The Management will verify your application accordingly`
+  String get owners_desc5 {
+    return Intl.message(
+      'The Management will verify your application accordingly',
+      name: 'owners_desc5',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Who are tenants?`
+  String get who_are_tenants {
+    return Intl.message(
+      'Who are tenants?',
+      name: 'who_are_tenants',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `My name is in the lease agreement`
+  String get tenants_desc1 {
+    return Intl.message(
+      'My name is in the lease agreement',
+      name: 'tenants_desc1',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `I live in the same household as the named tenant`
+  String get tenants_desc2 {
+    return Intl.message(
+      'I live in the same household as the named tenant',
+      name: 'tenants_desc2',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `I am the tenant of the company that rented the unit`
+  String get tenants_desc3 {
+    return Intl.message(
+      'I am the tenant of the company that rented the unit',
+      name: 'tenants_desc3',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `The Management will verify your application accordingly`
+  String get tenants_desc4 {
+    return Intl.message(
+      'The Management will verify your application accordingly',
+      name: 'tenants_desc4',
+      desc: '',
+      args: [],
+    );
+  }
+
   /// `Other`
   String get other {
     return Intl.message(

+ 14 - 0
packages/cs_resources/lib/l10n/intl_en.arb

@@ -42,5 +42,19 @@
   "estate_or_building_name": "Estate or Building Name?",
   "type_here": "Type Here",
   "estate_name_desc": "Tell us the name of the estateor building you are applying to",
+  "owner_or_tenant": "Are you an owner or tenant?",
+  "owner": "Owner",
+  "tenant": "Tenant",
+  "who_are_owners": "Who are owners?",
+  "owners_desc1": "My name is in the strata title",
+  "owners_desc2": "My name is in the strata title and l have rented out my unit",
+  "owners_desc3": "I live in the same household as the named owner",
+  "owners_desc4": "I am the shareholder of the company that owns the unit",
+  "owners_desc5": "The Management will verify your application accordingly",
+  "who_are_tenants": "Who are tenants?",
+  "tenants_desc1": "My name is in the lease agreement",
+  "tenants_desc2": "I live in the same household as the named tenant",
+  "tenants_desc3": "I am the tenant of the company that rented the unit",
+  "tenants_desc4": "The Management will verify your application accordingly",
   "other": "Other"
 }

+ 14 - 0
packages/cs_resources/lib/l10n/intl_zh_CN.arb

@@ -42,5 +42,19 @@
   "estate_or_building_name": "房产或建筑名称?",
   "type_here": "在此输入",
   "estate_name_desc": "告诉我们您申请的公寓楼的名称",
+  "owner_or_tenant": "您是业主还是租户?",
+  "owner": "业主",
+  "tenant": "租户",
+  "who_are_owners": "怎样才算业主?",
+  "owners_desc1": "我的名字在分层标题上",
+  "owners_desc2": "我的名字在分层标题上,并且我已经把我的单元租出去了",
+  "owners_desc3": "我和名字的主人住在同一个家庭",
+  "owners_desc4": "我是拥有该单元的公司的股东",
+  "owners_desc5": "管理员将相应地验证您的申请",
+  "who_are_tenants": "怎样才算租户?",
+  "tenants_desc1": "我的名字在租赁协议上",
+  "tenants_desc2": "我和指定的租户住在同一个家庭",
+  "tenants_desc3": "我是租用该单元的公司的租户",
+  "tenants_desc4": "管理员将相应地验证您的申请",
   "other": "其他"
 }

+ 23 - 1
packages/cs_resources/lib/theme/app_colors_theme.dart

@@ -19,6 +19,8 @@ class AppColorsTheme extends ThemeExtension<AppColorsTheme> {
   static const _colorBDBDBD = Color(0xFFBDBDBD);
   static const _colorF2F2F2 = Color(0xFFF2F2F2);
   static const _colorFE6C00 = Color(0xFFFE6C00);
+  static const _colorD3D3D3 = Color(0xFFD3D3D3);
+  static const _color333333 = Color(0xFF333333);
 
   //暗色主题的一些自定义颜色值
   static const _darkBlackBg = Color(0xFF0F0F0F);
@@ -29,7 +31,7 @@ class AppColorsTheme extends ThemeExtension<AppColorsTheme> {
 
   // 页面中真正使用到的颜色名称
   final Color backgroundDefault; //页面背景颜色
-  final Color btnBgDefault;  //按钮背景颜色
+  final Color btnBgDefault; //按钮背景颜色
   final Color searchFiledBorder; //搜索框的边框颜色
   final Color authFiledHint; //输入框默认的提示文本颜色
   final Color authFiledText; //输入框默认的文本颜色
@@ -38,6 +40,10 @@ class AppColorsTheme extends ThemeExtension<AppColorsTheme> {
   final Color textBlack; //黑色文本
   final Color textDarkGray; //深灰色 666 文本
   final Color orangeBG; //按钮的橙色背景
+  final Color tabBgSelectedPrimary; //Tab的选中主题色背景
+  final Color tabBgUnSelectedPrimary; //Tab的未选中主题色背景
+  final Color tabTextSelectedPrimary; //Tab的未选中主题色文本
+  final Color tabTextUnSelectedPrimary; //Tab的未选中主题色文本
 
   // 私有的构造函数
   const AppColorsTheme._internal({
@@ -51,6 +57,10 @@ class AppColorsTheme extends ThemeExtension<AppColorsTheme> {
     required this.textBlack,
     required this.textDarkGray,
     required this.orangeBG,
+    required this.tabBgSelectedPrimary,
+    required this.tabBgUnSelectedPrimary,
+    required this.tabTextSelectedPrimary,
+    required this.tabTextUnSelectedPrimary,
   });
 
   // 浅色主题工厂方法
@@ -66,6 +76,10 @@ class AppColorsTheme extends ThemeExtension<AppColorsTheme> {
       textBlack: Colors.black,
       textDarkGray: _color666666,
       orangeBG: _colorFE6C00,
+      tabBgSelectedPrimary: _colorPrimary,
+      tabBgUnSelectedPrimary: _colorD3D3D3,
+      tabTextSelectedPrimary: Colors.white,
+      tabTextUnSelectedPrimary: _color333333,
     );
   }
 
@@ -82,6 +96,10 @@ class AppColorsTheme extends ThemeExtension<AppColorsTheme> {
       textBlack: Colors.white,
       textDarkGray: Colors.white,
       orangeBG: _darkBlackItem,
+      tabBgSelectedPrimary: Colors.white,
+      tabBgUnSelectedPrimary: _darkBlackItem,
+      tabTextSelectedPrimary: Colors.black,
+      tabTextUnSelectedPrimary: Colors.white,
     );
   }
 
@@ -107,6 +125,10 @@ class AppColorsTheme extends ThemeExtension<AppColorsTheme> {
       textBlack: Color.lerp(textBlack, other.textBlack, t)!,
       textDarkGray: Color.lerp(textDarkGray, other.textDarkGray, t)!,
       orangeBG: Color.lerp(orangeBG, other.orangeBG, t)!,
+      tabBgSelectedPrimary: Color.lerp(tabBgSelectedPrimary, other.tabBgSelectedPrimary, t)!,
+      tabBgUnSelectedPrimary: Color.lerp(tabBgUnSelectedPrimary, other.tabBgUnSelectedPrimary, t)!,
+      tabTextSelectedPrimary: Color.lerp(tabTextSelectedPrimary, other.tabTextSelectedPrimary, t)!,
+      tabTextUnSelectedPrimary: Color.lerp(tabTextUnSelectedPrimary, other.tabTextUnSelectedPrimary, t)!,
     );
   }
 }

+ 2 - 0
packages/cs_router/lib/path/router_path.dart

@@ -13,6 +13,8 @@ class RouterPath {
   static const authSignUpSuccess = '/auth/signup/success'; //账号注册成功
   static const authSelectEstate = '/auth/select/estate'; //绑定社区
   static const authSelectUnit = '/auth/select/unit'; //绑定楼栋与房间号
+  static const authSelectRole = '/auth/select/role'; //选择角色
+  static const authTenantDoc = '/auth/tenant/doc'; //租户的文件上传
   static const authResetPassword = '/auth/rest_psd'; //重置密码
 
   //首页