2 Коміти b14cd246ea ... 85e15a0ec8

Автор SHA1 Опис Дата
  liukai 85e15a0ec8 Merge remote-tracking branch 'origin/dev' into dev 2 днів тому
  liukai 0a2627971b form的资源与首页 2 днів тому
49 змінених файлів з 2640 додано та 65 видалено
  1. 1 1
      packages/cpt_facility/lib/modules/facility/book/item_facility_book.dart
  2. 56 0
      packages/cpt_form/lib/modules/form/apply/form_apply_screen.dart
  3. 31 0
      packages/cpt_form/lib/modules/form/apply/form_apply_state.dart
  4. 130 0
      packages/cpt_form/lib/modules/form/apply/form_apply_view_model.dart
  5. 27 0
      packages/cpt_form/lib/modules/form/apply/form_apply_view_model.g.dart
  6. 49 0
      packages/cpt_form/lib/modules/form/apply/item_form_apply.dart
  7. 60 0
      packages/cpt_form/lib/modules/form/approve/form_approve_screen.dart
  8. 31 0
      packages/cpt_form/lib/modules/form/approve/form_approve_state.dart
  9. 125 0
      packages/cpt_form/lib/modules/form/approve/form_approve_view_model.dart
  10. 27 0
      packages/cpt_form/lib/modules/form/approve/form_approve_view_model.g.dart
  11. 91 0
      packages/cpt_form/lib/modules/form/approve/item_form_approve.dart
  12. 93 0
      packages/cpt_form/lib/modules/form/form_icons.dart
  13. 156 0
      packages/cpt_form/lib/modules/form/form_page.dart
  14. 0 0
      packages/cpt_form/lib/modules/form/form_view_model.dart
  15. 0 0
      packages/cpt_form/lib/modules/form/form_view_model.g.dart
  16. 54 0
      packages/cpt_form/lib/modules/form/not_approve/form_not_approve_screen.dart
  17. 31 0
      packages/cpt_form/lib/modules/form/not_approve/form_not_approve_state.dart
  18. 130 0
      packages/cpt_form/lib/modules/form/not_approve/form_not_approve_view_model.dart
  19. 27 0
      packages/cpt_form/lib/modules/form/not_approve/form_not_approve_view_model.g.dart
  20. 91 0
      packages/cpt_form/lib/modules/form/not_approve/item_form_not_approve.dart
  21. 0 33
      packages/cpt_form/lib/modules/form/page/form_page.dart
  22. 55 0
      packages/cpt_form/lib/modules/form/submit/form_submit_screen.dart
  23. 31 0
      packages/cpt_form/lib/modules/form/submit/form_submit_state.dart
  24. 130 0
      packages/cpt_form/lib/modules/form/submit/form_submit_view_model.dart
  25. 27 0
      packages/cpt_form/lib/modules/form/submit/form_submit_view_model.g.dart
  26. 81 0
      packages/cpt_form/lib/modules/form/submit/item_form_submit.dart
  27. 1 1
      packages/cpt_form/lib/router/component/form_component_service.dart
  28. 17 5
      packages/cpt_form/lib/router/page/form_page_router.dart
  29. 81 1
      packages/cpt_form/lib/router/page/form_page_router.gr.dart
  30. BIN
      packages/cs_resources/assets/form/access_card.webp
  31. BIN
      packages/cs_resources/assets/form/apply_icon.webp
  32. BIN
      packages/cs_resources/assets/form/approved_icon.webp
  33. BIN
      packages/cs_resources/assets/form/bicycles.webp
  34. BIN
      packages/cs_resources/assets/form/car_vehicle.webp
  35. BIN
      packages/cs_resources/assets/form/labe_replace.webp
  36. BIN
      packages/cs_resources/assets/form/move_in_out.webp
  37. BIN
      packages/cs_resources/assets/form/not_approved_icon.webp
  38. BIN
      packages/cs_resources/assets/form/overnight.webp
  39. BIN
      packages/cs_resources/assets/form/renovation.webp
  40. BIN
      packages/cs_resources/assets/form/submit_icon.webp
  41. 11 0
      packages/cs_resources/lib/generated/assets.dart
  42. 108 8
      packages/cs_resources/lib/generated/intl/messages_en.dart
  43. 81 8
      packages/cs_resources/lib/generated/intl/messages_zh_CN.dart
  44. 81 8
      packages/cs_resources/lib/generated/intl/messages_zh_HK.dart
  45. 554 0
      packages/cs_resources/lib/generated/l10n.dart
  46. 57 0
      packages/cs_resources/lib/l10n/intl_en.arb
  47. 57 0
      packages/cs_resources/lib/l10n/intl_zh_CN.arb
  48. 57 0
      packages/cs_resources/lib/l10n/intl_zh_HK.arb
  49. 1 0
      packages/cs_resources/pubspec.yaml

+ 1 - 1
packages/cpt_facility/lib/modules/facility/book/item_facility_book.dart

@@ -37,7 +37,7 @@ class FacilityBookItem extends StatelessWidget {
           MyTextView(
             "Function Room",
             marginLeft: 17,
-            fontSize: 16,
+            fontSize: 15,
             textColor: context.appColors.textBlack,
             isFontMedium: true,
           ).expanded(),

+ 56 - 0
packages/cpt_form/lib/modules/form/apply/form_apply_screen.dart

@@ -0,0 +1,56 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/widget_export.dart';
+
+import 'form_apply_view_model.dart';
+import 'item_form_apply.dart';
+
+
+@RoutePage()
+class FormApplyScreen extends HookConsumerWidget {
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+    final viewModel = ref.read(formApplyViewModelProvider.notifier);
+    final state = ref.watch(formApplyViewModelProvider);
+
+    useEffect(() {
+      // 组件挂载时执行 - 执行接口请求
+      Future.microtask(() => viewModel.fetchList());
+      return () {
+        // 组件卸载时执行
+      };
+    }, []);
+
+    return Container(
+      width: double.infinity,
+      height: double.infinity,
+      child: EasyRefresh(
+        controller: viewModel.refreshController,
+        onRefresh: viewModel.onRefresh,
+        onLoad: viewModel.loadMore,
+        child: LoadStateLayout(
+          state: state.loadingState,
+          errorMessage: state.errorMessage,
+          errorRetry: () {
+            viewModel.retryRequest();
+          },
+          successSliverWidget: [
+            SliverList(
+                delegate: SliverChildBuilderDelegate(
+                      (context, index) {
+                    return FormApplyItem(index: index, item: state.datas[index]).onTap((){
+
+                    });
+                  },
+                  childCount: state.datas.length,
+                ))
+          ],
+        ),
+      ).marginOnly(top: 5, bottom: 5),
+    );
+  }
+}

+ 31 - 0
packages/cpt_form/lib/modules/form/apply/form_apply_state.dart

@@ -0,0 +1,31 @@
+import 'package:widgets/load_state_layout.dart';
+
+class FormApplyState {
+
+  //页面 LoadView 状态的展示
+  LoadState loadingState;
+  String? errorMessage;
+
+  List<String> datas; //页面列表数据
+
+  // ===================================  Begin  ↓  ===================================
+
+  FormApplyState({
+    this.loadingState = LoadState.State_Loading,
+    this.errorMessage,
+    required this.datas,
+  });
+
+  FormApplyState copyWith({
+    LoadState? loadingState,
+    String? errorMessage,
+    bool? needShowPlaceholder,
+    List<String>? datas,
+  }) {
+    return FormApplyState(
+      errorMessage: errorMessage ?? this.errorMessage,
+      loadingState: loadingState ?? this.loadingState,
+      datas: datas ?? this.datas,
+    );
+  }
+}

+ 130 - 0
packages/cpt_form/lib/modules/form/apply/form_apply_view_model.dart

@@ -0,0 +1,130 @@
+import 'package:riverpod_annotation/riverpod_annotation.dart';
+import 'package:shared/utils/log_utils.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/widget_export.dart';
+
+import 'form_apply_state.dart';
+
+part 'form_apply_view_model.g.dart';
+
+@riverpod
+class FormApplyViewModel extends _$FormApplyViewModel {
+  var _curPage = 1; //请求参数当前的页面
+  var _needShowPlaceholder = true; //是否展示LoadingView
+
+  // Refresh 控制器
+  final EasyRefreshController refreshController = EasyRefreshController(
+    controlFinishRefresh: true,  //允许刷新
+    controlFinishLoad: true,   //允许加载
+  );
+
+  @override
+  FormApplyState build() {
+    return FormApplyState(datas: []);
+  }
+
+  //刷新页面状态
+  void changeLoadingState(LoadState loadState, String? errorMsg) {
+    state = state.copyWith(loadingState: loadState, errorMessage: errorMsg);
+  }
+
+  // Refresh 刷新事件
+  Future onRefresh() async {
+    _curPage = 1;
+    fetchList();
+  }
+
+  // Refresh 加载事件
+  Future loadMore() async {
+    _curPage++;
+    fetchList();
+  }
+
+  // 重试请求
+  Future retryRequest() async {
+    _curPage = 1;
+    _needShowPlaceholder = true;
+    fetchList();
+  }
+
+  /// 获取服务器数据
+  Future fetchList() async {
+    if (_needShowPlaceholder) {
+      changeLoadingState(LoadState.State_Loading, null);
+    }
+
+    // 获取 Applied 列表
+    // var listResult = await _jobRepository.fetchJobAppliedList(
+    //   state.jobId,
+    //   state.selectedStatusId,
+    //   state.keyword,
+    //   curPage: _curPage,
+    //   cancelToken: cancelToken,
+    // );
+    //
+    // // 处理数据
+    // if (listResult.isSuccess) {
+    //   handleList(listResult.data?.rows);
+    // } else {
+    //   errorMessage = listResult.errorMsg;
+    //   changeLoadingState(LoadState.State_Error);
+    // }
+
+
+    await Future.delayed(const Duration(milliseconds: 1500));
+
+    final List<String> list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
+
+    if (_curPage == 1) {
+      //刷新的方式
+      state = state.copyWith(datas: list);
+      refreshController.finishRefresh();
+
+      //更新展示的状态
+      changeLoadingState(LoadState.State_Success, null);
+    } else {
+      //加载更多
+      final allList = state.datas;
+      allList.addAll(list);
+      state.datas.addAll(list);
+
+      refreshController.finishLoad();
+
+      state = state.copyWith(datas: allList);
+    }
+
+    // 最后赋值
+    _needShowPlaceholder = false;
+  }
+
+// 处理数据与展示的逻辑
+// void handleList(List<JobAppliedListSGRows>? list) {
+//   if (list != null && list.isNotEmpty) {
+//     //有数据,判断是刷新还是加载更多的数据
+//     if (_curPage == 1) {
+//       //刷新的方式
+//       state.datas.clear();
+//       state.datas.addAll(list);
+//       refreshController.finishRefresh();
+//
+//       //更新展示的状态
+//       changeLoadingState(LoadState.State_Success);
+//     } else {
+//       //加载更多
+//       state.datas.addAll(list);
+//       refreshController.finishLoad();
+//       update();
+//     }
+//   } else {
+//     if (_curPage == 1) {
+//       //展示无数据的布局
+//       state.datas.clear();
+//       changeLoadingState(LoadState.State_Empty);
+//       refreshController.finishRefresh();
+//     } else {
+//       //展示加载完成,没有更多数据了
+//       refreshController.finishLoad(IndicatorResult.noMore);
+//     }
+//   }
+// }
+}

+ 27 - 0
packages/cpt_form/lib/modules/form/apply/form_apply_view_model.g.dart

@@ -0,0 +1,27 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'form_apply_view_model.dart';
+
+// **************************************************************************
+// RiverpodGenerator
+// **************************************************************************
+
+String _$formApplyViewModelHash() =>
+    r'9c08f52f81fe505e07c4b14dac66f10437f482e9';
+
+/// See also [FormApplyViewModel].
+@ProviderFor(FormApplyViewModel)
+final formApplyViewModelProvider =
+    AutoDisposeNotifierProvider<FormApplyViewModel, FormApplyState>.internal(
+  FormApplyViewModel.new,
+  name: r'formApplyViewModelProvider',
+  debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
+      ? null
+      : _$formApplyViewModelHash,
+  dependencies: null,
+  allTransitiveDependencies: null,
+);
+
+typedef _$FormApplyViewModel = AutoDisposeNotifier<FormApplyState>;
+// 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

+ 49 - 0
packages/cpt_form/lib/modules/form/apply/item_form_apply.dart

@@ -0,0 +1,49 @@
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/material.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/my_load_image.dart';
+import 'package:widgets/my_text_view.dart';
+
+///  设施的Active的Item
+class FormApplyItem extends StatelessWidget {
+  final int index;
+  final String item;
+
+  const FormApplyItem({
+    required this.index,
+    required this.item,
+  });
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      width: double.infinity,
+      height: 80,
+      margin: const EdgeInsets.only(left: 15, right: 15, top: 5, bottom: 5),
+      padding: const EdgeInsets.symmetric(horizontal: 20),
+      decoration: BoxDecoration(
+        color: context.appColors.whiteBG,
+        borderRadius: BorderRadius.circular(6.0), // 圆角
+      ),
+      child: Row(
+        mainAxisSize: MainAxisSize.max,
+        crossAxisAlignment: CrossAxisAlignment.center,
+        children: [
+          MyLoadImage(
+            "https://img0.baidu.com/it/u=2679587808,2501833998&fm=253&fmt=auto&app=120&f=JPEG?w=372&h=400",
+            width: 38.5,
+          ),
+
+          MyTextView(
+            "Function Room",
+            marginLeft: 17,
+            fontSize: 15,
+            textColor: context.appColors.textBlack,
+            isFontMedium: true,
+          ).expanded(),
+        ],
+      ),
+    );
+  }
+}

+ 60 - 0
packages/cpt_form/lib/modules/form/approve/form_approve_screen.dart

@@ -0,0 +1,60 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/my_text_view.dart';
+import 'package:widgets/widget_export.dart';
+
+import 'form_approve_view_model.dart';
+import 'item_form_approve.dart';
+
+@RoutePage()
+class FormApproveScreen extends HookConsumerWidget {
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+    final viewModel = ref.read(formApproveViewModelProvider.notifier);
+    final state = ref.watch(formApproveViewModelProvider);
+
+    useEffect(() {
+      // 组件挂载时执行 - 执行接口请求
+      Future.microtask(() => viewModel.fetchList());
+      return () {
+        // 组件卸载时执行
+      };
+    }, []);
+
+    return SizedBox(
+      width: double.infinity,
+      height: double.infinity,
+      child: EasyRefresh(
+        controller: viewModel.refreshController,
+        onRefresh: viewModel.onRefresh,
+        child: LoadStateLayout(
+          state: state.loadingState,
+          errorMessage: state.errorMessage,
+          errorRetry: () {
+            viewModel.retryRequest();
+          },
+          successSliverWidget: [
+            // 列表
+            SliverList(
+                delegate: SliverChildBuilderDelegate(
+              (context, index) {
+                return FormApproveItem(index: index, item: state.datas[index]).onTap((){
+
+                });
+              },
+              childCount: state.datas.length,
+            )),
+
+          ],
+        ),
+      ).marginOnly(top: 5, bottom: 5),
+    );
+  }
+
+}

+ 31 - 0
packages/cpt_form/lib/modules/form/approve/form_approve_state.dart

@@ -0,0 +1,31 @@
+import 'package:widgets/load_state_layout.dart';
+
+class FormApproveState {
+
+  //页面 LoadView 状态的展示
+  LoadState loadingState;
+  String? errorMessage;
+
+  List<String> datas; //页面列表数据
+
+  // ===================================  Begin  ↓  ===================================
+
+  FormApproveState({
+    this.loadingState = LoadState.State_Loading,
+    this.errorMessage,
+    required this.datas,
+  });
+
+  FormApproveState copyWith({
+    LoadState? loadingState,
+    String? errorMessage,
+    bool? needShowPlaceholder,
+    List<String>? datas,
+  }) {
+    return FormApproveState(
+      errorMessage: errorMessage ?? this.errorMessage,
+      loadingState: loadingState ?? this.loadingState,
+      datas: datas ?? this.datas,
+    );
+  }
+}

+ 125 - 0
packages/cpt_form/lib/modules/form/approve/form_approve_view_model.dart

@@ -0,0 +1,125 @@
+import 'package:riverpod_annotation/riverpod_annotation.dart';
+import 'package:shared/utils/log_utils.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/widget_export.dart';
+
+import 'form_approve_state.dart';
+
+part 'form_approve_view_model.g.dart';
+
+@riverpod
+class FormApproveViewModel extends _$FormApproveViewModel {
+  var _curPage = 1; //请求参数当前的页面
+  var _needShowPlaceholder = true; //是否展示LoadingView
+
+  // Refresh 控制器
+  final EasyRefreshController refreshController = EasyRefreshController(
+    controlFinishRefresh: true,  //允许刷新
+    controlFinishLoad: false,   //不允许加载
+  );
+
+  @override
+  FormApproveState build() {
+    final state = FormApproveState(datas: []);
+    return state;
+  }
+
+  //刷新页面状态
+  void changeLoadingState(LoadState loadState, String? errorMsg) {
+    state = state.copyWith(loadingState: loadState, errorMessage: errorMsg);
+  }
+
+  // Refresh 刷新事件
+  Future onRefresh() async {
+    _curPage = 1;
+    fetchList();
+  }
+
+  // 重试请求
+  Future retryRequest() async {
+    _curPage = 1;
+    _needShowPlaceholder = true;
+    fetchList();
+  }
+
+  /// 获取服务器数据
+  Future fetchList() async {
+    if (_needShowPlaceholder) {
+      changeLoadingState(LoadState.State_Loading, null);
+    }
+
+    // 获取 Applied 列表
+    // var listResult = await _jobRepository.fetchJobAppliedList(
+    //   state.jobId,
+    //   state.selectedStatusId,
+    //   state.keyword,
+    //   curPage: _curPage,
+    //   cancelToken: cancelToken,
+    // );
+    //
+    // // 处理数据
+    // if (listResult.isSuccess) {
+    //   handleList(listResult.data?.rows);
+    // } else {
+    //   errorMessage = listResult.errorMsg;
+    //   changeLoadingState(LoadState.State_Error);
+    // }
+
+
+    await Future.delayed(const Duration(milliseconds: 1500));
+
+    final List<String> list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
+
+    if (_curPage == 1) {
+      //刷新的方式
+      state = state.copyWith(datas: list);
+      refreshController.finishRefresh();
+
+      //更新展示的状态
+      changeLoadingState(LoadState.State_Success, null);
+    } else {
+      //加载更多
+      final allList = state.datas;
+      allList.addAll(list);
+      state.datas.addAll(list);
+
+      refreshController.finishLoad();
+
+      state = state.copyWith(datas: allList);
+    }
+
+    // 最后赋值
+    _needShowPlaceholder = false;
+  }
+
+// 处理数据与展示的逻辑
+// void handleList(List<JobAppliedListSGRows>? list) {
+//   if (list != null && list.isNotEmpty) {
+//     //有数据,判断是刷新还是加载更多的数据
+//     if (_curPage == 1) {
+//       //刷新的方式
+//       state.datas.clear();
+//       state.datas.addAll(list);
+//       refreshController.finishRefresh();
+//
+//       //更新展示的状态
+//       changeLoadingState(LoadState.State_Success);
+//     } else {
+//       //加载更多
+//       state.datas.addAll(list);
+//       refreshController.finishLoad();
+//       update();
+//     }
+//   } else {
+//     if (_curPage == 1) {
+//       //展示无数据的布局
+//       state.datas.clear();
+//       changeLoadingState(LoadState.State_Empty);
+//       refreshController.finishRefresh();
+//     } else {
+//       //展示加载完成,没有更多数据了
+//       refreshController.finishLoad(IndicatorResult.noMore);
+//     }
+//   }
+// }
+}

+ 27 - 0
packages/cpt_form/lib/modules/form/approve/form_approve_view_model.g.dart

@@ -0,0 +1,27 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'form_approve_view_model.dart';
+
+// **************************************************************************
+// RiverpodGenerator
+// **************************************************************************
+
+String _$formApproveViewModelHash() =>
+    r'040c903a0f3423ebccf00bf1fcaed1f0361a7ed6';
+
+/// See also [FormApproveViewModel].
+@ProviderFor(FormApproveViewModel)
+final formApproveViewModelProvider = AutoDisposeNotifierProvider<
+    FormApproveViewModel, FormApproveState>.internal(
+  FormApproveViewModel.new,
+  name: r'formApproveViewModelProvider',
+  debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
+      ? null
+      : _$formApproveViewModelHash,
+  dependencies: null,
+  allTransitiveDependencies: null,
+);
+
+typedef _$FormApproveViewModel = AutoDisposeNotifier<FormApproveState>;
+// 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

+ 91 - 0
packages/cpt_form/lib/modules/form/approve/item_form_approve.dart

@@ -0,0 +1,91 @@
+import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/material.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/my_load_image.dart';
+import 'package:widgets/my_text_view.dart';
+
+
+class FormApproveItem extends StatelessWidget {
+  final int index;
+  final String item;
+
+  const FormApproveItem({
+    required this.index,
+    required this.item,
+  });
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      width: double.infinity,
+      margin: const EdgeInsets.only(left: 15, right: 15, top: 5, bottom: 5),
+      padding: const EdgeInsets.only(left: 20, right: 15, top: 18, bottom: 20),
+      decoration: BoxDecoration(
+        color: context.appColors.whiteBG,
+        borderRadius: BorderRadius.circular(6.0), // 圆角
+      ),
+      child: Column(
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          Row(
+            crossAxisAlignment: CrossAxisAlignment.center,
+            children: [
+              const MyAssetImage(Assets.formAccessCard, width: 38.5, height: 31),
+              Column(
+                crossAxisAlignment: CrossAxisAlignment.start,
+                children: [
+                  MyTextView(
+                    "Access Card -Owner",
+                    fontSize: 16,
+                    maxLines: 2,
+                    textColor: context.appColors.textBlack,
+                    isFontMedium: true,
+                  ),
+
+                  //预订人
+                  MyTextView(
+                    S.current.booked_by_someone("Wu Bing Bing"),
+                    fontSize: 14,
+                    marginTop: 2,
+                    textColor: context.appColors.textBlack,
+                    isFontRegular: true,
+                  ),
+                ],
+              ).marginOnly(left: 11, right: 11).expanded(),
+
+              //查看按钮
+              MyTextView(
+                S.current.view,
+                textColor: Colors.white,
+                backgroundColor: context.appColors.btnBgDefault,
+                cornerRadius: 7,
+                paddingTop: 9,
+                paddingBottom: 9,
+                textAlign: TextAlign.center,
+                boxWidth: 60,
+              ),
+            ],
+          ),
+          MyTextView(
+            S.current.send_on_sometime("04 Feb 2024 at 04:00 PM"),
+            fontSize: 14,
+            marginTop: 10,
+            textColor: context.appColors.textBlack,
+            isFontRegular: true,
+          ),
+
+          MyTextView(
+            S.current.approved_on_sometime("04 Feb 2024 at 04:00 PM"),
+            fontSize: 14,
+            marginTop: 5,
+            textColor: context.appColors.textBlack,
+            isFontRegular: true,
+          ),
+
+        ],
+      ),
+    );
+  }
+}

+ 93 - 0
packages/cpt_form/lib/modules/form/form_icons.dart

@@ -0,0 +1,93 @@
+import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
+
+class FormIcons {
+
+  //对应的type类型 对应的icon的图片与宽高
+  static Map<String, Map<String, dynamic>> iconMap = {
+    //Access Card-Owner
+    '1': {
+      'name': S.current.access_card_owner,
+      'icon_path': Assets.formAccessCard,
+      'width': 39.0,
+      'height': 31.5,
+    },
+    //Access Card-Tenant
+    '2': {
+      'name': S.current.access_card_tenant,
+      'icon_path': Assets.formAccessCard,
+      'width': 39.0,
+      'height': 31.5,
+    },
+    //Car Park Cancellation
+    '3': {
+      'name': S.current.car_park_cancellation,
+      'icon_path': Assets.formCarVehicle,
+      'width': 39.5,
+      'height': 33.5,
+    },
+    //Moving In
+    '4': {
+      'name': S.current.moving_in,
+      'icon_path': Assets.formMoveInOut,
+      'width': 36.5,
+      'height': 39.5,
+    },
+    //Moving Out
+    '5': {
+      'name': S.current.moving_out,
+      'icon_path': Assets.formMoveInOut,
+      'width': 36.5,
+      'height': 39.5,
+    },
+    //Overnight Parking
+    '6': {
+      'name': S.current.overnight_parking,
+      'icon_path': Assets.formOvernight,
+      'width': 39.0,
+      'height': 37.0,
+    },
+    //Registration of 2nd Vehicle
+    '7': {
+      'name': S.current.registration_of_2_vehicle,
+      'icon_path': Assets.formCarVehicle,
+      'width': 39.5,
+      'height': 33.5,
+    },
+    //Renovation
+    '8': {
+      'name': S.current.renovation,
+      'icon_path': Assets.formRenovation,
+      'width': 35.5,
+      'height': 40.0,
+    },
+    //Re-Registration of 1st Vehicle-Owner
+    '9': {
+      'name': S.current.re_registration_of_1_vehicle_owner,
+      'icon_path': Assets.formCarVehicle,
+      'width': 39.5,
+      'height': 33.5,
+    },
+    //Re-Registration of 1st Vehicle-Owner
+    '10': {
+      'name': S.current.re_registration_of_1_vehicle_tenant,
+      'icon_path': Assets.formCarVehicle,
+      'width': 39.5,
+      'height': 33.5,
+    },
+    //Re-Registration of Bicycles
+    '11': {
+      'name': S.current.re_registration_of_bicycle,
+      'icon_path': Assets.formBicycles,
+      'width': 39.0,
+      'height': 33.5,
+    },
+    //Vehicle Label Replacement
+    '12': {
+      'name': S.current.vehicle_label_replacement,
+      'icon_path': Assets.formLabeReplace,
+      'width': 38.0,
+      'height': 27.5,
+    },
+  };
+}

+ 156 - 0
packages/cpt_form/lib/modules/form/form_page.dart

@@ -0,0 +1,156 @@
+import 'package:cs_resources/generated/assets.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_load_image.dart';
+import 'package:widgets/my_text_view.dart';
+
+import '../../router/page/form_page_router.dart';
+import 'form_view_model.dart';
+
+@RoutePage()
+class FormPage extends HookConsumerWidget {
+  const FormPage({Key? key}) : super(key: key);
+
+  //启动当前页面
+  static void startInstance({BuildContext? context}) {
+    if (context != null) {
+      context.router.push(const FormPageRoute());
+    } else {
+      appRouter.push(const FormPageRoute());
+    }
+  }
+
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+    final viewModel = ref.read(formViewModelProvider.notifier);
+
+    return Scaffold(
+      appBar: MyAppBar.appBar(
+        context,
+        S.current.form,
+        backgroundColor: context.appColors.whiteBG,
+      ),
+      backgroundColor: context.appColors.backgroundDark,
+      body: AutoTabsRouter.pageView(
+        routes: const [
+          FormApplyPageRoute(),
+          FormSubmitPageRoute(),
+          FormApprovePageRoute(),
+          FormNotApprovePageRoute(),
+        ],
+        builder: (context, child, pageController) {
+          final tabsRouter = AutoTabsRouter.of(context);
+
+          return Column(
+            children: [
+              Container(
+                color: context.appColors.whiteBG,
+                height: 120,
+                child: Row(
+                  mainAxisAlignment: MainAxisAlignment.spaceAround,
+                  children: [
+                    _buildCategory(
+                      context,
+                      Assets.formApplyIcon,
+                      48.5,
+                      47,
+                      S.current.apply,
+                      tabsRouter.activeIndex == 0,
+                    ).onTap(
+                      () {
+                        tabsRouter.setActiveIndex(0);
+                      },
+                    ),
+                    _buildCategory(
+                      context,
+                      Assets.formSubmitIcon,
+                      44,
+                      47,
+                      S.current.form_submit_title,
+                      tabsRouter.activeIndex == 1,
+                    ).onTap(
+                      () {
+                        tabsRouter.setActiveIndex(1);
+                      },
+                    ),
+                    _buildCategory(
+                      context,
+                      Assets.formApprovedIcon,
+                      40,
+                      47,
+                      S.current.approved,
+                      tabsRouter.activeIndex == 2,
+                    ).onTap(
+                      () {
+                        tabsRouter.setActiveIndex(2);
+                      },
+                    ),
+                    _buildCategory(
+                      context,
+                      Assets.formNotApprovedIcon,
+                      42,
+                      46.5,
+                      S.current.not_approved,
+                      tabsRouter.activeIndex == 3,
+                    ).onTap(
+                      () {
+                        tabsRouter.setActiveIndex(3);
+                      },
+                    ),
+                  ],
+                ),
+              ),
+              Expanded(
+                child: child,
+              ),
+            ],
+          );
+        },
+      ),
+    );
+  }
+
+  //顶部的Tab布局
+  Widget _buildCategory(BuildContext context, String iconPath, double iconWidth, double iconHeight, String title, bool isSelected) {
+    return Column(
+      mainAxisAlignment: MainAxisAlignment.center,
+      crossAxisAlignment: CrossAxisAlignment.center,
+      children: <Widget>[
+        Container(
+          width: 70,
+          height: 70,
+          decoration: BoxDecoration(
+            color: context.appColors.lightBlueBg, // 设置圆形背景颜色
+            shape: BoxShape.circle, // 设置为圆形
+            boxShadow: isSelected
+                ? [
+                    BoxShadow(
+                      color: context.appColors.tabLightBlueShadow, // 设置阴影颜色
+                      blurRadius: 5, // 设置模糊半径
+                      spreadRadius: 0.05, // 控制阴影扩散
+                      offset: const Offset(0, 4), // 设置阴影偏移量
+                    ),
+                  ]
+                : [], // 未选中时无阴影,
+          ),
+          child: Center(
+            child: MyAssetImage(iconPath, width: iconWidth, height: iconHeight),
+          ),
+        ),
+        const SizedBox(height: 7),
+        MyTextView(
+          title,
+          fontSize: 15,
+          isFontMedium: true,
+          textColor: isSelected ? context.appColors.tabTextSelectedDefault : context.appColors.tabTextUnSelectedDefault,
+        ),
+      ],
+    );
+  }
+}

packages/cpt_form/lib/modules/form/vm/form_view_model.dart → packages/cpt_form/lib/modules/form/form_view_model.dart


packages/cpt_form/lib/modules/form/vm/form_view_model.g.dart → packages/cpt_form/lib/modules/form/form_view_model.g.dart


+ 54 - 0
packages/cpt_form/lib/modules/form/not_approve/form_not_approve_screen.dart

@@ -0,0 +1,54 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/widget_export.dart';
+import 'form_not_approve_view_model.dart';
+import 'item_form_not_approve.dart';
+
+
+@RoutePage()
+class FormNotApproveScreen extends HookConsumerWidget {
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+    final viewModel = ref.read(formNotApproveViewModelProvider.notifier);
+    final state = ref.watch(formNotApproveViewModelProvider);
+
+    useEffect(() {
+      // 组件挂载时执行 - 执行接口请求
+      Future.microtask(() => viewModel.fetchList());
+      return () {
+        // 组件卸载时执行
+      };
+    }, []);
+
+    return SizedBox(
+      width: double.infinity,
+      height: double.infinity,
+      child: EasyRefresh(
+        controller: viewModel.refreshController,
+        onRefresh: viewModel.onRefresh,
+        onLoad: viewModel.loadMore,
+        child: LoadStateLayout(
+          state: state.loadingState,
+          errorMessage: state.errorMessage,
+          errorRetry: () {
+            viewModel.retryRequest();
+          },
+          successSliverWidget: [
+            SliverList(
+                delegate: SliverChildBuilderDelegate((context, index) {
+                    return FormNotApproveItem(index: index, item: state.datas[index]).onTap((){
+
+                    });
+                  },
+                  childCount: state.datas.length,
+                )),
+          ],
+        ),
+      ).marginOnly(top: 5, bottom: 5),
+    );
+  }
+}

+ 31 - 0
packages/cpt_form/lib/modules/form/not_approve/form_not_approve_state.dart

@@ -0,0 +1,31 @@
+import 'package:widgets/load_state_layout.dart';
+
+class FormNotApproveState {
+
+  //页面 LoadView 状态的展示
+  LoadState loadingState;
+  String? errorMessage;
+
+  List<String> datas; //页面列表数据
+
+  // ===================================  Begin  ↓  ===================================
+
+  FormNotApproveState({
+    this.loadingState = LoadState.State_Loading,
+    this.errorMessage,
+    required this.datas,
+  });
+
+  FormNotApproveState copyWith({
+    LoadState? loadingState,
+    String? errorMessage,
+    bool? needShowPlaceholder,
+    List<String>? datas,
+  }) {
+    return FormNotApproveState(
+      errorMessage: errorMessage ?? this.errorMessage,
+      loadingState: loadingState ?? this.loadingState,
+      datas: datas ?? this.datas,
+    );
+  }
+}

+ 130 - 0
packages/cpt_form/lib/modules/form/not_approve/form_not_approve_view_model.dart

@@ -0,0 +1,130 @@
+import 'package:riverpod_annotation/riverpod_annotation.dart';
+import 'package:shared/utils/log_utils.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/widget_export.dart';
+
+import 'form_not_approve_state.dart';
+
+part 'form_not_approve_view_model.g.dart';
+
+@riverpod
+class FormNotApproveViewModel extends _$FormNotApproveViewModel {
+  var _curPage = 1; //请求参数当前的页面
+  var _needShowPlaceholder = true; //是否展示LoadingView
+
+  // Refresh 控制器
+  final EasyRefreshController refreshController = EasyRefreshController(
+    controlFinishRefresh: true,  //允许刷新
+    controlFinishLoad: true,   //允许加载
+  );
+
+  @override
+  FormNotApproveState build() {
+    return FormNotApproveState(datas: []);
+  }
+
+  //刷新页面状态
+  void changeLoadingState(LoadState loadState, String? errorMsg) {
+    state = state.copyWith(loadingState: loadState, errorMessage: errorMsg);
+  }
+
+  // Refresh 刷新事件
+  Future onRefresh() async {
+    _curPage = 1;
+    fetchList();
+  }
+
+  // Refresh 加载事件
+  Future loadMore() async {
+    _curPage++;
+    fetchList();
+  }
+
+  // 重试请求
+  Future retryRequest() async {
+    _curPage = 1;
+    _needShowPlaceholder = true;
+    fetchList();
+  }
+
+  /// 获取服务器数据
+  Future fetchList() async {
+    if (_needShowPlaceholder) {
+      changeLoadingState(LoadState.State_Loading, null);
+    }
+
+    // 获取 Applied 列表
+    // var listResult = await _jobRepository.fetchJobAppliedList(
+    //   state.jobId,
+    //   state.selectedStatusId,
+    //   state.keyword,
+    //   curPage: _curPage,
+    //   cancelToken: cancelToken,
+    // );
+    //
+    // // 处理数据
+    // if (listResult.isSuccess) {
+    //   handleList(listResult.data?.rows);
+    // } else {
+    //   errorMessage = listResult.errorMsg;
+    //   changeLoadingState(LoadState.State_Error);
+    // }
+
+
+    await Future.delayed(const Duration(milliseconds: 1500));
+
+    final List<String> list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
+
+    if (_curPage == 1) {
+      //刷新的方式
+      state = state.copyWith(datas: list);
+      refreshController.finishRefresh();
+
+      //更新展示的状态
+      changeLoadingState(LoadState.State_Success, null);
+    } else {
+      //加载更多
+      final allList = state.datas;
+      allList.addAll(list);
+      state.datas.addAll(list);
+
+      refreshController.finishLoad();
+
+      state = state.copyWith(datas: allList);
+    }
+
+    // 最后赋值
+    _needShowPlaceholder = false;
+  }
+
+// 处理数据与展示的逻辑
+// void handleList(List<JobAppliedListSGRows>? list) {
+//   if (list != null && list.isNotEmpty) {
+//     //有数据,判断是刷新还是加载更多的数据
+//     if (_curPage == 1) {
+//       //刷新的方式
+//       state.datas.clear();
+//       state.datas.addAll(list);
+//       refreshController.finishRefresh();
+//
+//       //更新展示的状态
+//       changeLoadingState(LoadState.State_Success);
+//     } else {
+//       //加载更多
+//       state.datas.addAll(list);
+//       refreshController.finishLoad();
+//       update();
+//     }
+//   } else {
+//     if (_curPage == 1) {
+//       //展示无数据的布局
+//       state.datas.clear();
+//       changeLoadingState(LoadState.State_Empty);
+//       refreshController.finishRefresh();
+//     } else {
+//       //展示加载完成,没有更多数据了
+//       refreshController.finishLoad(IndicatorResult.noMore);
+//     }
+//   }
+// }
+}

+ 27 - 0
packages/cpt_form/lib/modules/form/not_approve/form_not_approve_view_model.g.dart

@@ -0,0 +1,27 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'form_not_approve_view_model.dart';
+
+// **************************************************************************
+// RiverpodGenerator
+// **************************************************************************
+
+String _$formNotApproveViewModelHash() =>
+    r'e763ac3aeaf6d5d97bf617a49cd180c672d8cf12';
+
+/// See also [FormNotApproveViewModel].
+@ProviderFor(FormNotApproveViewModel)
+final formNotApproveViewModelProvider = AutoDisposeNotifierProvider<
+    FormNotApproveViewModel, FormNotApproveState>.internal(
+  FormNotApproveViewModel.new,
+  name: r'formNotApproveViewModelProvider',
+  debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
+      ? null
+      : _$formNotApproveViewModelHash,
+  dependencies: null,
+  allTransitiveDependencies: null,
+);
+
+typedef _$FormNotApproveViewModel = AutoDisposeNotifier<FormNotApproveState>;
+// 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

+ 91 - 0
packages/cpt_form/lib/modules/form/not_approve/item_form_not_approve.dart

@@ -0,0 +1,91 @@
+import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/material.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/my_load_image.dart';
+import 'package:widgets/my_text_view.dart';
+
+
+class FormNotApproveItem extends StatelessWidget {
+  final int index;
+  final String item;
+
+  const FormNotApproveItem({
+    required this.index,
+    required this.item,
+  });
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      width: double.infinity,
+      margin: const EdgeInsets.only(left: 15, right: 15, top: 5, bottom: 5),
+      padding: const EdgeInsets.only(left: 20, right: 15, top: 18, bottom: 20),
+      decoration: BoxDecoration(
+        color: context.appColors.whiteBG,
+        borderRadius: BorderRadius.circular(6.0), // 圆角
+      ),
+      child: Column(
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          Row(
+            crossAxisAlignment: CrossAxisAlignment.center,
+            children: [
+              const MyAssetImage(Assets.formAccessCard, width: 38.5, height: 31),
+              Column(
+                crossAxisAlignment: CrossAxisAlignment.start,
+                children: [
+                  MyTextView(
+                    "Access Card -Owner",
+                    fontSize: 16,
+                    maxLines: 2,
+                    textColor: context.appColors.textBlack,
+                    isFontMedium: true,
+                  ),
+
+                  //预订人
+                  MyTextView(
+                    S.current.booked_by_someone("Wu Bing Bing"),
+                    fontSize: 14,
+                    marginTop: 2,
+                    textColor: context.appColors.textBlack,
+                    isFontRegular: true,
+                  ),
+                ],
+              ).marginOnly(left: 11, right: 11).expanded(),
+
+              //查看按钮
+              MyTextView(
+                S.current.view,
+                textColor: Colors.white,
+                backgroundColor: context.appColors.btnBgDefault,
+                cornerRadius: 7,
+                paddingTop: 9,
+                paddingBottom: 9,
+                textAlign: TextAlign.center,
+                boxWidth: 60,
+              ),
+            ],
+          ),
+          MyTextView(
+            S.current.send_on_sometime("04 Feb 2024 at 04:00 PM"),
+            fontSize: 14,
+            marginTop: 10,
+            textColor: context.appColors.textBlack,
+            isFontRegular: true,
+          ),
+
+          MyTextView(
+            S.current.not_approved_on_sometime("04 Feb 2024 at 04:00 PM"),
+            fontSize: 14,
+            marginTop: 5,
+            textColor: context.appColors.textBlack,
+            isFontRegular: true,
+          ),
+
+        ],
+      ),
+    );
+  }
+}

+ 0 - 33
packages/cpt_form/lib/modules/form/page/form_page.dart

@@ -1,33 +0,0 @@
-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 '../../../router/page/form_page_router.dart';
-import '../../form/vm/form_view_model.dart';
-
-@RoutePage()
-class FormPage extends HookConsumerWidget {
-  const FormPage({Key? key}) : super(key: key);
-
-  //启动当前页面
-  static void startInstance({BuildContext? context}) {
-    if (context != null) {
-      context.router.push(const FormPageRoute());
-    } else {
-      appRouter.push(const FormPageRoute());
-    }
-  }
-
-  @override
-  Widget build(BuildContext context, WidgetRef ref) {
-    final _viewModel = ref.read(formViewModelProvider.notifier);
-
-    return Scaffold(
-      appBar: AppBar(title: Text("表单")),
-      body: Center(
-        child: Text("表单的主页面"),
-      ),
-    );
-  }
-}

+ 55 - 0
packages/cpt_form/lib/modules/form/submit/form_submit_screen.dart

@@ -0,0 +1,55 @@
+import 'package:auto_route/auto_route.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_hooks/flutter_hooks.dart';
+import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:shared/utils/log_utils.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/widget_export.dart';
+import 'form_submit_view_model.dart';
+import 'item_form_submit.dart';
+
+@RoutePage()
+class FormSubmitScreen extends HookConsumerWidget {
+  @override
+  Widget build(BuildContext context, WidgetRef ref) {
+    final viewModel = ref.read(formSubmitViewModelProvider.notifier);
+    final state = ref.watch(formSubmitViewModelProvider);
+
+    useEffect(() {
+      // 组件挂载时执行 - 执行接口请求
+      Future.microtask(() => viewModel.fetchList());
+      return () {
+        // 组件卸载时执行
+      };
+    }, []);
+
+    return Container(
+      width: double.infinity,
+      height: double.infinity,
+      child: EasyRefresh(
+        controller: viewModel.refreshController,
+        onRefresh: viewModel.onRefresh,
+        onLoad: viewModel.loadMore,
+        child: LoadStateLayout(
+          state: state.loadingState,
+          errorMessage: state.errorMessage,
+          errorRetry: () {
+            viewModel.retryRequest();
+          },
+          successSliverWidget: [
+            SliverList(
+                delegate: SliverChildBuilderDelegate(
+              (context, index) {
+                return FormSubmitItem(index: index, item: state.datas[index]).onTap(() {
+
+                });
+              },
+              childCount: state.datas.length,
+            ))
+          ],
+        ),
+      ).marginOnly(top: 5, bottom: 5),
+    );
+  }
+}

+ 31 - 0
packages/cpt_form/lib/modules/form/submit/form_submit_state.dart

@@ -0,0 +1,31 @@
+import 'package:widgets/load_state_layout.dart';
+
+class FormSubmitState {
+
+  //页面 LoadView 状态的展示
+  LoadState loadingState;
+  String? errorMessage;
+
+  List<String> datas; //页面列表数据
+
+  // ===================================  Begin  ↓  ===================================
+
+  FormSubmitState({
+    this.loadingState = LoadState.State_Loading,
+    this.errorMessage,
+    required this.datas,
+  });
+
+  FormSubmitState copyWith({
+    LoadState? loadingState,
+    String? errorMessage,
+    bool? needShowPlaceholder,
+    List<String>? datas,
+  }) {
+    return FormSubmitState(
+      errorMessage: errorMessage ?? this.errorMessage,
+      loadingState: loadingState ?? this.loadingState,
+      datas: datas ?? this.datas,
+    );
+  }
+}

+ 130 - 0
packages/cpt_form/lib/modules/form/submit/form_submit_view_model.dart

@@ -0,0 +1,130 @@
+import 'package:riverpod_annotation/riverpod_annotation.dart';
+import 'package:shared/utils/log_utils.dart';
+import 'package:widgets/load_state_layout.dart';
+import 'package:widgets/widget_export.dart';
+
+import 'form_submit_state.dart';
+
+part 'form_submit_view_model.g.dart';
+
+@riverpod
+class FormSubmitViewModel extends _$FormSubmitViewModel {
+  var _curPage = 1; //请求参数当前的页面
+  var _needShowPlaceholder = true; //是否展示LoadingView
+
+  // Refresh 控制器
+  final EasyRefreshController refreshController = EasyRefreshController(
+    controlFinishRefresh: true,  //允许刷新
+    controlFinishLoad: true,   //允许加载
+  );
+
+  @override
+  FormSubmitState build() {
+    return FormSubmitState(datas: []);
+  }
+
+  //刷新页面状态
+  void changeLoadingState(LoadState loadState, String? errorMsg) {
+    state = state.copyWith(loadingState: loadState, errorMessage: errorMsg);
+  }
+
+  // Refresh 刷新事件
+  Future onRefresh() async {
+    _curPage = 1;
+    fetchList();
+  }
+
+  // Refresh 加载事件
+  Future loadMore() async {
+    _curPage++;
+    fetchList();
+  }
+
+  // 重试请求
+  Future retryRequest() async {
+    _curPage = 1;
+    _needShowPlaceholder = true;
+    fetchList();
+  }
+
+  /// 获取服务器数据
+  Future fetchList() async {
+    if (_needShowPlaceholder) {
+      changeLoadingState(LoadState.State_Loading, null);
+    }
+
+    // 获取 Applied 列表
+    // var listResult = await _jobRepository.fetchJobAppliedList(
+    //   state.jobId,
+    //   state.selectedStatusId,
+    //   state.keyword,
+    //   curPage: _curPage,
+    //   cancelToken: cancelToken,
+    // );
+    //
+    // // 处理数据
+    // if (listResult.isSuccess) {
+    //   handleList(listResult.data?.rows);
+    // } else {
+    //   errorMessage = listResult.errorMsg;
+    //   changeLoadingState(LoadState.State_Error);
+    // }
+
+
+    await Future.delayed(const Duration(milliseconds: 1500));
+
+    final List<String> list = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
+
+    if (_curPage == 1) {
+      //刷新的方式
+      state = state.copyWith(datas: list);
+      refreshController.finishRefresh();
+
+      //更新展示的状态
+      changeLoadingState(LoadState.State_Success, null);
+    } else {
+      //加载更多
+      final allList = state.datas;
+      allList.addAll(list);
+      state.datas.addAll(list);
+
+      refreshController.finishLoad();
+
+      state = state.copyWith(datas: allList);
+    }
+
+    // 最后赋值
+    _needShowPlaceholder = false;
+  }
+
+// 处理数据与展示的逻辑
+// void handleList(List<JobAppliedListSGRows>? list) {
+//   if (list != null && list.isNotEmpty) {
+//     //有数据,判断是刷新还是加载更多的数据
+//     if (_curPage == 1) {
+//       //刷新的方式
+//       state.datas.clear();
+//       state.datas.addAll(list);
+//       refreshController.finishRefresh();
+//
+//       //更新展示的状态
+//       changeLoadingState(LoadState.State_Success);
+//     } else {
+//       //加载更多
+//       state.datas.addAll(list);
+//       refreshController.finishLoad();
+//       update();
+//     }
+//   } else {
+//     if (_curPage == 1) {
+//       //展示无数据的布局
+//       state.datas.clear();
+//       changeLoadingState(LoadState.State_Empty);
+//       refreshController.finishRefresh();
+//     } else {
+//       //展示加载完成,没有更多数据了
+//       refreshController.finishLoad(IndicatorResult.noMore);
+//     }
+//   }
+// }
+}

+ 27 - 0
packages/cpt_form/lib/modules/form/submit/form_submit_view_model.g.dart

@@ -0,0 +1,27 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'form_submit_view_model.dart';
+
+// **************************************************************************
+// RiverpodGenerator
+// **************************************************************************
+
+String _$formSubmitViewModelHash() =>
+    r'b5bfc8957a27fa130bb00ea057ca2b7d52957740';
+
+/// See also [FormSubmitViewModel].
+@ProviderFor(FormSubmitViewModel)
+final formSubmitViewModelProvider =
+    AutoDisposeNotifierProvider<FormSubmitViewModel, FormSubmitState>.internal(
+  FormSubmitViewModel.new,
+  name: r'formSubmitViewModelProvider',
+  debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
+      ? null
+      : _$formSubmitViewModelHash,
+  dependencies: null,
+  allTransitiveDependencies: null,
+);
+
+typedef _$FormSubmitViewModel = AutoDisposeNotifier<FormSubmitState>;
+// 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

+ 81 - 0
packages/cpt_form/lib/modules/form/submit/item_form_submit.dart

@@ -0,0 +1,81 @@
+import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:flutter/material.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/my_load_image.dart';
+import 'package:widgets/my_text_view.dart';
+
+class FormSubmitItem extends StatelessWidget {
+  final int index;
+  final String item;
+
+  const FormSubmitItem({
+    required this.index,
+    required this.item,
+  });
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      width: double.infinity,
+      margin: const EdgeInsets.only(left: 15, right: 15, top: 5, bottom: 5),
+      padding: const EdgeInsets.only(left: 20, right: 15, top: 18, bottom: 20),
+      decoration: BoxDecoration(
+        color: context.appColors.whiteBG,
+        borderRadius: BorderRadius.circular(6.0), // 圆角
+      ),
+      child: Column(
+        crossAxisAlignment: CrossAxisAlignment.start,
+        children: [
+          Row(
+            crossAxisAlignment: CrossAxisAlignment.center,
+            children: [
+              const MyAssetImage(Assets.formAccessCard, width: 38.5, height: 31),
+              Column(
+                crossAxisAlignment: CrossAxisAlignment.start,
+                children: [
+                  MyTextView(
+                    "Access Card -Owner",
+                    fontSize: 16,
+                    maxLines: 2,
+                    textColor: context.appColors.textBlack,
+                    isFontMedium: true,
+                  ),
+
+                  //预订人
+                  MyTextView(
+                    S.current.booked_by_someone("Wu Bing Bing"),
+                    fontSize: 14,
+                    marginTop: 2,
+                    textColor: context.appColors.textBlack,
+                    isFontRegular: true,
+                  ),
+                ],
+              ).marginOnly(left: 11, right: 11).expanded(),
+
+              //查看按钮
+              MyTextView(
+                S.current.view,
+                textColor: Colors.white,
+                backgroundColor: context.appColors.btnBgDefault,
+                cornerRadius: 7,
+                paddingTop: 9,
+                paddingBottom: 9,
+                textAlign: TextAlign.center,
+                boxWidth: 60,
+              ),
+            ],
+          ),
+          MyTextView(
+            S.current.send_on_sometime("04 Feb 2024 at 04:00 PM"),
+            fontSize: 14,
+            marginTop: 10,
+            textColor: context.appColors.textBlack,
+            isFontRegular: true,
+          ),
+        ],
+      ),
+    );
+  }
+}

+ 1 - 1
packages/cpt_form/lib/router/component/form_component_service.dart

@@ -7,7 +7,7 @@ import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
-import '../../modules/form/page/form_page.dart';
+import '../../modules/form/form_page.dart';
 
 part 'form_component_service.g.dart';
 

+ 17 - 5
packages/cpt_form/lib/router/page/form_page_router.dart

@@ -3,8 +3,11 @@ import 'package:flutter/material.dart';
 import 'package:router/ext/auto_router_extensions.dart';
 import 'package:router/path/router_path.dart';
 
-import '../../modules/form/page/form_page.dart';
-
+import '../../modules/form/form_page.dart';
+import '../../modules/form/apply/form_apply_screen.dart';
+import '../../modules/form/submit/form_submit_screen.dart';
+import '../../modules/form/approve/form_approve_screen.dart';
+import '../../modules/form/not_approve/form_not_approve_screen.dart';
 
 part 'form_page_router.gr.dart';
 
@@ -15,7 +18,16 @@ part 'form_page_router.gr.dart';
 class FormPageRouter extends _$FormPageRouter {
   @override
   List<AutoRoute> get routes => [
-
-    CustomRoute(page: FormPageRoute.page, path: RouterPath.form, transitionsBuilder: applySlideTransition),
-  ];
+        CustomRoute(
+          page: FormPageRoute.page,
+          path: RouterPath.form,
+          transitionsBuilder: applySlideTransition,
+          children: [
+            AutoRoute(page: FormApplyPageRoute.page, path: 'apply'),
+            AutoRoute(page: FormSubmitPageRoute.page, path: 'submit'),
+            AutoRoute(page: FormApprovePageRoute.page, path: 'approve'),
+            AutoRoute(page: FormNotApprovePageRoute.page, path: 'not_approve'),
+          ],
+        ),
+      ];
 }

+ 81 - 1
packages/cpt_form/lib/router/page/form_page_router.gr.dart

@@ -15,16 +15,82 @@ abstract class _$FormPageRouter extends RootStackRouter {
 
   @override
   final Map<String, PageFactory> pagesMap = {
+    FormApplyPageRoute.name: (routeData) {
+      return AutoRoutePage<dynamic>(
+        routeData: routeData,
+        child: FormApplyScreen(),
+      );
+    },
+    FormApprovePageRoute.name: (routeData) {
+      return AutoRoutePage<dynamic>(
+        routeData: routeData,
+        child: FormApproveScreen(),
+      );
+    },
+    FormNotApprovePageRoute.name: (routeData) {
+      return AutoRoutePage<dynamic>(
+        routeData: routeData,
+        child: FormNotApproveScreen(),
+      );
+    },
     FormPageRoute.name: (routeData) {
       return AutoRoutePage<dynamic>(
         routeData: routeData,
         child: const FormPage(),
       );
-    }
+    },
+    FormSubmitPageRoute.name: (routeData) {
+      return AutoRoutePage<dynamic>(
+        routeData: routeData,
+        child: FormSubmitScreen(),
+      );
+    },
   };
 }
 
 /// generated route for
+/// [FormApplyScreen]
+class FormApplyPageRoute extends PageRouteInfo<void> {
+  const FormApplyPageRoute({List<PageRouteInfo>? children})
+      : super(
+          FormApplyPageRoute.name,
+          initialChildren: children,
+        );
+
+  static const String name = 'FormApplyPageRoute';
+
+  static const PageInfo<void> page = PageInfo<void>(name);
+}
+
+/// generated route for
+/// [FormApproveScreen]
+class FormApprovePageRoute extends PageRouteInfo<void> {
+  const FormApprovePageRoute({List<PageRouteInfo>? children})
+      : super(
+          FormApprovePageRoute.name,
+          initialChildren: children,
+        );
+
+  static const String name = 'FormApprovePageRoute';
+
+  static const PageInfo<void> page = PageInfo<void>(name);
+}
+
+/// generated route for
+/// [FormNotApproveScreen]
+class FormNotApprovePageRoute extends PageRouteInfo<void> {
+  const FormNotApprovePageRoute({List<PageRouteInfo>? children})
+      : super(
+          FormNotApprovePageRoute.name,
+          initialChildren: children,
+        );
+
+  static const String name = 'FormNotApprovePageRoute';
+
+  static const PageInfo<void> page = PageInfo<void>(name);
+}
+
+/// generated route for
 /// [FormPage]
 class FormPageRoute extends PageRouteInfo<void> {
   const FormPageRoute({List<PageRouteInfo>? children})
@@ -37,3 +103,17 @@ class FormPageRoute extends PageRouteInfo<void> {
 
   static const PageInfo<void> page = PageInfo<void>(name);
 }
+
+/// generated route for
+/// [FormSubmitScreen]
+class FormSubmitPageRoute extends PageRouteInfo<void> {
+  const FormSubmitPageRoute({List<PageRouteInfo>? children})
+      : super(
+          FormSubmitPageRoute.name,
+          initialChildren: children,
+        );
+
+  static const String name = 'FormSubmitPageRoute';
+
+  static const PageInfo<void> page = PageInfo<void>(name);
+}

BIN
packages/cs_resources/assets/form/access_card.webp


BIN
packages/cs_resources/assets/form/apply_icon.webp


BIN
packages/cs_resources/assets/form/approved_icon.webp


BIN
packages/cs_resources/assets/form/bicycles.webp


BIN
packages/cs_resources/assets/form/car_vehicle.webp


BIN
packages/cs_resources/assets/form/labe_replace.webp


BIN
packages/cs_resources/assets/form/move_in_out.webp


BIN
packages/cs_resources/assets/form/not_approved_icon.webp


BIN
packages/cs_resources/assets/form/overnight.webp


BIN
packages/cs_resources/assets/form/renovation.webp


BIN
packages/cs_resources/assets/form/submit_icon.webp


+ 11 - 0
packages/cs_resources/lib/generated/assets.dart

@@ -72,6 +72,17 @@ class Assets {
   static const String facilityPaymentSuccessIcon = 'assets/facility/payment_success_icon.webp';
   static const String facilityQuestionIcon = 'assets/facility/question_icon.webp';
   static const String facilityTitleLocationIcon = 'assets/facility/title_location_icon.webp';
+  static const String formAccessCard = 'assets/form/access_card.webp';
+  static const String formApplyIcon = 'assets/form/apply_icon.webp';
+  static const String formApprovedIcon = 'assets/form/approved_icon.webp';
+  static const String formBicycles = 'assets/form/bicycles.webp';
+  static const String formCarVehicle = 'assets/form/car_vehicle.webp';
+  static const String formLabeReplace = 'assets/form/labe_replace.webp';
+  static const String formMoveInOut = 'assets/form/move_in_out.webp';
+  static const String formNotApprovedIcon = 'assets/form/not_approved_icon.webp';
+  static const String formOvernight = 'assets/form/overnight.webp';
+  static const String formRenovation = 'assets/form/renovation.webp';
+  static const String formSubmitIcon = 'assets/form/submit_icon.webp';
   static const String mainAccountDeactivationImg = 'assets/main/account_deactivation_img.webp';
   static const String mainFeedbackHistory = 'assets/main/feedback_history.webp';
   static const String mainFeedbackInProgress = 'assets/main/feedback_in_progress.webp';

+ 108 - 8
packages/cs_resources/lib/generated/intl/messages_en.dart

@@ -20,17 +20,31 @@ typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
 class MessageLookup extends MessageLookupByLibrary {
   String get localeName => 'en';
 
-  static String m0(name) => "Booked by ${name}";
+  static String m0(time) => "Approved on ${time}";
 
-  static String m1(count) => "${count} Characters";
+  static String m1(name) => "Booked by ${name}";
 
-  static String m2(count, date) =>
+  static String m2(count) => "${count} Characters";
+
+  static String m3(time) => "Not Approved on ${time}";
+
+  static String m4(count, date) =>
       "You have ${count}x quota left (resets on ${date})";
 
-  static String m3(name) => "Welcome ${name}";
+  static String m5(time) => "Sent on ${time}";
+
+  static String m6(name) => "Welcome ${name}";
 
   final messages = _notInlinedMessages(_notInlinedMessages);
   static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
+        "access_card_desc": MessageLookupByLibrary.simpleMessage(
+            "Please enter the serial number(s) of faulty damaged or lost access card number OR provide serial numbers of all working access cards."),
+        "access_card_owner":
+            MessageLookupByLibrary.simpleMessage("Access Card-Owner"),
+        "access_card_tenant":
+            MessageLookupByLibrary.simpleMessage("Access Card-Tenant"),
+        "access_card_tenant_letter": MessageLookupByLibrary.simpleMessage(
+            "Kindly attach a copy of owner\'s authorisation letter"),
         "access_date": MessageLookupByLibrary.simpleMessage("Access Date"),
         "account_deactivate_alert": MessageLookupByLibrary.simpleMessage(
             "Are you sure you want to deactivate your account? You will not be able to login into the app once you proceed with the request."),
@@ -44,7 +58,13 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Administrator Reply"),
         "agree_to": MessageLookupByLibrary.simpleMessage("Agree to"),
         "alert": MessageLookupByLibrary.simpleMessage("Alert"),
+        "apply": MessageLookupByLibrary.simpleMessage("Apply"),
+        "approved": MessageLookupByLibrary.simpleMessage("Approved"),
+        "approved_on_sometime": m0,
+        "attachments": MessageLookupByLibrary.simpleMessage("ATTACHMENTS"),
         "back_home": MessageLookupByLibrary.simpleMessage("Back Home"),
+        "bicycle_desc": MessageLookupByLibrary.simpleMessage(
+            "Please upload a photo of your bicycle"),
         "block": MessageLookupByLibrary.simpleMessage("Block"),
         "block_desc": MessageLookupByLibrary.simpleMessage(
             "Block refers to the street number of the unit\'s official mailing address"),
@@ -53,20 +73,32 @@ class MessageLookup extends MessageLookupByLibrary {
         "block_example_desc": MessageLookupByLibrary.simpleMessage(
             "123 is the block number #08-08 is the unit number"),
         "book": MessageLookupByLibrary.simpleMessage("Book"),
-        "booked_by_someone": m0,
+        "booked_by_someone": m1,
         "booking_fee": MessageLookupByLibrary.simpleMessage("Booking Fee"),
         "booking_successful":
             MessageLookupByLibrary.simpleMessage("BOOKING SUCCESSFUL"),
         "cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
+        "car_cancel_signature_txt": MessageLookupByLibrary.simpleMessage(
+            "the resident,herein confirm that we have read and will fully abide by the rules & regulations governing car parking of Parc Life. We  further undertake to display the car park label, prominently on the top left(passenger side) portion of the front windscreen of our vehicle at all times whilst in Parc Life."),
+        "car_cancel_txt": MessageLookupByLibrary.simpleMessage(
+            "Kindly provide the following."),
+        "car_cancel_txt_1":
+            MessageLookupByLibrary.simpleMessage("1. Car decals serial number"),
+        "car_cancel_txt_2": MessageLookupByLibrary.simpleMessage(
+            "2.Effective date of cancellation"),
+        "car_park_cancellation":
+            MessageLookupByLibrary.simpleMessage("Car Park Cancellation"),
         "card_caps": MessageLookupByLibrary.simpleMessage("CARD"),
         "card_number": MessageLookupByLibrary.simpleMessage("Card Number"),
         "change": MessageLookupByLibrary.simpleMessage("Change"),
         "change_mobile_phone":
             MessageLookupByLibrary.simpleMessage("Change Mobile Phone"),
-        "characters": m1,
+        "characters": m2,
         "choose_category":
             MessageLookupByLibrary.simpleMessage("Choose a Category"),
         "community": MessageLookupByLibrary.simpleMessage("Community"),
+        "company_address":
+            MessageLookupByLibrary.simpleMessage("COMPANY ADDRESS"),
         "confirm": MessageLookupByLibrary.simpleMessage("Confirm"),
         "confirm_new_password":
             MessageLookupByLibrary.simpleMessage("Confirm New Password"),
@@ -81,6 +113,7 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Create New YY Home Account"),
         "credit_debit_card":
             MessageLookupByLibrary.simpleMessage("Credit or debit card"),
+        "date_of_entry": MessageLookupByLibrary.simpleMessage("DATE OF ENTRY"),
         "delete": MessageLookupByLibrary.simpleMessage("Delete"),
         "deposit": MessageLookupByLibrary.simpleMessage("Deposit"),
         "deposit_amount":
@@ -102,6 +135,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "email": MessageLookupByLibrary.simpleMessage("Email"),
         "enable_notification":
             MessageLookupByLibrary.simpleMessage("Enable Notification"),
+        "end_date_caps": MessageLookupByLibrary.simpleMessage("END DATE"),
         "estate": MessageLookupByLibrary.simpleMessage("Estate"),
         "estate_name_desc": MessageLookupByLibrary.simpleMessage(
             "Tell us the name of the estateor building you are applying to"),
@@ -125,10 +159,18 @@ class MessageLookup extends MessageLookupByLibrary {
         "forgot_text": MessageLookupByLibrary.simpleMessage(
             "Enter your email and mobile phone number"),
         "form": MessageLookupByLibrary.simpleMessage("Form"),
+        "form_submit_title": MessageLookupByLibrary.simpleMessage("Submit"),
         "full_name": MessageLookupByLibrary.simpleMessage("Full Name"),
         "get_code": MessageLookupByLibrary.simpleMessage("Get Code"),
         "get_started":
             MessageLookupByLibrary.simpleMessage("let\'s get started"),
+        "guest_mobile_number":
+            MessageLookupByLibrary.simpleMessage("GUEST MOBILE NUMBER"),
+        "guest_name": MessageLookupByLibrary.simpleMessage("GUEST NAME"),
+        "hacking_end_date":
+            MessageLookupByLibrary.simpleMessage("HACKING END DATE"),
+        "hacking_start_date":
+            MessageLookupByLibrary.simpleMessage("HACKING START DATE"),
         "have_fun": MessageLookupByLibrary.simpleMessage("Have Fun!"),
         "history": MessageLookupByLibrary.simpleMessage("History"),
         "home": MessageLookupByLibrary.simpleMessage("Home"),
@@ -153,6 +195,15 @@ class MessageLookup extends MessageLookupByLibrary {
         "internal": MessageLookupByLibrary.simpleMessage("Internal"),
         "introduction_to_info_pack":
             MessageLookupByLibrary.simpleMessage("Introduction to info-pack"),
+        "iu_number": MessageLookupByLibrary.simpleMessage("IU NUMBER"),
+        "label_txt": MessageLookupByLibrary.simpleMessage(
+            "Please attach the following documents to accompany the vehicle registration form:"),
+        "label_txt_1": MessageLookupByLibrary.simpleMessage(
+            "1)One Motoring car registration or log card"),
+        "label_txt_2": MessageLookupByLibrary.simpleMessage(
+            "2)Company Authorization Letter is required for company cars"),
+        "label_txt_3": MessageLookupByLibrary.simpleMessage(
+            "3) Car Rental Agreement is required for rental cars."),
         "last_name": MessageLookupByLibrary.simpleMessage("Last Name"),
         "latest_news": MessageLookupByLibrary.simpleMessage("Latest News"),
         "latest_transactions":
@@ -165,7 +216,13 @@ class MessageLookup extends MessageLookupByLibrary {
             "Are you sure you want to logout?"),
         "mark_all": MessageLookupByLibrary.simpleMessage("Mark All"),
         "me": MessageLookupByLibrary.simpleMessage("Me"),
+        "mobile_number_caps":
+            MessageLookupByLibrary.simpleMessage("MOBILE NUMBER"),
         "mobile_phone": MessageLookupByLibrary.simpleMessage("Mobile Phone"),
+        "moving_in": MessageLookupByLibrary.simpleMessage("Moving In"),
+        "moving_in_msg": MessageLookupByLibrary.simpleMessage(
+            "If you would like to leave the Management a note to accompany this application or have any special requests, please leave them here."),
+        "moving_out": MessageLookupByLibrary.simpleMessage("Moving Out"),
         "my_post": MessageLookupByLibrary.simpleMessage("My Posts"),
         "name_on_card": MessageLookupByLibrary.simpleMessage("Name on Card"),
         "new_mobile_phone":
@@ -173,7 +230,11 @@ class MessageLookup extends MessageLookupByLibrary {
         "new_password": MessageLookupByLibrary.simpleMessage("New Password"),
         "next": MessageLookupByLibrary.simpleMessage("Next"),
         "no": MessageLookupByLibrary.simpleMessage("No"),
+        "not_approved": MessageLookupByLibrary.simpleMessage("Not Approved"),
+        "not_approved_on_sometime": m3,
         "notes": MessageLookupByLibrary.simpleMessage("Notes"),
+        "notes_to_management":
+            MessageLookupByLibrary.simpleMessage("NOTES TO MANAGEMENT"),
         "notes_to_recipient":
             MessageLookupByLibrary.simpleMessage("Notes to Recipient"),
         "notice_board": MessageLookupByLibrary.simpleMessage("Notice Board"),
@@ -184,6 +245,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "on_hold": MessageLookupByLibrary.simpleMessage("On Hold"),
         "or": MessageLookupByLibrary.simpleMessage("or"),
         "other": MessageLookupByLibrary.simpleMessage("Other"),
+        "overnight_parking":
+            MessageLookupByLibrary.simpleMessage("Overnight Parking"),
         "owner": MessageLookupByLibrary.simpleMessage("Owner"),
         "owner_or_tenant":
             MessageLookupByLibrary.simpleMessage("Are you an owner or tenant?"),
@@ -197,6 +260,8 @@ class MessageLookup extends MessageLookupByLibrary {
             "I am the shareholder of the company that owns the unit"),
         "owners_desc5": MessageLookupByLibrary.simpleMessage(
             "The Management will verify your application accordingly"),
+        "ownership_status":
+            MessageLookupByLibrary.simpleMessage("OWNERSHIP STATUS"),
         "paid_on": MessageLookupByLibrary.simpleMessage("paid on"),
         "password": MessageLookupByLibrary.simpleMessage("Password"),
         "password_format":
@@ -212,6 +277,8 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Privacy Policy"),
         "proceed_with_payment":
             MessageLookupByLibrary.simpleMessage("Proceed With Payment"),
+        "processing_in_progress": MessageLookupByLibrary.simpleMessage(
+            "Processing in progress, please be patient..."),
         "property": MessageLookupByLibrary.simpleMessage("Property"),
         "property_guide":
             MessageLookupByLibrary.simpleMessage("Property Guide"),
@@ -221,18 +288,36 @@ class MessageLookup extends MessageLookupByLibrary {
             "Your feedback has been successfully sent! We will reply to you as soon as possible! thank you!"),
         "published_successfully":
             MessageLookupByLibrary.simpleMessage("Published Successfully"),
-        "quota_left_msg": m2,
+        "quota_left_msg": m4,
         "rate_us": MessageLookupByLibrary.simpleMessage("Rate Us"),
+        "re_registration_of_1_vehicle_owner":
+            MessageLookupByLibrary.simpleMessage(
+                "Re-Registration of 1st Vehicle-Owner"),
+        "re_registration_of_1_vehicle_tenant":
+            MessageLookupByLibrary.simpleMessage(
+                "Re-Registration of 1st Vehicle-Tenant"),
+        "re_registration_of_bicycle":
+            MessageLookupByLibrary.simpleMessage("Re-Registration of Bicycles"),
+        "registration_of_2_vehicle":
+            MessageLookupByLibrary.simpleMessage("Registration of 2nd Vehicle"),
         "remove": MessageLookupByLibrary.simpleMessage("Remove"),
         "remove_account":
             MessageLookupByLibrary.simpleMessage("Remove Account"),
         "remove_account_tips": MessageLookupByLibrary.simpleMessage(
             "Are you sure you want to remove your account?"),
+        "renovation": MessageLookupByLibrary.simpleMessage("Renovation"),
+        "renovation_end_date":
+            MessageLookupByLibrary.simpleMessage("RENOVATION END DATE"),
+        "renovation_start_date":
+            MessageLookupByLibrary.simpleMessage("RENOVATION START DATE"),
         "resend_code": MessageLookupByLibrary.simpleMessage("Resend Code"),
         "reset_password":
             MessageLookupByLibrary.simpleMessage("Reset Password"),
         "rewards": MessageLookupByLibrary.simpleMessage("Rewards"),
         "send_feedback": MessageLookupByLibrary.simpleMessage("Send FeedBack"),
+        "send_feedback_management": MessageLookupByLibrary.simpleMessage(
+            "If you would like more information,please send a feedback to the Management"),
+        "send_on_sometime": m5,
         "sent": MessageLookupByLibrary.simpleMessage("Sent"),
         "service": MessageLookupByLibrary.simpleMessage("Service"),
         "set_primary_card":
@@ -246,6 +331,11 @@ 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"),
+        "signature": MessageLookupByLibrary.simpleMessage("SIGNATURE"),
+        "signed_and_agreed_by":
+            MessageLookupByLibrary.simpleMessage("Signed and agreed by"),
+        "start_date_caps": MessageLookupByLibrary.simpleMessage("START DATE"),
+        "status": MessageLookupByLibrary.simpleMessage("Status"),
         "strata_management_guides":
             MessageLookupByLibrary.simpleMessage("Strata Management Guides"),
         "submit": MessageLookupByLibrary.simpleMessage("Submit"),
@@ -262,10 +352,14 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Terms & Conditions"),
         "terms_of_service":
             MessageLookupByLibrary.simpleMessage("Terms of Service"),
+        "time_of_arrival":
+            MessageLookupByLibrary.simpleMessage("TIME OF ARRIVAL"),
         "title": MessageLookupByLibrary.simpleMessage("Title"),
         "total": MessageLookupByLibrary.simpleMessage("Total"),
         "tries_left": MessageLookupByLibrary.simpleMessage("Tries Left"),
         "type_here": MessageLookupByLibrary.simpleMessage("Type Here"),
+        "type_of_application":
+            MessageLookupByLibrary.simpleMessage("TYPE OF APPLICATION"),
         "unit_number": MessageLookupByLibrary.simpleMessage("Unit Number"),
         "up_to_max_images": MessageLookupByLibrary.simpleMessage(
             "(Up to 10 images can be uploaded)"),
@@ -282,6 +376,12 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Upload Documents"),
         "upload_pictures":
             MessageLookupByLibrary.simpleMessage("Upload Pictures"),
+        "vehicle_label_replacement":
+            MessageLookupByLibrary.simpleMessage("Vehicle Label Replacement"),
+        "vehicle_make_model_colour":
+            MessageLookupByLibrary.simpleMessage("VEHICLE MAKE/MODEL/ COLOUR"),
+        "vehicle_number":
+            MessageLookupByLibrary.simpleMessage("VEHICLE NUMBER"),
         "verification_code":
             MessageLookupByLibrary.simpleMessage("Verification Code"),
         "version_no": MessageLookupByLibrary.simpleMessage("Version No."),
@@ -295,7 +395,7 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("Visitor Registration"),
         "waiting_for_the_administrator": MessageLookupByLibrary.simpleMessage(
             "Waiting for the administrator"),
-        "welcome_name": m3,
+        "welcome_name": m6,
         "who_are_owners":
             MessageLookupByLibrary.simpleMessage("Who are owners?"),
         "who_are_tenants":

+ 81 - 8
packages/cs_resources/lib/generated/intl/messages_zh_CN.dart

@@ -20,16 +20,28 @@ typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
 class MessageLookup extends MessageLookupByLibrary {
   String get localeName => 'zh_CN';
 
-  static String m0(name) => "${name} 已预定";
+  static String m0(time) => "批准于${time}";
 
-  static String m1(count) => "${count} 字符";
+  static String m1(name) => "${name} 已预定";
 
-  static String m2(count, date) => "你还剩余${count}次的配额 (重置于${date})";
+  static String m2(count) => "${count} 字符";
 
-  static String m3(name) => "欢迎你 ${name}";
+  static String m3(time) => "处理于${time}";
+
+  static String m4(count, date) => "你还剩余${count}次的配额 (重置于${date})";
+
+  static String m5(time) => "提交于${time}";
+
+  static String m6(name) => "欢迎你 ${name}";
 
   final messages = _notInlinedMessages(_notInlinedMessages);
   static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
+        "access_card_desc": MessageLookupByLibrary.simpleMessage(
+            "请输入故障损坏或丢失的门禁卡号的序列号,或提供所有可用门禁卡的序列号。"),
+        "access_card_owner": MessageLookupByLibrary.simpleMessage("业主门禁卡"),
+        "access_card_tenant": MessageLookupByLibrary.simpleMessage("租户门禁卡"),
+        "access_card_tenant_letter":
+            MessageLookupByLibrary.simpleMessage("请附上业主授权书副本"),
         "access_date": MessageLookupByLibrary.simpleMessage("访问日期"),
         "account_deactivate_alert": MessageLookupByLibrary.simpleMessage(
             "您确定要停用您的帐户吗?一旦您继续执行请求,您将无法登录应用程序。"),
@@ -41,7 +53,12 @@ class MessageLookup extends MessageLookupByLibrary {
         "administrator_reply": MessageLookupByLibrary.simpleMessage("管理员回复"),
         "agree_to": MessageLookupByLibrary.simpleMessage("同意"),
         "alert": MessageLookupByLibrary.simpleMessage("提示"),
+        "apply": MessageLookupByLibrary.simpleMessage("可申请"),
+        "approved": MessageLookupByLibrary.simpleMessage("已批准"),
+        "approved_on_sometime": m0,
+        "attachments": MessageLookupByLibrary.simpleMessage("附件"),
         "back_home": MessageLookupByLibrary.simpleMessage("返回首页"),
+        "bicycle_desc": MessageLookupByLibrary.simpleMessage("请上传您的自行车照片"),
         "block": MessageLookupByLibrary.simpleMessage("街区"),
         "block_desc": MessageLookupByLibrary.simpleMessage("街区是指单位官方邮编街道号"),
         "block_example":
@@ -49,17 +66,24 @@ class MessageLookup extends MessageLookupByLibrary {
         "block_example_desc":
             MessageLookupByLibrary.simpleMessage("123 是街区地址邮编 #08-08 是单元号码"),
         "book": MessageLookupByLibrary.simpleMessage("预定"),
-        "booked_by_someone": m0,
+        "booked_by_someone": m1,
         "booking_fee": MessageLookupByLibrary.simpleMessage("预定费用"),
         "booking_successful": MessageLookupByLibrary.simpleMessage("预定成功"),
         "cancel": MessageLookupByLibrary.simpleMessage("取消"),
+        "car_cancel_signature_txt": MessageLookupByLibrary.simpleMessage(
+            "居民在此确认,我们已阅读并将完全遵守Parc Life的停车规则和规定。我们进一步承诺,在Parc Life期间,我们将始终在车辆前挡风玻璃的左上角(乘客侧)突出显示停车场标签。"),
+        "car_cancel_txt": MessageLookupByLibrary.simpleMessage("请提供以下信息。"),
+        "car_cancel_txt_1": MessageLookupByLibrary.simpleMessage("1.车辆序列号"),
+        "car_cancel_txt_2": MessageLookupByLibrary.simpleMessage("2.车位取消的实施日期"),
+        "car_park_cancellation": MessageLookupByLibrary.simpleMessage("取消停车位"),
         "card_caps": MessageLookupByLibrary.simpleMessage("信用卡"),
         "card_number": MessageLookupByLibrary.simpleMessage("银行卡号"),
         "change": MessageLookupByLibrary.simpleMessage("更换"),
         "change_mobile_phone": MessageLookupByLibrary.simpleMessage("修改手机号码"),
-        "characters": m1,
+        "characters": m2,
         "choose_category": MessageLookupByLibrary.simpleMessage("选择类型"),
         "community": MessageLookupByLibrary.simpleMessage("社区"),
+        "company_address": MessageLookupByLibrary.simpleMessage("公司地址"),
         "confirm": MessageLookupByLibrary.simpleMessage("确认"),
         "confirm_new_password": MessageLookupByLibrary.simpleMessage("确认新密码"),
         "confirm_password": MessageLookupByLibrary.simpleMessage("确认密码"),
@@ -69,6 +93,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "create_new_yy_home_account":
             MessageLookupByLibrary.simpleMessage("创建新的 YY Home 账户"),
         "credit_debit_card": MessageLookupByLibrary.simpleMessage("信用卡或借记卡"),
+        "date_of_entry": MessageLookupByLibrary.simpleMessage("进入日期"),
         "delete": MessageLookupByLibrary.simpleMessage("删除"),
         "deposit": MessageLookupByLibrary.simpleMessage("押金"),
         "deposit_amount": MessageLookupByLibrary.simpleMessage("押金总金额"),
@@ -84,6 +109,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "edit_profile": MessageLookupByLibrary.simpleMessage("编辑个人信息"),
         "email": MessageLookupByLibrary.simpleMessage("邮箱"),
         "enable_notification": MessageLookupByLibrary.simpleMessage("允许通知"),
+        "end_date_caps": MessageLookupByLibrary.simpleMessage("结束时间"),
         "estate": MessageLookupByLibrary.simpleMessage("房产"),
         "estate_name_desc":
             MessageLookupByLibrary.simpleMessage("告诉我们您申请的公寓楼的名称"),
@@ -103,9 +129,14 @@ class MessageLookup extends MessageLookupByLibrary {
         "forgot_password": MessageLookupByLibrary.simpleMessage("忘记密码?"),
         "forgot_text": MessageLookupByLibrary.simpleMessage("请输入您的邮箱和手机号码"),
         "form": MessageLookupByLibrary.simpleMessage("表单"),
+        "form_submit_title": MessageLookupByLibrary.simpleMessage("已提交"),
         "full_name": MessageLookupByLibrary.simpleMessage("全名"),
         "get_code": MessageLookupByLibrary.simpleMessage("获取验证码"),
         "get_started": MessageLookupByLibrary.simpleMessage("让我们开始吧"),
+        "guest_mobile_number": MessageLookupByLibrary.simpleMessage("访客手机号码"),
+        "guest_name": MessageLookupByLibrary.simpleMessage("访客姓名"),
+        "hacking_end_date": MessageLookupByLibrary.simpleMessage("施工结束日期"),
+        "hacking_start_date": MessageLookupByLibrary.simpleMessage("施工开始日期"),
         "have_fun": MessageLookupByLibrary.simpleMessage("祝您愉快!"),
         "history": MessageLookupByLibrary.simpleMessage("历史记录"),
         "home": MessageLookupByLibrary.simpleMessage("首页"),
@@ -127,6 +158,11 @@ class MessageLookup extends MessageLookupByLibrary {
         "internal": MessageLookupByLibrary.simpleMessage("内部"),
         "introduction_to_info_pack":
             MessageLookupByLibrary.simpleMessage("信息介绍"),
+        "iu_number": MessageLookupByLibrary.simpleMessage("IU 编号"),
+        "label_txt": MessageLookupByLibrary.simpleMessage("请随车辆登记表附上以下文件:"),
+        "label_txt_1": MessageLookupByLibrary.simpleMessage("1)一张机动车登记或日志卡"),
+        "label_txt_2": MessageLookupByLibrary.simpleMessage("2)公司车辆需要公司授权书"),
+        "label_txt_3": MessageLookupByLibrary.simpleMessage("3)租车需要租车协议。"),
         "last_name": MessageLookupByLibrary.simpleMessage("姓"),
         "latest_news": MessageLookupByLibrary.simpleMessage("最新消息"),
         "latest_transactions": MessageLookupByLibrary.simpleMessage("最新交易"),
@@ -136,14 +172,22 @@ class MessageLookup extends MessageLookupByLibrary {
         "logout_alert": MessageLookupByLibrary.simpleMessage("你确定要退出登录吗?"),
         "mark_all": MessageLookupByLibrary.simpleMessage("标记全部"),
         "me": MessageLookupByLibrary.simpleMessage("我的"),
+        "mobile_number_caps": MessageLookupByLibrary.simpleMessage("手机号码"),
         "mobile_phone": MessageLookupByLibrary.simpleMessage("手机号码"),
+        "moving_in": MessageLookupByLibrary.simpleMessage("搬入"),
+        "moving_in_msg": MessageLookupByLibrary.simpleMessage(
+            "如果您想在申请时给管理层留一张便条或有任何特殊要求,请在此处留下。"),
+        "moving_out": MessageLookupByLibrary.simpleMessage("搬出"),
         "my_post": MessageLookupByLibrary.simpleMessage("我的发布"),
         "name_on_card": MessageLookupByLibrary.simpleMessage("银行卡姓名"),
         "new_mobile_phone": MessageLookupByLibrary.simpleMessage("新的手机号码"),
         "new_password": MessageLookupByLibrary.simpleMessage("新密码"),
         "next": MessageLookupByLibrary.simpleMessage("下一步"),
         "no": MessageLookupByLibrary.simpleMessage("否"),
+        "not_approved": MessageLookupByLibrary.simpleMessage("未批准"),
+        "not_approved_on_sometime": m3,
         "notes": MessageLookupByLibrary.simpleMessage("备注"),
+        "notes_to_management": MessageLookupByLibrary.simpleMessage("给管理员备注"),
         "notes_to_recipient": MessageLookupByLibrary.simpleMessage("收款人通知"),
         "notice_board": MessageLookupByLibrary.simpleMessage("消息板"),
         "notification": MessageLookupByLibrary.simpleMessage("通知"),
@@ -152,6 +196,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "on_hold": MessageLookupByLibrary.simpleMessage("持有"),
         "or": MessageLookupByLibrary.simpleMessage("或者"),
         "other": MessageLookupByLibrary.simpleMessage("其他"),
+        "overnight_parking": MessageLookupByLibrary.simpleMessage("通宵停车"),
         "owner": MessageLookupByLibrary.simpleMessage("业主"),
         "owner_or_tenant": MessageLookupByLibrary.simpleMessage("您是业主还是租户?"),
         "owners_desc1": MessageLookupByLibrary.simpleMessage("我的名字在分层标题上"),
@@ -160,6 +205,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "owners_desc3": MessageLookupByLibrary.simpleMessage("我和名字的主人住在同一个家庭"),
         "owners_desc4": MessageLookupByLibrary.simpleMessage("我是拥有该单元的公司的股东"),
         "owners_desc5": MessageLookupByLibrary.simpleMessage("管理员将相应地验证您的申请"),
+        "ownership_status": MessageLookupByLibrary.simpleMessage("所有权状态"),
         "paid_on": MessageLookupByLibrary.simpleMessage("付款时间"),
         "password": MessageLookupByLibrary.simpleMessage("密码"),
         "password_format": MessageLookupByLibrary.simpleMessage("8位数字或字母"),
@@ -170,6 +216,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "primary_card": MessageLookupByLibrary.simpleMessage("主卡"),
         "privacy_policy": MessageLookupByLibrary.simpleMessage("隐私协议"),
         "proceed_with_payment": MessageLookupByLibrary.simpleMessage("继续付款"),
+        "processing_in_progress":
+            MessageLookupByLibrary.simpleMessage("正在处理中,请耐心等待..."),
         "property": MessageLookupByLibrary.simpleMessage("房产"),
         "property_guide": MessageLookupByLibrary.simpleMessage("物业指南"),
         "property_news": MessageLookupByLibrary.simpleMessage("资产新闻"),
@@ -177,16 +225,30 @@ class MessageLookup extends MessageLookupByLibrary {
         "published_successful_txt":
             MessageLookupByLibrary.simpleMessage("您的反馈已发送成功,我们会尽快回复您的反馈,谢谢!"),
         "published_successfully": MessageLookupByLibrary.simpleMessage("发布成功"),
-        "quota_left_msg": m2,
+        "quota_left_msg": m4,
         "rate_us": MessageLookupByLibrary.simpleMessage("评价我们"),
+        "re_registration_of_1_vehicle_owner":
+            MessageLookupByLibrary.simpleMessage("业主第一辆车重新登记"),
+        "re_registration_of_1_vehicle_tenant":
+            MessageLookupByLibrary.simpleMessage("租户第一辆车重新登记"),
+        "re_registration_of_bicycle":
+            MessageLookupByLibrary.simpleMessage("自行车重新登记"),
+        "registration_of_2_vehicle":
+            MessageLookupByLibrary.simpleMessage("第二辆车登记"),
         "remove": MessageLookupByLibrary.simpleMessage("移除"),
         "remove_account": MessageLookupByLibrary.simpleMessage("移除账号"),
         "remove_account_tips":
             MessageLookupByLibrary.simpleMessage("你确定要移除你的账号吗?"),
+        "renovation": MessageLookupByLibrary.simpleMessage("装修"),
+        "renovation_end_date": MessageLookupByLibrary.simpleMessage("装修结束日期"),
+        "renovation_start_date": MessageLookupByLibrary.simpleMessage("装修开始日期"),
         "resend_code": MessageLookupByLibrary.simpleMessage("重新发送"),
         "reset_password": MessageLookupByLibrary.simpleMessage("重置密码"),
         "rewards": MessageLookupByLibrary.simpleMessage("奖励"),
         "send_feedback": MessageLookupByLibrary.simpleMessage("发送反馈"),
+        "send_feedback_management":
+            MessageLookupByLibrary.simpleMessage("如果您想了解更多信息,请向管理层发送反馈"),
+        "send_on_sometime": m5,
         "sent": MessageLookupByLibrary.simpleMessage("发送"),
         "service": MessageLookupByLibrary.simpleMessage("服务"),
         "set_primary_card": MessageLookupByLibrary.simpleMessage("设为主卡"),
@@ -199,6 +261,10 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("现在,让我们把你和你的社区关联起来"),
         "sign_up_verify_txt":
             MessageLookupByLibrary.simpleMessage("我们已经向您发送了短信验证码,请在下面输入"),
+        "signature": MessageLookupByLibrary.simpleMessage("签名"),
+        "signed_and_agreed_by": MessageLookupByLibrary.simpleMessage("签字并同意"),
+        "start_date_caps": MessageLookupByLibrary.simpleMessage("开始时间"),
+        "status": MessageLookupByLibrary.simpleMessage("状态"),
         "strata_management_guides":
             MessageLookupByLibrary.simpleMessage("管理手册"),
         "submit": MessageLookupByLibrary.simpleMessage("提交"),
@@ -209,10 +275,12 @@ class MessageLookup extends MessageLookupByLibrary {
         "tenants_desc4": MessageLookupByLibrary.simpleMessage("管理员将相应地验证您的申请"),
         "terms_conditions": MessageLookupByLibrary.simpleMessage("服务条款"),
         "terms_of_service": MessageLookupByLibrary.simpleMessage("服务条款"),
+        "time_of_arrival": MessageLookupByLibrary.simpleMessage("到达时间"),
         "title": MessageLookupByLibrary.simpleMessage("标题"),
         "total": MessageLookupByLibrary.simpleMessage("共计"),
         "tries_left": MessageLookupByLibrary.simpleMessage("次尝试机会"),
         "type_here": MessageLookupByLibrary.simpleMessage("在此输入"),
+        "type_of_application": MessageLookupByLibrary.simpleMessage("申请类型"),
         "unit_number": MessageLookupByLibrary.simpleMessage("单元"),
         "up_to_max_images":
             MessageLookupByLibrary.simpleMessage("(您最多可以上传10张图片)"),
@@ -226,6 +294,11 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("(2)租赁协议印花税收据"),
         "upload_documents": MessageLookupByLibrary.simpleMessage("上传文档"),
         "upload_pictures": MessageLookupByLibrary.simpleMessage("上传图片"),
+        "vehicle_label_replacement":
+            MessageLookupByLibrary.simpleMessage("车辆标签更换"),
+        "vehicle_make_model_colour":
+            MessageLookupByLibrary.simpleMessage("车辆品牌/型号/颜色"),
+        "vehicle_number": MessageLookupByLibrary.simpleMessage("车牌号"),
         "verification_code": MessageLookupByLibrary.simpleMessage("验证码"),
         "version_no": MessageLookupByLibrary.simpleMessage("版本号."),
         "view": MessageLookupByLibrary.simpleMessage("查看"),
@@ -237,7 +310,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "visitor_registration": MessageLookupByLibrary.simpleMessage("访客登记"),
         "waiting_for_the_administrator":
             MessageLookupByLibrary.simpleMessage("等待管理员回复"),
-        "welcome_name": m3,
+        "welcome_name": m6,
         "who_are_owners": MessageLookupByLibrary.simpleMessage("怎样才算业主?"),
         "who_are_tenants": MessageLookupByLibrary.simpleMessage("怎样才算租户?"),
         "yes": MessageLookupByLibrary.simpleMessage("是"),

+ 81 - 8
packages/cs_resources/lib/generated/intl/messages_zh_HK.dart

@@ -20,16 +20,28 @@ typedef String MessageIfAbsent(String messageStr, List<dynamic> args);
 class MessageLookup extends MessageLookupByLibrary {
   String get localeName => 'zh_HK';
 
-  static String m0(name) => "${name} 已预定";
+  static String m0(time) => "批准于${time}";
 
-  static String m1(count) => "${count} 字符";
+  static String m1(name) => "${name} 已预定";
 
-  static String m2(count, date) => "你还剩余${count}次的配额 (重置于${date})";
+  static String m2(count) => "${count} 字符";
 
-  static String m3(name) => "欢迎你 ${name}";
+  static String m3(time) => "处理于${time}";
+
+  static String m4(count, date) => "你还剩余${count}次的配额 (重置于${date})";
+
+  static String m5(time) => "提交于${time}";
+
+  static String m6(name) => "欢迎你 ${name}";
 
   final messages = _notInlinedMessages(_notInlinedMessages);
   static Map<String, Function> _notInlinedMessages(_) => <String, Function>{
+        "access_card_desc": MessageLookupByLibrary.simpleMessage(
+            "请输入故障损坏或丢失的门禁卡号的序列号,或提供所有可用门禁卡的序列号。"),
+        "access_card_owner": MessageLookupByLibrary.simpleMessage("业主门禁卡"),
+        "access_card_tenant": MessageLookupByLibrary.simpleMessage("租户门禁卡"),
+        "access_card_tenant_letter":
+            MessageLookupByLibrary.simpleMessage("请附上业主授权书副本"),
         "access_date": MessageLookupByLibrary.simpleMessage("访问日期"),
         "account_deactivate_alert": MessageLookupByLibrary.simpleMessage(
             "您确定要停用您的帐户吗?一旦您继续执行请求,您将无法登录应用程序。"),
@@ -41,7 +53,12 @@ class MessageLookup extends MessageLookupByLibrary {
         "administrator_reply": MessageLookupByLibrary.simpleMessage("管理员回复"),
         "agree_to": MessageLookupByLibrary.simpleMessage("同意"),
         "alert": MessageLookupByLibrary.simpleMessage("提示"),
+        "apply": MessageLookupByLibrary.simpleMessage("可申请"),
+        "approved": MessageLookupByLibrary.simpleMessage("已批准"),
+        "approved_on_sometime": m0,
+        "attachments": MessageLookupByLibrary.simpleMessage("附件"),
         "back_home": MessageLookupByLibrary.simpleMessage("返回首页"),
+        "bicycle_desc": MessageLookupByLibrary.simpleMessage("请上传您的自行车照片"),
         "block": MessageLookupByLibrary.simpleMessage("街区"),
         "block_desc": MessageLookupByLibrary.simpleMessage("街区是指单位官方邮编街道号"),
         "block_example":
@@ -49,17 +66,24 @@ class MessageLookup extends MessageLookupByLibrary {
         "block_example_desc":
             MessageLookupByLibrary.simpleMessage("123 是街区地址邮编 #08-08 是单元号码"),
         "book": MessageLookupByLibrary.simpleMessage("预定"),
-        "booked_by_someone": m0,
+        "booked_by_someone": m1,
         "booking_fee": MessageLookupByLibrary.simpleMessage("预定费用"),
         "booking_successful": MessageLookupByLibrary.simpleMessage("预定成功"),
         "cancel": MessageLookupByLibrary.simpleMessage("取消"),
+        "car_cancel_signature_txt": MessageLookupByLibrary.simpleMessage(
+            "居民在此确认,我们已阅读并将完全遵守Parc Life的停车规则和规定。我们进一步承诺,在Parc Life期间,我们将始终在车辆前挡风玻璃的左上角(乘客侧)突出显示停车场标签。"),
+        "car_cancel_txt": MessageLookupByLibrary.simpleMessage("请提供以下信息。"),
+        "car_cancel_txt_1": MessageLookupByLibrary.simpleMessage("1.车辆序列号"),
+        "car_cancel_txt_2": MessageLookupByLibrary.simpleMessage("2.车位取消的实施日期"),
+        "car_park_cancellation": MessageLookupByLibrary.simpleMessage("取消停车位"),
         "card_caps": MessageLookupByLibrary.simpleMessage("信用卡"),
         "card_number": MessageLookupByLibrary.simpleMessage("银行卡号"),
         "change": MessageLookupByLibrary.simpleMessage("更换"),
         "change_mobile_phone": MessageLookupByLibrary.simpleMessage("修改手机号码"),
-        "characters": m1,
+        "characters": m2,
         "choose_category": MessageLookupByLibrary.simpleMessage("选择类型"),
         "community": MessageLookupByLibrary.simpleMessage("社区"),
+        "company_address": MessageLookupByLibrary.simpleMessage("公司地址"),
         "confirm": MessageLookupByLibrary.simpleMessage("确认"),
         "confirm_new_password": MessageLookupByLibrary.simpleMessage("确认新密码"),
         "confirm_password": MessageLookupByLibrary.simpleMessage("确认密码"),
@@ -69,6 +93,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "create_new_yy_home_account":
             MessageLookupByLibrary.simpleMessage("创建新的 YY Home 账户"),
         "credit_debit_card": MessageLookupByLibrary.simpleMessage("信用卡或借记卡"),
+        "date_of_entry": MessageLookupByLibrary.simpleMessage("进入日期"),
         "delete": MessageLookupByLibrary.simpleMessage("删除"),
         "deposit": MessageLookupByLibrary.simpleMessage("押金"),
         "deposit_amount": MessageLookupByLibrary.simpleMessage("押金总金额"),
@@ -84,6 +109,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "edit_profile": MessageLookupByLibrary.simpleMessage("编辑个人信息"),
         "email": MessageLookupByLibrary.simpleMessage("邮箱"),
         "enable_notification": MessageLookupByLibrary.simpleMessage("允许通知"),
+        "end_date_caps": MessageLookupByLibrary.simpleMessage("结束时间"),
         "estate": MessageLookupByLibrary.simpleMessage("房产"),
         "estate_name_desc":
             MessageLookupByLibrary.simpleMessage("告诉我们您申请的公寓楼的名称"),
@@ -103,9 +129,14 @@ class MessageLookup extends MessageLookupByLibrary {
         "forgot_password": MessageLookupByLibrary.simpleMessage("忘记密码?"),
         "forgot_text": MessageLookupByLibrary.simpleMessage("请输入您的邮箱和手机号码"),
         "form": MessageLookupByLibrary.simpleMessage("表單"),
+        "form_submit_title": MessageLookupByLibrary.simpleMessage("已提交"),
         "full_name": MessageLookupByLibrary.simpleMessage("全名"),
         "get_code": MessageLookupByLibrary.simpleMessage("获取验证码"),
         "get_started": MessageLookupByLibrary.simpleMessage("让我们开始吧"),
+        "guest_mobile_number": MessageLookupByLibrary.simpleMessage("访客手机号码"),
+        "guest_name": MessageLookupByLibrary.simpleMessage("访客姓名"),
+        "hacking_end_date": MessageLookupByLibrary.simpleMessage("施工结束日期"),
+        "hacking_start_date": MessageLookupByLibrary.simpleMessage("施工开始日期"),
         "have_fun": MessageLookupByLibrary.simpleMessage("祝您愉快!"),
         "history": MessageLookupByLibrary.simpleMessage("历史记录"),
         "home": MessageLookupByLibrary.simpleMessage("首页"),
@@ -127,6 +158,11 @@ class MessageLookup extends MessageLookupByLibrary {
         "internal": MessageLookupByLibrary.simpleMessage("内部"),
         "introduction_to_info_pack":
             MessageLookupByLibrary.simpleMessage("信息介绍"),
+        "iu_number": MessageLookupByLibrary.simpleMessage("IU 编号"),
+        "label_txt": MessageLookupByLibrary.simpleMessage("请随车辆登记表附上以下文件:"),
+        "label_txt_1": MessageLookupByLibrary.simpleMessage("1)一张机动车登记或日志卡"),
+        "label_txt_2": MessageLookupByLibrary.simpleMessage("2)公司车辆需要公司授权书"),
+        "label_txt_3": MessageLookupByLibrary.simpleMessage("3)租车需要租车协议。"),
         "last_name": MessageLookupByLibrary.simpleMessage("姓"),
         "latest_news": MessageLookupByLibrary.simpleMessage("最新消息"),
         "latest_transactions": MessageLookupByLibrary.simpleMessage("最新交易"),
@@ -136,14 +172,22 @@ class MessageLookup extends MessageLookupByLibrary {
         "logout_alert": MessageLookupByLibrary.simpleMessage("你确定要退出登录吗?"),
         "mark_all": MessageLookupByLibrary.simpleMessage("标记全部"),
         "me": MessageLookupByLibrary.simpleMessage("我的"),
+        "mobile_number_caps": MessageLookupByLibrary.simpleMessage("手机号码"),
         "mobile_phone": MessageLookupByLibrary.simpleMessage("手机号码"),
+        "moving_in": MessageLookupByLibrary.simpleMessage("搬入"),
+        "moving_in_msg": MessageLookupByLibrary.simpleMessage(
+            "如果您想在申请时给管理层留一张便条或有任何特殊要求,请在此处留下。"),
+        "moving_out": MessageLookupByLibrary.simpleMessage("搬出"),
         "my_post": MessageLookupByLibrary.simpleMessage("我的发布"),
         "name_on_card": MessageLookupByLibrary.simpleMessage("银行卡姓名"),
         "new_mobile_phone": MessageLookupByLibrary.simpleMessage("新的手机号码"),
         "new_password": MessageLookupByLibrary.simpleMessage("新密码"),
         "next": MessageLookupByLibrary.simpleMessage("下一步"),
         "no": MessageLookupByLibrary.simpleMessage("否"),
+        "not_approved": MessageLookupByLibrary.simpleMessage("未批准"),
+        "not_approved_on_sometime": m3,
         "notes": MessageLookupByLibrary.simpleMessage("备注"),
+        "notes_to_management": MessageLookupByLibrary.simpleMessage("给管理员备注"),
         "notes_to_recipient": MessageLookupByLibrary.simpleMessage("收款人通知"),
         "notice_board": MessageLookupByLibrary.simpleMessage("通知板"),
         "notification": MessageLookupByLibrary.simpleMessage("通知"),
@@ -152,6 +196,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "on_hold": MessageLookupByLibrary.simpleMessage("持有"),
         "or": MessageLookupByLibrary.simpleMessage("或者"),
         "other": MessageLookupByLibrary.simpleMessage("其他"),
+        "overnight_parking": MessageLookupByLibrary.simpleMessage("通宵停车"),
+        "ownership_status": MessageLookupByLibrary.simpleMessage("所有权状态"),
         "paid_on": MessageLookupByLibrary.simpleMessage("付款时间"),
         "password": MessageLookupByLibrary.simpleMessage("密码"),
         "password_format": MessageLookupByLibrary.simpleMessage("8位数字或字母"),
@@ -162,6 +208,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "primary_card": MessageLookupByLibrary.simpleMessage("主卡"),
         "privacy_policy": MessageLookupByLibrary.simpleMessage("隐私协议"),
         "proceed_with_payment": MessageLookupByLibrary.simpleMessage("继续付款"),
+        "processing_in_progress":
+            MessageLookupByLibrary.simpleMessage("正在处理中,请耐心等待..."),
         "property": MessageLookupByLibrary.simpleMessage("房产"),
         "property_guide": MessageLookupByLibrary.simpleMessage("物业指南"),
         "property_news": MessageLookupByLibrary.simpleMessage("资产新闻"),
@@ -169,16 +217,30 @@ class MessageLookup extends MessageLookupByLibrary {
         "published_successful_txt":
             MessageLookupByLibrary.simpleMessage("您的反馈已发送成功,我们会尽快回复您的反馈,谢谢!"),
         "published_successfully": MessageLookupByLibrary.simpleMessage("发布成功"),
-        "quota_left_msg": m2,
+        "quota_left_msg": m4,
         "rate_us": MessageLookupByLibrary.simpleMessage("评价我们"),
+        "re_registration_of_1_vehicle_owner":
+            MessageLookupByLibrary.simpleMessage("业主第一辆车重新登记"),
+        "re_registration_of_1_vehicle_tenant":
+            MessageLookupByLibrary.simpleMessage("租户第一辆车重新登记"),
+        "re_registration_of_bicycle":
+            MessageLookupByLibrary.simpleMessage("自行车重新登记"),
+        "registration_of_2_vehicle":
+            MessageLookupByLibrary.simpleMessage("第二辆车登记"),
         "remove": MessageLookupByLibrary.simpleMessage("移除"),
         "remove_account": MessageLookupByLibrary.simpleMessage("移除账号"),
         "remove_account_tips":
             MessageLookupByLibrary.simpleMessage("你确定要移除你的账号吗?"),
+        "renovation": MessageLookupByLibrary.simpleMessage("装修"),
+        "renovation_end_date": MessageLookupByLibrary.simpleMessage("装修结束日期"),
+        "renovation_start_date": MessageLookupByLibrary.simpleMessage("装修开始日期"),
         "resend_code": MessageLookupByLibrary.simpleMessage("重新发送"),
         "reset_password": MessageLookupByLibrary.simpleMessage("重置密码"),
         "rewards": MessageLookupByLibrary.simpleMessage("獎勵"),
         "send_feedback": MessageLookupByLibrary.simpleMessage("发送反馈"),
+        "send_feedback_management":
+            MessageLookupByLibrary.simpleMessage("如果您想了解更多信息,请向管理层发送反馈"),
+        "send_on_sometime": m5,
         "sent": MessageLookupByLibrary.simpleMessage("发送"),
         "service": MessageLookupByLibrary.simpleMessage("服务"),
         "set_primary_card": MessageLookupByLibrary.simpleMessage("设为主卡"),
@@ -191,15 +253,21 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("现在,让我们把你和你的社区关联起来"),
         "sign_up_verify_txt":
             MessageLookupByLibrary.simpleMessage("我们已经向您发送了短信验证码,请在下面输入"),
+        "signature": MessageLookupByLibrary.simpleMessage("签名"),
+        "signed_and_agreed_by": MessageLookupByLibrary.simpleMessage("签字并同意"),
+        "start_date_caps": MessageLookupByLibrary.simpleMessage("开始时间"),
+        "status": MessageLookupByLibrary.simpleMessage("状态"),
         "strata_management_guides":
             MessageLookupByLibrary.simpleMessage("管理手册"),
         "submit": MessageLookupByLibrary.simpleMessage("提交"),
         "terms_conditions": MessageLookupByLibrary.simpleMessage("服务条款"),
         "terms_of_service": MessageLookupByLibrary.simpleMessage("服务条款"),
+        "time_of_arrival": MessageLookupByLibrary.simpleMessage("到达时间"),
         "title": MessageLookupByLibrary.simpleMessage("标题"),
         "total": MessageLookupByLibrary.simpleMessage("共计"),
         "tries_left": MessageLookupByLibrary.simpleMessage("次尝试机会"),
         "type_here": MessageLookupByLibrary.simpleMessage("在此输入"),
+        "type_of_application": MessageLookupByLibrary.simpleMessage("申请类型"),
         "unit_number": MessageLookupByLibrary.simpleMessage("单元"),
         "up_to_max_images":
             MessageLookupByLibrary.simpleMessage("(您最多可以上传10张图片)"),
@@ -213,6 +281,11 @@ class MessageLookup extends MessageLookupByLibrary {
             MessageLookupByLibrary.simpleMessage("(2)租赁协议印花税收据"),
         "upload_documents": MessageLookupByLibrary.simpleMessage("上传文档"),
         "upload_pictures": MessageLookupByLibrary.simpleMessage("上传图片"),
+        "vehicle_label_replacement":
+            MessageLookupByLibrary.simpleMessage("车辆标签更换"),
+        "vehicle_make_model_colour":
+            MessageLookupByLibrary.simpleMessage("车辆品牌/型号/颜色"),
+        "vehicle_number": MessageLookupByLibrary.simpleMessage("车牌号"),
         "verification_code": MessageLookupByLibrary.simpleMessage("验证码"),
         "version_no": MessageLookupByLibrary.simpleMessage("版本号."),
         "view": MessageLookupByLibrary.simpleMessage("查看"),
@@ -224,7 +297,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "visitor_registration": MessageLookupByLibrary.simpleMessage("访客登记"),
         "waiting_for_the_administrator":
             MessageLookupByLibrary.simpleMessage("等待管理员回复"),
-        "welcome_name": m3,
+        "welcome_name": m6,
         "yes": MessageLookupByLibrary.simpleMessage("是"),
         "you_have": MessageLookupByLibrary.simpleMessage("你还有"),
         "your_roles_responsibilities":

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

@@ -1890,6 +1890,560 @@ class S {
     );
   }
 
+  /// `Apply`
+  String get apply {
+    return Intl.message(
+      'Apply',
+      name: 'apply',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Submit`
+  String get form_submit_title {
+    return Intl.message(
+      'Submit',
+      name: 'form_submit_title',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Approved`
+  String get approved {
+    return Intl.message(
+      'Approved',
+      name: 'approved',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Not Approved`
+  String get not_approved {
+    return Intl.message(
+      'Not Approved',
+      name: 'not_approved',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Sent on {time}`
+  String send_on_sometime(Object time) {
+    return Intl.message(
+      'Sent on $time',
+      name: 'send_on_sometime',
+      desc: '',
+      args: [time],
+    );
+  }
+
+  /// `Approved on {time}`
+  String approved_on_sometime(Object time) {
+    return Intl.message(
+      'Approved on $time',
+      name: 'approved_on_sometime',
+      desc: '',
+      args: [time],
+    );
+  }
+
+  /// `Not Approved on {time}`
+  String not_approved_on_sometime(Object time) {
+    return Intl.message(
+      'Not Approved on $time',
+      name: 'not_approved_on_sometime',
+      desc: '',
+      args: [time],
+    );
+  }
+
+  /// `Access Card-Owner`
+  String get access_card_owner {
+    return Intl.message(
+      'Access Card-Owner',
+      name: 'access_card_owner',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Access Card-Tenant`
+  String get access_card_tenant {
+    return Intl.message(
+      'Access Card-Tenant',
+      name: 'access_card_tenant',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Car Park Cancellation`
+  String get car_park_cancellation {
+    return Intl.message(
+      'Car Park Cancellation',
+      name: 'car_park_cancellation',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Moving In`
+  String get moving_in {
+    return Intl.message(
+      'Moving In',
+      name: 'moving_in',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Moving Out`
+  String get moving_out {
+    return Intl.message(
+      'Moving Out',
+      name: 'moving_out',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Overnight Parking`
+  String get overnight_parking {
+    return Intl.message(
+      'Overnight Parking',
+      name: 'overnight_parking',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Registration of 2nd Vehicle`
+  String get registration_of_2_vehicle {
+    return Intl.message(
+      'Registration of 2nd Vehicle',
+      name: 'registration_of_2_vehicle',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Renovation`
+  String get renovation {
+    return Intl.message(
+      'Renovation',
+      name: 'renovation',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Re-Registration of 1st Vehicle-Owner`
+  String get re_registration_of_1_vehicle_owner {
+    return Intl.message(
+      'Re-Registration of 1st Vehicle-Owner',
+      name: 're_registration_of_1_vehicle_owner',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Re-Registration of 1st Vehicle-Tenant`
+  String get re_registration_of_1_vehicle_tenant {
+    return Intl.message(
+      'Re-Registration of 1st Vehicle-Tenant',
+      name: 're_registration_of_1_vehicle_tenant',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Re-Registration of Bicycles`
+  String get re_registration_of_bicycle {
+    return Intl.message(
+      'Re-Registration of Bicycles',
+      name: 're_registration_of_bicycle',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Vehicle Label Replacement`
+  String get vehicle_label_replacement {
+    return Intl.message(
+      'Vehicle Label Replacement',
+      name: 'vehicle_label_replacement',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `If you would like more information,please send a feedback to the Management`
+  String get send_feedback_management {
+    return Intl.message(
+      'If you would like more information,please send a feedback to the Management',
+      name: 'send_feedback_management',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Processing in progress, please be patient...`
+  String get processing_in_progress {
+    return Intl.message(
+      'Processing in progress, please be patient...',
+      name: 'processing_in_progress',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `TYPE OF APPLICATION`
+  String get type_of_application {
+    return Intl.message(
+      'TYPE OF APPLICATION',
+      name: 'type_of_application',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `NOTES TO MANAGEMENT`
+  String get notes_to_management {
+    return Intl.message(
+      'NOTES TO MANAGEMENT',
+      name: 'notes_to_management',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Please enter the serial number(s) of faulty damaged or lost access card number OR provide serial numbers of all working access cards.`
+  String get access_card_desc {
+    return Intl.message(
+      'Please enter the serial number(s) of faulty damaged or lost access card number OR provide serial numbers of all working access cards.',
+      name: 'access_card_desc',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Status`
+  String get status {
+    return Intl.message(
+      'Status',
+      name: 'status',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `ATTACHMENTS`
+  String get attachments {
+    return Intl.message(
+      'ATTACHMENTS',
+      name: 'attachments',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Kindly attach a copy of owner's authorisation letter`
+  String get access_card_tenant_letter {
+    return Intl.message(
+      'Kindly attach a copy of owner\'s authorisation letter',
+      name: 'access_card_tenant_letter',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `OWNERSHIP STATUS`
+  String get ownership_status {
+    return Intl.message(
+      'OWNERSHIP STATUS',
+      name: 'ownership_status',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `VEHICLE NUMBER`
+  String get vehicle_number {
+    return Intl.message(
+      'VEHICLE NUMBER',
+      name: 'vehicle_number',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `IU NUMBER`
+  String get iu_number {
+    return Intl.message(
+      'IU NUMBER',
+      name: 'iu_number',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `VEHICLE MAKE/MODEL/ COLOUR`
+  String get vehicle_make_model_colour {
+    return Intl.message(
+      'VEHICLE MAKE/MODEL/ COLOUR',
+      name: 'vehicle_make_model_colour',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `START DATE`
+  String get start_date_caps {
+    return Intl.message(
+      'START DATE',
+      name: 'start_date_caps',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `END DATE`
+  String get end_date_caps {
+    return Intl.message(
+      'END DATE',
+      name: 'end_date_caps',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `TIME OF ARRIVAL`
+  String get time_of_arrival {
+    return Intl.message(
+      'TIME OF ARRIVAL',
+      name: 'time_of_arrival',
+      desc: '',
+      args: [],
+    );
+  }
+
+  // skipped getter for the 'moving_company ' key
+
+  // skipped getter for the 'person_in_charge ' key
+
+  /// `MOBILE NUMBER`
+  String get mobile_number_caps {
+    return Intl.message(
+      'MOBILE NUMBER',
+      name: 'mobile_number_caps',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `COMPANY ADDRESS`
+  String get company_address {
+    return Intl.message(
+      'COMPANY ADDRESS',
+      name: 'company_address',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `DATE OF ENTRY`
+  String get date_of_entry {
+    return Intl.message(
+      'DATE OF ENTRY',
+      name: 'date_of_entry',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `GUEST NAME`
+  String get guest_name {
+    return Intl.message(
+      'GUEST NAME',
+      name: 'guest_name',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `GUEST MOBILE NUMBER`
+  String get guest_mobile_number {
+    return Intl.message(
+      'GUEST MOBILE NUMBER',
+      name: 'guest_mobile_number',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `RENOVATION START DATE`
+  String get renovation_start_date {
+    return Intl.message(
+      'RENOVATION START DATE',
+      name: 'renovation_start_date',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `RENOVATION END DATE`
+  String get renovation_end_date {
+    return Intl.message(
+      'RENOVATION END DATE',
+      name: 'renovation_end_date',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `HACKING START DATE`
+  String get hacking_start_date {
+    return Intl.message(
+      'HACKING START DATE',
+      name: 'hacking_start_date',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `HACKING END DATE`
+  String get hacking_end_date {
+    return Intl.message(
+      'HACKING END DATE',
+      name: 'hacking_end_date',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Please upload a photo of your bicycle`
+  String get bicycle_desc {
+    return Intl.message(
+      'Please upload a photo of your bicycle',
+      name: 'bicycle_desc',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Please attach the following documents to accompany the vehicle registration form:`
+  String get label_txt {
+    return Intl.message(
+      'Please attach the following documents to accompany the vehicle registration form:',
+      name: 'label_txt',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `1)One Motoring car registration or log card`
+  String get label_txt_1 {
+    return Intl.message(
+      '1)One Motoring car registration or log card',
+      name: 'label_txt_1',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `2)Company Authorization Letter is required for company cars`
+  String get label_txt_2 {
+    return Intl.message(
+      '2)Company Authorization Letter is required for company cars',
+      name: 'label_txt_2',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `3) Car Rental Agreement is required for rental cars.`
+  String get label_txt_3 {
+    return Intl.message(
+      '3) Car Rental Agreement is required for rental cars.',
+      name: 'label_txt_3',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Kindly provide the following.`
+  String get car_cancel_txt {
+    return Intl.message(
+      'Kindly provide the following.',
+      name: 'car_cancel_txt',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `1. Car decals serial number`
+  String get car_cancel_txt_1 {
+    return Intl.message(
+      '1. Car decals serial number',
+      name: 'car_cancel_txt_1',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `2.Effective date of cancellation`
+  String get car_cancel_txt_2 {
+    return Intl.message(
+      '2.Effective date of cancellation',
+      name: 'car_cancel_txt_2',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `SIGNATURE`
+  String get signature {
+    return Intl.message(
+      'SIGNATURE',
+      name: 'signature',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `the resident,herein confirm that we have read and will fully abide by the rules & regulations governing car parking of Parc Life. We  further undertake to display the car park label, prominently on the top left(passenger side) portion of the front windscreen of our vehicle at all times whilst in Parc Life.`
+  String get car_cancel_signature_txt {
+    return Intl.message(
+      'the resident,herein confirm that we have read and will fully abide by the rules & regulations governing car parking of Parc Life. We  further undertake to display the car park label, prominently on the top left(passenger side) portion of the front windscreen of our vehicle at all times whilst in Parc Life.',
+      name: 'car_cancel_signature_txt',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Signed and agreed by`
+  String get signed_and_agreed_by {
+    return Intl.message(
+      'Signed and agreed by',
+      name: 'signed_and_agreed_by',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `If you would like to leave the Management a note to accompany this application or have any special requests, please leave them here.`
+  String get moving_in_msg {
+    return Intl.message(
+      'If you would like to leave the Management a note to accompany this application or have any special requests, please leave them here.',
+      name: 'moving_in_msg',
+      desc: '',
+      args: [],
+    );
+  }
+
   /// `Other`
   String get other {
     return Intl.message(

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

@@ -183,5 +183,62 @@
   "card_number": "Card Number",
   "payment_details": "Payment Details",
   "notes_to_recipient": "Notes to Recipient",
+  "apply": "Apply",
+  "form_submit_title": "Submit",
+  "approved": "Approved",
+  "not_approved": "Not Approved",
+  "send_on_sometime": "Sent on {time}",
+  "approved_on_sometime": "Approved on {time}",
+  "not_approved_on_sometime": "Not Approved on {time}",
+  "access_card_owner": "Access Card-Owner",
+  "access_card_tenant": "Access Card-Tenant",
+  "car_park_cancellation": "Car Park Cancellation",
+  "moving_in": "Moving In",
+  "moving_out": "Moving Out",
+  "overnight_parking": "Overnight Parking",
+  "registration_of_2_vehicle": "Registration of 2nd Vehicle",
+  "renovation": "Renovation",
+  "re_registration_of_1_vehicle_owner": "Re-Registration of 1st Vehicle-Owner",
+  "re_registration_of_1_vehicle_tenant": "Re-Registration of 1st Vehicle-Tenant",
+  "re_registration_of_bicycle": "Re-Registration of Bicycles",
+  "vehicle_label_replacement": "Vehicle Label Replacement",
+  "send_feedback_management": "If you would like more information,please send a feedback to the Management",
+  "processing_in_progress": "Processing in progress, please be patient...",
+  "type_of_application": "TYPE OF APPLICATION",
+  "notes_to_management": "NOTES TO MANAGEMENT",
+  "access_card_desc": "Please enter the serial number(s) of faulty damaged or lost access card number OR provide serial numbers of all working access cards.",
+  "status": "Status",
+  "attachments": "ATTACHMENTS",
+  "access_card_tenant_letter": "Kindly attach a copy of owner's authorisation letter",
+  "ownership_status": "OWNERSHIP STATUS",
+  "vehicle_number": "VEHICLE NUMBER",
+  "iu_number": "IU NUMBER",
+  "vehicle_make_model_colour": "VEHICLE MAKE/MODEL/ COLOUR",
+  "start_date_caps": "START DATE",
+  "end_date_caps": "END DATE",
+  "time_of_arrival": "TIME OF ARRIVAL",
+  "moving_company ": "MOVING COMPANY",
+  "person_in_charge ": "PERSON IN CHARGE",
+  "mobile_number_caps": "MOBILE NUMBER",
+  "company_address": "COMPANY ADDRESS",
+  "date_of_entry": "DATE OF ENTRY",
+  "guest_name": "GUEST NAME",
+  "guest_mobile_number": "GUEST MOBILE NUMBER",
+  "renovation_start_date": "RENOVATION START DATE",
+  "renovation_end_date": "RENOVATION END DATE",
+  "hacking_start_date": "HACKING START DATE",
+  "hacking_end_date": "HACKING END DATE",
+  "bicycle_desc": "Please upload a photo of your bicycle",
+  "label_txt": "Please attach the following documents to accompany the vehicle registration form:",
+  "label_txt_1": "1)One Motoring car registration or log card",
+  "label_txt_2": "2)Company Authorization Letter is required for company cars",
+  "label_txt_3": "3) Car Rental Agreement is required for rental cars.",
+  "car_cancel_txt": "Kindly provide the following.",
+  "car_cancel_txt_1": "1. Car decals serial number",
+  "car_cancel_txt_2": "2.Effective date of cancellation",
+  "signature": "SIGNATURE",
+  "car_cancel_signature_txt": "the resident,herein confirm that we have read and will fully abide by the rules & regulations governing car parking of Parc Life. We  further undertake to display the car park label, prominently on the top left(passenger side) portion of the front windscreen of our vehicle at all times whilst in Parc Life.",
+  "signed_and_agreed_by": "Signed and agreed by",
+  "moving_in_msg": "If you would like to leave the Management a note to accompany this application or have any special requests, please leave them here.",
   "other": "Other"
 }

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

@@ -183,5 +183,62 @@
   "card_number": "银行卡号",
   "payment_details": "支付详情",
   "notes_to_recipient": "收款人通知",
+  "apply": "可申请",
+  "form_submit_title": "已提交",
+  "approved": "已批准",
+  "not_approved": "未批准",
+  "send_on_sometime": "提交于{time}",
+  "approved_on_sometime": "批准于{time}",
+  "not_approved_on_sometime": "处理于{time}",
+  "access_card_owner": "业主门禁卡",
+  "access_card_tenant": "租户门禁卡",
+  "car_park_cancellation": "取消停车位",
+  "moving_in": "搬入",
+  "moving_out": "搬出",
+  "overnight_parking": "通宵停车",
+  "registration_of_2_vehicle": "第二辆车登记",
+  "renovation": "装修",
+  "re_registration_of_1_vehicle_owner": "业主第一辆车重新登记",
+  "re_registration_of_1_vehicle_tenant": "租户第一辆车重新登记",
+  "re_registration_of_bicycle": "自行车重新登记",
+  "vehicle_label_replacement": "车辆标签更换",
+  "send_feedback_management": "如果您想了解更多信息,请向管理层发送反馈",
+  "processing_in_progress": "正在处理中,请耐心等待...",
+  "type_of_application": "申请类型",
+  "notes_to_management": "给管理员备注",
+  "access_card_desc": "请输入故障损坏或丢失的门禁卡号的序列号,或提供所有可用门禁卡的序列号。",
+  "status": "状态",
+  "attachments": "附件",
+  "access_card_tenant_letter": "请附上业主授权书副本",
+  "ownership_status": "所有权状态",
+  "vehicle_number": "车牌号",
+  "iu_number": "IU 编号",
+  "vehicle_make_model_colour": "车辆品牌/型号/颜色",
+  "start_date_caps": "开始时间",
+  "end_date_caps": "结束时间",
+  "time_of_arrival": "到达时间",
+  "moving_company ": "搬家公司",
+  "person_in_charge ": "负责人",
+  "mobile_number_caps": "手机号码",
+  "company_address": "公司地址",
+  "date_of_entry": "进入日期",
+  "guest_name": "访客姓名",
+  "guest_mobile_number": "访客手机号码",
+  "renovation_start_date": "装修开始日期",
+  "renovation_end_date": "装修结束日期",
+  "hacking_start_date": "施工开始日期",
+  "hacking_end_date": "施工结束日期",
+  "bicycle_desc": "请上传您的自行车照片",
+  "label_txt": "请随车辆登记表附上以下文件:",
+  "label_txt_1": "1)一张机动车登记或日志卡",
+  "label_txt_2": "2)公司车辆需要公司授权书",
+  "label_txt_3": "3)租车需要租车协议。",
+  "car_cancel_txt": "请提供以下信息。",
+  "car_cancel_txt_1": "1.车辆序列号",
+  "car_cancel_txt_2": "2.车位取消的实施日期",
+  "signature": "签名",
+  "car_cancel_signature_txt": "居民在此确认,我们已阅读并将完全遵守Parc Life的停车规则和规定。我们进一步承诺,在Parc Life期间,我们将始终在车辆前挡风玻璃的左上角(乘客侧)突出显示停车场标签。",
+  "signed_and_agreed_by": "签字并同意",
+  "moving_in_msg": "如果您想在申请时给管理层留一张便条或有任何特殊要求,请在此处留下。",
   "other": "其他"
 }

+ 57 - 0
packages/cs_resources/lib/l10n/intl_zh_HK.arb

@@ -169,5 +169,62 @@
   "card_number": "银行卡号",
   "payment_details": "支付详情",
   "notes_to_recipient": "收款人通知",
+  "apply": "可申请",
+  "form_submit_title": "已提交",
+  "approved": "已批准",
+  "not_approved": "未批准",
+  "send_on_sometime": "提交于{time}",
+  "approved_on_sometime": "批准于{time}",
+  "not_approved_on_sometime": "处理于{time}",
+  "access_card_owner": "业主门禁卡",
+  "access_card_tenant": "租户门禁卡",
+  "car_park_cancellation": "取消停车位",
+  "moving_in": "搬入",
+  "moving_out": "搬出",
+  "overnight_parking": "通宵停车",
+  "registration_of_2_vehicle": "第二辆车登记",
+  "renovation": "装修",
+  "re_registration_of_1_vehicle_owner": "业主第一辆车重新登记",
+  "re_registration_of_1_vehicle_tenant": "租户第一辆车重新登记",
+  "re_registration_of_bicycle": "自行车重新登记",
+  "vehicle_label_replacement": "车辆标签更换",
+  "send_feedback_management": "如果您想了解更多信息,请向管理层发送反馈",
+  "processing_in_progress": "正在处理中,请耐心等待...",
+  "type_of_application": "申请类型",
+  "notes_to_management": "给管理员备注",
+  "access_card_desc": "请输入故障损坏或丢失的门禁卡号的序列号,或提供所有可用门禁卡的序列号。",
+  "status": "状态",
+  "attachments": "附件",
+  "access_card_tenant_letter": "请附上业主授权书副本",
+  "ownership_status": "所有权状态",
+  "vehicle_number": "车牌号",
+  "iu_number": "IU 编号",
+  "vehicle_make_model_colour": "车辆品牌/型号/颜色",
+  "start_date_caps": "开始时间",
+  "end_date_caps": "结束时间",
+  "time_of_arrival": "到达时间",
+  "moving_company ": "搬家公司",
+  "person_in_charge ": "负责人",
+  "mobile_number_caps": "手机号码",
+  "company_address": "公司地址",
+  "date_of_entry": "进入日期",
+  "guest_name": "访客姓名",
+  "guest_mobile_number": "访客手机号码",
+  "renovation_start_date": "装修开始日期",
+  "renovation_end_date": "装修结束日期",
+  "hacking_start_date": "施工开始日期",
+  "hacking_end_date": "施工结束日期",
+  "bicycle_desc": "请上传您的自行车照片",
+  "label_txt": "请随车辆登记表附上以下文件:",
+  "label_txt_1": "1)一张机动车登记或日志卡",
+  "label_txt_2": "2)公司车辆需要公司授权书",
+  "label_txt_3": "3)租车需要租车协议。",
+  "car_cancel_txt": "请提供以下信息。",
+  "car_cancel_txt_1": "1.车辆序列号",
+  "car_cancel_txt_2": "2.车位取消的实施日期",
+  "signature": "签名",
+  "car_cancel_signature_txt": "居民在此确认,我们已阅读并将完全遵守Parc Life的停车规则和规定。我们进一步承诺,在Parc Life期间,我们将始终在车辆前挡风玻璃的左上角(乘客侧)突出显示停车场标签。",
+  "signed_and_agreed_by": "签字并同意",
+  "moving_in_msg": "如果您想在申请时给管理层留一张便条或有任何特殊要求,请在此处留下。",
   "other": "其他"
 }

+ 1 - 0
packages/cs_resources/pubspec.yaml

@@ -35,6 +35,7 @@ flutter:
     - assets/facility/
     - assets/service/
     - assets/payment/
+    - assets/form/
 
 
 flutter_intl: