glglove 1 mese fa
parent
commit
89b5a37140
18 ha cambiato i file con 195 aggiunte e 187 eliminazioni
  1. 14 16
      packages/cpt_services/lib/components/chooseHouseCleanContent.dart
  2. 5 0
      packages/cpt_services/lib/components/chooseHouseCleanContent_state.dart
  3. 31 6
      packages/cpt_services/lib/components/chooseHouseCleanContent_vm.dart
  4. 1 4
      packages/cpt_services/lib/components/chooseHouseCleanTitle.dart
  5. 1 1
      packages/cpt_services/lib/components/chooseVisitTimeContent.dart
  6. 1 0
      packages/cpt_services/lib/components/chooseVisitTimeTitle.dart
  7. 5 5
      packages/cpt_services/lib/components/status_card_item.dart
  8. 1 1
      packages/cpt_services/lib/modules/services/history/history_page.dart
  9. 3 5
      packages/cpt_services/lib/modules/services/homeService/home_service_page.dart
  10. 20 43
      packages/cpt_services/lib/modules/services/homeService/service_card_item.dart
  11. 1 1
      packages/cpt_services/lib/modules/services/inProgress/in_progress_page.dart
  12. 2 5
      packages/cpt_services/lib/modules/services/repair_history/history_page.dart
  13. 95 94
      packages/cpt_services/lib/modules/services/repair_homeService/service_card_item.dart
  14. 1 1
      packages/cpt_services/lib/modules/services/service_clean_detail/service_clean_detail_page.dart
  15. 2 3
      packages/cpt_services/lib/modules/services/service_pay_success/service_pay_success_page.dart
  16. 3 2
      packages/cpt_services/lib/modules/services/services_main_page.dart
  17. 1 0
      packages/cs_domain/lib/entity/repair_service_entity.dart
  18. 8 0
      packages/cs_domain/lib/generated/json/repair_service_entity.g.dart

+ 14 - 16
packages/cpt_services/lib/components/chooseHouseCleanContent.dart

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
+import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:shared/utils/color_utils.dart';
 import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/my_button.dart';
@@ -27,7 +28,6 @@ class ChooseHouseCleanContent extends HookConsumerWidget {
   Widget build(BuildContext context, WidgetRef ref) {
     final vm = ref.read(chooseHouseCleanContentVmProvider.notifier);
     List<HouseCleanContentItem>? houseCleanList = ref.watch(chooseHouseCleanContentVmProvider.select((state) => state.houseCleanList));
-
     useEffect((){
       vm.setInitPageData(context, {
         'id': id,
@@ -50,30 +50,29 @@ class ChooseHouseCleanContent extends HookConsumerWidget {
         children:  houseCleanList != null && houseCleanList.isNotEmpty? List.generate(houseCleanList!.length, (index){
           HouseCleanContentItem currentItem = houseCleanList![index];
           // 如何用ref  去watch  state中的 houseCleanList中的第index 变化
-
-          return _buildItem(context, currentItem, index, vm);
+          return _buildItem(context, currentItem, index, vm, ref);
         }): [],
       ),
     );
   }
 
 
-  Widget _buildItem(BuildContext context, HouseCleanContentItem HouseCleanItem, int index, ChooseHouseCleanContentVm vm){
+  Widget _buildItem(BuildContext context, HouseCleanContentItem HouseCleanItem, int index, ChooseHouseCleanContentVm vm, WidgetRef ref){
     final title = HouseCleanItem.name??'';
     final areaSizeRange = HouseCleanItem.areaSizeRange??'';
     final num = HouseCleanItem.num?? 1;
     final price = HouseCleanItem.price?? 0;
 
-
+    // bool isMultileSelect = ref.watch(chooseHouseCleanContentVmProvider.select((state) => state.isMultileSelect))?? false;
     bool isChecked = HouseCleanItem.isChecked??false;
-    bool disabled = HouseCleanItem.isDisable??false;
+    bool isDisable = HouseCleanItem.isDisable??false;
     if(useScence !=null){
-      disabled = true;
+      isDisable = true;
     }else {
-      disabled = false;
+      isDisable = false;
     }
-    final isCheckedState = useState<bool>(isChecked);
-    final isDisable = useState<bool>(disabled);
+    // final isCheckedState = useState<bool>(isChecked);
+    // final isDisable = useState<bool>(disabled);
 
     return Container(
       padding: EdgeInsets.only(left: 10, right: 10, top: 10, bottom: 10),
@@ -120,18 +119,17 @@ class ChooseHouseCleanContent extends HookConsumerWidget {
                 child: MyButton(
                   text: '\$$price',
                   onPressed: (){
-                    if(!isDisable.value){
-                      isCheckedState.value = !isCheckedState.value;
-                      vm.handlerChangeItemChecked(context, isCheckedState.value, index);
+                    if(!isDisable){
+                      vm.handlerChangeItemChecked(context, index);
                     }
                   },
                   minWidth: 80,
                   minHeight: 40,
                   fontSize: 19,
                   fontWeight: FontWeight.w500,
-                  // enable: !isDisable.value,
-                  textColor:  isCheckedState.value? context.appColors.textWhite: context.appColors.textPrimary,
-                  backgroundColor: isCheckedState.value ? context.appColors.textPrimary:context.appColors.textWhite,
+                  enable: !isDisable,
+                  textColor:  !isChecked? context.appColors.textPrimary : context.appColors.textWhite,
+                  backgroundColor: !isChecked ? context.appColors.textWhite : context.appColors.textPrimary,
                   disabledBackgroundColor: context.appColors.disEnableGray,
                   disabledTextColor: context.appColors.textWhite,
                 ),

+ 5 - 0
packages/cpt_services/lib/components/chooseHouseCleanContent_state.dart

@@ -7,14 +7,19 @@ class ChooseHouseCleanContentState{
   get checkedServiceList => houseCleanList?.where((item) => (item.isChecked ?? false))?.toList() ?? [];
   List<HouseCleanContentItem>? houseCleanList;
 
+  bool? isMultileSelect;
+
   ChooseHouseCleanContentState({
+    this.isMultileSelect = false,
     required this.houseCleanList,
   });
 
   ChooseHouseCleanContentState copyWith({
+    bool? isMultileSelect,
     List<HouseCleanContentItem>? houseCleanList,
   }){
     return ChooseHouseCleanContentState(
+      isMultileSelect: isMultileSelect??this.isMultileSelect,
       houseCleanList: houseCleanList??this.houseCleanList,
     );
   }

+ 31 - 6
packages/cpt_services/lib/components/chooseHouseCleanContent_vm.dart

@@ -2,6 +2,7 @@
 import 'package:domain/entity/paid_service_detail_entity.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
+import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
 import 'package:router/ext/auto_router_extensions.dart';
 import 'package:shared/utils/log_utils.dart';
@@ -90,11 +91,35 @@ class ChooseHouseCleanContentVm extends _$ChooseHouseCleanContentVm {
   }
 
   // 修改 item 的选中状态
-  handlerChangeItemChecked(BuildContext context, bool isChecked, int index){
-    List<HouseCleanContentItem> newHouseCleanList = state.houseCleanList!;
-    newHouseCleanList?[index].isChecked = isChecked;
-    state = state.copyWith(
-      houseCleanList: newHouseCleanList,
-    );
+  handlerChangeItemChecked(BuildContext context, int index){
+    bool isMultileSelect = state.isMultileSelect?? false;
+    if(isMultileSelect == true){
+      // 允许多选
+      List<HouseCleanContentItem> newHouseCleanList = state.houseCleanList!;
+      bool isChecked = newHouseCleanList?[index]?.isChecked??false;
+      newHouseCleanList?[index].isChecked = !isChecked;
+      state = state.copyWith(
+        houseCleanList: newHouseCleanList,
+      );
+    }else {
+      // 只允许单选  需要重置其他item的选择状态
+      List<HouseCleanContentItem> newHouseCleanList = List.from(state.houseCleanList!);
+      bool isChecked = newHouseCleanList?[index]?.isChecked??false;
+      for (int i = 0; i < newHouseCleanList.length; i++) {
+        if(i == index){
+          if(isChecked){
+            newHouseCleanList[i].isChecked = false;
+          }else{
+            newHouseCleanList[i].isChecked = true;
+          }
+        }else {
+          newHouseCleanList[i].isChecked = false;
+        }
+      }
+      state = state.copyWith(
+        houseCleanList: newHouseCleanList,
+      );
+      Log.d("3433: ${state.houseCleanList}");
+    }
   }
 }

+ 1 - 4
packages/cpt_services/lib/components/chooseHouseCleanTitle.dart

@@ -25,12 +25,9 @@ class ChooseHouseCleanTitle extends HookConsumerWidget {
 
   @override
   Widget build(BuildContext context, WidgetRef ref) {
-    final totalPrice = ref.watch(serviceOrderConfirmVmProvider.select((state)=>state.totalPrice));
-
-    final vm = ref.read(chooseVisitTimeContentVmProvider.notifier);
+    num totalPrice = ref.watch(chooseHouseCleanContentVmProvider.select((state) => state.totalPrice??0.0));
     useEffect((){
       // 组件挂载时执行 - 执行接口请求
-      Future.microtask(() => vm.initPageData(context));
       return () {
         // 组件卸载时执行
       };

+ 1 - 1
packages/cpt_services/lib/components/chooseVisitTimeContent.dart

@@ -78,7 +78,7 @@ class ChooseVisitTimeContent extends HookConsumerWidget {
               SliverGrid(
                 gridDelegate:  const SliverGridDelegateWithFixedCrossAxisCount(
                 crossAxisCount: 4,
-                mainAxisSpacing: 5,
+                mainAxisSpacing: 15,
                 crossAxisSpacing: 5,
                 childAspectRatio: 80 / 38,
                   // childAspectRatio:  166.5/214 * ScreenUtil.getAdapterSizeCtx(context, 166.5/214), // 宽高比

+ 1 - 0
packages/cpt_services/lib/components/chooseVisitTimeTitle.dart

@@ -1,4 +1,5 @@
 
+import 'package:cpt_services/components/chooseHouseCleanContent_vm.dart';
 import 'package:cpt_services/components/chooseVisitTimeBottomFooter.dart';
 import 'package:cpt_services/components/chooseVisitTimeTitle_vm.dart';
 import 'package:cpt_services/modules/services/service_clean_detail/service_clean_detail_vm.dart';

+ 5 - 5
packages/cpt_services/lib/components/status_card_item.dart

@@ -45,9 +45,9 @@ class StausCardItem extends HookConsumerWidget {
 
     return Container(
       width: double.infinity,
-      height: cardHeight!,
+      height: cardHeight!.ap,
       child: Padding(
-        padding: const EdgeInsets.only(left: 18.0, right: 18.0, top: 22.0, bottom: 22.0),
+        padding: EdgeInsets.only(left: 18.0, right: 18.0, top: 10.0.ap, bottom: 10.0.ap),
         child: Column(
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
@@ -87,7 +87,7 @@ class StausCardItem extends HookConsumerWidget {
                   maxLines: 1,
                   isFontRegular: true,
                   textAlign: TextAlign.left,
-                  marginTop: 6,
+                  marginTop: 5,
                 ),
                 // 价格
                 Row(
@@ -113,7 +113,7 @@ class StausCardItem extends HookConsumerWidget {
                   ],
                 ),
                 const SizedBox(
-                  height: 7.5,
+                  height: 5,
                 ),
                 // visit time
                 Row(
@@ -137,7 +137,7 @@ class StausCardItem extends HookConsumerWidget {
                   ],
                 ),
                 const SizedBox(
-                  height: 7.5,
+                  height: 5,
                 ),
                 // order time
                 Row(

+ 1 - 1
packages/cpt_services/lib/modules/services/history/history_page.dart

@@ -132,7 +132,7 @@ class HistoryPage extends HookConsumerWidget {
       ),
       child: StausCardItem(
         key: UniqueKey(),
-        cardHeight: 175.0,
+        cardHeight: 125.5,
         item: item,
         onClickCard: (dynamic value) async {},
       ),

+ 3 - 5
packages/cpt_services/lib/modules/services/homeService/home_service_page.dart

@@ -92,14 +92,14 @@ class HomeServicePage extends HookConsumerWidget {
                     },
                     successSliverWidget:[
                       SliverGrid(
-                        gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
+                        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                           crossAxisCount: 2, // 每行显示两个项目
                           mainAxisSpacing: 15,
                           crossAxisSpacing: 15,
                           // childAspectRatio: 172.5/170, // 宽高比
-                          childAspectRatio: 180/220, // 宽高比
+                          // childAspectRatio: 180/220, // 宽高比
                           // childAspectRatio:  172.5/170 * ScreenUtil.getAdapterSizeCtx(context, 172.5/170), // 宽高比
-                          // childAspectRatio:  172.5/170 * ((172.5/170).ap), // 宽高比
+                          childAspectRatio:  172.5/180 * ((172.5/180).ap), // 宽高比
                         ),
                         delegate: SliverChildBuilderDelegate(
                               (context, index) {
@@ -126,7 +126,6 @@ class HomeServicePage extends HookConsumerWidget {
   Widget _buildHomeServiceItem(BuildContext context, WidgetRef ref, PaidServiceList item, vm){
     return SizedBox(
       width: double.infinity,
-      // height: 170,
       child: Container(
         decoration: BoxDecoration(
           color: context.appColors.whiteBG,
@@ -147,7 +146,6 @@ class HomeServicePage extends HookConsumerWidget {
               Expanded(
                 child: HomeServiceCard(
                     key: UniqueKey(),
-                    cardHeight: 200,
                     itemEntity: item,
                     cleanServiceType: item.category!.type,
                     onClickColleciotn: (dynamic collectionValue) async {

+ 20 - 43
packages/cpt_services/lib/modules/services/homeService/service_card_item.dart

@@ -5,29 +5,12 @@ import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:shared/utils/color_utils.dart';
 import 'package:shared/utils/ext_dart.dart';
-import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
 
-import '../../../constants_services.dart';
-
-
-// 'id':1,
-// 'service_type': 0,  // 0 房屋保洁 1 空调保洁  2 维修
-// 'cover_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-// 'resources': ['https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500'],
-// 'title': 'House Cleaning Services',
-// 'price': 66,
-// 'unit': '/hr',
-// 'liked': true,
-// 'likes_count': 1212,
-// 'company_name': 'HONG YE GROUP PTE LTD',
-
-
 class HomeServiceCard extends StatelessWidget {
   String? cleanServiceType;
   PaidServiceList itemEntity;
@@ -43,7 +26,7 @@ class HomeServiceCard extends StatelessWidget {
     this.onClickColleciotn,
     double? cardHeight,
   }) : super(key: key) {
-    this.cardHeight ??= 170;
+    this.cardHeight ??= 180;
   }
 
   @override
@@ -59,7 +42,7 @@ class HomeServiceCard extends StatelessWidget {
 
     final company_name = itemEntity.merchant?.name?? "";
     return Container(
-      height: cardHeight,
+      height: cardHeight!,
       child: Column(
         children: [
           // 图片
@@ -73,9 +56,9 @@ class HomeServiceCard extends StatelessWidget {
                   child: MyLoadImage(
                     card_img,
                     width: 172.5,
-                    height: 80.5.ap,
+                    height: 75,
                     isCircle: false,
-                    fit: BoxFit.cover,
+                    fit: BoxFit.fitWidth,
                   ),
                 ),
               ),
@@ -83,20 +66,19 @@ class HomeServiceCard extends StatelessWidget {
           ),
           // 标题
           Padding(
-            padding: const EdgeInsets.only(left: 10, right: 10, top: 10,),
+            padding:  EdgeInsets.only(left: 10, right: 10, top: 5,),
             child: Row(
               mainAxisAlignment: MainAxisAlignment.center,
               children: [
                 Expanded(
                   child: SizedBox(
-                    height: 40.ap,
                     child: MyTextView(
-                      card_name,
+                      '$card_name',
                       maxLines: 2,
                       isTextEllipsis: true,
                       textAlign: TextAlign.left,
                       textColor: context.appColors.textBlack,
-                      fontSize: 15,
+                      fontSize: 14,
                       isFontRegular: true,
                     ),
                   ),
@@ -106,7 +88,7 @@ class HomeServiceCard extends StatelessWidget {
           ),
           // 价格 及 收藏
           Padding(
-            padding: const EdgeInsets.only(left: 10, right: 10,top: 0, bottom: 0),
+            padding:  const EdgeInsets.only(left: 10, right: 10,top: 10),
             child: Row(
               mainAxisAlignment: MainAxisAlignment.spaceAround,
               crossAxisAlignment: CrossAxisAlignment.center,
@@ -158,19 +140,16 @@ class HomeServiceCard extends StatelessWidget {
           ),
           // 公司名称
           Expanded(
-            child: Padding(
-              padding: const EdgeInsets.only(bottom: 0),
-              child: MyTextView(
-                company_name,
-                maxLines: 1,
-                isTextEllipsis: true,
-                textAlign: TextAlign.start,
-                marginLeft: 13,
-                fontSize: 11,
-                textColor: ColorUtils.string2Color('#666666'),
-                alignment: Alignment.centerLeft,
-                isFontRegular: true,
-              ),
+            child: MyTextView(
+              company_name,
+              maxLines: 1,
+              isTextEllipsis: true,
+              textAlign: TextAlign.start,
+              marginLeft: 10,
+              fontSize: 11,
+              textColor: ColorUtils.string2Color('#666666'),
+              alignment: Alignment.centerLeft,
+              isFontRegular: true,
             ),
           )
         ],
@@ -196,8 +175,6 @@ class CollectionWidget extends HookConsumerWidget {
     final collectionNumState = useState(collectionNum);
     final isCollectionState = useState(isCollection);
     return Container(
-        width: 60,
-        height: 30,
         alignment: Alignment.center,
         // decoration: BoxDecoration(
         //   color: ColorUtils.string2Color('#E5E5E5'),
@@ -215,8 +192,8 @@ class CollectionWidget extends HookConsumerWidget {
               ),
               MyLoadImage(
                 isCollectionState.value? Assets.communityLikeActive: Assets.communityLike,
-                width: 14.1,
-                height: 14,
+                width: isCollectionState.value? 15.5:14.1,
+                height: isCollectionState.value? 14:14,
               )
             ]
           // 点击 收餐/取消收藏

+ 1 - 1
packages/cpt_services/lib/modules/services/inProgress/in_progress_page.dart

@@ -125,7 +125,7 @@ class InProgressPage extends HookConsumerWidget {
       ),
       child: StausCardItem(
         key: UniqueKey(),
-        cardHeight: 175.0,
+        cardHeight: 140.0,
         item: item,
         onClickCard: (dynamic value) async {
           // Log.d("点击了喜欢按钮  --id:${item['id']}- $collectionValue");

+ 2 - 5
packages/cpt_services/lib/modules/services/repair_history/history_page.dart

@@ -1,6 +1,3 @@
-import 'package:cs_resources/generated/assets.dart';
-import 'package:domain/entity/garage_sale_history_entity.dart';
-import 'package:domain/entity/garage_sale_rent_entity.dart';
 import 'package:domain/entity/service_in_progress_entity.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
@@ -133,7 +130,7 @@ class RepairHistoryPage extends HookConsumerWidget {
         height: 140,
         child: Padding(
           padding: const EdgeInsets.only(
-              left: 18.0, right: 18.0, top: 22.0, bottom: 22.0),
+              left: 18.0, right: 18.0, top: 10.0, bottom: 10.0),
           child: Column(
             crossAxisAlignment: CrossAxisAlignment.start,
             children: [
@@ -176,7 +173,7 @@ class RepairHistoryPage extends HookConsumerWidget {
                     marginTop: 6,
                   ),
                   const SizedBox(
-                    height: 7.5,
+                    height: 5,
                   ),
                   // visit time
                   Row(

+ 95 - 94
packages/cpt_services/lib/modules/services/repair_homeService/service_card_item.dart

@@ -5,29 +5,12 @@ import 'package:flutter/material.dart';
 import 'package:flutter/widgets.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
-import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:shared/utils/color_utils.dart';
 import 'package:shared/utils/ext_dart.dart';
-import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/ext/ex_widget.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
 
-import '../../../constants_services.dart';
-
-
-// 'id':1,
-// 'service_type': 0,  // 0 房屋保洁 1 空调保洁  2 维修
-// 'cover_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-// 'resources': ['https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500'],
-// 'title': 'House Cleaning Services',
-// 'price': 66,
-// 'unit': '/hr',
-// 'liked': true,
-// 'likes_count': 1212,
-// 'company_name': 'HONG YE GROUP PTE LTD',
-
-
 class RepairHomeServiceCard extends StatelessWidget {
   String? cleanServiceType;
   RepairServiceList itemEntity;
@@ -43,114 +26,134 @@ class RepairHomeServiceCard extends StatelessWidget {
     this.onClickColleciotn,
     double? cardHeight,
   }) : super(key: key) {
-    this.cardHeight ??= 170;
+    this.cardHeight ??= 180;
   }
 
   @override
   Widget build(BuildContext context) {
+    List? card_resources = itemEntity.resources?? [];
     int card_id = itemEntity.id?? 0;
-    List? card_resources =  [];
     String card_img = card_resources.length>0? card_resources[0]:"";
     String card_name = itemEntity.name?? "";
+
     bool card_liked = itemEntity.liked??false;
     int card_likes_count = itemEntity.likesCount?? 0;
 
     final company_name = itemEntity.merchant?.name?? "";
-    return Column(
-      children: [
-        // 图片
-        Row(
-          mainAxisAlignment: MainAxisAlignment.center,
-          crossAxisAlignment: CrossAxisAlignment.center,
-          children: [
-            Expanded(
-              child: ClipRRect(
-                borderRadius: const BorderRadius.only(topLeft: Radius.circular(8), topRight: Radius.circular(8),),
-                child: MyLoadImage(
-                  card_img,
-                  width: 172.5,
-                  height: 80.5.ap,
-                  isCircle: false,
-                  fit: BoxFit.cover,
-                ),
-              ),
-            ),
-          ],
-        ),
-        // 标题
-        Padding(
-          padding: const EdgeInsets.only(left: 10, right: 10, top: 10,),
-          child: Row(
+    return Container(
+      height: cardHeight!.ap,
+      child: Column(
+        children: [
+          // 图片
+          Row(
             mainAxisAlignment: MainAxisAlignment.center,
+            crossAxisAlignment: CrossAxisAlignment.center,
             children: [
               Expanded(
-                child: SizedBox(
-                  height: 30.ap,
-                  child: MyTextView(
-                    '$card_name',
-                    maxLines: 2,
-                    isTextEllipsis: true,
-                    textAlign: TextAlign.left,
-                    textColor: context.appColors.textBlack,
-                    fontSize: 15,
-                    isFontRegular: true,
+                child: ClipRRect(
+                  borderRadius: const BorderRadius.only(topLeft: Radius.circular(8), topRight: Radius.circular(8),),
+                  child: MyLoadImage(
+                    card_img,
+                    width: 172.5.ap,
+                    height: 70.ap,
+                    isCircle: false,
+                    fit: BoxFit.fitWidth,
                   ),
                 ),
               ),
             ],
           ),
-        ),
-        // 价格 及 收藏
-        Padding(
-          padding: const EdgeInsets.only(left: 10, right: 10,top: 0, bottom: 0),
-          child: Row(
-            mainAxisAlignment: MainAxisAlignment.spaceAround,
-            crossAxisAlignment: CrossAxisAlignment.center,
-            children: [
-              Expanded(
-                child: Row(
-                  mainAxisAlignment: MainAxisAlignment.start,
-                  crossAxisAlignment: CrossAxisAlignment.center,
-                  children: [
-                    MyTextView(
-                      'get a quote',
-                      maxLines: 1,
+          // 标题
+          Padding(
+            padding:  EdgeInsets.only(left: 10.ap, right: 10.ap, top: 5.ap,),
+            child: Row(
+              mainAxisAlignment: MainAxisAlignment.center,
+              children: [
+                Expanded(
+                  child: SizedBox(
+                    height: 36.ap,
+                    child: MyTextView(
+                      card_name,
+                      maxLines: 2,
                       isTextEllipsis: true,
-                      textAlign: TextAlign.start,
-                      textColor: ColorUtils.string2Color('#666666'),
-                      fontSize: 11,
-                      isFontMedium: true,
+                      textAlign: TextAlign.left,
+                      textColor: context.appColors.textBlack,
+                      fontSize: 14,
+                      isFontRegular: true,
                     ),
-                  ],
+                  ),
                 ),
-              ),
-              // 动态的 收藏数
-              CollectionWidget(
-                collectionNum: card_likes_count,
-                isCollection: card_liked,
-                onClickColleciotn: onClickColleciotn,
-              ),
-            ],
+              ],
+            ),
           ),
-        ),
-        // 公司名称
-        Expanded(
-          child: Padding(
-            padding: const EdgeInsets.only(bottom: 5),
+          // 价格 及 收藏
+          Padding(
+            padding:  EdgeInsets.only(left: 10.ap, right: 10.ap,top: 5.ap, bottom: 0),
+            child: Row(
+              mainAxisAlignment: MainAxisAlignment.spaceAround,
+              crossAxisAlignment: CrossAxisAlignment.center,
+              children: [
+                Expanded(
+                  child: Row(
+                    mainAxisAlignment: MainAxisAlignment.start,
+                    crossAxisAlignment: CrossAxisAlignment.center,
+                    children: [
+                      MyTextView(
+                        'get a quote',
+                        maxLines: 1,
+                        isTextEllipsis: true,
+                        textAlign: TextAlign.start,
+                        textColor: ColorUtils.string2Color('#666666'),
+                        fontSize: 11,
+                        isFontMedium: true,
+                      ),
+                      // MyTextView(
+                      //   '\$$card_price',
+                      //   maxLines: 1,
+                      //   isTextEllipsis: true,
+                      //   textAlign: TextAlign.start,
+                      //   textColor: ColorUtils.string2Color('#4161D0'),
+                      //   fontSize: 15,
+                      //   isFontMedium: true,
+                      //   marginLeft: 2,
+                      // ),
+                      // MyTextView(
+                      //   '$',
+                      //   maxLines: 1,
+                      //   isTextEllipsis: true,
+                      //   textAlign: TextAlign.start,
+                      //   textColor: ColorUtils.string2Color('#666666'),
+                      //   fontSize: 11,
+                      //   isFontMedium: true,
+                      // ),
+                    ],
+                  ),
+                ),
+                // 动态的 收藏数
+                CollectionWidget(
+                  collectionNum: card_likes_count,
+                  isCollection: card_liked,
+                  onClickColleciotn: onClickColleciotn,
+                ),
+              ],
+            ),
+          ),
+          // 公司名称
+          Expanded(
             child: MyTextView(
               company_name,
               maxLines: 1,
               isTextEllipsis: true,
               textAlign: TextAlign.start,
-              marginLeft: 13,
+              marginLeft: 10,
               fontSize: 11,
               textColor: ColorUtils.string2Color('#666666'),
               alignment: Alignment.centerLeft,
               isFontRegular: true,
             ),
-          ),
-        )
-      ],
+          )
+        ],
+      ),
     );
   }
 }
@@ -172,8 +175,6 @@ class CollectionWidget extends HookConsumerWidget {
     final collectionNumState = useState(collectionNum);
     final isCollectionState = useState(isCollection);
     return Container(
-        width: 60,
-        height: 30,
         alignment: Alignment.center,
         // decoration: BoxDecoration(
         //   color: ColorUtils.string2Color('#E5E5E5'),

+ 1 - 1
packages/cpt_services/lib/modules/services/service_clean_detail/service_clean_detail_page.dart

@@ -506,7 +506,7 @@ class ServiceCleanDetailPage extends HookConsumerWidget {
                         isCustomIcon: true,
                         customIconUnActiveAssets: Assets.communityCollection,
                         customIconActiveAssets: Assets.communityLikeActive,
-                        customIconWidth: 19,
+                        customIconWidth: 20,
                         customIconHeight: 18,
                         onLike: () async {
                           Log.d('点击了like button');

+ 2 - 3
packages/cpt_services/lib/modules/services/service_pay_success/service_pay_success_page.dart

@@ -1,5 +1,4 @@
 import 'package:cs_resources/generated/assets.dart';
-import 'package:domain/entity/garage_sale_rent_entity.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/rendering.dart';
@@ -99,12 +98,12 @@ class ServicePaySuccessPage extends HookConsumerWidget {
   Widget _buildTopInfo(BuildContext context, ServicePaySuccessState state, WidgetRef ref) {
     return Container(
       width: double.infinity,
-      height: 350,
+      height: 300,
       color: context.appColors.whiteBG,
       child: Column(
         children: [
           Container(
-            margin: const EdgeInsets.only(top: 30),
+            margin: const EdgeInsets.only(top: 20),
             child: const MyAssetImage(
               Assets.servicePaySuccessIcon,
               width: 54,

+ 3 - 2
packages/cpt_services/lib/modules/services/services_main_page.dart

@@ -10,6 +10,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:plugin_basic/provider/user_config/user_config_service.dart';
 import 'package:router/ext/auto_router_extensions.dart';
 import 'package:shared/utils/color_utils.dart';
+import 'package:shared/utils/ext_dart.dart';
 import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/custom_sliver_persistent_header_delegate.dart';
 import 'package:widgets/load_state_layout.dart';
@@ -83,10 +84,10 @@ class ServicesMainPage extends HookConsumerWidget {
                 },
                 successSliverWidget:[
                   SliverGrid(
-                    gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
+                    gridDelegate:  const SliverGridDelegateWithFixedCrossAxisCount(
                       crossAxisCount: 2,
                       mainAxisSpacing: 10,
-                      crossAxisSpacing: 10,
+                      crossAxisSpacing: 5,
                       childAspectRatio: 165/146, //宽高比
                     ),
                     delegate: SliverChildBuilderDelegate(

+ 1 - 0
packages/cs_domain/lib/entity/repair_service_entity.dart

@@ -28,6 +28,7 @@ class RepairServiceEntity {
 class RepairServiceList {
 	int? id;
 	String? name;
+	List<String>? resources;
 	@JSONField(name: "likes_count")
 	int? likesCount;
 	bool? liked;

+ 8 - 0
packages/cs_domain/lib/generated/json/repair_service_entity.g.dart

@@ -66,6 +66,11 @@ RepairServiceList $RepairServiceListFromJson(Map<String, dynamic> json) {
   if (name != null) {
     repairServiceList.name = name;
   }
+  final List<String>? resources = (json['resources'] as List<dynamic>?)?.map(
+          (e) => jsonConvert.convert<String>(e) as String).toList();
+  if (resources != null) {
+    repairServiceList.resources = resources;
+  }
   final int? likesCount = jsonConvert.convert<int>(json['likes_count']);
   if (likesCount != null) {
     repairServiceList.likesCount = likesCount;
@@ -91,6 +96,7 @@ Map<String, dynamic> $RepairServiceListToJson(RepairServiceList entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;
+  data['resources'] = entity.resources;
   data['likes_count'] = entity.likesCount;
   data['liked'] = entity.liked;
   data['merchant'] = entity.merchant?.toJson();
@@ -102,6 +108,7 @@ extension RepairServiceListExtension on RepairServiceList {
   RepairServiceList copyWith({
     int? id,
     String? name,
+    List<String>? resources,
     int? likesCount,
     bool? liked,
     RepairServiceListMerchant? merchant,
@@ -110,6 +117,7 @@ extension RepairServiceListExtension on RepairServiceList {
     return RepairServiceList()
       ..id = id ?? this.id
       ..name = name ?? this.name
+      ..resources = resources ?? this.resources
       ..likesCount = likesCount ?? this.likesCount
       ..liked = liked ?? this.liked
       ..merchant = merchant ?? this.merchant