From fbcc85af2a14e690876135b0855f91981e15aea9 Mon Sep 17 00:00:00 2001 From: userGyl Date: Fri, 16 Jan 2026 13:06:35 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=99=E7=82=B9=E5=A2=9E=E5=8A=A0=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ios/Runner.xcodeproj/project.pbxproj | 8 ++ .../lib/pages/b_page/site/controller.dart | 23 +++++- ln_jq_app/lib/pages/b_page/site/view.dart | 80 +++++++++++++------ 3 files changed, 86 insertions(+), 25 deletions(-) diff --git a/ln_jq_app/ios/Runner.xcodeproj/project.pbxproj b/ln_jq_app/ios/Runner.xcodeproj/project.pbxproj index 1a103b2..329799a 100644 --- a/ln_jq_app/ios/Runner.xcodeproj/project.pbxproj +++ b/ln_jq_app/ios/Runner.xcodeproj/project.pbxproj @@ -296,10 +296,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; @@ -372,10 +376,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; diff --git a/ln_jq_app/lib/pages/b_page/site/controller.dart b/ln_jq_app/lib/pages/b_page/site/controller.dart index 2f5e351..63e6ddc 100644 --- a/ln_jq_app/lib/pages/b_page/site/controller.dart +++ b/ln_jq_app/lib/pages/b_page/site/controller.dart @@ -151,7 +151,7 @@ class SiteController extends GetxController with BaseControllerMixin { void onInit() { super.onInit(); renderData(); - + msgNotice(); startAutoRefresh(); } @@ -167,6 +167,27 @@ class SiteController extends GetxController with BaseControllerMixin { searchController.dispose(); super.onClose(); } + bool isNotice = false; + Future msgNotice() async { + final Map requestData = { + 'appFlag': 1, + 'isRead': 1, + 'pageNum': 1, + 'pageSize': 5, + }; + final response = await HttpService.to.get( + 'appointment/unread_notice/page', + params: requestData, + ); + if (response != null) { + final result = BaseModel.fromJson(response.data); + if (result.code == 0 && result.data != null) { + String total = result.data["total"].toString(); + isNotice = int.parse(total) > 0; + updateUi(); + } + } + } void startAutoRefresh() { // 先停止已存在的定时器,防止重复启动 diff --git a/ln_jq_app/lib/pages/b_page/site/view.dart b/ln_jq_app/lib/pages/b_page/site/view.dart index 16fe9e6..0ee8bf7 100644 --- a/ln_jq_app/lib/pages/b_page/site/view.dart +++ b/ln_jq_app/lib/pages/b_page/site/view.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:getx_scaffold/getx_scaffold.dart'; import 'package:ln_jq_app/common/styles/theme.dart'; import 'package:ln_jq_app/pages/b_page/history/view.dart'; +import 'package:ln_jq_app/pages/c_page/message/view.dart' show MessagePage; import 'controller.dart'; @@ -42,16 +43,39 @@ class SitePage extends GetView { children: [ const Icon(Icons.calendar_today, color: Colors.blue, size: 32), const SizedBox(width: 12), - const Expanded( + Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - '今日预约统计', - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), + Row( + children: [ + Text( + '今日预约统计', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + SizedBox(width: 5.w,), + Container( + padding: EdgeInsets.symmetric( + horizontal: 10, + vertical: 4, + ), + decoration: BoxDecoration( + color: Colors.blue.withOpacity(0.1), + borderRadius: BorderRadius.circular(12), + ), + child: Text( + '实时', + style: TextStyle( + color: Colors.blue, + fontSize: 12, + fontWeight: FontWeight.bold, + ), + ), + ), + ], ), Text( "Today's Reservation Statistics", @@ -60,21 +84,31 @@ class SitePage extends GetView { ], ), ), - Container( - padding: const EdgeInsets.symmetric( - horizontal: 10, - vertical: 4, + IconButton( + onPressed: () async { + // 跳转消息中心 + var scanResult = await Get.to(() => const MessagePage()); + if (scanResult == null) { + controller.msgNotice(); + } + }, + // 这里的 style 是为了模拟你图片里的灰色圆形背景 + style: IconButton.styleFrom( + backgroundColor: Colors.grey[100], + padding: const EdgeInsets.all(8), ), - decoration: BoxDecoration( - color: Colors.blue.withOpacity(0.1), - borderRadius: BorderRadius.circular(12), - ), - child: const Text( - '实时', - style: TextStyle( - color: Colors.blue, - fontSize: 12, - fontWeight: FontWeight.bold, + icon: Badge( + // label: Text('3'), // 如果你想显示数字,就加 label + smallSize: 8, + // 红点的大小 + backgroundColor: controller.isNotice + ? Colors.red + : Colors.white, + // 红点颜色 + child: Icon( + Icons.notifications_outlined, + color: Colors.black87, + size: 25, ), ), ), @@ -156,9 +190,7 @@ class SitePage extends GetView { onPressed: () { Get.to( () => HistoryPage(), - arguments: { - 'stationName': controller.name, - }, + arguments: {'stationName': controller.name}, ); }, style: ElevatedButton.styleFrom(