From 1b53ab9d774d97c950c39513858d2cf8e08ebc99 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, 28 Oct 2025 17:22:35 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:=20=E6=90=9C=E7=B4=A2=E5=BA=94=E8=AF=A5?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=9C=AC=E5=9C=B0=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecases/upload_enterprises_usecase.dart | 1 + .../enterprise_list_controller.dart | 30 +++++++++++++------ .../pages/enterprise_list_page.dart | 2 +- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/app/features/enterprise/domain/usecases/upload_enterprises_usecase.dart b/lib/app/features/enterprise/domain/usecases/upload_enterprises_usecase.dart index dabe59c..46ed307 100644 --- a/lib/app/features/enterprise/domain/usecases/upload_enterprises_usecase.dart +++ b/lib/app/features/enterprise/domain/usecases/upload_enterprises_usecase.dart @@ -32,6 +32,7 @@ class UploadEnterprisesUseCase { } /// 执行上传操作 + /// todo 正确的架构模式:请求-确认-更新 (Request-Acknowledge-Update) 需要更新本地的最后修改时间为服务器的返回数据 /// [onProgress] 是一个回调函数,用于将进度实时报告给调用者 (Controller) Future call({ required List enterprisesToUpload, diff --git a/lib/app/features/enterprise/presentation/controllers/enterprise_list_controller.dart b/lib/app/features/enterprise/presentation/controllers/enterprise_list_controller.dart index 326662c..edd5d18 100644 --- a/lib/app/features/enterprise/presentation/controllers/enterprise_list_controller.dart +++ b/lib/app/features/enterprise/presentation/controllers/enterprise_list_controller.dart @@ -87,13 +87,7 @@ class EnterpriseListController extends GetxController { isSyncing(false); // 步骤 3: 所有同步和冲突解决完毕后,从本地加载最终数据 - final result = await getEnterpriseListUsecase.call( - name: nameController.text, - type: selectedType.value?.displayText, - startDate: startDate.value, - endDate: endDate.value, - ); - enterpriseList.assignAll(result); + await loadEnterprises(); } catch (e) { Get.snackbar('错误', '操作失败: $e'); } finally { @@ -149,7 +143,25 @@ class EnterpriseListController extends GetxController { } void search() { - loadAndSyncEnterprises(); + loadEnterprises(); + } + + Future loadEnterprises() async { + expansibleController.collapse(); + isLoading.value = true; + try { + final result = await getEnterpriseListUsecase.call( + name: nameController.text, + type: selectedType.value?.displayText, + startDate: startDate.value, + endDate: endDate.value, + ); + enterpriseList.assignAll(result); + } catch (e) { + Get.snackbar('错误', '加载企业列表失败: $e'); + } finally { + isLoading.value = false; + } } void clearFilters() { @@ -157,7 +169,7 @@ class EnterpriseListController extends GetxController { selectedType.value = null; startDate.value = null; endDate.value = null; - loadAndSyncEnterprises(); + loadEnterprises(); } /// 导航到编辑表单页面 diff --git a/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart b/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart index 336645d..bd9a4cd 100644 --- a/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart +++ b/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart @@ -209,7 +209,7 @@ class EnterpriseListPage extends GetView { // 使用下拉刷新包裹列表 return RefreshIndicator( - onRefresh: () async => controller.search(), + onRefresh: () async => controller.loadAndSyncEnterprises(), child: ListView.builder( padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 8.h), itemCount: controller.enterpriseList.length,