fix(mobile-app): 修复合同签署页面问题

- 修复 markScrollComplete/acknowledgeContract API 响应处理
  (后端返回 success:true 但无 data 时重新获取任务详情)
- 将合同签署页面的 USDT 改成绿积分

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-25 03:44:39 -08:00
parent c657fb5a19
commit 2607907bad
3 changed files with 34 additions and 20 deletions

View File

@ -268,15 +268,22 @@ class ContractSigningService {
if (response.statusCode == 200) { if (response.statusCode == 200) {
final responseData = response.data as Map<String, dynamic>; final responseData = response.data as Map<String, dynamic>;
if (responseData['success'] == true && responseData['data'] != null) { if (responseData['success'] == true) {
final data = responseData['data'] as Map<String, dynamic>; debugPrint('[ContractSigningService] 滚动标记成功');
debugPrint('[ContractSigningService] 滚动标记成功,任务状态: ${data['status']}'); // data success + message
return ContractSigningTask.fromJson(data); if (responseData['data'] != null) {
} final data = responseData['data'] as Map<String, dynamic>;
// debugPrint('[ContractSigningService] 返回任务数据,状态: ${data['status']}');
if (responseData['orderNo'] != null) { return ContractSigningTask.fromJson(data);
debugPrint('[ContractSigningService] 滚动标记成功(直接返回数据)'); }
return ContractSigningTask.fromJson(responseData); //
if (responseData['orderNo'] != null) {
debugPrint('[ContractSigningService] 滚动标记成功(直接返回数据)');
return ContractSigningTask.fromJson(responseData);
}
// data
debugPrint('[ContractSigningService] 重新获取任务详情');
return await getTask(orderNo);
} }
throw Exception('标记滚动失败: ${responseData['message'] ?? '响应格式错误'}'); throw Exception('标记滚动失败: ${responseData['message'] ?? '响应格式错误'}');
} }
@ -304,15 +311,22 @@ class ContractSigningService {
if (response.statusCode == 200) { if (response.statusCode == 200) {
final responseData = response.data as Map<String, dynamic>; final responseData = response.data as Map<String, dynamic>;
if (responseData['success'] == true && responseData['data'] != null) { if (responseData['success'] == true) {
final data = responseData['data'] as Map<String, dynamic>; debugPrint('[ContractSigningService] 确认法律效力成功');
debugPrint('[ContractSigningService] 确认法律效力成功,任务状态: ${data['status']}'); // data success + message
return ContractSigningTask.fromJson(data); if (responseData['data'] != null) {
} final data = responseData['data'] as Map<String, dynamic>;
// debugPrint('[ContractSigningService] 返回任务数据,状态: ${data['status']}');
if (responseData['orderNo'] != null) { return ContractSigningTask.fromJson(data);
debugPrint('[ContractSigningService] 确认法律效力成功(直接返回数据)'); }
return ContractSigningTask.fromJson(responseData); //
if (responseData['orderNo'] != null) {
debugPrint('[ContractSigningService] 确认法律效力成功(直接返回数据)');
return ContractSigningTask.fromJson(responseData);
}
// data
debugPrint('[ContractSigningService] 重新获取任务详情');
return await getTask(orderNo);
} }
throw Exception('确认法律效力失败: ${responseData['message'] ?? '响应格式错误'}'); throw Exception('确认法律效力失败: ${responseData['message'] ?? '响应格式错误'}');
} }

View File

@ -761,7 +761,7 @@ class _ContractSigningPageState extends ConsumerState<ContractSigningPage> {
), ),
const SizedBox(height: 4), const SizedBox(height: 4),
Text( Text(
'${_task!.treeCount} 棵榴莲树 · ${_task!.totalAmount.toStringAsFixed(2)} USDT', '${_task!.treeCount} 棵榴莲树 · ${_task!.totalAmount.toStringAsFixed(2)} 绿积分',
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,

View File

@ -272,7 +272,7 @@ class _PendingContractsPageState extends ConsumerState<PendingContractsPage> {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'金额: ${task.totalAmount.toStringAsFixed(2)} USDT', '金额: ${task.totalAmount.toStringAsFixed(2)} 绿积分',
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
color: Color(0xFFD4AF37), color: Color(0xFFD4AF37),