From 7a1e789f4dd133bedbfced943bd177044c468337 Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 25 Dec 2025 09:31:39 -0800 Subject: [PATCH] =?UTF-8?q?fix(contract):=20=E5=90=88=E5=90=8C=E7=AD=BE?= =?UTF-8?q?=E7=BD=B2=E9=A1=B5=E9=9D=A2=E5=92=8C=E6=A8=A1=E6=9D=BF=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 合同模板:身份证号和联系方式显示完整信息,不再使用星号掩码 2. 签署页面:checkbox 默认不选中,用户阅读到底部后才可点击确认 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../aggregates/contract-template.aggregate.ts | 7 +------ .../pages/contract_signing_page.dart | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/backend/services/planting-service/src/domain/aggregates/contract-template.aggregate.ts b/backend/services/planting-service/src/domain/aggregates/contract-template.aggregate.ts index 7a82f3ef..7cd53957 100644 --- a/backend/services/planting-service/src/domain/aggregates/contract-template.aggregate.ts +++ b/backend/services/planting-service/src/domain/aggregates/contract-template.aggregate.ts @@ -158,15 +158,10 @@ export class ContractTemplate { const now = new Date(); const dateStr = `${now.getFullYear()}年${now.getMonth() + 1}月${now.getDate()}日`; - // 身份证号脱敏: 只显示前6位和后4位 - const maskedIdCard = params.userIdCardNumber - ? `${params.userIdCardNumber.slice(0, 6)}********${params.userIdCardNumber.slice(-4)}` - : ''; - let content = this._content; content = content.replace(/\{\{USER_PHONE\}\}/g, params.userPhoneNumber || '未认证'); content = content.replace(/\{\{USER_REAL_NAME\}\}/g, params.userRealName || '未认证'); - content = content.replace(/\{\{USER_ID_CARD\}\}/g, maskedIdCard || '未认证'); + content = content.replace(/\{\{USER_ID_CARD\}\}/g, params.userIdCardNumber || '未认证'); content = content.replace(/\{\{TREE_COUNT\}\}/g, params.treeCount.toString()); content = content.replace(/\{\{TOTAL_AMOUNT\}\}/g, params.totalAmount.toFixed(2)); content = content.replace(/\{\{PROVINCE_NAME\}\}/g, params.provinceName); 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 92cbaf11..6e4d8b89 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 @@ -836,12 +836,12 @@ class _ContractSigningPageState extends ConsumerState { width: 24, height: 24, decoration: BoxDecoration( - color: _hasScrolledToBottom ? const Color(0xFFD4AF37) : const Color(0xFFE0E0E0), + color: const Color(0xFFE0E0E0), borderRadius: BorderRadius.circular(4), + border: _hasScrolledToBottom + ? Border.all(color: const Color(0xFFD4AF37), width: 2) + : null, ), - child: _hasScrolledToBottom - ? const Icon(Icons.check, color: Colors.white, size: 16) - : null, ), const SizedBox(width: 12), Expanded( @@ -853,6 +853,14 @@ class _ContractSigningPageState extends ConsumerState { ), ), ), + if (!_hasScrolledToBottom) + const Text( + '(请先阅读完合同)', + style: TextStyle( + fontSize: 12, + color: Color(0xFF999999), + ), + ), ], ), ),