Merge remote-tracking branch 'origin/master'

This commit is contained in:
czz
2025-08-01 22:26:03 +08:00
8 changed files with 420 additions and 207 deletions

View File

@@ -6,7 +6,6 @@ import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:vbvs_app/common/color/app_uri_status.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/NullDataComponentWidget.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart';
import 'package:vbvs_app/pages/sleep_report/new_sleep_report_page.dart';
@@ -56,28 +55,38 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
child: Stack(
children: [
// Background Container
Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage((userInfoController.model.login! != null &&
userInfoController.model.login! == 1)
? 'assets/images/new_background.png'
: "assets/images/noLoginSleep.jpg"),
fit: BoxFit.fill,
),
),
),
// Blur overlay when not logged in
if (userInfoController.model.login == null ||
userInfoController.model.login != 1)
Positioned.fill(
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0),
child: Container(
color: Colors.black.withOpacity(0.5),
Obx(() {
return Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage((userInfoController.model.login! != null &&
userInfoController.model.login! == 1 &&
deviceController.personnelList.value.isNotEmpty)
? 'assets/images/new_background.png'
: "assets/images/noLoginSleep.jpg"),
fit: BoxFit.fill,
),
),
),
);
}),
Obx(() {
bool showBlur = userInfoController.model.login == null ||
userInfoController.model.login != 1 ||
(userInfoController.model.login == 1 &&
deviceController.personnelList.isEmpty);
return showBlur
? Positioned.fill(
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0),
child: Container(
color: Colors.black.withOpacity(0.5),
),
),
)
: const SizedBox.shrink(); // 不显示时返回空组件
}),
// Main content
Scaffold(
backgroundColor: Colors.transparent,
@@ -85,84 +94,137 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
child: Container(
width: MediaQuery.sizeOf(context).width,
height: MediaQuery.sizeOf(context).height,
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: (userInfoController.model.login! != null &&
userInfoController.model.login! == 1)
? MainAxisAlignment.start
: MainAxisAlignment.center,
children: [
//未登录
Obx(() {
if (userInfoController.model.login! == null ||
userInfoController.model.login! == 0) {
return Center(
child: InkWell(
onTap: () => Get.toNamed("/loginPage"),
child: RichText(
text: TextSpan(
children: [
TextSpan(
text: "请先".tr,
style: TextStyle(
color: Colors.white,
fontSize: 30.rpx,
child: Obx(() {
return Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment:
(userInfoController.model.login! != null &&
userInfoController.model.login! == 1 &&
deviceController.personnelList.value.isNotEmpty)
? MainAxisAlignment.start
: MainAxisAlignment.center,
children: [
//未登录或已登录但未绑定设备
Obx(() {
if (userInfoController.model.login! == null ||
userInfoController.model.login! == 0) {
return Center(
child: InkWell(
onTap: () => Get.toNamed("/loginPage"),
child: RichText(
text: TextSpan(
children: [
TextSpan(
text: "请先".tr,
style: TextStyle(
color: Colors.white,
fontSize: 30.rpx,
),
),
),
WidgetSpan(
child: Stack(
children: [
Text(
"登录".tr,
style: TextStyle(
color: stringToColor("#84F5FF"),
fontSize: 30.rpx,
WidgetSpan(
child: Stack(
children: [
Text(
"登录".tr,
style: TextStyle(
color: stringToColor("#84F5FF"),
fontSize: 30.rpx,
),
),
),
Positioned(
bottom: 0,
left: 0,
right: 0,
child: Container(
height: 1,
color: stringToColor("#84F5FF"),
Positioned(
bottom: 0,
left: 0,
right: 0,
child: Container(
height: 1,
color: stringToColor("#84F5FF"),
),
),
),
],
],
),
),
),
TextSpan(
text: "后,再查看睡眠报告".tr,
style: TextStyle(
color: Colors.white,
fontSize: 30.rpx,
TextSpan(
text: "后,再查看睡眠报告".tr,
style: TextStyle(
color: Colors.white,
fontSize: 30.rpx,
),
),
),
],
],
),
),
),
),
);
}
return Container();
}),
//已登录
Obx(() {
if (userInfoController.model.login! != null &&
userInfoController.model.login! == 1) {
final list = deviceController.personnelList.value;
if (list.isNotEmpty) {
WidgetsBinding.instance.addPostFrameCallback((_) {
formFieldController.value = list[0]["mac".tr];
personInfo.value = list[0];
homeController.selectPerson.value = list[0];
homeController.selectDevcie.value = list[0]["mac".tr];
deviceController
.getSleeps(formFieldController.value);
homeController.updateAll();
});
);
} else if (userInfoController.model.login == 1 &&
deviceController.personnelList.value.isEmpty) {
return Center(
child: InkWell(
onTap: () => Get.toNamed("/mHTDeviceTypePage"),
child: RichText(
text: TextSpan(
children: [
TextSpan(
text: "请先".tr,
style: TextStyle(
color: Colors.white,
fontSize: 30.rpx,
),
),
WidgetSpan(
child: Stack(
children: [
Text(
"绑定设备".tr,
style: TextStyle(
color: stringToColor("#84F5FF"),
fontSize: 30.rpx,
),
),
Positioned(
bottom: 0,
left: 0,
right: 0,
child: Container(
height: 1,
color: stringToColor("#84F5FF"),
),
),
],
),
),
TextSpan(
text: "后,再查看睡眠报告".tr,
style: TextStyle(
color: Colors.white,
fontSize: 30.rpx,
),
),
],
),
),
),
);
}
if (homeController.personnelList.value.length != 0)
return Container();
}),
//已登录且已绑定设备
Obx(() {
if (userInfoController.model.login! != null &&
userInfoController.model.login! == 1 &&
deviceController.personnelList.value.isNotEmpty) {
final list = deviceController.personnelList.value;
if (list.isNotEmpty) {
WidgetsBinding.instance.addPostFrameCallback((_) {
formFieldController.value = list[0]["mac".tr];
personInfo.value = list[0];
homeController.selectPerson.value = list[0];
homeController.selectDevcie.value =
list[0]["mac".tr];
deviceController
.getSleeps(formFieldController.value);
homeController.updateAll();
});
}
return Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0.rpx, 40.rpx, 30.rpx, 10.rpx),
@@ -235,8 +297,8 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
deviceController
.personnelList.value
.map<String>((d) {
var s =
d["name"] ?? d["mac".tr];
var s = d["name"] ??
d["mac".tr];
if (s == null) {
return "";
} else {
@@ -326,36 +388,34 @@ class _MhtSleepReportPageState extends State<MhtSleepReportPage> {
),
),
);
}
if (userInfoController.model.login != null &&
userInfoController.model.login == 1)
return Expanded(child: NullDataWidget());
return Container();
}),
}
return Container();
}),
Obx(() {
if (homeController.selectDevcie.value != null &&
homeController.selectDevcie.value!.isNotEmpty &&
deviceController.personnelList.value.isNotEmpty)
return Expanded(
child: NewSleepReportPage(
data: {
"tag": "123",
'date': DateTime.now().millisecondsSinceEpoch,
'mac'.tr: homeController.selectDevcie.value,
'person': homeController.selectPerson.value,
'backgroundImg':
'assets/images/new_background.png',
'arrow': false,
'noBackImg': true,
'person_show': false,
},
),
);
return Container();
}),
],
),
Obx(() {
if (homeController.selectDevcie.value != null &&
homeController.selectDevcie.value!.isNotEmpty &&
deviceController.personnelList.value.isNotEmpty)
return Expanded(
child: NewSleepReportPage(
data: {
"tag": "123",
'date': DateTime.now().millisecondsSinceEpoch,
'mac'.tr: homeController.selectDevcie.value,
'person': homeController.selectPerson.value,
'backgroundImg':
'assets/images/new_background.png',
'arrow': false,
'noBackImg': true,
'person_show': false,
},
),
);
return Container();
}),
],
);
}),
),
),
),