From b828079c42615a5cf5a781604cdada7b8a920567 Mon Sep 17 00:00:00 2001 From: czz <862977248@qq.com> Date: Fri, 12 Sep 2025 09:37:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BB=E9=A1=B5=E7=9D=A1=E7=9C=A0=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=82=B9=E5=87=BB=E8=B7=B3=E8=BD=AC=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sleep/sleep_report_controller.dart | 54 ++++++++ .../homepage/mht_sleep_report_page.dart | 115 ++++++++-------- lib/pages/mh_page/homepage/new_Home_page.dart | 129 +++++++++++------- 3 files changed, 195 insertions(+), 103 deletions(-) diff --git a/lib/controller/sleep/sleep_report_controller.dart b/lib/controller/sleep/sleep_report_controller.dart index 626c1cd..e403180 100644 --- a/lib/controller/sleep/sleep_report_controller.dart +++ b/lib/controller/sleep/sleep_report_controller.dart @@ -1,5 +1,11 @@ import 'package:ef/ef.dart'; +import 'package:flutter/material.dart'; import 'package:json_annotation/json_annotation.dart'; +import 'package:vbvs_app/common/color/ServiceConstant.dart'; +import 'package:vbvs_app/common/util/MyUtils.dart'; +import 'package:vbvs_app/common/util/requestWithLog.dart'; +import 'package:vbvs_app/component/tool/TopSlideNotification.dart'; +import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart'; part 'sleep_report_controller.g.dart'; // 由json_serializable自动生成的部分 @@ -28,10 +34,58 @@ class SleepReportController extends GetControllerEx { Rx selectedDate = Rx(null); RxMap sleepReport = {}.obs; RxBool isLoading = false.obs; + // 下拉框的设备 mac + RxString mac = "".obs; + + // 日历选择的日期 + RxInt date = 0.obs; + + // 初始化方法(外部跳转时调用) + void initParams({String? macValue, int? dateValue}) { + if (macValue != null) mac.value = macValue; + if (dateValue != null) { + date.value = dateValue; + } + } // 每种类型对应一份数据 SleepReportController() { attr = GetModel(SleepReportModel()).obs; } + + void loadSleepReport(String data, String mac, BuildContext context) async { + isLoading.value = true; + + String serviceAddress = ServiceConstant.service_address; + String serviceName = ServiceConstant.server_service; + String serviceApi = ServiceConstant.sleep_report; + String queryUrl = + "$serviceAddress$serviceName$serviceApi?mac=${mac}&time=${data}&type=1&sleepType=2"; + await requestWithLog( + logTitle: "查询睡眠报告", + method: MyHttpMethod.get, + queryUrl: queryUrl, + onSuccess: (res) { + isLoading.value = false; + print(res); + sleepReport.value = res.data; + updateAll(); + }, + onFailure: (res) { + isLoading.value = false; + if (MainPageBBottomChange.getCurrentIndex() != null) { + if (MainPageBBottomChange.getCurrentIndex() == 1) { + TopSlideNotification.show(context, + text: res.msg!, textColor: themeController.currentColor.sc9); + } + } else { + TopSlideNotification.show(context, + text: res.msg!, textColor: themeController.currentColor.sc9); + } + sleepReport.value = {}; + updateAll(); + print(res); + }); + } } diff --git a/lib/pages/mh_page/homepage/mht_sleep_report_page.dart b/lib/pages/mh_page/homepage/mht_sleep_report_page.dart index e433950..9876893 100644 --- a/lib/pages/mh_page/homepage/mht_sleep_report_page.dart +++ b/lib/pages/mh_page/homepage/mht_sleep_report_page.dart @@ -41,7 +41,6 @@ class _MhtSleepReportPageState extends State { final RxBool isRightLimit = false.obs; var formFieldController = FormFieldController(null); var personInfo = {}.obs; - Rx isLoading = false.obs; @override void initState() { @@ -50,11 +49,9 @@ class _MhtSleepReportPageState extends State { //查询人员信息列表 deviceController.getPersonList(); } - WidgetsBinding.instance.addPostFrameCallback((_) { - final selected = DateTime.fromMillisecondsSinceEpoch( + var selected = DateTime.fromMillisecondsSinceEpoch( DateTime.now().millisecondsSinceEpoch); - calendarController.selectedDate.value = selected; sleepReportController.selectedDate.value = selected; sleepReportController.model.type = 1; @@ -239,18 +236,30 @@ class _MhtSleepReportPageState extends State { if (userInfoController.model.login! != null && userInfoController.model.login! == 1 && deviceController.personnelList.value.isNotEmpty) { - final list = deviceController.personnelList.value; - if (list.isNotEmpty) { + if (sleepReportController.mac.value != "") { WidgetsBinding.instance.addPostFrameCallback((_) { - formFieldController.value = list[0]["mac"]; - personInfo.value = list[0]; - homeController.selectPerson.value = list[0]; + formFieldController.value = + sleepReportController.mac.value; homeController.selectDevcie.value = - list[0]["mac"]; + sleepReportController.mac.value; deviceController .getSleeps(formFieldController.value); homeController.updateAll(); }); + } else { + final list = deviceController.personnelList.value; + if (list.isNotEmpty) { + WidgetsBinding.instance.addPostFrameCallback((_) { + formFieldController.value = list[0]["mac"]; + personInfo.value = list[0]; + homeController.selectPerson.value = list[0]; + homeController.selectDevcie.value = + list[0]["mac"]; + deviceController + .getSleeps(formFieldController.value); + homeController.updateAll(); + }); + } } return Padding( padding: EdgeInsetsDirectional.fromSTEB( @@ -365,7 +374,13 @@ class _MhtSleepReportPageState extends State { calendarController .selectedDate .value!); - loadSleepReport(data); + sleepReportController + .loadSleepReport( + data, + homeController + .selectDevcie + .value, + context); homeController .updateAll(); } @@ -445,7 +460,12 @@ class _MhtSleepReportPageState extends State { calendarController .selectedDate .value!); - loadSleepReport(data); + sleepReportController + .loadSleepReport( + data, + homeController + .selectDevcie.value, + context); sleepReportController .updateAll(); calendarController.updateAll(); @@ -497,7 +517,7 @@ class _MhtSleepReportPageState extends State { height: 30.rpx, ), getTimeWidget(), // 始终显示 - isLoading.value + sleepReportController.isLoading.value ? Padding( padding: EdgeInsets.fromLTRB( 0, 30.rpx, 0, 0), @@ -531,7 +551,13 @@ class _MhtSleepReportPageState extends State { calendarController .selectedDate .value!); - loadSleepReport(data); + sleepReportController + .loadSleepReport( + data, + homeController + .selectDevcie + .value, + context); }, ), SizedBox(height: 25.rpx), @@ -546,7 +572,13 @@ class _MhtSleepReportPageState extends State { calendarController .selectedDate .value!); - loadSleepReport(data); + sleepReportController + .loadSleepReport( + data, + homeController + .selectDevcie + .value, + context); }, ), ], @@ -569,7 +601,13 @@ class _MhtSleepReportPageState extends State { } Widget getTimeWidget() { - selectedDate = sleepReportController.selectedDate.value!; + if (sleepReportController.date.value > 0) { + selectedDate = + DateTime.fromMillisecondsSinceEpoch(sleepReportController.date.value); + } else { + selectedDate = sleepReportController.selectedDate.value!; + } + final type = sleepReportController.model.type; bool isChinese = AppLanguage().isChinese(); String displayText = ''; @@ -591,7 +629,8 @@ class _MhtSleepReportPageState extends State { sleepReportController.selectedDate.value; // String date = MyUtils.formatToDate(widget.data['date']); String data = MyUtils.formatDate(calendarController.selectedDate.value!); - loadSleepReport(data); + sleepReportController.loadSleepReport( + data, homeController.selectDevcie.value, context); sleepReportController.updateAll(); calendarController.updateAll(); } @@ -612,7 +651,8 @@ class _MhtSleepReportPageState extends State { calendarController.selectedDate.value = targetDate; String data = MyUtils.formatDate(targetDate); - loadSleepReport(data); + sleepReportController.loadSleepReport( + data, homeController.selectDevcie.value, context); sleepReportController.updateAll(); calendarController.updateAll(); @@ -626,7 +666,8 @@ class _MhtSleepReportPageState extends State { sleepReportController.selectedDate.value; // String date = MyUtils.formatToDate(widget.data['date']); String data = MyUtils.formatDate(calendarController.selectedDate.value!); - loadSleepReport(data); + sleepReportController.loadSleepReport( + data, homeController.selectDevcie.value, context); sleepReportController.updateAll(); calendarController.updateAll(); @@ -683,42 +724,6 @@ class _MhtSleepReportPageState extends State { ); } - void loadSleepReport(String data) { - isLoading.value = true; - String serviceAddress = ServiceConstant.service_address; - String serviceName = ServiceConstant.server_service; - String serviceApi = ServiceConstant.sleep_report; - String queryUrl = - "$serviceAddress$serviceName$serviceApi?mac=${homeController.selectDevcie.value}&time=${data}&type=1&sleepType=2"; - requestWithLog( - logTitle: "查询睡眠报告", - method: MyHttpMethod.get, - // queryUrl: - // "https://sleepdata.he-info.com/api/analysis/sleep/analysis?mac=${homeController.selectDevcie.value}&time=${data}&type=1", - queryUrl: queryUrl, - onSuccess: (res) { - isLoading.value = false; - print(res); - sleepReportController.sleepReport.value = res.data; - sleepReportController.updateAll(); - }, - onFailure: (res) { - isLoading.value = false; - if (MainPageBBottomChange.getCurrentIndex() != null) { - if (MainPageBBottomChange.getCurrentIndex() == 1) { - TopSlideNotification.show(context, - text: res.msg!, textColor: themeController.currentColor.sc9); - } - } else { - TopSlideNotification.show(context, - text: res.msg!, textColor: themeController.currentColor.sc9); - } - sleepReportController.sleepReport.value = {}; - sleepReportController.updateAll(); - print(res); - }); - } - static String _getEnglishMonthName(int month) { const monthNames = [ 'January', diff --git a/lib/pages/mh_page/homepage/new_Home_page.dart b/lib/pages/mh_page/homepage/new_Home_page.dart index 662f079..8cbd69a 100644 --- a/lib/pages/mh_page/homepage/new_Home_page.dart +++ b/lib/pages/mh_page/homepage/new_Home_page.dart @@ -11,9 +11,11 @@ import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/JPushUtil.dart'; import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/component/tool/ClickableContainer.dart'; +import 'package:vbvs_app/controller/sleep/sleep_report_controller.dart'; import 'package:vbvs_app/controller/user_info_controller.dart'; import 'package:vbvs_app/controller/weather/weather_controller.dart'; import 'package:vbvs_app/enum/APPPackageType.dart'; +import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.dart'; import 'package:vbvs_app/pages/mh_page/component/mht_bind_dialog.dart'; import 'package:vbvs_app/pages/mh_page/homepage/component/HomeDeviceWidget.dart'; import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart'; @@ -25,6 +27,7 @@ class NewHomePage extends StatefulWidget { } class _NewHomePageState extends State { + SleepReportController sleepReportController = Get.find(); UserInfoController userInfoController = Get.find(); MHTHomeController deviceController = Get.find(); MHTHomeController homeController = Get.find(); @@ -558,35 +561,43 @@ class _NewHomePageState extends State { if (formFieldController .value != null) { - Get.toNamed( - "/newSleepReportPage", - arguments: { - 'mac': + // Get.toNamed( + // "/newSleepReportPage", + // arguments: { + // 'mac': + // formFieldController + // .value!, + // 'type': 1, + // "person": + // personInfo.value, + // 'backgroundImg': + // 'assets/images/new_background.png', + // 'date': DateTime.now() + // .millisecondsSinceEpoch, + // 'person_show': false, + // 'reportPadding': false, + // }, + // ); + sleepReportController + .initParams( + macValue: + formFieldController + .value!, + dateValue: DateTime.now() + .millisecondsSinceEpoch, + ); + sleepReportController + .sleepReport.value = {}; + sleepReportController + .loadSleepReport( + MyUtils.formatDate( + DateTime.now()), formFieldController .value!, - 'type': 1, - "person": - personInfo.value, - 'backgroundImg': - 'assets/images/new_background.png', - 'date': DateTime.now() - .millisecondsSinceEpoch, - 'person_show': false, - 'reportPadding': false, - }, - ); - // 保存当前选中的mac到全局状态 - // homeController.selectDevcie - // .value = - // formFieldController - // .value!; - // homeController.selectPerson - // .value = - // personInfo.value; - - // // 使用底部tab跳转到第二个页面 - // MainPageBBottomChange - // .jumpTo(1); + context); + // 切换导航栏到报告页 + MainPageBBottomChange + .jumpTo(1); } }, child: Row( @@ -670,27 +681,49 @@ class _NewHomePageState extends State { int? timeMillis = parseToInt( day['time']); - Get.toNamed( - "/newSleepReportPage", - arguments: { - 'date': - timeMillis, - 'mac': - formFieldController - .value!, - 'type': 1, - "person": - personInfo - .value, - 'backgroundImg': - 'assets/images/new_background.png', - // 'backgroundColor':stringToColor("#003058"), - 'person_show': - false, - 'reportPadding': - false, - }, + // Get.toNamed( + // "/newSleepReportPage", + // arguments: { + // 'date': + // timeMillis, + // 'mac': + // formFieldController + // .value!, + // 'type': 1, + // "person": + // personInfo + // .value, + // 'backgroundImg': + // 'assets/images/new_background.png', + // // 'backgroundColor':stringToColor("#003058"), + // 'person_show': + // false, + // 'reportPadding': + // false, + // } + // //主页跳详情睡眠报告 + // ); + sleepReportController + .initParams( + macValue: + formFieldController + .value!, + dateValue: + timeMillis, ); + sleepReportController + .sleepReport + .value = {}; + sleepReportController.loadSleepReport( + MyUtils.formatDate( + DateTime.fromMillisecondsSinceEpoch( + timeMillis!)), + formFieldController + .value!, + context); + // 切换导航栏到报告页 + MainPageBBottomChange + .jumpTo(1); }, child: Container( padding: @@ -997,7 +1030,7 @@ class _NewHomePageState extends State { if (value is String) return int.tryParse(value); return null; } - + void _onReady() { // 页面渲染完成后执行的逻辑,比如处理通知跳转 _handlePendingRoute();