From 2607907bad31c157f81c0c9a2382cf8ef7a1d149 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 25 Dec 2025 03:44:39 -0800 Subject: [PATCH] =?UTF-8?q?fix(mobile-app):=20=E4=BF=AE=E5=A4=8D=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=AD=BE=E7=BD=B2=E9=A1=B5=E9=9D=A2=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 markScrollComplete/acknowledgeContract API 响应处理 (后端返回 success:true 但无 data 时重新获取任务详情) - 将合同签署页面的 USDT 改成绿积分 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../services/contract_signing_service.dart | 50 ++++++++++++------- .../pages/contract_signing_page.dart | 2 +- .../pages/pending_contracts_page.dart | 2 +- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/frontend/mobile-app/lib/core/services/contract_signing_service.dart b/frontend/mobile-app/lib/core/services/contract_signing_service.dart index 10d5ef71..a3bc2a8a 100644 --- a/frontend/mobile-app/lib/core/services/contract_signing_service.dart +++ b/frontend/mobile-app/lib/core/services/contract_signing_service.dart @@ -268,15 +268,22 @@ class ContractSigningService { if (response.statusCode == 200) { final responseData = response.data as Map; - if (responseData['success'] == true && responseData['data'] != null) { - final data = responseData['data'] as Map; - debugPrint('[ContractSigningService] 滚动标记成功,任务状态: ${data['status']}'); - return ContractSigningTask.fromJson(data); - } - // 兼容直接返回任务数据的情况 - if (responseData['orderNo'] != null) { - debugPrint('[ContractSigningService] 滚动标记成功(直接返回数据)'); - return ContractSigningTask.fromJson(responseData); + if (responseData['success'] == true) { + debugPrint('[ContractSigningService] 滚动标记成功'); + // 后端可能返回 data,也可能只返回 success + message + if (responseData['data'] != null) { + final data = responseData['data'] as Map; + debugPrint('[ContractSigningService] 返回任务数据,状态: ${data['status']}'); + return ContractSigningTask.fromJson(data); + } + // 兼容直接返回任务数据的情况 + if (responseData['orderNo'] != null) { + debugPrint('[ContractSigningService] 滚动标记成功(直接返回数据)'); + return ContractSigningTask.fromJson(responseData); + } + // 如果没有返回 data,重新获取任务详情 + debugPrint('[ContractSigningService] 重新获取任务详情'); + return await getTask(orderNo); } throw Exception('标记滚动失败: ${responseData['message'] ?? '响应格式错误'}'); } @@ -304,15 +311,22 @@ class ContractSigningService { if (response.statusCode == 200) { final responseData = response.data as Map; - if (responseData['success'] == true && responseData['data'] != null) { - final data = responseData['data'] as Map; - debugPrint('[ContractSigningService] 确认法律效力成功,任务状态: ${data['status']}'); - return ContractSigningTask.fromJson(data); - } - // 兼容直接返回任务数据的情况 - if (responseData['orderNo'] != null) { - debugPrint('[ContractSigningService] 确认法律效力成功(直接返回数据)'); - return ContractSigningTask.fromJson(responseData); + if (responseData['success'] == true) { + debugPrint('[ContractSigningService] 确认法律效力成功'); + // 后端可能返回 data,也可能只返回 success + message + if (responseData['data'] != null) { + final data = responseData['data'] as Map; + debugPrint('[ContractSigningService] 返回任务数据,状态: ${data['status']}'); + return ContractSigningTask.fromJson(data); + } + // 兼容直接返回任务数据的情况 + if (responseData['orderNo'] != null) { + debugPrint('[ContractSigningService] 确认法律效力成功(直接返回数据)'); + return ContractSigningTask.fromJson(responseData); + } + // 如果没有返回 data,重新获取任务详情 + debugPrint('[ContractSigningService] 重新获取任务详情'); + return await getTask(orderNo); } throw Exception('确认法律效力失败: ${responseData['message'] ?? '响应格式错误'}'); } diff --git a/frontend/mobile-app/lib/features/contract_signing/presentation/pages/contract_signing_page.dart b/frontend/mobile-app/lib/features/contract_signing/presentation/pages/contract_signing_page.dart index 0b2f8c00..974cb749 100644 --- a/frontend/mobile-app/lib/features/contract_signing/presentation/pages/contract_signing_page.dart +++ b/frontend/mobile-app/lib/features/contract_signing/presentation/pages/contract_signing_page.dart @@ -761,7 +761,7 @@ class _ContractSigningPageState extends ConsumerState { ), const SizedBox(height: 4), Text( - '${_task!.treeCount} 棵榴莲树 · ${_task!.totalAmount.toStringAsFixed(2)} USDT', + '${_task!.treeCount} 棵榴莲树 · ${_task!.totalAmount.toStringAsFixed(2)} 绿积分', style: const TextStyle( fontSize: 14, fontWeight: FontWeight.bold, diff --git a/frontend/mobile-app/lib/features/contract_signing/presentation/pages/pending_contracts_page.dart b/frontend/mobile-app/lib/features/contract_signing/presentation/pages/pending_contracts_page.dart index f47078c9..120f1bf3 100644 --- a/frontend/mobile-app/lib/features/contract_signing/presentation/pages/pending_contracts_page.dart +++ b/frontend/mobile-app/lib/features/contract_signing/presentation/pages/pending_contracts_page.dart @@ -272,7 +272,7 @@ class _PendingContractsPageState extends ConsumerState { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( - '金额: ${task.totalAmount.toStringAsFixed(2)} USDT', + '金额: ${task.totalAmount.toStringAsFixed(2)} 绿积分', style: const TextStyle( fontSize: 14, color: Color(0xFFD4AF37),