Procházet zdrojové kódy

payment模块的修改

liukai před 3 měsíci
rodič
revize
31c26d7c14
47 změnil soubory, kde provedl 563 přidání a 940 odebrání
  1. 0 18
      packages/cpt_main/lib/modules/visitor/visitor_view_model.dart
  2. 1 1
      packages/cpt_payment/lib/modules/add_card/add_card_view_model.g.dart
  3. 1 1
      packages/cpt_payment/lib/modules/choose_card/choose_card_view_model.g.dart
  4. 0 57
      packages/cpt_payment/lib/modules/payment/condo/active/condo_active_screen.dart
  5. 0 135
      packages/cpt_payment/lib/modules/payment/condo/active/item_condo_active.dart
  6. 0 130
      packages/cpt_payment/lib/modules/payment/condo/history/condo_history_view_model.dart
  7. 0 136
      packages/cpt_payment/lib/modules/payment/condo/history/item_condo_active.dart
  8. 0 31
      packages/cpt_payment/lib/modules/payment/condo/payment/condo_payment_state.dart
  9. 0 130
      packages/cpt_payment/lib/modules/payment/condo/payment/condo_payment_view_model.dart
  10. 0 27
      packages/cpt_payment/lib/modules/payment/condo/payment/condo_payment_view_model.g.dart
  11. 7 8
      packages/cpt_payment/lib/modules/payment/condo/history/condo_history_screen.dart
  12. 4 4
      packages/cpt_payment/lib/modules/payment/condo/active/condo_active_state.dart
  13. 5 6
      packages/cpt_payment/lib/modules/payment/condo/active/condo_active_view_model.dart
  14. 11 11
      packages/cpt_payment/lib/modules/payment/condo/active/condo_active_view_model.g.dart
  15. 2 2
      packages/cpt_payment/lib/modules/payment/condo/history/item_condo_history.dart
  16. 1 1
      packages/cpt_payment/lib/modules/payment/manage/manage_view_model.g.dart
  17. 11 7
      packages/cpt_payment/lib/modules/payment/condo/payment/item_condo_payment.dart
  18. 7 8
      packages/cpt_payment/lib/modules/payment/condo/payment/condo_payment_screen.dart
  19. 7 6
      packages/cpt_payment/lib/modules/payment/condo/history/condo_history_state.dart
  20. 25 0
      packages/cpt_payment/lib/modules/payment/payment/payment_list_types.dart
  21. 109 0
      packages/cpt_payment/lib/modules/payment/payment/payment_list_view_model.dart
  22. 11 11
      packages/cpt_payment/lib/modules/payment/condo/history/condo_history_view_model.g.dart
  23. 29 80
      packages/cpt_payment/lib/modules/payment/payment_page.dart
  24. 1 1
      packages/cpt_payment/lib/modules/payment_confirm/payment_confirm_view_model.g.dart
  25. 1 2
      packages/cpt_payment/lib/modules/payment_info/payment_info_page.dart
  26. 1 1
      packages/cpt_payment/lib/modules/payment_info/payment_info_view_model.g.dart
  27. 6 6
      packages/cpt_payment/lib/router/page/payment_page_router.dart
  28. 27 47
      packages/cpt_payment/lib/router/page/payment_page_router.gr.dart
  29. 5 0
      packages/cs_domain/lib/constants/api_constants.dart
  30. 51 0
      packages/cs_domain/lib/entity/payment_page_entity.dart
  31. 9 0
      packages/cs_domain/lib/generated/json/base/json_convert_content.dart
  32. 121 0
      packages/cs_domain/lib/generated/json/payment_page_entity.g.dart
  33. 0 63
      packages/cs_domain/lib/repository/demo_repository.dart
  34. 54 0
      packages/cs_domain/lib/repository/payment_repository.dart
  35. 9 9
      packages/cs_domain/lib/repository/demo_repository.g.dart
  36. binární
      packages/cs_resources/assets/payment/condo_icon.webp
  37. binární
      packages/cs_resources/assets/payment/history_icon.webp
  38. binární
      packages/cs_resources/assets/payment/info_icon.webp
  39. binární
      packages/cs_resources/assets/payment/manage_icon.webp
  40. binární
      packages/cs_resources/assets/payment/payment_icon.webp
  41. binární
      packages/cs_resources/assets/payment/property_payment_icon.webp
  42. 3 1
      packages/cs_resources/lib/generated/assets.dart
  43. 5 0
      packages/cs_resources/lib/generated/intl/messages_en.dart
  44. 30 0
      packages/cs_resources/lib/generated/l10n.dart
  45. 3 0
      packages/cs_resources/lib/l10n/intl_en.arb
  46. 3 0
      packages/cs_resources/lib/l10n/intl_zh_CN.arb
  47. 3 0
      packages/cs_resources/lib/l10n/intl_zh_HK.arb

+ 0 - 18
packages/cpt_main/lib/modules/visitor/visitor_view_model.dart

@@ -1,9 +1,5 @@
-import 'package:domain/repository/demo_repository.dart';
-import 'package:flutter/material.dart';
-import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 
 
-import 'package:shared/utils/log_utils.dart';
 
 
 import 'visitor_state.dart';
 import 'visitor_state.dart';
 
 
@@ -11,24 +7,10 @@ part 'visitor_view_model.g.dart';
 
 
 @riverpod
 @riverpod
 class VisitorViewModel extends _$VisitorViewModel {
 class VisitorViewModel extends _$VisitorViewModel {
-  late DemoRepository demoRepository;
 
 
   @override
   @override
   VisitorState build() {
   VisitorState build() {
-    demoRepository = ref.read(demoRepositoryProvider);
     return VisitorState();
     return VisitorState();
   }
   }
 
 
-  /// 获取服务器时间测试
-  void fetchServerTime() async {
-    //请求网络
-    final result = await demoRepository.fetchServerTime("");
-    //校验成功失败
-    if (result.isSuccess) {
-      state = state.copyWith(serverTime: result.data);
-      ToastEngine.show("当前服务器时间戳:${result.data?.timestamps}");
-    } else {
-      ToastEngine.show(result.errorMsg ?? "Network Load Error");
-    }
-  }
 }
 }

+ 1 - 1
packages/cpt_payment/lib/modules/add_card/add_card_view_model.g.dart

@@ -6,7 +6,7 @@ part of 'add_card_view_model.dart';
 // RiverpodGenerator
 // RiverpodGenerator
 // **************************************************************************
 // **************************************************************************
 
 
-String _$addCardViewModelHash() => r'5e7c5e5596a80e95d8dbcc1eb05daa4023684eb9';
+String _$addCardViewModelHash() => r'3d41700a8cb8f07e0f92fc72ffc7718916f00d03';
 
 
 /// See also [AddCardViewModel].
 /// See also [AddCardViewModel].
 @ProviderFor(AddCardViewModel)
 @ProviderFor(AddCardViewModel)

+ 1 - 1
packages/cpt_payment/lib/modules/choose_card/choose_card_view_model.g.dart

@@ -7,7 +7,7 @@ part of 'choose_card_view_model.dart';
 // **************************************************************************
 // **************************************************************************
 
 
 String _$chooseCardViewModelHash() =>
 String _$chooseCardViewModelHash() =>
-    r'2a690cc283527d4b52eff532a80fb1c9c6a397d8';
+    r'695dfc67ae41a495d3df9ee35782c4dc4e881154';
 
 
 /// See also [ChooseCardViewModel].
 /// See also [ChooseCardViewModel].
 @ProviderFor(ChooseCardViewModel)
 @ProviderFor(ChooseCardViewModel)

+ 0 - 57
packages/cpt_payment/lib/modules/payment/condo/active/condo_active_screen.dart

@@ -1,57 +0,0 @@
-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 'condo_active_view_model.dart';
-import 'item_condo_active.dart';
-
-@RoutePage()
-class CondoActiveScreen extends HookConsumerWidget {
-  @override
-  Widget build(BuildContext context, WidgetRef ref) {
-    final viewModel = ref.read(condoActiveViewModelProvider.notifier);
-    final state = ref.watch(condoActiveViewModelProvider);
-
-    useEffect(() {
-      // 组件挂载时执行 - 执行接口请求
-      Future.microtask(() => viewModel.fetchList());
-      return () {
-        // 组件卸载时执行
-      };
-    }, []);
-
-    return Container(
-      padding: const EdgeInsets.only(top: 60),
-      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 CondoActiveItem(index: index, item: state.datas[index]).onTap(() {
-
-                    });
-                  },
-                  childCount: state.datas.length,
-                ))
-          ],
-        ),
-      ).marginOnly(top: 5, bottom: 5),
-    );
-  }
-}

+ 0 - 135
packages/cpt_payment/lib/modules/payment/condo/active/item_condo_active.dart

@@ -1,135 +0,0 @@
-
-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_text_view.dart';
-
-///  Condo的Active的Item
-class CondoActiveItem extends StatelessWidget {
-  final int index;
-  final String item;
-
-  const CondoActiveItem({
-    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: 23),
-      decoration: BoxDecoration(
-        color: context.appColors.whiteBG,
-        borderRadius: BorderRadius.circular(6.0), // 圆角
-        boxShadow: [
-          BoxShadow(
-            color: const Color(0xFFB8BFD9).withOpacity(0.3), // 阴影颜色
-            offset: const Offset(0, 3), // 阴影的偏移量
-            blurRadius: 8.0, // 模糊半径
-            spreadRadius: 3.0, // 扩散半径
-          ),
-        ],
-      ),
-      child: Row(
-        mainAxisSize: MainAxisSize.max,
-        crossAxisAlignment: CrossAxisAlignment.start,
-        children: [
-          Column(
-            crossAxisAlignment: CrossAxisAlignment.start,
-            children: [
-              //设施
-              MyTextView(
-                "Lift Padding",
-                fontSize: 16,
-                maxLines: 3,
-                textColor: context.appColors.textBlack,
-                isFontMedium: true,
-              ),
-
-              //预订人
-              MyTextView(
-                S.current.booked_by_someone("Wu Bing Bing"),
-                fontSize: 14,
-                marginTop: 3,
-                textColor: context.appColors.textBlack,
-                isFontRegular: true,
-              ),
-
-              //日期
-              MyTextView(
-                "Tue,24 Oct 2023",
-                fontSize: 14,
-                marginTop: 16,
-                textColor: context.appColors.textBlack,
-                isFontRegular: true,
-              ),
-
-              //时间
-              MyTextView(
-                "05:00 PM-10:00 PM",
-                fontSize: 14,
-                marginBottom: 7,
-                marginTop: 3,
-                textColor: context.appColors.textBlack,
-                isFontRegular: true,
-              ),
-
-              //标签
-              Row(
-                children: [
-                  MyTextView(
-                    "Fee Paid",
-                    textColor: context.appColors.textPrimary,
-                    fontSize: 13,
-                    isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
-                    cornerRadius: 3,
-                    paddingLeft: 7,
-                    marginRight: 6,
-                    paddingRight: 7,
-                    paddingTop: 3,
-                    paddingBottom: 3,
-                  ),
-                  MyTextView(
-                    "Deposit",
-                    textColor: context.appColors.textPrimary,
-                    fontSize: 13,
-                    isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
-                    cornerRadius: 3,
-                    paddingLeft: 7,
-                    marginRight: 6,
-                    paddingRight: 7,
-                    paddingTop: 3,
-                    paddingBottom: 3,
-                  )
-                ],
-              )
-            ],
-          ).expanded(),
-          Column(
-            mainAxisSize: MainAxisSize.min,
-            mainAxisAlignment:MainAxisAlignment.start,
-            crossAxisAlignment: CrossAxisAlignment.start,
-            children: [
-              //查看按钮
-              MyTextView(
-                S.current.view,
-                textColor: Colors.white,
-                backgroundColor: context.appColors.btnBgDefault,
-                cornerRadius: 7,
-                paddingTop: 9,
-                paddingBottom: 9,
-                textAlign: TextAlign.center,
-                boxWidth: 60,
-              )
-            ],
-          )
-        ],
-      ),
-    );
-  }
-}

+ 0 - 130
packages/cpt_payment/lib/modules/payment/condo/history/condo_history_view_model.dart

@@ -1,130 +0,0 @@
-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 'condo_history_state.dart';
-
-part 'condo_history_view_model.g.dart';
-
-@riverpod
-class CondoHistoryViewModel extends _$CondoHistoryViewModel {
-  var _curPage = 1; //请求参数当前的页面
-  var _needShowPlaceholder = true; //是否展示LoadingView
-
-  // Refresh 控制器
-  final EasyRefreshController refreshController = EasyRefreshController(
-    controlFinishRefresh: true,  //允许刷新
-    controlFinishLoad: true,   //允许加载
-  );
-
-  @override
-  CondoHistoryState build() {
-    return CondoHistoryState(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);
-//     }
-//   }
-// }
-}

+ 0 - 136
packages/cpt_payment/lib/modules/payment/condo/history/item_condo_active.dart

@@ -1,136 +0,0 @@
-
-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_text_view.dart';
-
-///  Condo的Active的Item
-class CondoActiveItem extends StatelessWidget {
-  final int index;
-  final String item;
-
-  const CondoActiveItem({
-    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: 25),
-      decoration: BoxDecoration(
-        color: context.appColors.whiteBG,
-        borderRadius: BorderRadius.circular(6.0), // 圆角
-      ),
-      child: Row(
-        mainAxisSize: MainAxisSize.max,
-        crossAxisAlignment: CrossAxisAlignment.start,
-        children: [
-          Column(
-            crossAxisAlignment: CrossAxisAlignment.start,
-            children: [
-              //设施
-              MyTextView(
-                "Lift Padding",
-                fontSize: 16,
-                maxLines: 3,
-                textColor: context.appColors.textBlack,
-                isFontMedium: true,
-              ),
-
-              //分类
-              MyTextView(
-                "Booked by YONGLIANG WU",
-                fontSize: 14,
-                marginTop: 3,
-                textColor: context.appColors.textBlack,
-                isFontRegular: true,
-              ),
-
-              //预订人
-              MyTextView(
-                S.current.booked_by_someone("Wu Bing Bing"),
-                fontSize: 14,
-                marginTop: 3,
-                textColor: context.appColors.textBlack,
-                isFontRegular: true,
-              ),
-
-              //日期
-              MyTextView(
-                "Tue,24 Oct 2023",
-                fontSize: 14,
-                marginTop: 16,
-                textColor: context.appColors.textBlack,
-                isFontRegular: true,
-              ),
-
-              //时间
-              MyTextView(
-                "05:00 PM-10:00 PM",
-                fontSize: 14,
-                marginBottom: 7,
-                marginTop: 3,
-                textColor: context.appColors.textBlack,
-                isFontRegular: true,
-              ),
-
-              //标签
-              Row(
-                children: [
-                  MyTextView(
-                    "Fee Paid",
-                    textColor: context.appColors.textPrimary,
-                    fontSize: 13,
-                    isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
-                    cornerRadius: 3,
-                    paddingLeft: 7,
-                    marginRight: 6,
-                    paddingRight: 7,
-                    paddingTop: 3,
-                    paddingBottom: 3,
-                  ),
-                  MyTextView(
-                    "Deposit",
-                    textColor: context.appColors.textPrimary,
-                    fontSize: 13,
-                    isFontRegular: true,
-                    backgroundColor: context.appColors.lightPurpleBg,
-                    cornerRadius: 3,
-                    paddingLeft: 7,
-                    marginRight: 6,
-                    paddingRight: 7,
-                    paddingTop: 3,
-                    paddingBottom: 3,
-                  )
-                ],
-              )
-            ],
-          ).expanded(),
-          Column(
-            mainAxisSize: MainAxisSize.min,
-            mainAxisAlignment:MainAxisAlignment.start,
-            crossAxisAlignment: CrossAxisAlignment.start,
-            children: [
-              //查看按钮
-              MyTextView(
-                S.current.view,
-                textColor: Colors.white,
-                backgroundColor: context.appColors.btnBgDefault,
-                cornerRadius: 7,
-                paddingTop: 9,
-                paddingBottom: 9,
-                textAlign: TextAlign.center,
-                boxWidth: 60,
-              )
-            ],
-          )
-        ],
-      ),
-    );
-  }
-}

+ 0 - 31
packages/cpt_payment/lib/modules/payment/condo/payment/condo_payment_state.dart

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

+ 0 - 130
packages/cpt_payment/lib/modules/payment/condo/payment/condo_payment_view_model.dart

@@ -1,130 +0,0 @@
-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 'condo_payment_state.dart';
-
-part 'condo_payment_view_model.g.dart';
-
-@riverpod
-class CondoPaymentViewModel extends _$CondoPaymentViewModel{
-  var _curPage = 1; //请求参数当前的页面
-  var _needShowPlaceholder = true; //是否展示LoadingView
-
-  // Refresh 控制器
-  final EasyRefreshController refreshController = EasyRefreshController(
-    controlFinishRefresh: true,  //允许刷新
-    controlFinishLoad: true,   //允许加载
-  );
-
-  @override
-  CondoPaymentState build() {
-    return CondoPaymentState(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);
-//     }
-//   }
-// }
-}

+ 0 - 27
packages/cpt_payment/lib/modules/payment/condo/payment/condo_payment_view_model.g.dart

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

+ 7 - 8
packages/cpt_payment/lib/modules/payment/condo/history/condo_history_screen.dart

@@ -6,15 +6,15 @@ import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/load_state_layout.dart';
 import 'package:widgets/load_state_layout.dart';
 import 'package:widgets/widget_export.dart';
 import 'package:widgets/widget_export.dart';
 
 
-import 'condo_history_view_model.dart';
-import 'item_condo_history.dart';
+import 'history_list_view_model.dart';
+import 'item_history_list.dart';
 
 
 @RoutePage()
 @RoutePage()
-class CondoHistoryScreen extends HookConsumerWidget {
+class HistoryListScreen extends HookConsumerWidget {
   @override
   @override
   Widget build(BuildContext context, WidgetRef ref) {
   Widget build(BuildContext context, WidgetRef ref) {
-    final viewModel = ref.read(condoHistoryViewModelProvider.notifier);
-    final state = ref.watch(condoHistoryViewModelProvider);
+    final viewModel = ref.read(historyListViewModelProvider.notifier);
+    final state = ref.watch(historyListViewModelProvider);
 
 
     useEffect(() {
     useEffect(() {
       // 组件挂载时执行 - 执行接口请求
       // 组件挂载时执行 - 执行接口请求
@@ -24,8 +24,7 @@ class CondoHistoryScreen extends HookConsumerWidget {
       };
       };
     }, []);
     }, []);
 
 
-    return Container(
-      padding: const EdgeInsets.only(top: 60),
+    return SizedBox(
       width: double.infinity,
       width: double.infinity,
       height: double.infinity,
       height: double.infinity,
       child: EasyRefresh(
       child: EasyRefresh(
@@ -42,7 +41,7 @@ class CondoHistoryScreen extends HookConsumerWidget {
             SliverList(
             SliverList(
                 delegate: SliverChildBuilderDelegate(
                 delegate: SliverChildBuilderDelegate(
               (context, index) {
               (context, index) {
-                return CondoHistoryItem(index: index, item: state.datas[index]).onTap(() {});
+                return HistoryListItem(index: index, item: state.datas[index]).onTap(() {});
               },
               },
               childCount: state.datas.length,
               childCount: state.datas.length,
             ))
             ))

+ 4 - 4
packages/cpt_payment/lib/modules/payment/condo/active/condo_active_state.dart

@@ -1,6 +1,6 @@
 import 'package:widgets/load_state_layout.dart';
 import 'package:widgets/load_state_layout.dart';
 
 
-class CondoActiveState {
+class HistoryListState {
 
 
   //页面 LoadView 状态的展示
   //页面 LoadView 状态的展示
   LoadState loadingState;
   LoadState loadingState;
@@ -10,19 +10,19 @@ class CondoActiveState {
 
 
   // ===================================  Begin  ↓  ===================================
   // ===================================  Begin  ↓  ===================================
 
 
-  CondoActiveState({
+  HistoryListState({
     this.loadingState = LoadState.State_Loading,
     this.loadingState = LoadState.State_Loading,
     this.errorMessage,
     this.errorMessage,
     required this.datas,
     required this.datas,
   });
   });
 
 
-  CondoActiveState copyWith({
+  HistoryListState copyWith({
     LoadState? loadingState,
     LoadState? loadingState,
     String? errorMessage,
     String? errorMessage,
     bool? needShowPlaceholder,
     bool? needShowPlaceholder,
     List<String>? datas,
     List<String>? datas,
   }) {
   }) {
-    return CondoActiveState(
+    return HistoryListState(
       errorMessage: errorMessage ?? this.errorMessage,
       errorMessage: errorMessage ?? this.errorMessage,
       loadingState: loadingState ?? this.loadingState,
       loadingState: loadingState ?? this.loadingState,
       datas: datas ?? this.datas,
       datas: datas ?? this.datas,

+ 5 - 6
packages/cpt_payment/lib/modules/payment/condo/active/condo_active_view_model.dart

@@ -3,12 +3,11 @@ import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/load_state_layout.dart';
 import 'package:widgets/load_state_layout.dart';
 import 'package:widgets/widget_export.dart';
 import 'package:widgets/widget_export.dart';
 
 
-import 'condo_active_state.dart';
-
-part 'condo_active_view_model.g.dart';
+import 'history_list_state.dart';
+part 'history_list_view_model.g.dart';
 
 
 @riverpod
 @riverpod
-class CondoActiveViewModel extends _$CondoActiveViewModel {
+class HistoryListViewModel extends _$HistoryListViewModel {
   var _curPage = 1; //请求参数当前的页面
   var _curPage = 1; //请求参数当前的页面
   var _needShowPlaceholder = true; //是否展示LoadingView
   var _needShowPlaceholder = true; //是否展示LoadingView
 
 
@@ -19,8 +18,8 @@ class CondoActiveViewModel extends _$CondoActiveViewModel {
   );
   );
 
 
   @override
   @override
-  CondoActiveState build() {
-    return CondoActiveState(datas: []);
+  HistoryListState build() {
+    return HistoryListState(datas: []);
   }
   }
 
 
   //刷新页面状态
   //刷新页面状态

+ 11 - 11
packages/cpt_payment/lib/modules/payment/condo/active/condo_active_view_model.g.dart

@@ -1,27 +1,27 @@
 // GENERATED CODE - DO NOT MODIFY BY HAND
 // GENERATED CODE - DO NOT MODIFY BY HAND
 
 
-part of 'condo_active_view_model.dart';
+part of 'history_list_view_model.dart';
 
 
 // **************************************************************************
 // **************************************************************************
 // RiverpodGenerator
 // RiverpodGenerator
 // **************************************************************************
 // **************************************************************************
 
 
-String _$condoActiveViewModelHash() =>
-    r'd77976d1c081c1aabfafe5895b04bc202ec0beb2';
+String _$historyListViewModelHash() =>
+    r'87eda063f8265a39a0f0ec47b4b1c688ed09b8d1';
 
 
-/// See also [CondoActiveViewModel].
-@ProviderFor(CondoActiveViewModel)
-final condoActiveViewModelProvider = AutoDisposeNotifierProvider<
-    CondoActiveViewModel, CondoActiveState>.internal(
-  CondoActiveViewModel.new,
-  name: r'condoActiveViewModelProvider',
+/// See also [HistoryListViewModel].
+@ProviderFor(HistoryListViewModel)
+final historyListViewModelProvider = AutoDisposeNotifierProvider<
+    HistoryListViewModel, HistoryListState>.internal(
+  HistoryListViewModel.new,
+  name: r'historyListViewModelProvider',
   debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
   debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
       ? null
       ? null
-      : _$condoActiveViewModelHash,
+      : _$historyListViewModelHash,
   dependencies: null,
   dependencies: null,
   allTransitiveDependencies: null,
   allTransitiveDependencies: null,
 );
 );
 
 
-typedef _$CondoActiveViewModel = AutoDisposeNotifier<CondoActiveState>;
+typedef _$HistoryListViewModel = AutoDisposeNotifier<HistoryListState>;
 // ignore_for_file: type=lint
 // 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
 // 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

+ 2 - 2
packages/cpt_payment/lib/modules/payment/condo/history/item_condo_history.dart

@@ -5,11 +5,11 @@ import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_text_view.dart';
 import 'package:widgets/my_text_view.dart';
 
 
 ///  Condo的History的Item
 ///  Condo的History的Item
-class CondoHistoryItem extends StatelessWidget {
+class HistoryListItem extends StatelessWidget {
   final int index;
   final int index;
   final String item;
   final String item;
 
 
-  const CondoHistoryItem({
+  const HistoryListItem({
     required this.index,
     required this.index,
     required this.item,
     required this.item,
   });
   });

+ 1 - 1
packages/cpt_payment/lib/modules/payment/manage/manage_view_model.g.dart

@@ -6,7 +6,7 @@ part of 'manage_view_model.dart';
 // RiverpodGenerator
 // RiverpodGenerator
 // **************************************************************************
 // **************************************************************************
 
 
-String _$manageViewModelHash() => r'293b21a526990c4b60cd1875304d814dbd719f8e';
+String _$manageViewModelHash() => r'f4c5c44517f9bd9640d429bf8f95209aae685b8a';
 
 
 /// See also [ManageViewModel].
 /// See also [ManageViewModel].
 @ProviderFor(ManageViewModel)
 @ProviderFor(ManageViewModel)

+ 11 - 7
packages/cpt_payment/lib/modules/payment/condo/payment/item_condo_payment.dart

@@ -1,15 +1,18 @@
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:domain/entity/payment_page_entity.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
 import 'package:widgets/my_text_view.dart';
 
 
+import 'payment_list_types.dart';
+
 /// Condo Active 的 Item 布局
 /// Condo Active 的 Item 布局
-class CondoPaymentItem extends StatelessWidget {
+class PaymentListItem extends StatelessWidget {
   final int index;
   final int index;
-  final String item;
+  final PaymentPageList item;
 
 
-  const CondoPaymentItem({
+  const PaymentListItem({
     required this.index,
     required this.index,
     required this.item,
     required this.item,
   });
   });
@@ -37,13 +40,14 @@ class CondoPaymentItem extends StatelessWidget {
         mainAxisSize: MainAxisSize.max,
         mainAxisSize: MainAxisSize.max,
         crossAxisAlignment: CrossAxisAlignment.center,
         crossAxisAlignment: CrossAxisAlignment.center,
         children: [
         children: [
-          MyLoadImage(
-            "https://img0.baidu.com/it/u=2679587808,2501833998&fm=253&fmt=auto&app=120&f=JPEG?w=372&h=400",
-            height: 33,
+          MyAssetImage(
+            PaymentListTypes.iconMap[item.type]?['icon_path'],
+            width: PaymentListTypes.iconMap[item.type]?['width'],
+            height: PaymentListTypes.iconMap[item.type]?['height'],
           ),
           ),
 
 
           MyTextView(
           MyTextView(
-            "Function Room",
+            PaymentListTypes.iconMap[item.type]?['name'],
             marginLeft: 17,
             marginLeft: 17,
             fontSize: 16,
             fontSize: 16,
             textColor: context.appColors.textBlack,
             textColor: context.appColors.textBlack,

+ 7 - 8
packages/cpt_payment/lib/modules/payment/condo/payment/condo_payment_screen.dart

@@ -7,15 +7,15 @@ import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/load_state_layout.dart';
 import 'package:widgets/load_state_layout.dart';
 import 'package:widgets/widget_export.dart';
 import 'package:widgets/widget_export.dart';
-import 'condo_payment_view_model.dart';
-import 'item_condo_payment.dart';
+import 'payment_list_view_model.dart';
+import 'item_payment_list.dart';
 
 
 @RoutePage()
 @RoutePage()
-class CondoPaymentScreen extends HookConsumerWidget {
+class PaymentListScreen extends HookConsumerWidget {
   @override
   @override
   Widget build(BuildContext context, WidgetRef ref) {
   Widget build(BuildContext context, WidgetRef ref) {
-    final viewModel = ref.read(condoPaymentViewModelProvider.notifier);
-    final state = ref.watch(condoPaymentViewModelProvider);
+    final viewModel = ref.read(paymentListViewModelProvider.notifier);
+    final state = ref.watch(paymentListViewModelProvider);
 
 
     useEffect(() {
     useEffect(() {
       // 组件挂载时执行 - 执行接口请求
       // 组件挂载时执行 - 执行接口请求
@@ -25,8 +25,7 @@ class CondoPaymentScreen extends HookConsumerWidget {
       };
       };
     }, []);
     }, []);
 
 
-    return Container(
-      padding: const EdgeInsets.only(top: 60),
+    return SizedBox(
       width: double.infinity,
       width: double.infinity,
       height: double.infinity,
       height: double.infinity,
       child: EasyRefresh(
       child: EasyRefresh(
@@ -43,7 +42,7 @@ class CondoPaymentScreen extends HookConsumerWidget {
             SliverList(
             SliverList(
                 delegate: SliverChildBuilderDelegate(
                 delegate: SliverChildBuilderDelegate(
                       (context, index) {
                       (context, index) {
-                    return CondoPaymentItem(index: index, item: state.datas[index]).onTap(() {
+                    return PaymentListItem(index: index, item: state.datas[index]).onTap(() {
                       //去信息页面
                       //去信息页面
                       PaymentInfoPage.startInstance(context: context);
                       PaymentInfoPage.startInstance(context: context);
                     });
                     });

+ 7 - 6
packages/cpt_payment/lib/modules/payment/condo/history/condo_history_state.dart

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

+ 25 - 0
packages/cpt_payment/lib/modules/payment/payment/payment_list_types.dart

@@ -0,0 +1,25 @@
+
+import 'package:cs_resources/generated/assets.dart';
+import 'package:cs_resources/generated/l10n.dart';
+
+
+class PaymentListTypes {
+  //对应的type类型 对应的icon的图片与宽高
+  static Map<String, Map<String, dynamic>> iconMap = {
+    //物业费
+    'property': {
+      'name': S.current.property_payment,
+      'icon_path': Assets.formCarVehicle,
+      'width': 39.5,
+      'height': 33.5,
+    },
+    //停车费
+    'vehicle': {
+      'name': S.current.parking_fee_payment,
+      'icon_path': Assets.paymentPropertyPaymentIcon,
+      'width': 39.5,
+      'height': 36.0,
+    },
+  };
+
+}

+ 109 - 0
packages/cpt_payment/lib/modules/payment/payment/payment_list_view_model.dart

@@ -0,0 +1,109 @@
+import 'package:domain/entity/payment_page_entity.dart';
+import 'package:domain/repository/payment_repository.dart';
+import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
+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 'payment_list_state.dart';
+
+part 'payment_list_view_model.g.dart';
+
+@riverpod
+class PaymentListViewModel extends _$PaymentListViewModel with DioCancelableMixin{
+  late final PaymentRepository _paymentRepository;
+  var _curPage = 1; //请求参数当前的页面
+  var _needShowPlaceholder = true; //是否展示LoadingView
+
+  // Refresh 控制器
+  final EasyRefreshController refreshController = EasyRefreshController(
+    controlFinishRefresh: true, //允许刷新
+    controlFinishLoad: true, //允许加载
+  );
+
+  @override
+  PaymentListState build() {
+    _paymentRepository = ref.read(paymentRepositoryProvider);
+    final state = PaymentListState(datas: []);
+    registerCancellation();
+    return state;
+  }
+
+  //刷新页面状态
+  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);
+    }
+
+    // 获取列表
+    var listResult = await _paymentRepository.fetchPaymentList(
+      type: 'pending',
+      curPage: _curPage,
+      cancelToken: cancelToken,
+    );
+
+    // 处理数据
+    if (listResult.isSuccess) {
+      handleList(listResult.data?.list);
+    } else {
+      changeLoadingState(LoadState.State_Error, listResult.errorMsg);
+    }
+
+    // 最后赋值
+    _needShowPlaceholder = false;
+  }
+
+  // 处理数据与展示的逻辑
+  void handleList(List<PaymentPageList>? list) {
+    if (list != null && list.isNotEmpty) {
+      //有数据,判断是刷新还是加载更多的数据
+      if (_curPage == 1) {
+        //刷新的方式
+        state = state.copyWith(datas: list);
+        refreshController.finishRefresh();
+
+        //更新展示的状态
+        changeLoadingState(LoadState.State_Success, null);
+      } else {
+        //加载更多
+        state.datas.addAll(List<PaymentPageList>.from(state.datas)..addAll(list));
+        refreshController.finishLoad();
+      }
+    } else {
+      if (_curPage == 1) {
+        //展示无数据的布局
+        state = state.copyWith(datas: []);
+        changeLoadingState(LoadState.State_Empty, null);
+        refreshController.finishRefresh();
+      } else {
+        //展示加载完成,没有更多数据了
+        refreshController.finishLoad(IndicatorResult.noMore);
+      }
+    }
+  }
+}

+ 11 - 11
packages/cpt_payment/lib/modules/payment/condo/history/condo_history_view_model.g.dart

@@ -1,27 +1,27 @@
 // GENERATED CODE - DO NOT MODIFY BY HAND
 // GENERATED CODE - DO NOT MODIFY BY HAND
 
 
-part of 'condo_history_view_model.dart';
+part of 'payment_list_view_model.dart';
 
 
 // **************************************************************************
 // **************************************************************************
 // RiverpodGenerator
 // RiverpodGenerator
 // **************************************************************************
 // **************************************************************************
 
 
-String _$condoHistoryViewModelHash() =>
-    r'7ab487088e11c7906117e903b6fcda88f4b5558c';
+String _$paymentListViewModelHash() =>
+    r'640d7c8a8415a9987bb43e592076c0ebc70c0f30';
 
 
-/// See also [CondoHistoryViewModel].
-@ProviderFor(CondoHistoryViewModel)
-final condoHistoryViewModelProvider = AutoDisposeNotifierProvider<
-    CondoHistoryViewModel, CondoHistoryState>.internal(
-  CondoHistoryViewModel.new,
-  name: r'condoHistoryViewModelProvider',
+/// See also [PaymentListViewModel].
+@ProviderFor(PaymentListViewModel)
+final paymentListViewModelProvider = AutoDisposeNotifierProvider<
+    PaymentListViewModel, PaymentListState>.internal(
+  PaymentListViewModel.new,
+  name: r'paymentListViewModelProvider',
   debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
   debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
       ? null
       ? null
-      : _$condoHistoryViewModelHash,
+      : _$paymentListViewModelHash,
   dependencies: null,
   dependencies: null,
   allTransitiveDependencies: null,
   allTransitiveDependencies: null,
 );
 );
 
 
-typedef _$CondoHistoryViewModel = AutoDisposeNotifier<CondoHistoryState>;
+typedef _$PaymentListViewModel = AutoDisposeNotifier<PaymentListState>;
 // ignore_for_file: type=lint
 // 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
 // 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

+ 29 - 80
packages/cpt_payment/lib/modules/payment/payment_page.dart

@@ -2,14 +2,11 @@ import 'package:cpt_payment/modules/payment/payment_view_model.dart';
 import 'package:cs_resources/generated/assets.dart';
 import 'package:cs_resources/generated/assets.dart';
 import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
-import 'package:cs_resources/theme/theme_config.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter/services.dart';
-import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:router/ext/auto_router_extensions.dart';
 import 'package:router/ext/auto_router_extensions.dart';
-import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_load_image.dart';
@@ -33,7 +30,6 @@ class PaymentPage extends HookConsumerWidget {
   @override
   @override
   Widget build(BuildContext context, WidgetRef ref) {
   Widget build(BuildContext context, WidgetRef ref) {
     final viewModel = ref.watch(paymentViewModelProvider.notifier);
     final viewModel = ref.watch(paymentViewModelProvider.notifier);
-    int selectedInnerIndex = 1; // 1-3索引记录当前的值
 
 
     return Scaffold(
     return Scaffold(
       appBar: MyAppBar.appBar(
       appBar: MyAppBar.appBar(
@@ -45,21 +41,13 @@ class PaymentPage extends HookConsumerWidget {
       body: AutoTabsRouter.pageView(
       body: AutoTabsRouter.pageView(
         routes: const [
         routes: const [
           InfoPageRoute(),
           InfoPageRoute(),
-          CondoPaymentPageRoute(),
-          CondoActivePageRoute(),
-          CondoHistoryPageRoute(),
+          PaymentListPageRoute(),
+          HistoryListPageRoute(),
           ManagePageRoute(),
           ManagePageRoute(),
         ],
         ],
         builder: (context, child, pageController) {
         builder: (context, child, pageController) {
           final tabsRouter = AutoTabsRouter.of(context);
           final tabsRouter = AutoTabsRouter.of(context);
 
 
-          pageController.addListener(() {
-            //监听赋值内部的选中索引
-            if (tabsRouter.activeIndex >= 1 && tabsRouter.activeIndex <= 3) {
-              selectedInnerIndex = tabsRouter.activeIndex;
-            }
-          });
-
           return Column(
           return Column(
             children: [
             children: [
               Container(
               Container(
@@ -71,9 +59,9 @@ class PaymentPage extends HookConsumerWidget {
                     _buildTopCategory(
                     _buildTopCategory(
                       context,
                       context,
                       Assets.paymentInfoIcon,
                       Assets.paymentInfoIcon,
-                      34,
-                      41,
-                      "Info",
+                      41.0,
+                      41.0,
+                      S.current.info,
                       tabsRouter.activeIndex == 0,
                       tabsRouter.activeIndex == 0,
                     ).onTap(
                     ).onTap(
                       () {
                       () {
@@ -82,69 +70,45 @@ class PaymentPage extends HookConsumerWidget {
                     ),
                     ),
                     _buildTopCategory(
                     _buildTopCategory(
                       context,
                       context,
-                      Assets.paymentCondoIcon,
-                      48,
-                      43,
-                      "Condo",
-                      tabsRouter.activeIndex == 1 || tabsRouter.activeIndex == 2 || tabsRouter.activeIndex == 3,
+                      Assets.paymentPaymentIcon,
+                      37.5,
+                      38.0,
+                      S.current.payment,
+                      tabsRouter.activeIndex == 1,
                     ).onTap(
                     ).onTap(
                       () {
                       () {
-                        tabsRouter.setActiveIndex(selectedInnerIndex);
+                        tabsRouter.setActiveIndex(1);
+                      },
+                    ),
+                    _buildTopCategory(
+                      context,
+                      Assets.paymentHistoryIcon,
+                      38.0,
+                      38.0,
+                      S.current.history,
+                      tabsRouter.activeIndex == 2,
+                    ).onTap(
+                          () {
+                        tabsRouter.setActiveIndex(2);
                       },
                       },
                     ),
                     ),
                     _buildTopCategory(
                     _buildTopCategory(
                       context,
                       context,
                       Assets.paymentManageIcon,
                       Assets.paymentManageIcon,
-                      52,
-                      46.5,
-                      "Manage",
-                      tabsRouter.activeIndex == 4,
+                      42.0,
+                      32.0,
+                      S.current.manage,
+                      tabsRouter.activeIndex == 3,
                     ).onTap(
                     ).onTap(
                       () {
                       () {
-                        tabsRouter.setActiveIndex(4);
+                        tabsRouter.setActiveIndex(3);
                       },
                       },
                     ),
                     ),
                   ],
                   ],
                 ),
                 ),
               ),
               ),
               Expanded(
               Expanded(
-                child: Stack(
-                  children: [
-                    //真正页面
-                    child,
-
-                    //顶部的子Tab
-                    Visibility(
-                      visible: tabsRouter.activeIndex >= 1 && tabsRouter.activeIndex <= 3,
-                      child: Row(
-                        mainAxisAlignment: MainAxisAlignment.spaceAround,
-                        children: [
-                          _buildInnerTab(
-                            context,
-                            S.current.payment,
-                            tabsRouter.activeIndex == 1,
-                          ).onTap(() {
-                            tabsRouter.setActiveIndex(1);
-                          }),
-                          _buildInnerTab(
-                            context,
-                            S.current.facility_active,
-                            tabsRouter.activeIndex == 2,
-                          ).onTap(() {
-                            tabsRouter.setActiveIndex(2);
-                          }),
-                          _buildInnerTab(
-                            context,
-                            S.current.history,
-                            tabsRouter.activeIndex == 3,
-                          ).onTap(() {
-                            tabsRouter.setActiveIndex(3);
-                          }),
-                        ],
-                      ).marginOnly(top: 14, bottom: 17),
-                    ),
-                  ],
-                ),
+                child: child,
               ),
               ),
             ],
             ],
           );
           );
@@ -191,19 +155,4 @@ class PaymentPage extends HookConsumerWidget {
     );
     );
   }
   }
 
 
-  //内部的Tab布局
-  Widget _buildInnerTab(BuildContext context, String title, bool isSelected) {
-    return MyTextView(
-      title,
-      fontSize: 16,
-      isFontMedium: true,
-      textColor: isSelected ? Colors.white : context.appColors.tabTextUnSelectedDefault,
-      backgroundColor: isSelected ? context.appColors.btnBgDefault : Colors.transparent,
-      cornerRadius: 16.5,
-      paddingLeft: 20,
-      paddingRight: 20,
-      paddingTop: 8,
-      paddingBottom: 8,
-    );
-  }
 }
 }

+ 1 - 1
packages/cpt_payment/lib/modules/payment_confirm/payment_confirm_view_model.g.dart

@@ -7,7 +7,7 @@ part of 'payment_confirm_view_model.dart';
 // **************************************************************************
 // **************************************************************************
 
 
 String _$paymentConfirmViewModelHash() =>
 String _$paymentConfirmViewModelHash() =>
-    r'26ef4699c914cade800b8ac812b34acda0988cd2';
+    r'd49571f12210320ab33926074746f9d30710dfbc';
 
 
 /// See also [PaymentConfirmViewModel].
 /// See also [PaymentConfirmViewModel].
 @ProviderFor(PaymentConfirmViewModel)
 @ProviderFor(PaymentConfirmViewModel)

+ 1 - 2
packages/cpt_payment/lib/modules/payment_info/payment_info_page.dart

@@ -1,4 +1,3 @@
-import 'package:cpt_payment/modules/payment/condo/active/condo_active_screen.dart';
 import 'package:cs_resources/generated/assets.dart';
 import 'package:cs_resources/generated/assets.dart';
 import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/generated/l10n.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
@@ -53,7 +52,7 @@ class PaymentInfoPage extends HookConsumerWidget {
                         children: [
                         children: [
                           const MyAssetImage(Assets.paymentInfoDetails, width: 27, height: 27),
                           const MyAssetImage(Assets.paymentInfoDetails, width: 27, height: 27),
                           MyTextView(
                           MyTextView(
-                            S.current.payment_details,
+                             S.current.payment_details,
                             textColor: context.appColors.textBlack,
                             textColor: context.appColors.textBlack,
                             fontSize: 17,
                             fontSize: 17,
                             marginLeft: 14,
                             marginLeft: 14,

+ 1 - 1
packages/cpt_payment/lib/modules/payment_info/payment_info_view_model.g.dart

@@ -7,7 +7,7 @@ part of 'payment_info_view_model.dart';
 // **************************************************************************
 // **************************************************************************
 
 
 String _$paymentInfoViewModelHash() =>
 String _$paymentInfoViewModelHash() =>
-    r'f653c43001ec0c83f0e85f41b0b14919b14a78a5';
+    r'24cf0498be6ba7ed9cff855d084e4376b1db3613';
 
 
 /// See also [PaymentInfoViewModel].
 /// See also [PaymentInfoViewModel].
 @ProviderFor(PaymentInfoViewModel)
 @ProviderFor(PaymentInfoViewModel)

+ 6 - 6
packages/cpt_payment/lib/router/page/payment_page_router.dart

@@ -6,14 +6,15 @@ import 'package:router/path/router_path.dart';
 import '../../modules/payment/payment_page.dart';
 import '../../modules/payment/payment_page.dart';
 import '../../modules/payment/info/info_screen.dart';
 import '../../modules/payment/info/info_screen.dart';
 import '../../modules/payment/manage/manage_screen.dart';
 import '../../modules/payment/manage/manage_screen.dart';
-import '../../modules/payment/condo/active/condo_active_screen.dart';
-import '../../modules/payment/condo/history/condo_history_screen.dart';
-import '../../modules/payment/condo/payment/condo_payment_screen.dart';
+import '../../modules/payment/history/history_list_screen.dart';
+import '../../modules/payment/payment/payment_list_screen.dart';
 import '../../modules/payment_info/payment_info_page.dart';
 import '../../modules/payment_info/payment_info_page.dart';
 import '../../modules/payment_confirm/payment_confirm_page.dart';
 import '../../modules/payment_confirm/payment_confirm_page.dart';
 import '../../modules/payment_success/payment_success_page.dart';
 import '../../modules/payment_success/payment_success_page.dart';
 import '../../modules/add_card/add_card_page.dart';
 import '../../modules/add_card/add_card_page.dart';
 import '../../modules/choose_card/choose_card_page.dart';
 import '../../modules/choose_card/choose_card_page.dart';
+import '../../modules/payment/payment/payment_list_screen.dart';
+import '../../modules/payment/history/history_list_screen.dart';
 
 
 part 'payment_page_router.gr.dart';
 part 'payment_page_router.gr.dart';
 
 
@@ -30,9 +31,8 @@ class PaymentPageRouter extends _$PaymentPageRouter {
           transitionsBuilder: applySlideTransition,
           transitionsBuilder: applySlideTransition,
           children: [
           children: [
             AutoRoute(page: InfoPageRoute.page, path: 'info'),
             AutoRoute(page: InfoPageRoute.page, path: 'info'),
-            AutoRoute(page: CondoPaymentPageRoute.page, path: 'payment'),
-            AutoRoute(page: CondoActivePageRoute.page, path: 'active'),
-            AutoRoute(page: CondoHistoryPageRoute.page, path: 'history'),
+            AutoRoute(page: PaymentListPageRoute.page, path: 'payment'),
+            AutoRoute(page: HistoryListPageRoute.page, path: 'history'),
             AutoRoute(page: ManagePageRoute.page, path: 'manage'),
             AutoRoute(page: ManagePageRoute.page, path: 'manage'),
           ],
           ],
         ),
         ),

+ 27 - 47
packages/cpt_payment/lib/router/page/payment_page_router.gr.dart

@@ -27,22 +27,10 @@ abstract class _$PaymentPageRouter extends RootStackRouter {
         child: const ChooseCardPage(),
         child: const ChooseCardPage(),
       );
       );
     },
     },
-    CondoActivePageRoute.name: (routeData) {
+    HistoryListPageRoute.name: (routeData) {
       return AutoRoutePage<dynamic>(
       return AutoRoutePage<dynamic>(
         routeData: routeData,
         routeData: routeData,
-        child: CondoActiveScreen(),
-      );
-    },
-    CondoHistoryPageRoute.name: (routeData) {
-      return AutoRoutePage<dynamic>(
-        routeData: routeData,
-        child: CondoHistoryScreen(),
-      );
-    },
-    CondoPaymentPageRoute.name: (routeData) {
-      return AutoRoutePage<dynamic>(
-        routeData: routeData,
-        child: CondoPaymentScreen(),
+        child: HistoryListScreen(),
       );
       );
     },
     },
     InfoPageRoute.name: (routeData) {
     InfoPageRoute.name: (routeData) {
@@ -69,6 +57,12 @@ abstract class _$PaymentPageRouter extends RootStackRouter {
         child: const PaymentInfoPage(),
         child: const PaymentInfoPage(),
       );
       );
     },
     },
+    PaymentListPageRoute.name: (routeData) {
+      return AutoRoutePage<dynamic>(
+        routeData: routeData,
+        child: PaymentListScreen(),
+      );
+    },
     PaymentPageRoute.name: (routeData) {
     PaymentPageRoute.name: (routeData) {
       return AutoRoutePage<dynamic>(
       return AutoRoutePage<dynamic>(
         routeData: routeData,
         routeData: routeData,
@@ -113,43 +107,15 @@ class ChooseCardPageRoute extends PageRouteInfo<void> {
 }
 }
 
 
 /// generated route for
 /// generated route for
-/// [CondoActiveScreen]
-class CondoActivePageRoute extends PageRouteInfo<void> {
-  const CondoActivePageRoute({List<PageRouteInfo>? children})
+/// [HistoryListScreen]
+class HistoryListPageRoute extends PageRouteInfo<void> {
+  const HistoryListPageRoute({List<PageRouteInfo>? children})
       : super(
       : super(
-          CondoActivePageRoute.name,
+          HistoryListPageRoute.name,
           initialChildren: children,
           initialChildren: children,
         );
         );
 
 
-  static const String name = 'CondoActivePageRoute';
-
-  static const PageInfo<void> page = PageInfo<void>(name);
-}
-
-/// generated route for
-/// [CondoHistoryScreen]
-class CondoHistoryPageRoute extends PageRouteInfo<void> {
-  const CondoHistoryPageRoute({List<PageRouteInfo>? children})
-      : super(
-          CondoHistoryPageRoute.name,
-          initialChildren: children,
-        );
-
-  static const String name = 'CondoHistoryPageRoute';
-
-  static const PageInfo<void> page = PageInfo<void>(name);
-}
-
-/// generated route for
-/// [CondoPaymentScreen]
-class CondoPaymentPageRoute extends PageRouteInfo<void> {
-  const CondoPaymentPageRoute({List<PageRouteInfo>? children})
-      : super(
-          CondoPaymentPageRoute.name,
-          initialChildren: children,
-        );
-
-  static const String name = 'CondoPaymentPageRoute';
+  static const String name = 'HistoryListPageRoute';
 
 
   static const PageInfo<void> page = PageInfo<void>(name);
   static const PageInfo<void> page = PageInfo<void>(name);
 }
 }
@@ -211,6 +177,20 @@ class PaymentInfoPageRoute extends PageRouteInfo<void> {
 }
 }
 
 
 /// generated route for
 /// generated route for
+/// [PaymentListScreen]
+class PaymentListPageRoute extends PageRouteInfo<void> {
+  const PaymentListPageRoute({List<PageRouteInfo>? children})
+      : super(
+          PaymentListPageRoute.name,
+          initialChildren: children,
+        );
+
+  static const String name = 'PaymentListPageRoute';
+
+  static const PageInfo<void> page = PageInfo<void>(name);
+}
+
+/// generated route for
 /// [PaymentPage]
 /// [PaymentPage]
 class PaymentPageRoute extends PageRouteInfo<void> {
 class PaymentPageRoute extends PageRouteInfo<void> {
   const PaymentPageRoute({List<PageRouteInfo>? children})
   const PaymentPageRoute({List<PageRouteInfo>? children})

+ 5 - 0
packages/cs_domain/lib/constants/api_constants.dart

@@ -128,6 +128,11 @@ class ApiConstants {
   //获取预约Booking的详情
   //获取预约Booking的详情
   static const apiFacilityBookingDetail = "/api/v1/user/facility/booking/detail";
   static const apiFacilityBookingDetail = "/api/v1/user/facility/booking/detail";
 
 
+  // =========================== Payment ↓=========================================
+
+  //可支付列表
+  static const apiPaymentList = "/api/v1/user/payment/bill/index";
+
 
 
   // =========================== 其他 ↓=========================================
   // =========================== 其他 ↓=========================================
 
 

+ 51 - 0
packages/cs_domain/lib/entity/payment_page_entity.dart

@@ -0,0 +1,51 @@
+import 'package:domain/generated/json/base/json_field.dart';
+import 'package:domain/generated/json/payment_page_entity.g.dart';
+import 'dart:convert';
+export 'package:domain/generated/json/payment_page_entity.g.dart';
+
+@JsonSerializable()
+class PaymentPageEntity {
+  int count = 0;
+  int page = 0;
+  int limit = 0;
+  @JSONField(name: "count_page")
+  int countPage = 0;
+  List<PaymentPageList> list = [];
+
+  PaymentPageEntity();
+
+  factory PaymentPageEntity.fromJson(Map<String, dynamic> json) => $PaymentPageEntityFromJson(json);
+
+  Map<String, dynamic> toJson() => $PaymentPageEntityToJson(this);
+
+  @override
+  String toString() {
+    return jsonEncode(this);
+  }
+}
+
+@JsonSerializable()
+class PaymentPageList {
+  String? id;
+  String? type;
+  @JSONField(name: "start_at")
+  String? startAt;
+  @JSONField(name: "end_at")
+  String? endAt;
+  String? amount;
+  @JSONField(name: "paid_by")
+  dynamic paidBy;
+  @JSONField(name: "created_at")
+  String? createdAt;
+
+  PaymentPageList();
+
+  factory PaymentPageList.fromJson(Map<String, dynamic> json) => $PaymentPageListFromJson(json);
+
+  Map<String, dynamic> toJson() => $PaymentPageListToJson(this);
+
+  @override
+  String toString() {
+    return jsonEncode(this);
+  }
+}

+ 9 - 0
packages/cs_domain/lib/generated/json/base/json_convert_content.dart

@@ -31,6 +31,7 @@ import 'package:domain/entity/newsfeed_news_entity.dart';
 import 'package:domain/entity/notice_board_announ_entity.dart';
 import 'package:domain/entity/notice_board_announ_entity.dart';
 import 'package:domain/entity/notice_board_documents_entity.dart';
 import 'package:domain/entity/notice_board_documents_entity.dart';
 import 'package:domain/entity/notice_board_event_entity.dart';
 import 'package:domain/entity/notice_board_event_entity.dart';
+import 'package:domain/entity/payment_page_entity.dart';
 import 'package:domain/entity/property_news_entity.dart';
 import 'package:domain/entity/property_news_entity.dart';
 import 'package:domain/entity/property_sale_rent_entity.dart';
 import 'package:domain/entity/property_sale_rent_entity.dart';
 import 'package:domain/entity/server_time.dart';
 import 'package:domain/entity/server_time.dart';
@@ -327,6 +328,12 @@ class JsonConvert {
     if (<NoticeBoardEventEntity>[] is M) {
     if (<NoticeBoardEventEntity>[] is M) {
       return data.map<NoticeBoardEventEntity>((Map<String, dynamic> e) => NoticeBoardEventEntity.fromJson(e)).toList() as M;
       return data.map<NoticeBoardEventEntity>((Map<String, dynamic> e) => NoticeBoardEventEntity.fromJson(e)).toList() as M;
     }
     }
+    if (<PaymentPageEntity>[] is M) {
+      return data.map<PaymentPageEntity>((Map<String, dynamic> e) => PaymentPageEntity.fromJson(e)).toList() as M;
+    }
+    if (<PaymentPageList>[] is M) {
+      return data.map<PaymentPageList>((Map<String, dynamic> e) => PaymentPageList.fromJson(e)).toList() as M;
+    }
     if (<PropertyNewsEntity>[] is M) {
     if (<PropertyNewsEntity>[] is M) {
       return data.map<PropertyNewsEntity>((Map<String, dynamic> e) => PropertyNewsEntity.fromJson(e)).toList() as M;
       return data.map<PropertyNewsEntity>((Map<String, dynamic> e) => PropertyNewsEntity.fromJson(e)).toList() as M;
     }
     }
@@ -442,6 +449,8 @@ class JsonConvertClassCollection {
     (NoticeBoardAnnounEntity).toString(): NoticeBoardAnnounEntity.fromJson,
     (NoticeBoardAnnounEntity).toString(): NoticeBoardAnnounEntity.fromJson,
     (NoticeBoardDocumentsEntity).toString(): NoticeBoardDocumentsEntity.fromJson,
     (NoticeBoardDocumentsEntity).toString(): NoticeBoardDocumentsEntity.fromJson,
     (NoticeBoardEventEntity).toString(): NoticeBoardEventEntity.fromJson,
     (NoticeBoardEventEntity).toString(): NoticeBoardEventEntity.fromJson,
+    (PaymentPageEntity).toString(): PaymentPageEntity.fromJson,
+    (PaymentPageList).toString(): PaymentPageList.fromJson,
     (PropertyNewsEntity).toString(): PropertyNewsEntity.fromJson,
     (PropertyNewsEntity).toString(): PropertyNewsEntity.fromJson,
     (PropertyNewsList).toString(): PropertyNewsList.fromJson,
     (PropertyNewsList).toString(): PropertyNewsList.fromJson,
     (PropertySaleRentEntity).toString(): PropertySaleRentEntity.fromJson,
     (PropertySaleRentEntity).toString(): PropertySaleRentEntity.fromJson,

+ 121 - 0
packages/cs_domain/lib/generated/json/payment_page_entity.g.dart

@@ -0,0 +1,121 @@
+import 'package:domain/generated/json/base/json_convert_content.dart';
+import 'package:domain/entity/payment_page_entity.dart';
+
+PaymentPageEntity $PaymentPageEntityFromJson(Map<String, dynamic> json) {
+  final PaymentPageEntity paymentPageEntity = PaymentPageEntity();
+  final int? count = jsonConvert.convert<int>(json['count']);
+  if (count != null) {
+    paymentPageEntity.count = count;
+  }
+  final int? page = jsonConvert.convert<int>(json['page']);
+  if (page != null) {
+    paymentPageEntity.page = page;
+  }
+  final int? limit = jsonConvert.convert<int>(json['limit']);
+  if (limit != null) {
+    paymentPageEntity.limit = limit;
+  }
+  final int? countPage = jsonConvert.convert<int>(json['count_page']);
+  if (countPage != null) {
+    paymentPageEntity.countPage = countPage;
+  }
+  final List<PaymentPageList>? list = (json['list'] as List<dynamic>?)?.map(
+          (e) => jsonConvert.convert<PaymentPageList>(e) as PaymentPageList).toList();
+  if (list != null) {
+    paymentPageEntity.list = list;
+  }
+  return paymentPageEntity;
+}
+
+Map<String, dynamic> $PaymentPageEntityToJson(PaymentPageEntity entity) {
+  final Map<String, dynamic> data = <String, dynamic>{};
+  data['count'] = entity.count;
+  data['page'] = entity.page;
+  data['limit'] = entity.limit;
+  data['count_page'] = entity.countPage;
+  data['list'] = entity.list.map((v) => v.toJson()).toList();
+  return data;
+}
+
+extension PaymentPageEntityExtension on PaymentPageEntity {
+  PaymentPageEntity copyWith({
+    int? count,
+    int? page,
+    int? limit,
+    int? countPage,
+    List<PaymentPageList>? list,
+  }) {
+    return PaymentPageEntity()
+      ..count = count ?? this.count
+      ..page = page ?? this.page
+      ..limit = limit ?? this.limit
+      ..countPage = countPage ?? this.countPage
+      ..list = list ?? this.list;
+  }
+}
+
+PaymentPageList $PaymentPageListFromJson(Map<String, dynamic> json) {
+  final PaymentPageList paymentPageList = PaymentPageList();
+  final String? id = jsonConvert.convert<String>(json['id']);
+  if (id != null) {
+    paymentPageList.id = id;
+  }
+  final String? type = jsonConvert.convert<String>(json['type']);
+  if (type != null) {
+    paymentPageList.type = type;
+  }
+  final String? startAt = jsonConvert.convert<String>(json['start_at']);
+  if (startAt != null) {
+    paymentPageList.startAt = startAt;
+  }
+  final String? endAt = jsonConvert.convert<String>(json['end_at']);
+  if (endAt != null) {
+    paymentPageList.endAt = endAt;
+  }
+  final String? amount = jsonConvert.convert<String>(json['amount']);
+  if (amount != null) {
+    paymentPageList.amount = amount;
+  }
+  final dynamic paidBy = json['paid_by'];
+  if (paidBy != null) {
+    paymentPageList.paidBy = paidBy;
+  }
+  final String? createdAt = jsonConvert.convert<String>(json['created_at']);
+  if (createdAt != null) {
+    paymentPageList.createdAt = createdAt;
+  }
+  return paymentPageList;
+}
+
+Map<String, dynamic> $PaymentPageListToJson(PaymentPageList entity) {
+  final Map<String, dynamic> data = <String, dynamic>{};
+  data['id'] = entity.id;
+  data['type'] = entity.type;
+  data['start_at'] = entity.startAt;
+  data['end_at'] = entity.endAt;
+  data['amount'] = entity.amount;
+  data['paid_by'] = entity.paidBy;
+  data['created_at'] = entity.createdAt;
+  return data;
+}
+
+extension PaymentPageListExtension on PaymentPageList {
+  PaymentPageList copyWith({
+    String? id,
+    String? type,
+    String? startAt,
+    String? endAt,
+    String? amount,
+    dynamic paidBy,
+    String? createdAt,
+  }) {
+    return PaymentPageList()
+      ..id = id ?? this.id
+      ..type = type ?? this.type
+      ..startAt = startAt ?? this.startAt
+      ..endAt = endAt ?? this.endAt
+      ..amount = amount ?? this.amount
+      ..paidBy = paidBy ?? this.paidBy
+      ..createdAt = createdAt ?? this.createdAt;
+  }
+}

+ 0 - 63
packages/cs_domain/lib/repository/demo_repository.dart

@@ -1,63 +0,0 @@
-import 'package:domain/entity/server_time.dart';
-import 'package:plugin_platform/platform_export.dart';
-import 'package:plugin_platform/http/dio_engine.dart';
-import 'package:plugin_platform/http/http_result.dart';
-import 'package:riverpod_annotation/riverpod_annotation.dart';
-import 'package:shared/utils/util.dart';
-
-import '../constants/api_constants.dart';
-import 'package:flutter_riverpod/flutter_riverpod.dart';
-import 'package:plugin_basic/provider/http_provider/http_provider.dart';
-
-part 'demo_repository.g.dart';
-
-@Riverpod(keepAlive: true)
-DemoRepository demoRepository(Ref ref) {
-  final dioEngine = ref.watch(dioEngineProvider);
-  return DemoRepository(dioEngine: dioEngine);
-}
-
-/*
- * 测试用的数据仓库
- */
-class DemoRepository {
-  DioEngine dioEngine;
-
-  DemoRepository({required this.dioEngine});
-
-  Future<HttpResult<ServerTime>> fetchServerTime(
-    String? type, {
-    CancelToken? cancelToken,
-  }) async {
-    Map<String, String> params = {};
-
-    if (!Utils.isEmpty(type)) {
-      params["type"] = type!;
-    }
-
-    Map<String, String> headers = {};
-
-    headers["Content-Type"] = "application/x-www-form-urlencoded";
-    headers["Accept"] = "application/x.yyjobs-api.v1+json";
-
-    final result = await dioEngine.requestNetResult(
-      ApiConstants.apiServerTime,
-      params: params,
-      headers: headers,
-      method: HttpMethod.GET,
-      isShowLoadingDialog: true,  //是否展示默认的Loading弹窗
-      networkDebounce: true,   //是否防抖防止重复请求
-      cancelToken: cancelToken,
-    );
-
-    //根据返回的结果,封装原始数据为Bean/Entity对象
-    if (result.isSuccess) {
-      //重新赋值data或list
-      final json = result.getDataJson();
-      var data = ServerTime.fromJson(json!);
-      //重新赋值data或list
-      return result.convert<ServerTime>(data: data);
-    }
-    return result.convert();
-  }
-}

+ 54 - 0
packages/cs_domain/lib/repository/payment_repository.dart

@@ -0,0 +1,54 @@
+import 'dart:typed_data';
+
+import 'package:domain/entity/payment_page_entity.dart';
+import 'package:plugin_platform/platform_export.dart';
+import 'package:plugin_platform/http/dio_engine.dart';
+import 'package:plugin_platform/http/http_result.dart';
+import 'package:riverpod_annotation/riverpod_annotation.dart';
+import '../constants/api_constants.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:plugin_basic/provider/http_provider/http_provider.dart';
+
+part 'payment_repository.g.dart';
+
+@Riverpod(keepAlive: true)
+PaymentRepository paymentRepository(Ref ref) {
+  final dioEngine = ref.watch(dioEngineProvider);
+  return PaymentRepository(dioEngine: dioEngine);
+}
+
+/*
+ * 支付模块的数据仓库
+ */
+class PaymentRepository {
+  DioEngine dioEngine;
+
+  PaymentRepository({required this.dioEngine});
+
+
+  /// 获取支付列表
+  Future<HttpResult<PaymentPageEntity>> fetchPaymentList({
+    required String type,
+    required int curPage,
+    CancelToken? cancelToken,
+  }) async {
+    Map<String, String> params = {};
+    params['type'] = type;
+    params['page'] = curPage.toString();
+    params['limit'] = "10";
+
+    final result = await dioEngine.requestNetResult(
+      ApiConstants.apiPaymentList,
+      params: params,
+      method: HttpMethod.GET,
+      cancelToken: cancelToken,
+    );
+
+    if (result.isSuccess) {
+      final json = result.getDataJson();
+      var data = PaymentPageEntity.fromJson(json!);
+      return result.convert<PaymentPageEntity>(data: data);
+    }
+    return result.convert();
+  }
+}

+ 9 - 9
packages/cs_domain/lib/repository/demo_repository.g.dart

@@ -1,27 +1,27 @@
 // GENERATED CODE - DO NOT MODIFY BY HAND
 // GENERATED CODE - DO NOT MODIFY BY HAND
 
 
-part of 'demo_repository.dart';
+part of 'payment_repository.dart';
 
 
 // **************************************************************************
 // **************************************************************************
 // RiverpodGenerator
 // RiverpodGenerator
 // **************************************************************************
 // **************************************************************************
 
 
-String _$demoRepositoryHash() => r'e777a23ad750b13b09ce23ebe0e2ac940f0dfad4';
+String _$paymentRepositoryHash() => r'672f69cb24668dd89fb66a60eaf9bf65ab37d3f8';
 
 
-/// See also [demoRepository].
-@ProviderFor(demoRepository)
-final demoRepositoryProvider = Provider<DemoRepository>.internal(
-  demoRepository,
-  name: r'demoRepositoryProvider',
+/// See also [paymentRepository].
+@ProviderFor(paymentRepository)
+final paymentRepositoryProvider = Provider<PaymentRepository>.internal(
+  paymentRepository,
+  name: r'paymentRepositoryProvider',
   debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
   debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
       ? null
       ? null
-      : _$demoRepositoryHash,
+      : _$paymentRepositoryHash,
   dependencies: null,
   dependencies: null,
   allTransitiveDependencies: null,
   allTransitiveDependencies: null,
 );
 );
 
 
 @Deprecated('Will be removed in 3.0. Use Ref instead')
 @Deprecated('Will be removed in 3.0. Use Ref instead')
 // ignore: unused_element
 // ignore: unused_element
-typedef DemoRepositoryRef = ProviderRef<DemoRepository>;
+typedef PaymentRepositoryRef = ProviderRef<PaymentRepository>;
 // ignore_for_file: type=lint
 // 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
 // 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

binární
packages/cs_resources/assets/payment/condo_icon.webp


binární
packages/cs_resources/assets/payment/history_icon.webp


binární
packages/cs_resources/assets/payment/info_icon.webp


binární
packages/cs_resources/assets/payment/manage_icon.webp


binární
packages/cs_resources/assets/payment/payment_icon.webp


binární
packages/cs_resources/assets/payment/property_payment_icon.webp


+ 3 - 1
packages/cs_resources/lib/generated/assets.dart

@@ -147,7 +147,7 @@ class Assets {
   static const String paymentCardIcon = 'assets/payment/card_icon.webp';
   static const String paymentCardIcon = 'assets/payment/card_icon.webp';
   static const String paymentCardName = 'assets/payment/card_name.webp';
   static const String paymentCardName = 'assets/payment/card_name.webp';
   static const String paymentCardNumber = 'assets/payment/card_number.webp';
   static const String paymentCardNumber = 'assets/payment/card_number.webp';
-  static const String paymentCondoIcon = 'assets/payment/condo_icon.webp';
+  static const String paymentHistoryIcon = 'assets/payment/history_icon.webp';
   static const String paymentInfoBusiness = 'assets/payment/info_business.webp';
   static const String paymentInfoBusiness = 'assets/payment/info_business.webp';
   static const String paymentInfoCardGroup = 'assets/payment/info_card_group.webp';
   static const String paymentInfoCardGroup = 'assets/payment/info_card_group.webp';
   static const String paymentInfoCashBack = 'assets/payment/info_cash_back.webp';
   static const String paymentInfoCashBack = 'assets/payment/info_cash_back.webp';
@@ -158,6 +158,8 @@ class Assets {
   static const String paymentInfoTopImage = 'assets/payment/info_top_image.webp';
   static const String paymentInfoTopImage = 'assets/payment/info_top_image.webp';
   static const String paymentManageIcon = 'assets/payment/manage_icon.webp';
   static const String paymentManageIcon = 'assets/payment/manage_icon.webp';
   static const String paymentMasterCardIcon = 'assets/payment/master_card_icon.webp';
   static const String paymentMasterCardIcon = 'assets/payment/master_card_icon.webp';
+  static const String paymentPaymentIcon = 'assets/payment/payment_icon.webp';
+  static const String paymentPropertyPaymentIcon = 'assets/payment/property_payment_icon.webp';
   static const String paymentTitleQuestionIcon = 'assets/payment/title_question_icon.webp';
   static const String paymentTitleQuestionIcon = 'assets/payment/title_question_icon.webp';
   static const String paymentVisaIcon = 'assets/payment/visa_icon.webp';
   static const String paymentVisaIcon = 'assets/payment/visa_icon.webp';
   static const String profileEditDialogDelete = 'assets/profile/edit_dialog_delete.webp';
   static const String profileEditDialogDelete = 'assets/profile/edit_dialog_delete.webp';

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

@@ -242,6 +242,7 @@ class MessageLookup extends MessageLookupByLibrary {
         "logout": MessageLookupByLibrary.simpleMessage("Logout"),
         "logout": MessageLookupByLibrary.simpleMessage("Logout"),
         "logout_alert": MessageLookupByLibrary.simpleMessage(
         "logout_alert": MessageLookupByLibrary.simpleMessage(
             "Are you sure you want to logout?"),
             "Are you sure you want to logout?"),
+        "manage": MessageLookupByLibrary.simpleMessage("Manage"),
         "mark_all": MessageLookupByLibrary.simpleMessage("Mark All"),
         "mark_all": MessageLookupByLibrary.simpleMessage("Mark All"),
         "me": MessageLookupByLibrary.simpleMessage("Me"),
         "me": MessageLookupByLibrary.simpleMessage("Me"),
         "media_room": MessageLookupByLibrary.simpleMessage("Media Room"),
         "media_room": MessageLookupByLibrary.simpleMessage("Media Room"),
@@ -296,6 +297,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "ownership_status":
         "ownership_status":
             MessageLookupByLibrary.simpleMessage("OWNERSHIP STATUS"),
             MessageLookupByLibrary.simpleMessage("OWNERSHIP STATUS"),
         "paid_on": MessageLookupByLibrary.simpleMessage("paid on"),
         "paid_on": MessageLookupByLibrary.simpleMessage("paid on"),
+        "parking_fee_payment":
+            MessageLookupByLibrary.simpleMessage("Parking Fee Payment"),
         "password": MessageLookupByLibrary.simpleMessage("Password"),
         "password": MessageLookupByLibrary.simpleMessage("Password"),
         "password_format":
         "password_format":
             MessageLookupByLibrary.simpleMessage("8 Digits Alphanumeric"),
             MessageLookupByLibrary.simpleMessage("8 Digits Alphanumeric"),
@@ -320,6 +323,8 @@ class MessageLookup extends MessageLookupByLibrary {
         "property_guide":
         "property_guide":
             MessageLookupByLibrary.simpleMessage("Property Guide"),
             MessageLookupByLibrary.simpleMessage("Property Guide"),
         "property_news": MessageLookupByLibrary.simpleMessage("Property News"),
         "property_news": MessageLookupByLibrary.simpleMessage("Property News"),
+        "property_payment":
+            MessageLookupByLibrary.simpleMessage("Property Payment"),
         "publish": MessageLookupByLibrary.simpleMessage("Publish"),
         "publish": MessageLookupByLibrary.simpleMessage("Publish"),
         "published_successful_txt": MessageLookupByLibrary.simpleMessage(
         "published_successful_txt": MessageLookupByLibrary.simpleMessage(
             "Your feedback has been successfully sent! We will reply to you as soon as possible! thank you!"),
             "Your feedback has been successfully sent! We will reply to you as soon as possible! thank you!"),

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

@@ -2840,6 +2840,36 @@ class S {
     );
     );
   }
   }
 
 
+  /// `Manage`
+  String get manage {
+    return Intl.message(
+      'Manage',
+      name: 'manage',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Parking Fee Payment`
+  String get parking_fee_payment {
+    return Intl.message(
+      'Parking Fee Payment',
+      name: 'parking_fee_payment',
+      desc: '',
+      args: [],
+    );
+  }
+
+  /// `Property Payment`
+  String get property_payment {
+    return Intl.message(
+      'Property Payment',
+      name: 'property_payment',
+      desc: '',
+      args: [],
+    );
+  }
+
   /// `Other`
   /// `Other`
   String get other {
   String get other {
     return Intl.message(
     return Intl.message(

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

@@ -278,5 +278,8 @@
   "tennis_court": "Tennis Court",
   "tennis_court": "Tennis Court",
   "hold_started_on": "hold started on",
   "hold_started_on": "hold started on",
   "released_on": "released on",
   "released_on": "released on",
+  "manage": "Manage",
+  "parking_fee_payment": "Parking Fee Payment",
+  "property_payment": "Property Payment",
   "other": "Other"
   "other": "Other"
 }
 }

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

@@ -278,5 +278,8 @@
   "tennis_court": "网球场",
   "tennis_court": "网球场",
   "hold_started_on": "押金付款于",
   "hold_started_on": "押金付款于",
   "released_on": "押金退款于",
   "released_on": "押金退款于",
+  "manage": "管理",
+  "parking_fee_payment": "停车费",
+  "property_payment": "物业费",
   "other": "其他"
   "other": "其他"
 }
 }

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

@@ -264,5 +264,8 @@
   "tennis_court": "网球场",
   "tennis_court": "网球场",
   "hold_started_on": "押金付款于",
   "hold_started_on": "押金付款于",
   "released_on": "押金退款于",
   "released_on": "押金退款于",
+  "manage": "管理",
+  "parking_fee_payment": "停车费",
+  "property_payment": "物业费",
   "other": "其他"
   "other": "其他"
 }
 }