diff --git a/frontend/admin-app/lib/app/i18n/app_localizations.dart b/frontend/admin-app/lib/app/i18n/app_localizations.dart index 08ae8b7..79a0b0f 100644 --- a/frontend/admin-app/lib/app/i18n/app_localizations.dart +++ b/frontend/admin-app/lib/app/i18n/app_localizations.dart @@ -37,7 +37,7 @@ class AppLocalizations { // ================================================================ static const Map _zhCN = { // ── Common ── - 'app_name': 'Genex', + 'app_name': '企业券信', 'confirm': '确认', 'cancel': '取消', 'save': '保存', @@ -68,7 +68,7 @@ class AppLocalizations { 'tab_mine': '我的', // ── Login ── - 'login_title': 'Genex 发行方控制台', + 'login_title': '券信 发行方控制台', 'login_subtitle': '登录您的企业账号管理券发行', 'login_phone': '手机号', 'login_phone_hint': '请输入企业管理员手机号', @@ -510,7 +510,7 @@ class AppLocalizations { // ── AI Agent ── 'ai_agent_title': 'AI 助手', - 'ai_agent_welcome': '您好!我是 Genex AI 助手,可以帮您分析销售数据、优化定价策略、提升信用评级。有什么可以帮您的吗?', + 'ai_agent_welcome': '您好!我是企业券信 AI 助手,可以帮您分析销售数据、优化定价策略、提升信用评级。有什么可以帮您的吗?', 'ai_agent_input_hint': '输入问题...', 'ai_agent_action_sales': '分析本月销售数据', 'ai_agent_action_timing': '推荐最优发券时间', @@ -545,7 +545,7 @@ class AppLocalizations { 'settings_group_security': '安全与账号', 'settings_change_password': '修改密码', 'settings_operation_log': '操作日志', - 'settings_about': '关于 Genex', + 'settings_about': '关于企业券信', 'settings_logout': '退出登录', // ── AI Suggestion Card ── diff --git a/frontend/genex-mobile/lib/app/i18n/strings/zh_cn.dart b/frontend/genex-mobile/lib/app/i18n/strings/zh_cn.dart index b6272b0..6fffec9 100644 --- a/frontend/genex-mobile/lib/app/i18n/strings/zh_cn.dart +++ b/frontend/genex-mobile/lib/app/i18n/strings/zh_cn.dart @@ -38,7 +38,7 @@ const Map zhCN = { 'welcome.agreement': '注册即表示同意《用户协议》和《隐私政策》', 'login.title': '欢迎回来', - 'login.subtitle': '登录 Genex 管理你的券资产', + 'login.subtitle': '登录券信管理你的券资产', 'login.passwordTab': '密码登录', 'login.codeTab': '验证码登录', 'login.phoneOrEmail': '手机号或邮箱', @@ -50,8 +50,8 @@ const Map zhCN = { 'login.getCode': '获取验证码', 'register.title': '创建账号', - 'register.emailSubtitle': '使用邮箱注册 Genex 账号', - 'register.phoneSubtitle': '使用手机号注册 Genex 账号', + 'register.emailSubtitle': '使用邮箱注册券信账号', + 'register.phoneSubtitle': '使用手机号注册券信账号', 'register.email': '邮箱地址', 'register.phone': '手机号', 'register.emailHint': '请输入邮箱地址', @@ -451,7 +451,7 @@ const Map zhCN = { // ============ AI Chat ============ 'aiChat.title': 'AI 助手', - 'aiChat.greeting': '你好!我是 Genex AI 助手,可以帮你发现高性价比好券、比价分析、组合推荐。试试问我:', + 'aiChat.greeting': '你好!我是券信 AI 助手,可以帮你发现高性价比好券、比价分析、组合推荐。试试问我:', 'aiChat.suggest1': '推荐适合我的券', 'aiChat.suggest2': '星巴克券值不值得买?', 'aiChat.suggest3': '帮我做比价分析', @@ -612,7 +612,7 @@ const Map zhCN = { 'profile.myFavorites': '我的收藏', 'profile.securitySettings': '安全设置', 'profile.advancedSettings': '高级设置', - 'profile.aboutGenex': '关于 Genex', + 'profile.aboutGenex': '关于券信', 'profile.simplifiedChinese': '简体中文', // ============ Pro Mode ============ @@ -658,7 +658,7 @@ const Map zhCN = { 'wallet.redeemUse': '核销', // ============ AI Fab ============ - 'aiFab.greeting': '你好!我是 Genex AI 助手,可以帮你管理券资产、查找优惠、分析价格。有什么需要帮助的吗?', + 'aiFab.greeting': '你好!我是券信 AI 助手,可以帮你管理券资产、查找优惠、分析价格。有什么需要帮助的吗?', 'aiFab.inputHint': '输入消息...', 'aiFab.suggest1': '帮我找高折扣券', 'aiFab.suggest2': '我的券快到期了吗?', diff --git a/frontend/genex-mobile/lib/app/i18n/strings/zh_tw.dart b/frontend/genex-mobile/lib/app/i18n/strings/zh_tw.dart index 3862cf3..a5b06f0 100644 --- a/frontend/genex-mobile/lib/app/i18n/strings/zh_tw.dart +++ b/frontend/genex-mobile/lib/app/i18n/strings/zh_tw.dart @@ -38,7 +38,7 @@ const Map zhTW = { 'welcome.agreement': '註冊即表示同意《使用者協議》和《隱私權政策》', 'login.title': '歡迎回來', - 'login.subtitle': '登入 Genex 管理你的券資產', + 'login.subtitle': '登入券信管理你的券資產', 'login.passwordTab': '密碼登入', 'login.codeTab': '驗證碼登入', 'login.phoneOrEmail': '手機號或信箱', @@ -50,8 +50,8 @@ const Map zhTW = { 'login.getCode': '取得驗證碼', 'register.title': '建立帳號', - 'register.emailSubtitle': '使用信箱註冊 Genex 帳號', - 'register.phoneSubtitle': '使用手機號註冊 Genex 帳號', + 'register.emailSubtitle': '使用信箱註冊券信帳號', + 'register.phoneSubtitle': '使用手機號註冊券信帳號', 'register.email': '信箱地址', 'register.phone': '手機號', 'register.emailHint': '請輸入信箱地址', @@ -451,7 +451,7 @@ const Map zhTW = { // ============ AI Chat ============ 'aiChat.title': 'AI 助手', - 'aiChat.greeting': '你好!我是 Genex AI 助手,可以幫你發現高性價比好券、比價分析、組合推薦。試試問我:', + 'aiChat.greeting': '你好!我是券信 AI 助手,可以幫你發現高性價比好券、比價分析、組合推薦。試試問我:', 'aiChat.suggest1': '推薦適合我的券', 'aiChat.suggest2': 'Starbucks 券值不值得買?', 'aiChat.suggest3': '幫我做比價分析', @@ -612,7 +612,7 @@ const Map zhTW = { 'profile.myFavorites': '我的收藏', 'profile.securitySettings': '安全設定', 'profile.advancedSettings': '進階設定', - 'profile.aboutGenex': '關於 Genex', + 'profile.aboutGenex': '關於券信', 'profile.simplifiedChinese': '簡體中文', // ============ Pro Mode ============ @@ -658,7 +658,7 @@ const Map zhTW = { 'wallet.redeemUse': '核銷', // ============ AI Fab ============ - 'aiFab.greeting': '你好!我是 Genex AI 助手,可以幫你管理券資產、查找優惠、分析價格。有什麼需要幫助的嗎?', + 'aiFab.greeting': '你好!我是券信 AI 助手,可以幫你管理券資產、查找優惠、分析價格。有什麼需要幫助的嗎?', 'aiFab.inputHint': '輸入訊息...', 'aiFab.suggest1': '幫我找高折扣券', 'aiFab.suggest2': '我的券快到期了嗎?', diff --git a/frontend/genex-mobile/lib/core/services/coupon_service.dart b/frontend/genex-mobile/lib/core/services/coupon_service.dart index dd11921..1b5efea 100644 --- a/frontend/genex-mobile/lib/core/services/coupon_service.dart +++ b/frontend/genex-mobile/lib/core/services/coupon_service.dart @@ -50,7 +50,7 @@ class CouponApiService { ?.map((e) => CouponModel.fromJson(e as Map)) .toList() ?? []; - return (items: items, total: inner['total'] ?? items.length); + return (items: items, total: (inner['total'] as int?) ?? items.length); } catch (e) { debugPrint('[CouponApiService] getMyHoldings 失败: $e'); rethrow; diff --git a/frontend/genex-mobile/lib/features/coupons/presentation/pages/wallet_coupons_page.dart b/frontend/genex-mobile/lib/features/coupons/presentation/pages/wallet_coupons_page.dart index 597f2f5..54262c4 100644 --- a/frontend/genex-mobile/lib/features/coupons/presentation/pages/wallet_coupons_page.dart +++ b/frontend/genex-mobile/lib/features/coupons/presentation/pages/wallet_coupons_page.dart @@ -237,6 +237,7 @@ class _WalletCouponsPageState extends State if (coupons.isEmpty) { return EmptyState.noCoupons( + context, onBrowse: () => Navigator.pop(context), ); } @@ -365,13 +366,13 @@ class _WalletCouponsPageState extends State Widget _statusWidget(CouponStatus status) { switch (status) { case CouponStatus.active: - return StatusTags.active(); + return StatusTags.active(context); case CouponStatus.pending: - return StatusTags.pending(); + return StatusTags.pending(context); case CouponStatus.expired: - return StatusTags.expired(); + return StatusTags.expired(context); case CouponStatus.used: - return StatusTags.used(); + return StatusTags.used(context); } } diff --git a/frontend/genex-mobile/lib/features/message/presentation/pages/message_page.dart b/frontend/genex-mobile/lib/features/message/presentation/pages/message_page.dart index d7474fc..1bb39ee 100644 --- a/frontend/genex-mobile/lib/features/message/presentation/pages/message_page.dart +++ b/frontend/genex-mobile/lib/features/message/presentation/pages/message_page.dart @@ -133,7 +133,7 @@ class _MessagePageState extends State : _error != null ? _buildErrorView() : _notifications.isEmpty - ? EmptyState.noMessages() + ? EmptyState.noMessages(context) : RefreshIndicator( onRefresh: _loadNotifications, child: ListView.separated( diff --git a/frontend/genex-mobile/lib/features/trading/presentation/pages/trading_page.dart b/frontend/genex-mobile/lib/features/trading/presentation/pages/trading_page.dart index e9a2c63..1eb0c55 100644 --- a/frontend/genex-mobile/lib/features/trading/presentation/pages/trading_page.dart +++ b/frontend/genex-mobile/lib/features/trading/presentation/pages/trading_page.dart @@ -62,9 +62,9 @@ class _TradingPageState extends State separatorBuilder: (_, __) => const SizedBox(height: 12), itemBuilder: (context, index) { final statuses = [ - StatusTags.onSale(), - StatusTags.completed(), - StatusTags.cancelled(), + StatusTags.onSale(context), + StatusTags.completed(context), + StatusTags.cancelled(context), ]; return Container( padding: AppSpacing.cardPadding, diff --git a/frontend/miniapp/src/assets/images/logo.png b/frontend/miniapp/src/assets/images/logo.png new file mode 100644 index 0000000..56abb54 Binary files /dev/null and b/frontend/miniapp/src/assets/images/logo.png differ diff --git a/frontend/miniapp/src/assets/images/logo_full.svg b/frontend/miniapp/src/assets/images/logo_full.svg new file mode 100644 index 0000000..afd3407 --- /dev/null +++ b/frontend/miniapp/src/assets/images/logo_full.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + GENEX + + diff --git a/frontend/miniapp/src/assets/images/logo_icon.png b/frontend/miniapp/src/assets/images/logo_icon.png new file mode 100644 index 0000000..f84999a Binary files /dev/null and b/frontend/miniapp/src/assets/images/logo_icon.png differ diff --git a/frontend/miniapp/src/assets/images/logo_icon.svg b/frontend/miniapp/src/assets/images/logo_icon.svg new file mode 100644 index 0000000..07ad24b --- /dev/null +++ b/frontend/miniapp/src/assets/images/logo_icon.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/miniapp/src/i18n/index.ts b/frontend/miniapp/src/i18n/index.ts index 6696dc8..ca76be0 100644 --- a/frontend/miniapp/src/i18n/index.ts +++ b/frontend/miniapp/src/i18n/index.ts @@ -22,7 +22,7 @@ export function t(key: string, locale: Locale = defaultLocale): string { const translations: Record> = { 'zh-CN': { // ── Common ── - 'app_name': 'Genex', + 'app_name': '券信', 'confirm': '确认', 'cancel': '取消', 'save': '保存', @@ -174,7 +174,7 @@ const translations: Record> = { 'share_copied': '链接已复制', // ── Download App ── - 'download_app_title': '下载 Genex App', + 'download_app_title': '下载券信 App', 'download_app_desc': '下载App享受更多功能和更好体验', 'download_app_button': '立即下载', 'download_app_ios': 'iOS 下载', @@ -244,7 +244,7 @@ const translations: Record> = { 'download_btn': '下载', // ── H5 Share ── - 'share_from_genex': '来自 Genex 的分享', + 'share_from_genex': '来自券信的分享', 'share_open_app': '打开 App 购买', 'share_miniapp_buy': '小程序购买', 'share_to_friends': '分享给好友', @@ -265,7 +265,7 @@ const translations: Record> = { 'activity_rule_2': '每位用户限购每种券3张,活动优惠券不与其他优惠叠加使用', 'activity_rule_3': '优惠券自购买之日起30天内有效,过期自动作废', 'activity_rule_4': '活动券仅限新注册用户首次购买使用', - 'activity_rule_5': '如遇商品售罄,Genex保留调整活动内容的权利', + 'activity_rule_5': '如遇商品售罄,券信保留调整活动内容的权利', 'activity_rule_6': '退款将原路返回,处理时间为1-3个工作日', 'activity_rule_7': '如有疑问请联系客服:support@genex.com', 'activity_participants': '已有 {count} 人参与', @@ -277,7 +277,7 @@ const translations: Record> = { 'activity_coupons': '活动好券', 'activity_brand': '品牌', 'activity_join_now': '立即参与', - 'register_join': '加入 Genex', + 'register_join': '加入券信', 'register_slogan': '让每一张券都有价值', 'register_benefit': '注册即享首单立减优惠', 'register_benefit_coupons': '海量优惠券', @@ -288,7 +288,7 @@ const translations: Record> = { 'register_benefit_safe_desc': '平台担保,放心购买', 'register_now': '立即注册', 'register_login': '已有账号,登录', - 'register_why_genex': '为什么选择 Genex?', + 'register_why_genex': '为什么选择券信?', 'register_benefit_coupons_full': '覆盖餐饮、购物、娱乐等20+品类,全球大牌低价好券', 'register_benefit_safe_full': '平台担保交易,资金托管机制,保障每一笔交易安全可靠', 'register_benefit_ai': 'AI智能推荐', @@ -387,7 +387,7 @@ const translations: Record> = { // ── AI Chat ── 'ai_chat_title': 'AI 助手', - 'ai_chat_greeting': '你好!我是 Genex AI 助手,可以帮你发现高性价比好券。试试问我:', + 'ai_chat_greeting': '你好!我是券信 AI 助手,可以帮你发现高性价比好券。试试问我:', 'ai_chat_suggest1': '推荐适合我的券', 'ai_chat_suggest2': '星巴克券值不值得买?', 'ai_chat_suggest3': '帮我做比价分析', diff --git a/frontend/miniapp/src/pages/h5-activity/index.tsx b/frontend/miniapp/src/pages/h5-activity/index.tsx index ad0d051..92a70c7 100644 --- a/frontend/miniapp/src/pages/h5-activity/index.tsx +++ b/frontend/miniapp/src/pages/h5-activity/index.tsx @@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react'; import { t } from '@/i18n'; import { getFeaturedCoupons } from '../../services/coupon'; import type { CouponItem } from '../../services/coupon'; +import logoIcon from '@/assets/images/logo_icon.png'; // Taro mini-program component /** @@ -205,9 +206,7 @@ const H5ActivityPage: React.FC = () => { {/* Brand Footer */} - - G - + Genex {t('app_platform_slogan')} @@ -564,20 +563,10 @@ CSS (H5活动页样式 - 对应 index.scss): align-items: center; margin-bottom: 12rpx; } -.footer-logo-box { +.footer-logo-img { width: 48rpx; height: 48rpx; - background: linear-gradient(135deg, #6C5CE7, #9B8FFF); - border-radius: 12rpx; - display: flex; - align-items: center; - justify-content: center; margin-right: 12rpx; } -.footer-logo-text { - font-size: 28rpx; - font-weight: 700; - color: white; -} .footer-logo-name { font-size: 30rpx; font-weight: 600; diff --git a/frontend/miniapp/src/pages/h5-register/index.tsx b/frontend/miniapp/src/pages/h5-register/index.tsx index cd2780c..b8882d3 100644 --- a/frontend/miniapp/src/pages/h5-register/index.tsx +++ b/frontend/miniapp/src/pages/h5-register/index.tsx @@ -3,6 +3,7 @@ import { t } from '@/i18n'; import Taro from '@tarojs/taro'; import { register, sendSmsCode } from '../../services/auth'; import { authStore } from '../../store/auth'; +import logoIcon from '@/assets/images/logo_icon.png'; // Taro mini-program component /** @@ -71,9 +72,7 @@ const H5RegisterPage: React.FC = () => { - - G - + Genex {t('app_platform_slogan')} @@ -248,22 +247,12 @@ CSS (H5注册引导页样式 - 对应 index.scss): border-radius: 50%; bottom: -20rpx; left: -30rpx; } -.brand-logo-box { +.brand-logo-img { width: 120rpx; height: 120rpx; - background: rgba(255,255,255,0.2); - border-radius: 28rpx; - display: flex; - align-items: center; - justify-content: center; margin-bottom: 20rpx; - border: 2rpx solid rgba(255,255,255,0.3); + border-radius: 28rpx; box-shadow: 0 8rpx 32rpx rgba(0,0,0,0.15); } -.brand-logo-letter { - font-size: 56rpx; - font-weight: 700; - color: white; -} .brand-app-name { font-size: 44rpx; font-weight: 700; diff --git a/frontend/miniapp/src/pages/h5-share/index.tsx b/frontend/miniapp/src/pages/h5-share/index.tsx index 99a99cc..ea67b32 100644 --- a/frontend/miniapp/src/pages/h5-share/index.tsx +++ b/frontend/miniapp/src/pages/h5-share/index.tsx @@ -3,6 +3,7 @@ import { t } from '@/i18n'; import Taro from '@tarojs/taro'; import { getCouponDetail } from '../../services/coupon'; import type { CouponItem } from '../../services/coupon'; +import logoIcon from '@/assets/images/logo_icon.png'; /** * E2. H5页面 - 券分享页 + 活动落地页 + 注册引导页 @@ -51,7 +52,7 @@ export const SharePage: React.FC = () => { color: 'white', fontSize: 13, }}> - 💎 + Genex {t('share_from_genex')} @@ -264,15 +265,15 @@ export const RegisterGuidePage: React.FC = () => { {/* Logo */}
- 💎 + Genex

diff --git a/frontend/miniapp/src/pages/login/index.tsx b/frontend/miniapp/src/pages/login/index.tsx index c30ad4e..f96fd34 100644 --- a/frontend/miniapp/src/pages/login/index.tsx +++ b/frontend/miniapp/src/pages/login/index.tsx @@ -3,6 +3,7 @@ import { t } from '@/i18n'; import Taro from '@tarojs/taro'; import { authStore } from '../../store/auth'; import { sendSmsCode } from '../../services/auth'; +import logoIcon from '@/assets/images/logo_icon.png'; // Taro mini-program component /** @@ -65,10 +66,7 @@ const LoginPage: React.FC = () => { {/* Logo */} - - - - + GENEX {t('app_slogan')} @@ -149,19 +147,8 @@ CSS: display: flex; flex-direction: column; align-items: center; padding-top: 160rpx; padding-bottom: 80rpx; } -.logo-box { +.logo-img { width: 120rpx; height: 120rpx; - border-radius: 28rpx; - display: flex; align-items: center; justify-content: center; - overflow: hidden; transform: rotate(45deg); -} -.logo-left { - width: 50%; height: 100%; - background: linear-gradient(135deg, #9B5CF6, #A855F7); -} -.logo-right { - width: 50%; height: 100%; - background: linear-gradient(135deg, #D946EF, #E11D89); } .app-name { font-size: 40rpx; font-weight: 700; color: #141723; margin-top: 24rpx; } .app-slogan { font-size: 26rpx; color: #A0A8BE; margin-top: 8rpx; }