Browse Source

feat : 企业详情

dev
徐振升 2 months ago
parent
commit
be06866aaf
  1. 5
      lib/app/features/enterprise/presentation/bindings/enterprise_info_binding.dart
  2. 4
      lib/app/features/enterprise/presentation/controllers/enterprise_form_controller.dart
  3. 44
      lib/app/features/enterprise/presentation/controllers/enterprise_info_controller.dart
  4. 22
      lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart
  5. 13
      lib/app/features/problem/presentation/controllers/problem_list_controller.dart
  6. 25
      lib/app/features/problem/presentation/pages/problem_list_page.dart

5
lib/app/features/enterprise/presentation/bindings/enterprise_info_binding.dart

@ -5,15 +5,12 @@ import 'package:problem_check_system/app/features/enterprise/presentation/contro
class EnterpriseInfoBinding extends Bindings {
@override
void dependencies() {
// 2. null Controller
Get.lazyPut<EnterpriseFormController>(() => EnterpriseFormController());
// 3. EnterpriseInfoController EnterpriseFormController
Get.lazyPut<EnterpriseInfoController>(
() => EnterpriseInfoController(
enterpriseFormController: Get.find<EnterpriseFormController>(),
problemListController: Get.find(),
),
);
final problemListController = Get.find<EnterpriseFormController>();
problemListController.test();
}
}

4
lib/app/features/enterprise/presentation/controllers/enterprise_form_controller.dart

@ -178,8 +178,4 @@ class EnterpriseFormController extends GetxController {
hazardSourceController.dispose();
super.onClose();
}
void test() {
Get.log('EnterpriseFormController test method called');
}
}

44
lib/app/features/enterprise/presentation/controllers/enterprise_info_controller.dart

@ -1,14 +1,54 @@
import 'package:get/get.dart';
import 'package:problem_check_system/app/features/enterprise/domain/entities/enterprise.dart';
import 'package:problem_check_system/app/features/enterprise/presentation/controllers/enterprise_form_controller.dart';
import 'package:problem_check_system/app/features/problem/presentation/controllers/problem_list_controller.dart';
class EnterpriseInfoController extends GetxController {
EnterpriseInfoController({required this.enterpriseFormController});
EnterpriseInfoController({
required this.enterpriseFormController,
required this.problemListController,
});
final EnterpriseFormController enterpriseFormController;
final ProblemListController problemListController;
final String tab1 = '问题列表';
final String tab2 = '企业基本情况';
Enterprise? _initialEnterprise;
@override
void onInit() {
super.onInit();
Get.log('EnterpriseInfoController initialized');
// onInit UI更新
//
if (Get.arguments is Map) {
final arguments = Get.arguments as Map;
if (arguments.containsKey('data')) {
_initialEnterprise = arguments['data'] as Enterprise;
}
}
Get.log('EnterpriseInfoController Initialized.');
}
@override
void onReady() {
super.onReady();
// onReady
if (_initialEnterprise != null) {
// isLoading
problemListController.setFilters(_initialEnterprise!);
}
Get.log('EnterpriseInfoPage is ready. Loading initial data.');
}
void navigateToAddForm() {
problemListController.navigateToAddForm();
}
@override
void onClose() {
problemListController.clearFilters();
super.onClose();
}
}

22
lib/app/features/enterprise/presentation/pages/enterprise_info_page.dart

@ -65,23 +65,25 @@ class EnterpriseInfoPage extends GetView<EnterpriseInfoController> {
indicatorPadding: EdgeInsetsGeometry.only(bottom: 4.h), // ),
indicatorSize: TabBarIndicatorSize.label, //
dividerHeight: 0, // TabBar 线
tabs: const [
Tab(text: '问题列表'),
Tab(text: '企业基本情况'),
tabs: [
Tab(text: controller.tab1),
Tab(text: controller.tab2),
],
),
centerTitle: false,
titleSpacing: 0,
centerTitle: true,
// titleSpacing: 0,
// --- ---
actions: [
IconButton(
icon: Icon(Icons.add, color: Colors.white), // 使 .sp
onPressed: () {},
),
IconButton(
icon: Icon(Icons.upload, color: Colors.pink[300]), // 使 .sp
onPressed: () {},
onPressed: () {
controller.navigateToAddForm();
},
),
// IconButton(
// icon: Icon(Icons.upload, color: Colors.pink[300]), // 使 .sp
// onPressed: () {},
// ),
],
);
}

13
lib/app/features/problem/presentation/controllers/problem_list_controller.dart

@ -34,8 +34,8 @@ class ProblemListController extends GetxController {
final isSyncing = false.obs;
// AppBar
final showAppBar = true;
final showFilterSection = true;
final showAppBar = true.obs;
final showFilterSection = true.obs;
final enterpriseList = <Enterprise>[].obs;
//
@ -200,7 +200,7 @@ class ProblemListController extends GetxController {
Future<void> loadProblemItems() async {
expansibleController.collapse();
isLoading.value = true;
isLoading(true);
try {
final ProblemFilterParams params = ProblemFilterParams(
enterpriseId: selectedEnterprise.value?.id,
@ -214,21 +214,26 @@ class ProblemListController extends GetxController {
} catch (e) {
Get.snackbar('错误', '加载问题列表失败: $e');
} finally {
isLoading.value = false;
isLoading(false);
}
}
//
void setFilters(Enterprise enterprise) {
showAppBar.value = false;
showFilterSection.value = false;
selectedEnterprise.value = enterprise;
selectedBound.value = null;
selectedStatus.value = null;
startDate.value = null;
endDate.value = null;
loadProblemItems();
}
//
void clearFilters() {
showAppBar.value = true;
showFilterSection.value = true;
selectedEnterprise.value = null;
selectedBound.value = null;
selectedStatus.value = null;

25
lib/app/features/problem/presentation/pages/problem_list_page.dart

@ -15,17 +15,26 @@ class ProblemListPage extends GetView<ProblemListController> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: controller.showAppBar
? CustomAppBar(
titleName: '问题列表',
actionsVisible: true,
onAddPressed: () => controller.navigateToAddForm(),
)
: null,
appBar: PreferredSize(
preferredSize: const Size.fromHeight(kToolbarHeight),
child: Obx(
() => controller.showAppBar.value
? CustomAppBar(
titleName: '问题列表',
actionsVisible: true,
onAddPressed: () => controller.navigateToAddForm(),
)
: const SizedBox.shrink(),
),
),
body: Column(
children: [
//
if (controller.showFilterSection) _buildFilterSection(),
Obx(
() => controller.showFilterSection.value
? _buildFilterSection()
: const SizedBox.shrink(),
),
const Divider(height: 1, thickness: 1),
//

Loading…
Cancel
Save