From 3e056406d4f36cec7749a4dd917f573f68a5051c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=8C=AF=E5=8D=87?= <359059686@qq.com> Date: Tue, 4 Nov 2025 16:22:47 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:=20=E8=A1=A8=E5=8D=95=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=BC=81=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/problem_form_controller.dart | 6 ++ .../presentation/pages/problem_form_page.dart | 64 +++++++++++-------- 2 files changed, 44 insertions(+), 26 deletions(-) diff --git a/lib/app/features/problem/presentation/controllers/problem_form_controller.dart b/lib/app/features/problem/presentation/controllers/problem_form_controller.dart index b8a2e44..0b251d4 100644 --- a/lib/app/features/problem/presentation/controllers/problem_form_controller.dart +++ b/lib/app/features/problem/presentation/controllers/problem_form_controller.dart @@ -31,6 +31,12 @@ class ProblemFormController extends GetxController { return formMode == FormMode.view; } + Enterprise get enterprise { + return enterpriseList.firstWhere( + (enterprise) => enterprise.id == problem!.enterpriseId, + ); + } + bool get isShowBindData { return problem?.bindData != null; } diff --git a/lib/app/features/problem/presentation/pages/problem_form_page.dart b/lib/app/features/problem/presentation/pages/problem_form_page.dart index f97a97b..0bd233d 100644 --- a/lib/app/features/problem/presentation/pages/problem_form_page.dart +++ b/lib/app/features/problem/presentation/pages/problem_form_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:image_picker/image_picker.dart'; +import 'package:problem_check_system/app/core/models/form_mode.dart'; import 'package:problem_check_system/app/core/pages/widgets/custom_app_bar.dart'; import 'package:problem_check_system/app/features/enterprise/domain/entities/enterprise.dart'; import 'package:problem_check_system/app/features/problem/presentation/controllers/problem_form_controller.dart'; @@ -455,32 +456,43 @@ class ProblemFormPage extends GetView { _buildTopSection(), // 在顶部和底部之间增加一些垂直间距 - const SizedBox(height: 20.0), - - // --- 2. 底部区域:下拉选择器显示 --- - Padding( - padding: EdgeInsetsGeometry.only(left: 16.w, right: 16.w), - child: DropdownButtonHideUnderline( - child: DropdownButton( - // 提示文本 - hint: const Text('请选择一个企业'), - isExpanded: true, - // 当前选中的值,直接从控制器获取 - value: controller.selectedEnterprise.value, - // 列表项,通过map从控制器列表动态生成 - items: controller.enterpriseList.map((enterprise) { - return DropdownMenuItem( - value: enterprise, // 每个选项的值是EnterpriseEntity对象本身 - child: Text(enterprise.name), // 显示的文本是企业名称 - ); - }).toList(), - // 当用户选择一个新项目时,调用控制器的方法来更新状态 - onChanged: (newValue) { - controller.selectEnterprise(newValue); - }, + // SizedBox(height: 10.5.h), + if (controller.isReadOnly) + Padding( + padding: EdgeInsetsGeometry.only( + top: 10.5.w, + bottom: 16.w, + left: 16.w, + right: 16.w, + ), + child: Text(controller.enterprise.name), + ) + else + Padding( + padding: EdgeInsetsGeometry.only(left: 16.w, right: 16.w), + child: DropdownButtonHideUnderline( + child: DropdownButton( + // 提示文本 + hint: const Text('请选择一个企业'), + isExpanded: true, + // 当前选中的值,直接从控制器获取 + value: controller.formMode == FormMode.edit + ? controller.enterprise + : controller.selectedEnterprise.value, + // 列表项,通过map从控制器列表动态生成 + items: controller.enterpriseList.map((enterprise) { + return DropdownMenuItem( + value: enterprise, // 每个选项的值是EnterpriseEntity对象本身 + child: Text(enterprise.name), // 显示的文本是企业名称 + ); + }).toList(), + // 当用户选择一个新项目时,调用控制器的方法来更新状态 + onChanged: (newValue) { + controller.selectEnterprise(newValue); + }, + ), ), ), - ), ], ), ); @@ -497,10 +509,10 @@ class ProblemFormPage extends GetView { // 左侧的标题 Padding( padding: EdgeInsetsGeometry.only(left: 16.w, top: 10.5.h), - child: const Text( + child: Text( '企业名称', style: TextStyle( - fontSize: 18, + fontSize: 15.sp, fontWeight: FontWeight.bold, color: Colors.black87, ),