From 1f4b8bde391cc481496b558d55b91379ea59316c Mon Sep 17 00:00:00 2001 From: czz <862977248@qq.com> Date: Fri, 25 Jul 2025 14:30:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E7=9A=84=E8=AE=BE=E7=BD=AE=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=20=20=E4=BB=A5=E5=8F=8A=E6=88=91=E7=9A=84=E6=99=BA?= =?UTF-8?q?=E8=83=BD=E8=AE=BE=E5=A4=87=E6=A0=B7=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/mhlangs/zh_CN.json | 4 +- ios/Runner/Info.plist | 5 ++ lib/common/color/delivery_status.dart | 9 ---- lib/common/color/order_status.dart | 37 ------------- lib/common/color/pay_status.dart | 10 ---- .../mh_controller/message_controller.dart | 11 +++- lib/pages/common/selectDialog.dart | 2 +- lib/pages/mh_page/component/jd.dart | 52 +++++++++++++++++++ lib/pages/mh_page/edit_bed.dart | 2 +- lib/pages/mh_page/new_mine_page.dart | 8 ++- lib/pages/setting/language_setting.dart | 1 - 11 files changed, 77 insertions(+), 64 deletions(-) delete mode 100644 lib/common/color/delivery_status.dart delete mode 100644 lib/common/color/order_status.dart delete mode 100644 lib/common/color/pay_status.dart create mode 100644 lib/pages/mh_page/component/jd.dart diff --git a/assets/mhlangs/zh_CN.json b/assets/mhlangs/zh_CN.json index 7d6841a..9adfe61 100644 --- a/assets/mhlangs/zh_CN.json +++ b/assets/mhlangs/zh_CN.json @@ -214,5 +214,7 @@ "每日得分介绍": "每日得分介绍", "与上月对比": "与上月对比", "设备状态":"设备状态", - "校准未完成提示":"校准还未完成,是否确认退出校准流程?" + "校准未完成提示":"校准还未完成,是否确认退出校准流程?", + "选择体重":"选择体重" + } \ No newline at end of file diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 58892c1..2233618 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -47,5 +47,10 @@ UIApplicationSupportsIndirectInputEvents + LSApplicationQueriesSchemes + + openapp.jdmobile + + diff --git a/lib/common/color/delivery_status.dart b/lib/common/color/delivery_status.dart deleted file mode 100644 index a396d57..0000000 --- a/lib/common/color/delivery_status.dart +++ /dev/null @@ -1,9 +0,0 @@ -class DeliveryStatus { - // 私有构造函数,防止实例化 - const DeliveryStatus._(); - - // 物流状态常量 - static const String no_de = '待发货';//下单之后待发货 - static const String has_de = '已发货';//确认发货 - static const String completed = '已签收';//签收 -} diff --git a/lib/common/color/order_status.dart b/lib/common/color/order_status.dart deleted file mode 100644 index 860bcc6..0000000 --- a/lib/common/color/order_status.dart +++ /dev/null @@ -1,37 +0,0 @@ -class OrderStatus { - // 私有构造函数,防止实例化 - const OrderStatus._(); - - // 订单状态常量值 - static const int noPay = 1; // 已下单,待支付(both) - static const int paid = 2; // 已支付(app),待确认(web) - static const int toBeShipped = 3; // 已确认(web),待发货(app) - static const int toBeReceived = 4; // 已发货(web),待签收(app) - static const int received = 5; // 已签收(app),待完成(web) - static const int closed = 6; // 已关闭(both) - static const int completed = 7; // 已完成(web),已签收(app) - - // 订单状态编号与描述的映射 - static const Map statuses = { - 1: '待支付', // 已下单,待支付(both) - 2: '已支付', // 已支付(app),待确认(web) - 3: '待发货', // 已确认(web),待发货(app) - 4: '待签收', // 已发货(web),待签收(app) - 5: '已签收', // 已签收(app),待完成(web) - 6: '已关闭', // 已关闭(both) - 7: '已签收', // 已完成(web),已签收(app) - }; - - // 根据编号获取状态名称的描述 - static String getDescriptionByCode(int code) { - return statuses[code] ?? '未知状态'; - } - - // 根据状态名称获取编号 - static int getCodeByDescription(String description) { - return statuses.entries - .firstWhere((element) => element.value == description, - orElse: () => MapEntry(0, '未知状态')) - .key; - } -} diff --git a/lib/common/color/pay_status.dart b/lib/common/color/pay_status.dart deleted file mode 100644 index 54c1882..0000000 --- a/lib/common/color/pay_status.dart +++ /dev/null @@ -1,10 +0,0 @@ -class PayStatus { - // 私有构造函数,防止实例化 - const PayStatus._(); - - // 支付状态常量 - static const String no_pay = '待支付'; - static const String have_pay = '已支付'; - static const String close = '已关闭'; - -} diff --git a/lib/controller/mh_controller/message_controller.dart b/lib/controller/mh_controller/message_controller.dart index 5e695d2..5479971 100644 --- a/lib/controller/mh_controller/message_controller.dart +++ b/lib/controller/mh_controller/message_controller.dart @@ -236,9 +236,16 @@ class MhMessageController extends GetControllerEx { if (res.code == HttpStatusCodes.ok) { getMessageList(messageType); getMessageStatus(); + + // ✅ 只有在 all 为 true 时才提示 + if (all) { + TopSlideNotification.show( + context, + text: res.msg!, + textColor: Color(0XFF00C1AA), + ); + } } - TopSlideNotification.show(context, - text: res.msg!, textColor: Color(0XFF00C1AA)); }, onFailure: (res) { TopSlideNotification.show(context, diff --git a/lib/pages/common/selectDialog.dart b/lib/pages/common/selectDialog.dart index ab22b72..5939d3f 100644 --- a/lib/pages/common/selectDialog.dart +++ b/lib/pages/common/selectDialog.dart @@ -663,7 +663,7 @@ Future showWeightPickerDialog( ), ), )), - Text(title, + Text(title.tr, style: TextStyle( fontFamily: 'Readex Pro', color: themeController.currentColor.sc3, diff --git a/lib/pages/mh_page/component/jd.dart b/lib/pages/mh_page/component/jd.dart new file mode 100644 index 0000000..5763fc1 --- /dev/null +++ b/lib/pages/mh_page/component/jd.dart @@ -0,0 +1,52 @@ +import 'dart:convert'; +import 'package:url_launcher/url_launcher.dart'; + +class JDLauncher { + /// 跳转京东店铺(App 优先) + static Future openShop(String shopUrlOrShortLink) async { + final isShortLink = shopUrlOrShortLink.contains("3.cn"); + + if (isShortLink) { + // 如果是短链接,比如 https://3.cn/xxxxx,直接尝试打开即可 + await _launchJD(shopUrlOrShortLink); + } else { + // 如果是普通店铺链接,比如 https://mall.jd.com/index-xxxxxxx.html + final jdAppUrl = _buildJDAppUrl("m", {"url": shopUrlOrShortLink}); + await _launchJD(jdAppUrl, fallbackUrl: shopUrlOrShortLink); + } + } + + /// 跳转京东商品详情页(传入 SKU) + static Future openProduct(String skuId) async { + final webUrl = "https://item.jd.com/$skuId.html"; + final jdAppUrl = _buildJDAppUrl("productDetail", {"skuId": skuId}); + await _launchJD(jdAppUrl, fallbackUrl: webUrl); + } + + /// 构建京东 App 的 scheme 跳转 URL + static String _buildJDAppUrl(String des, Map extraParams) { + final params = { + "category": "jump", + "des": des, + ...extraParams, + }; + final encoded = Uri.encodeComponent(jsonEncode(params)); + return "openapp.jdmobile://virtual?params=$encoded"; + } + + /// 通用跳转逻辑(优先跳 App,失败跳网页) + static Future _launchJD(String url, {String? fallbackUrl}) async { + try { + final uri = Uri.parse(url); + if (await canLaunchUrl(uri)) { + await launchUrl(uri, mode: LaunchMode.externalApplication); + } else if (fallbackUrl != null) { + await launchUrl(Uri.parse(fallbackUrl), mode: LaunchMode.externalApplication); + } + } catch (_) { + if (fallbackUrl != null) { + await launchUrl(Uri.parse(fallbackUrl), mode: LaunchMode.externalApplication); + } + } + } +} diff --git a/lib/pages/mh_page/edit_bed.dart b/lib/pages/mh_page/edit_bed.dart index 8819470..29acc55 100644 --- a/lib/pages/mh_page/edit_bed.dart +++ b/lib/pages/mh_page/edit_bed.dart @@ -247,7 +247,7 @@ class _EditBedPageState extends State { fontFamily: 'Readex Pro', letterSpacing: 0, color: Colors.white, - fontSize: 26.rpx, + fontSize: 36.rpx, ), ), )) diff --git a/lib/pages/mh_page/new_mine_page.dart b/lib/pages/mh_page/new_mine_page.dart index d2fca74..c50ad55 100644 --- a/lib/pages/mh_page/new_mine_page.dart +++ b/lib/pages/mh_page/new_mine_page.dart @@ -14,6 +14,7 @@ import 'package:vbvs_app/controller/main_bottom/global_controller.dart'; import 'package:vbvs_app/controller/mh_controller/message_controller.dart'; import 'package:vbvs_app/controller/theme_controller/ThemeController.dart'; import 'package:vbvs_app/controller/user_info_controller.dart'; +import 'package:vbvs_app/pages/mh_page/component/jd.dart'; import 'dart:ui' as ui; import 'package:vbvs_app/pages/mh_page/user/controller/mht_login_controller.dart'; @@ -143,7 +144,7 @@ class _MinePageState extends State { children: [ Padding( padding: EdgeInsets.only( - top: 30.rpx, left: 60.rpx, bottom: 70.rpx), + top: 30.rpx, left: 60.rpx, bottom: 190.rpx), child: Row( children: [ Container( @@ -305,7 +306,10 @@ class _MinePageState extends State { ), _buildListTile('assets/img/icon/mall.svg', '网上商城', '最新的智能产品线上购买服务', - path: ""), + path: "", onTap: () { + JDLauncher.openShop( + "https://mall.jd.com/index-14587480.html"); + }), _buildListTile('assets/img/icon/address.svg', '地址管理', '用于收货和报修时联系您', path: "/addressListPage"), diff --git a/lib/pages/setting/language_setting.dart b/lib/pages/setting/language_setting.dart index f2cc1ec..7764937 100644 --- a/lib/pages/setting/language_setting.dart +++ b/lib/pages/setting/language_setting.dart @@ -114,7 +114,6 @@ class _LanguageSettingState extends State { horizontal: 16.rpx), onTap: () async { // 点击事件逻辑 - print('点击了语言项'); for (var lang in languageController .languageList) {