Browse Source

form的第一步富文本的展示相关修改

liukai 1 week ago
parent
commit
52f6ca6589

+ 52 - 15
packages/cpt_form/lib/modules/apply/form_terms_page.dart

@@ -1,5 +1,6 @@
 import 'package:cpt_form/modules/apply/vm/apply_view_model.dart';
 import 'package:cs_resources/generated/l10n.dart';
+import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:domain/entity/form_content_entity.dart';
 import 'package:domain/entity/form_list_entity.dart';
 import 'package:flutter/material.dart';
@@ -8,27 +9,42 @@ import 'package:flutter_hooks/flutter_hooks.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:plugin_basic/widget/webview_page.dart';
 import 'package:router/ext/auto_router_extensions.dart';
+import 'package:widgets/ext/ex_widget.dart';
+import 'package:widgets/my_appbar.dart';
+import 'package:widgets/my_button.dart';
+import 'package:widgets/widget_export.dart';
 import '../../router/page/form_page_router.dart';
+import '../form/form_types.dart';
 
 //协议页面,也是详情页面的第一个页面入口,内部可以请求详情数据和选项数据
 @RoutePage()
 class FormTermsPage extends HookConsumerWidget {
   final String type;
-  final String? estateFormId;
-  final FormListEntity? formItem;
+  final String estateFormId;
   final bool enableEdit;
+  final FormListEntity? formItem;
   final FormContentEntity? formContent;
+  final String? description;
 
-  const FormTermsPage({Key? key, required this.type, this.estateFormId, this.formItem, required this.enableEdit, this.formContent}) : super(key: key);
+  const FormTermsPage({
+    Key? key,
+    required this.type,
+    required this.estateFormId,
+    required this.enableEdit,
+    this.formItem,
+    this.formContent,
+    this.description,
+  }) : super(key: key);
 
   //启动当前页面
   static void startInstance({
     BuildContext? context,
     required String formType,
-    String? estateFormId,
-    FormListEntity? formItem,
+    required String estateFormId,
     required bool enableEdit,
+    FormListEntity? formItem,
     FormContentEntity? formContent,
+    String? description,
   }) {
     if (context != null) {
       context.router.push(FormTermsPageRoute(
@@ -37,6 +53,7 @@ class FormTermsPage extends HookConsumerWidget {
         enableEdit: enableEdit,
         formContent: formContent,
         estateFormId: estateFormId,
+        description: description,
       ));
     } else {
       appRouter.push(FormTermsPageRoute(
@@ -45,6 +62,7 @@ class FormTermsPage extends HookConsumerWidget {
         enableEdit: enableEdit,
         formContent: formContent,
         estateFormId: estateFormId,
+        description: description,
       ));
     }
   }
@@ -55,21 +73,40 @@ class FormTermsPage extends HookConsumerWidget {
     final state = ref.watch(applyViewModelProvider);
 
     useEffect(() {
-      // 组件挂载时执行 - 执行接口请求
+      // 组件挂载时执行 - 保存参数
       Future.microtask(() => viewModel.setFormType(type, estateFormId, formItem, enableEdit, formContent));
       return () {
         // 组件卸载时执行
       };
     }, []);
 
-    return state.detailPage != null
-        ? WebViewPage(
-            showAppbar: true,
-            initialUrl: state.detailPage?['term_url'],
-            arguments: {'title': state.detailPage?['title']},
-            bottomBtnTxt: S.current.next,
-            bottomBtnAction: viewModel.gotoNextPage,
-          )
-        : const SizedBox();
+    return Scaffold(
+        appBar: MyAppBar.appBar(context, FormTypes.iconMap[type]?['name']),
+        backgroundColor: context.appColors.backgroundWhite,
+        body: Column(
+          crossAxisAlignment: CrossAxisAlignment.start,
+          children: [
+            SingleChildScrollView(
+              scrollDirection: Axis.vertical,
+              physics: const BouncingScrollPhysics(),
+              child: Html(data: description ?? FormTypes.iconMap[type]?['name']),
+            ).expanded(),
+
+            //底部按钮
+            MyButton(
+              onPressed: () {
+                viewModel.gotoNextPage();
+              },
+              text: S.current.next,
+              textColor: Colors.white,
+              backgroundColor: context.appColors.btnBgDefault,
+              fontWeight: FontWeight.w500,
+              type: ClickType.throttle,
+              fontSize: 16,
+              minHeight: 50,
+              radius: 0,
+            ),
+          ],
+        ));
   }
 }

+ 1 - 0
packages/cpt_form/lib/modules/apply/vm/apply_view_model.dart

@@ -38,6 +38,7 @@ class ApplyViewModel extends _$ApplyViewModel with DioCancelableMixin {
 
   //设置具体的表单类型
   void setFormType(String formType, String? estateFormId, FormListEntity? formItem, bool enableEdit, FormContentEntity? formContent) {
+    //初始化 DetailPage 静态数据
     final detail = FormTypes.buildDetailPageMap(enableEdit)[formType];
     if (enableEdit) {
       state = state.copyWith(

+ 1 - 1
packages/cpt_form/lib/modules/apply/vm/apply_view_model.g.dart

@@ -6,7 +6,7 @@ part of 'apply_view_model.dart';
 // RiverpodGenerator
 // **************************************************************************
 
-String _$applyViewModelHash() => r'136d921c884c927c99c05bb134a202325d02e5f2';
+String _$applyViewModelHash() => r'ca6ef4d5be244334ab6d4e4e9764d67b97d1b7f0';
 
 /// See also [ApplyViewModel].
 @ProviderFor(ApplyViewModel)

+ 2 - 1
packages/cpt_form/lib/modules/detail/detail_approved_fragment.dart

@@ -141,9 +141,10 @@ class DetailApprovedFragment extends HookConsumerWidget {
                 onPressed: () {
                   FormTermsPage.startInstance(
                       formType: state.typeId ?? "",
-                      estateFormId: state.estateFormId,
+                      estateFormId: state.estateFormId?? "",
                       formItem: null,
                       enableEdit: false,
+                      description: state.forDetail?.description,
                       formContent: state.forDetail?.content,
                   );
                 },

+ 6 - 7
packages/cpt_form/lib/modules/detail/detail_not_approved_fragment.dart

@@ -139,11 +139,12 @@ class DetailNotApprovedFragment extends HookConsumerWidget {
               MyButton(
                 onPressed: () {
                   FormTermsPage.startInstance(
-                      formType: state.typeId ?? "",
-                      estateFormId: state.estateFormId,
-                      formItem: null,
-                      enableEdit: false,
-                      formContent: state.forDetail?.content,
+                    formType: state.typeId ?? "",
+                    estateFormId: state.estateFormId ?? "",
+                    formItem: null,
+                    enableEdit: false,
+                    description: state.forDetail?.description,
+                    formContent: state.forDetail?.content,
                   );
                 },
                 text: S.current.view_application,
@@ -155,9 +156,7 @@ class DetailNotApprovedFragment extends HookConsumerWidget {
               ).expanded(),
             ],
           ).marginOnly(left: 15, right: 15),
-
           const SizedBox(height: 17.5),
-
         ],
       ),
     );

+ 3 - 4
packages/cpt_form/lib/modules/detail/detail_processing_fragment.dart

@@ -147,7 +147,6 @@ class DetailProcessingFragment extends HookConsumerWidget {
               ),
             ),
           ).expanded(),
-
           Row(
             children: [
               MyButton(
@@ -166,9 +165,10 @@ class DetailProcessingFragment extends HookConsumerWidget {
                 onPressed: () {
                   FormTermsPage.startInstance(
                     formType: state.typeId ?? "",
-                    estateFormId: state.estateFormId,
+                    estateFormId: state.estateFormId ?? "",
                     formItem: null,
                     enableEdit: false,
+                    description: state.forDetail?.description,
                     formContent: state.forDetail?.content,
                   );
                 },
@@ -181,12 +181,11 @@ class DetailProcessingFragment extends HookConsumerWidget {
               ).expanded(),
             ],
           ).marginOnly(left: 15, right: 15),
-
           Visibility(
             visible: state.forDetail?.order?.refundStatus != 0 || state.forDetail?.order?.paymentStatus != 1,
             child: MyButton(
               onPressed: () {
-                viewModel.doPaymentOrder(state.forDetail?.order?.id??"");
+                viewModel.doPaymentOrder(state.forDetail?.order?.id ?? "");
               },
               text: S.current.payment,
               textColor: Colors.white,

+ 3 - 1
packages/cpt_form/lib/modules/form/apply/form_apply_screen.dart

@@ -45,8 +45,10 @@ class FormApplyScreen extends HookConsumerWidget {
                   //进入申请的协议页面
                   FormTermsPage.startInstance(
                     formType: state.datas[index].typeId!,
-                    formItem: state.datas[index],
                     enableEdit: true,
+                    estateFormId: state.datas[index].id!,
+                    formItem: state.datas[index],
+                    description: state.datas[index].description,
                   );
                 });
               },

+ 16 - 10
packages/cpt_form/lib/router/page/form_page_router.gr.dart

@@ -83,9 +83,10 @@ abstract class _$FormPageRouter extends RootStackRouter {
           key: args.key,
           type: args.type,
           estateFormId: args.estateFormId,
-          formItem: args.formItem,
           enableEdit: args.enableEdit,
+          formItem: args.formItem,
           formContent: args.formContent,
+          description: args.description,
         ),
       );
     },
@@ -309,10 +310,11 @@ class FormTermsPageRoute extends PageRouteInfo<FormTermsPageRouteArgs> {
   FormTermsPageRoute({
     Key? key,
     required String type,
-    String? estateFormId,
-    FormListEntity? formItem,
+    required String estateFormId,
     required bool enableEdit,
+    FormListEntity? formItem,
     FormContentEntity? formContent,
+    String? description,
     List<PageRouteInfo>? children,
   }) : super(
           FormTermsPageRoute.name,
@@ -320,9 +322,10 @@ class FormTermsPageRoute extends PageRouteInfo<FormTermsPageRouteArgs> {
             key: key,
             type: type,
             estateFormId: estateFormId,
-            formItem: formItem,
             enableEdit: enableEdit,
+            formItem: formItem,
             formContent: formContent,
+            description: description,
           ),
           initialChildren: children,
         );
@@ -337,27 +340,30 @@ class FormTermsPageRouteArgs {
   const FormTermsPageRouteArgs({
     this.key,
     required this.type,
-    this.estateFormId,
-    this.formItem,
+    required this.estateFormId,
     required this.enableEdit,
+    this.formItem,
     this.formContent,
+    this.description,
   });
 
   final Key? key;
 
   final String type;
 
-  final String? estateFormId;
-
-  final FormListEntity? formItem;
+  final String estateFormId;
 
   final bool enableEdit;
 
+  final FormListEntity? formItem;
+
   final FormContentEntity? formContent;
 
+  final String? description;
+
   @override
   String toString() {
-    return 'FormTermsPageRouteArgs{key: $key, type: $type, estateFormId: $estateFormId, formItem: $formItem, enableEdit: $enableEdit, formContent: $formContent}';
+    return 'FormTermsPageRouteArgs{key: $key, type: $type, estateFormId: $estateFormId, enableEdit: $enableEdit, formItem: $formItem, formContent: $formContent, description: $description}';
   }
 }
 

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

@@ -9,6 +9,7 @@ class FormDetailEntity {
 	String? id;
 	@JSONField(name: "user_id")
 	String? userId;
+	String? description;
 	FormContentEntity? content;  //详情内容
 	int status = 0;  //0-已提交未审核,1-已审核通过,2-审核失败
 	@JSONField(name: "created_at")

+ 7 - 0
packages/cs_domain/lib/generated/json/form_detail_entity.g.dart

@@ -13,6 +13,10 @@ FormDetailEntity $FormDetailEntityFromJson(Map<String, dynamic> json) {
   if (userId != null) {
     formDetailEntity.userId = userId;
   }
+  final String? description = jsonConvert.convert<String>(json['description']);
+  if (description != null) {
+    formDetailEntity.description = description;
+  }
   final FormContentEntity? content = jsonConvert.convert<FormContentEntity>(json['content']);
   if (content != null) {
     formDetailEntity.content = content;
@@ -40,6 +44,7 @@ Map<String, dynamic> $FormDetailEntityToJson(FormDetailEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['user_id'] = entity.userId;
+  data['description'] = entity.description;
   data['content'] = entity.content?.toJson();
   data['status'] = entity.status;
   data['created_at'] = entity.createdAt;
@@ -52,6 +57,7 @@ extension FormDetailEntityExtension on FormDetailEntity {
   FormDetailEntity copyWith({
     String? id,
     String? userId,
+    String? description,
     FormContentEntity? content,
     int? status,
     String? createdAt,
@@ -61,6 +67,7 @@ extension FormDetailEntityExtension on FormDetailEntity {
     return FormDetailEntity()
       ..id = id ?? this.id
       ..userId = userId ?? this.userId
+      ..description = description ?? this.description
       ..content = content ?? this.content
       ..status = status ?? this.status
       ..createdAt = createdAt ?? this.createdAt