设备人员更新

This commit is contained in:
czz
2025-06-17 18:02:51 +08:00
parent 1eaa24791d
commit e34966aaba
19 changed files with 1120 additions and 726 deletions

View File

@@ -28,6 +28,7 @@ class ServiceConstant {
static String room_list = "/api/room/info"; //查询房间列表 static String room_list = "/api/room/info"; //查询房间列表
static String issue_list = "/api/help/list"; //问题与帮助列表 static String issue_list = "/api/help/list"; //问题与帮助列表
static String logService = "$service_address/vsbs_log"; static String logService = "$service_address/vsbs_log";
static const String webSocketService = "wss://$baseHost/vsbs_ws_gateway/ws"; static const String webSocketService = "wss://$baseHost/vsbs_ws_gateway/ws";
static const String sleep_token = "HdAMjzqiYQKsmHRyEFKhfRGQ"; static const String sleep_token = "HdAMjzqiYQKsmHRyEFKhfRGQ";

View File

@@ -50,7 +50,7 @@ class MhMessageController extends GetControllerEx<MhMessageModel> {
String serviceApi = ServiceConstant.message_list; String serviceApi = ServiceConstant.message_list;
String messageType = "app_system"; String messageType = "app_system";
if (model.type == 1) { if (model.type == 1) {
messageType = "app_body"; messageType = "app_vsm";
} else { } else {
messageType = "app_system"; messageType = "app_system";
} }

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:vbvs_app/pages/common/bezier_bottom_navigation_bar.dart'; import 'package:vbvs_app/pages/common/bezier_bottom_navigation_bar.dart';
import 'package:vbvs_app/pages/mh_page/MattressControl.dart'; import 'package:vbvs_app/pages/mh_page/MattressControl.dart';
import 'package:vbvs_app/pages/mh_page/device_list.dart';
import 'package:vbvs_app/pages/mh_page/homepage/mht_sleep_report_page.dart'; import 'package:vbvs_app/pages/mh_page/homepage/mht_sleep_report_page.dart';
import 'package:vbvs_app/pages/mh_page/homepage/new_Home_page.dart'; import 'package:vbvs_app/pages/mh_page/homepage/new_Home_page.dart';
import 'package:vbvs_app/pages/mh_page/new_mine_page.dart'; import 'package:vbvs_app/pages/mh_page/new_mine_page.dart';
@@ -31,7 +32,7 @@ class _HomePageState extends State<MainPageBBottomChange>
// Text('报告'), // Text('报告'),
// RegisterPage(), // RegisterPage(),
// ShareDeviceWidget(), // ShareDeviceWidget(),
MhtSleepReportPage(), DeviceListPage(),
// FindPasswordPage(), // FindPasswordPage(),
// Smys(), // Smys(),
MattressControlPage(), MattressControlPage(),

View File

@@ -102,152 +102,6 @@ class _MessagePageState extends State<MessagePage> {
child: Column( child: Column(
children: [ children: [
SizedBox(height: 40.rpx), SizedBox(height: 40.rpx),
// Expanded(
// child: Stack(
// alignment: Alignment.bottomLeft,
// children: [
// Row(
// mainAxisAlignment: MainAxisAlignment.start,
// children: [
// Obx(() {
// return ClickableContainer(
// padding: EdgeInsets.all(0),
// backgroundColor: Colors.transparent,
// highlightColor:
// themeController.currentColor.sc21,
// borderRadius: 8.rpx,
// onTap: () => _onTabChanged(0),
// child: Container(
// width: 160.rpx,
// alignment: Alignment.center,
// child: Stack(
// alignment: Alignment.center,
// clipBehavior: Clip.none,
// children: [
// Text(
// '体征消息'.tr,
// style: FlutterFlowTheme.of(context)
// .bodyMedium
// .override(
// fontFamily: 'Inter',
// fontSize: AppConstants()
// .title_text_fontSize,
// color:
// messageController
// .model.type ==
// 2
// ? themeController
// .currentColor.sc3
// : themeController
// .currentColor.sc2,
// ),
// ),
// Obx(() {
// return messageController.model
// .body_message_read ==
// 1
// ? Positioned(
// top: -4,
// right: -14,
// child: Container(
// width: 8,
// height: 8,
// decoration:
// const BoxDecoration(
// color: Colors.red,
// shape: BoxShape.circle,
// ),
// ),
// )
// : const SizedBox.shrink();
// }),
// ],
// ),
// ),
// );
// }),
// Obx(() {
// return ClickableContainer(
// padding: EdgeInsets.all(0),
// backgroundColor: Colors.transparent,
// highlightColor:
// themeController.currentColor.sc21,
// borderRadius: 8.rpx,
// onTap: () => _onTabChanged(1),
// child: Container(
// width: 160.rpx,
// alignment: Alignment.center,
// child: Stack(
// alignment: Alignment.center,
// clipBehavior: Clip.none,
// children: [
// Text(
// '系统消息'.tr,
// style: FlutterFlowTheme.of(context)
// .bodyMedium
// .override(
// fontFamily: 'Inter',
// fontSize: AppConstants()
// .title_text_fontSize,
// color:
// messageController
// .model.type ==
// 1
// ? themeController
// .currentColor.sc3
// : themeController
// .currentColor.sc2,
// ),
// ),
// Obx(() {
// return messageController.model
// .system_message_read ==
// 1
// ? Positioned(
// top: -4,
// right: -14,
// child: Container(
// width: 8,
// height: 8,
// decoration:
// const BoxDecoration(
// color: Colors.red,
// shape: BoxShape.circle,
// ),
// ),
// )
// : const SizedBox.shrink();
// }),
// ],
// ),
// ),
// );
// }),
// ].divide(SizedBox(width: 10.rpx)),
// ),
// Obx(() {
// double lineWidth = 170.rpx;
// return AnimatedPositioned(
// duration: const Duration(milliseconds: 300),
// curve: Curves.easeInOut,
// bottom: 0,
// left: messageController.model.type == 1
// ? 0
// : 170.rpx,
// child: Container(
// width: lineWidth,
// height: 4.rpx,
// decoration: BoxDecoration(
// color: themeController.currentColor.sc2,
// borderRadius: BorderRadius.circular(2.rpx),
// ),
// ),
// );
// }),
// ],
// ),
// ),
Expanded( Expanded(
child: Stack( child: Stack(
alignment: Alignment.bottomLeft, alignment: Alignment.bottomLeft,
@@ -407,7 +261,6 @@ class _MessagePageState extends State<MessagePage> {
], ],
), ),
), ),
SizedBox(height: 17.rpx), SizedBox(height: 17.rpx),
], ],
), ),

View File

@@ -135,9 +135,17 @@ class _MattressControlPageState extends State<MattressControlPage> {
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
_buildBedImageSection(context), Center(
_buildModeSelector(context), child: Text(
Expanded(child: _buildControlCards(context)), "等待引入",
style: TextStyle(
color: Colors.white,
),
))
// _buildBedImageSection(context),
// _buildModeSelector(context),
// Expanded(child: _buildControlCards(context)),
], ],
), ),
), ),

View File

@@ -0,0 +1,350 @@
import 'package:ef/ef.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/controller/device/blueteeth_bind_controller.dart';
import 'package:vbvs_app/controller/main_bottom/global_controller.dart';
import 'package:vbvs_app/controller/theme_controller/ThemeController.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
class ApplyRepairSuccess extends StatefulWidget {
const ApplyRepairSuccess({super.key});
@override
State<ApplyRepairSuccess> createState() => _ApplyRepairSuccessState();
}
class _ApplyRepairSuccessState extends State<ApplyRepairSuccess> {
GlobalController globalController = Get.find();
UserInfoController userInfoController = Get.find();
BlueteethBindController blueteethBindController = Get.find();
ThemeController themeController = Get.find();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, bodySize) => GestureDetector(
onTap: () => FocusScope.of(context).unfocus(),
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/images/new_background.png'), // 本地图片
fit: BoxFit.fill, // 填满整个 Container
),
),
child: Scaffold(
backgroundColor: Colors.transparent, // 加上这一行
appBar: AppBar(
backgroundColor: Colors.transparent,
automaticallyImplyLeading: false,
iconTheme: IconThemeData(
color: themeController.currentColor.sc3,
),
titleSpacing: 0,
// leading: returnIconButtom,
title: Container(
width: double.infinity,
height: 180.rpx,
child: Stack(
alignment: Alignment.center,
children: [
/// 居中标题
Text(
'报修成功标题'.tr,
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Readex Pro',
color: themeController.currentColor.sc3,
letterSpacing: 0,
fontSize: 30.rpx,
),
),
/// 左边返回按钮
// Positioned(
// left: 0,
// child: returnIconButtom,
// ),
Positioned(
left: 40.rpx,
child: ClickableContainer(
onTap: () {
Get.offNamed("/mianPageBottomChange");
},
backgroundColor: Colors.transparent,
highlightColor: Colors
.grey, // 可以设置为 themeController.currentColor.sc3 之类
borderRadius: 8.rpx,
padding: EdgeInsets.all(8.rpx), // 增加可点击区域
child: SvgPicture.asset(
'assets/img/icon/close.svg',
width: 25.rpx,
height: 25.rpx,
color: themeController.currentColor.sc3,
),
),
),
],
),
),
actions: [],
centerTitle: false,
),
body: SafeArea(
top: true,
child: Padding(
padding: EdgeInsetsDirectional.fromSTEB(113.rpx, 0, 113.rpx, 0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
mainAxisSize: MainAxisSize.max,
children: [
Container(
height: bodySize.maxHeight * 0.15,
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 0.rpx, 0, 0),
child: Container(
width: 148.rpx,
height: 148.rpx,
// width: double.infinity,
decoration: BoxDecoration(),
child: SvgPicture.asset('assets/img/icon/tick.svg',
fit: BoxFit.cover, color: Color(0XFF84F5FF)),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 42.rpx, 0, 0),
child: Container(
width: double.infinity,
decoration: BoxDecoration(),
child: Align(
alignment: AlignmentDirectional(0, 0),
child: Text(
'报修成功'.tr,
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
fontFamily: 'Inter',
fontSize: 30.rpx,
letterSpacing: 0.0,
color: themeController.currentColor.sc3,
),
),
),
),
),
SizedBox(
height: 90.rpx,
),
// Padding(
// padding:
// EdgeInsetsDirectional.fromSTEB(0, 265.rpx, 0, 0),
// child: Container(
// width: double.infinity,
// decoration: BoxDecoration(),
// child: Align(
// alignment: AlignmentDirectional(0, 0),
// child: Text(
// '绑定成功.分享标题'.tr,
// style: FlutterFlowTheme.of(context)
// .bodyMedium
// .override(
// fontFamily: 'Inter',
// fontSize: 30.rpx,
// letterSpacing: 0.0,
// color: themeController.currentColor.sc3,
// ),
// ),
// ),
// ),
// ),
// Padding(
// padding: EdgeInsetsDirectional.fromSTEB(0, 48.rpx, 0, 0),
// child: Container(
// width: double.infinity,
// decoration: BoxDecoration(),
// child: Align(
// alignment: AlignmentDirectional(-1, 0),
// child: Text(
// '报修成功标语'.tr,
// style: FlutterFlowTheme.of(context)
// .bodyMedium
// .override(
// fontFamily: 'Inter',
// fontSize: 26.rpx,
// letterSpacing: 0.0,
// color: themeController.currentColor.sc4,
// ),
// ),
// ),
// ),
// ),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 110.rpx, 0, 0),
child: CustomCard(
borderRadius:
AppConstants().button_container_radius, // 圆角半径
gradientDirection: GradientDirection.vertical,
onTap: () async {
Get.toNamed("/repairListPage");
},
colors: [
Color(0xFFFCFCFC),
Color(0xFFF8FAF9),
Color(0XFFECF6F3),
Color(0XFFD9F0E9),
Color(0xFFCEECE3)
],
child: Container(
width: MediaQuery.sizeOf(context).width * 0.66,
height: MediaQuery.sizeOf(context).height * 0.055,
constraints: BoxConstraints(
minWidth: 500.rpx,
minHeight: 90.rpx,
),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
0, 2.rpx, 0, 0),
child: SvgPicture.asset(
'assets/img/icon/history.svg',
width: 25.rpx,
height: 25.rpx, // 如果 SVG 中没有固定颜色,可以这样设置
color: Color(0xFF011D33),
),
),
Text(
'查看报修历史'.tr,
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
color: Color(0xFF011D33),
fontFamily: 'Inter',
fontSize: AppConstants()
.normal_text_fontSize, // 自定义字体大小
letterSpacing: 0.0,
),
),
].divide(SizedBox(width: 17.rpx)),
),
),
),
),
Padding(
padding: EdgeInsetsDirectional.fromSTEB(0, 18.rpx, 0, 0),
child: CustomCard(
borderRadius:
AppConstants().button_container_radius, // 圆角半径
gradientDirection: GradientDirection.vertical,
onTap: () {
Get.offNamed("/mianPageBottomChange");
},
colors: [
// 渐变色
Color(0xFFFCFCFC),
Color(0xFFF8FAF9),
Color(0XFFECF6F3),
Color(0XFFD9F0E9),
Color(0xFFCEECE3)
],
child: Container(
width: MediaQuery.sizeOf(context).width * 0.66,
height: MediaQuery.sizeOf(context).height * 0.055,
constraints: BoxConstraints(
minWidth: 500.rpx,
minHeight: 90.rpx,
),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'绑定成功.返回'.tr,
style: FlutterFlowTheme.of(context)
.bodyMedium
.override(
color: Color(0xFF011D33),
fontFamily: 'Inter',
fontSize: AppConstants()
.normal_text_fontSize, // 自定义字体大小
letterSpacing: 0.0,
),
),
].divide(SizedBox(width: 17.rpx)),
),
),
),
),
],
),
),
),
),
),
),
);
}
Widget _buildDeviceCard(BuildContext context,
{required String title, required String imageUrl, required String type}) {
return CustomCard(
borderRadius: 20.rpx, // 圆角大小
onTap: () {
if (type != null) {
if (type == '1') {
Get.toNamed("/blueteethDevice");
}
}
},
colors: [themeController.currentColor.sc17], // 背景色
child: Container(
width: double.infinity,
height: MediaQuery.sizeOf(context).height * 0.135,
constraints: BoxConstraints(
minHeight: 220.rpx,
),
padding: EdgeInsetsDirectional.fromSTEB(77.rpx, 0, 21.rpx, 0),
child: Row(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
title,
style: FlutterFlowTheme.of(context).bodyMedium.override(
fontFamily: 'Inter',
color: const Color(0xFFC2CED7),
fontSize: 30.rpx,
letterSpacing: 0.0,
),
),
ClipRRect(
borderRadius: BorderRadius.circular(8.rpx),
child: Image.asset(
imageUrl,
width: 212.rpx,
height: 168.rpx,
),
),
],
),
),
);
}
}

View File

@@ -1,19 +1,25 @@
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutterflow_ui/flutterflow_ui.dart'; import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/color/appConstants.dart'; import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/color/appFontsize.dart'; import 'package:vbvs_app/common/color/appFontsize.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/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/img/img_default_widget.dart'; import 'package:vbvs_app/component/img/img_default_widget.dart';
import 'package:vbvs_app/component/img/img_preview_widget.dart'; import 'package:vbvs_app/component/img/img_preview_widget.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart'; import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/mh_controller/apply_repair_controller.dart'; import 'package:vbvs_app/controller/mh_controller/apply_repair_controller.dart';
import 'package:vbvs_app/controller/repair/repair_controller.dart';
import 'package:vbvs_app/model/api_response.dart';
class ApplyRepairPage extends GetView<ApplyRepairController> { class ApplyRepairPage extends GetView<ApplyRepairController> {
final scaffoldKey = GlobalKey<ScaffoldState>(); final scaffoldKey = GlobalKey<ScaffoldState>();
BoxConstraints? bodysize; BoxConstraints? bodysize;
RepairController repairController = Get.find();
// ApplyRepairPage() { // ApplyRepairPage() {
// controller.attr.value.listenlists.clear(); // controller.attr.value.listenlists.clear();
// controller.getDeviceList(); // controller.getDeviceList();
@@ -24,6 +30,9 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
// controller.model.device_id = ""; // controller.model.device_id = "";
// } // }
final List<GlobalKey> repairItemKeys = [];
final GlobalKey contactKey = GlobalKey();
final GlobalKey phoneKey = GlobalKey();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var tmpcontroller = var tmpcontroller =
@@ -869,8 +878,45 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
.model.issue_img!.isEmpty) .model.issue_img!.isEmpty)
Flexible( Flexible(
child: InkWell( child: InkWell(
onTap: () { onTap: () async {
// controller.uploadImg(); ApiResponse apiResponse =
await repairController
.uploadImg();
// print(apiResponse);
// if (apiResponse.code ==
// HttpStatusCodes.ok) {
// print(widget.model);
// // setState(() {
// // widget.model['path'] = apiResponse.data['path'];
// // });
// widget.model['path'] =
// apiResponse
// .data['path'];
// repairController.repairList
// .refresh(); // 通知 Obx 更新(如果用了 GetX
// print(widget.model);
// } else {
// if (widget.model['path'] ==
// null ||
// widget.model['path']
// .isEmpty
// ) {
// TopSlideNotification.show(
// context,
// text: apiResponse.msg!,
// textColor: apiResponse
// .code ==
// HttpStatusCodes
// .ok
// ? themeController
// .currentColor
// .sc2
// : themeController
// .currentColor
// .sc9,
// );
// }
// }
}, },
child: Container( child: Container(
width: width:
@@ -1330,76 +1376,62 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
), ),
Padding( Padding(
padding: EdgeInsetsDirectional.fromSTEB( padding: EdgeInsetsDirectional.fromSTEB(
0, 26.rpx, 0, 0), 0, 48.rpx, 0, 0),
child: Container( child: Container(
width: bodysize!.maxWidth, width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.17, height: bodysize!.maxHeight * 0.17,
constraints: const BoxConstraints( constraints: BoxConstraints(
minHeight: 222, minHeight: 345.rpx,
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0XFF003058), color: Color(0XFF003058),
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
child: Container(
width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 1,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
),
child: Column( child: Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: [ children: [
Align( Align(
alignment: alignment:
const AlignmentDirectional( const AlignmentDirectional(0, 0),
0, 0),
child: Padding( child: Padding(
padding: padding:
const EdgeInsetsDirectional EdgeInsetsDirectional.fromSTEB(
.fromSTEB(0, 15, 0, 15), 0, 48.rpx, 0, 48.rpx),
child: Text( child: Text(
'联系方式', '联系方式',
style: style: FlutterFlowTheme.of(
FlutterFlowTheme.of(context) context)
.bodyMedium .bodyMedium
.override( .override(
fontFamily: fontFamily: 'Readex Pro',
'Readex Pro',
color: Colors.white, color: Colors.white,
fontSize: 30.rpx, fontSize: 30.rpx,
letterSpacing: 0, letterSpacing: 0,
fontWeight: fontWeight: FontWeight.w600,
FontWeight.w600,
), ),
), ),
), ),
), ),
Expanded( Expanded(
child: Padding( child: Padding(
padding: EdgeInsetsDirectional padding:
.fromSTEB( EdgeInsetsDirectional.fromSTEB(
25.rpx, 0, 34.rpx, 0), 25.rpx, 0, 34.rpx, 70.rpx),
child: Container( child: Container(
width: width: MediaQuery.sizeOf(context)
MediaQuery.sizeOf(context)
.width, .width,
height: height: MediaQuery.sizeOf(context)
MediaQuery.sizeOf(context)
.height * .height *
1, 1,
child: Column( child: Column(
mainAxisSize: mainAxisSize: MainAxisSize.max,
MainAxisSize.max,
children: [ children: [
Flexible( Flexible(
child: Container( child: Container(
width: width: MediaQuery.sizeOf(
MediaQuery.sizeOf(
context) context)
.width, .width,
height: height: MediaQuery.sizeOf(
MediaQuery.sizeOf(
context) context)
.height * .height *
0.038, 0.038,
@@ -1419,8 +1451,8 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
.height * .height *
0.038, 0.038,
constraints: constraints:
const BoxConstraints( BoxConstraints(
minWidth: 60, minWidth: 60.rpx,
), ),
// decoration: // decoration:
// BoxDecoration( // BoxDecoration(
@@ -1516,12 +1548,11 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
const BorderSide( const BorderSide(
color: Color( color: Color(
0x00000000), 0x00000000),
width: width: 2,
2,
), ),
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius
8), .circular(8),
), ),
focusedBorder: focusedBorder:
UnderlineInputBorder( UnderlineInputBorder(
@@ -1529,12 +1560,11 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
const BorderSide( const BorderSide(
color: Color( color: Color(
0x00000000), 0x00000000),
width: width: 2,
2,
), ),
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius
8), .circular(8),
), ),
errorBorder: errorBorder:
UnderlineInputBorder( UnderlineInputBorder(
@@ -1542,12 +1572,11 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
const BorderSide( const BorderSide(
color: Color( color: Color(
0x00000000), 0x00000000),
width: width: 2,
2,
), ),
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius
8), .circular(8),
), ),
focusedErrorBorder: focusedErrorBorder:
UnderlineInputBorder( UnderlineInputBorder(
@@ -1555,12 +1584,11 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
const BorderSide( const BorderSide(
color: Color( color: Color(
0x00000000), 0x00000000),
width: width: 2,
2,
), ),
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius
8), .circular(8),
), ),
), ),
style: FlutterFlowTheme.of( style: FlutterFlowTheme.of(
@@ -1575,20 +1603,17 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
), ),
), ),
), ),
].divide( ].divide(const SizedBox(
const SizedBox(
width: 13)), width: 13)),
), ),
), ),
), ),
Flexible( Flexible(
child: Container( child: Container(
width: width: MediaQuery.sizeOf(
MediaQuery.sizeOf(
context) context)
.width, .width,
height: height: MediaQuery.sizeOf(
MediaQuery.sizeOf(
context) context)
.height * .height *
0.038, 0.038,
@@ -1608,8 +1633,8 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
.height * .height *
0.038, 0.038,
constraints: constraints:
const BoxConstraints( BoxConstraints(
minWidth: 60, minWidth: 60.rpx,
), ),
child: Row( child: Row(
mainAxisSize: mainAxisSize:
@@ -1696,12 +1721,11 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
const BorderSide( const BorderSide(
color: Color( color: Color(
0x00000000), 0x00000000),
width: width: 2,
2,
), ),
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius
8), .circular(8),
), ),
focusedBorder: focusedBorder:
UnderlineInputBorder( UnderlineInputBorder(
@@ -1709,12 +1733,11 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
const BorderSide( const BorderSide(
color: Color( color: Color(
0x00000000), 0x00000000),
width: width: 2,
2,
), ),
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius
8), .circular(8),
), ),
errorBorder: errorBorder:
UnderlineInputBorder( UnderlineInputBorder(
@@ -1722,12 +1745,11 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
const BorderSide( const BorderSide(
color: Color( color: Color(
0x00000000), 0x00000000),
width: width: 2,
2,
), ),
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius
8), .circular(8),
), ),
focusedErrorBorder: focusedErrorBorder:
UnderlineInputBorder( UnderlineInputBorder(
@@ -1735,12 +1757,11 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
const BorderSide( const BorderSide(
color: Color( color: Color(
0x00000000), 0x00000000),
width: width: 2,
2,
), ),
borderRadius: borderRadius:
BorderRadius.circular( BorderRadius
8), .circular(8),
), ),
), ),
style: FlutterFlowTheme.of( style: FlutterFlowTheme.of(
@@ -1755,14 +1776,13 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
), ),
), ),
), ),
].divide( ].divide(const SizedBox(
const SizedBox(
width: 13)), width: 13)),
), ),
), ),
), ),
].divide(const SizedBox( ].divide(
height: 15)), const SizedBox(height: 15)),
), ),
), ),
), ),
@@ -1771,7 +1791,6 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
), ),
), ),
), ),
),
], ],
), ),
), ),
@@ -1785,31 +1804,60 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
width: bodysize!.maxWidth, width: bodysize!.maxWidth,
height: bodysize!.maxHeight * 0.056, height: bodysize!.maxHeight * 0.056,
decoration: BoxDecoration( decoration: BoxDecoration(
color: FlutterFlowTheme.of(context)
.secondaryBackground,
borderRadius: BorderRadius.circular(16.rpx), borderRadius: BorderRadius.circular(16.rpx),
), ),
child: CustomCard( child: CustomCard(
borderRadius: 16.rpx, borderRadius: 16.rpx,
gradientDirection: GradientDirection.vertical, gradientDirection: GradientDirection.vertical,
onTap: () { onTap: () async {
// print('Button pressed ...'); Get.toNamed("/applyRepairSuccess");
// controller.submitRepair(context).then((msg) { // TopSlideNotification.show(
// if (msg.isEmpty) { // context,
// MessageListController messageListController = // text: "功能开发中...",
// Get.find(); // );
// messageListController.addMessage();
// Get.to(() => ApplyRepairSuccessPage(), // String msg = checkRepairParam();
// arguments: {'model': controller.model}); // if (msg.isNotEmpty) {
// controller.model = // TopSlideNotification.show(context,
// ApplyRepairModel(); // 在 submitRepair 完成后执行 // text: msg,
// controller.updateAll(); // textColor:
// themeController.currentColor.sc9);
// } else {
// String serviceAddress =
// ServiceConstant.service_address;
// String serviceName =
// ServiceConstant.server_service;
// String serviceApi =
// ServiceConstant.submit_repair;
// String queryUrl =
// "$serviceAddress$serviceName$serviceApi";
// var data = {
// "device": repairController.repairList.value,
// "type": repairController.device_type.value,
// "contacts": {
// "name": repairController.name.value,
// "phone": repairController.phone.value
// },
// };
// ApiResponse apiResponse = await requestWithLog(
// logTitle: "提交报修信息",
// method: MyHttpMethod.post,
// queryUrl: queryUrl,
// data: data,
// onSuccess: (res) {
// TopSlideNotification.show(context,
// text: res.msg!);
// // Get.back();
// Get.toNamed("/applyRepairSuccess");
// },
// onFailure: (res) {
// TopSlideNotification.show(context,
// text: res.msg!,
// textColor:
// themeController.currentColor.sc9);
// },
// );
// } // }
// }).catchError((error) {
// // 错误处理
// print('Error: $error');
// });
controller.submitRepair(context);
}, },
colors: const [ colors: const [
Color(0xFFFCFCFC), Color(0xFFFCFCFC),
@@ -1880,4 +1928,73 @@ class ApplyRepairPage extends GetView<ApplyRepairController> {
); );
}).toList(); }).toList();
} }
String checkRepairParam() {
String errormsg = "";
// 检查报修项
for (var i = 0; i < repairController.repairList.length; i++) {
final item = repairController.repairList[i];
if (item["path"] == null || item["path"].toString().isEmpty) {
_scrollToKey(repairItemKeys[i]);
// return "第 ${i + 1} 项图片未上传";
return "图片未上传".tr;
}
if (item["id"] == null || item["id"].toString().isEmpty) {
_scrollToKey(repairItemKeys[i]);
// return "第 ${i + 1} 项设备未选择";
return "设备未选择".tr;
}
if (item["param"] == null || item["param"].toString().isEmpty) {
_scrollToKey(repairItemKeys[i]);
// return "第 ${i + 1} 项参数未填写";
return "参数未填写".tr;
}
if (item["issue"] == null || item["issue"].toString().isEmpty) {
_scrollToKey(repairItemKeys[i]);
// return "第 ${i + 1} 项问题描述未填写";
return "问题描述未填写".tr;
}
if (item["issue"] != null && item["issue"].toString().trim().isNotEmpty) {
final issueText = item["issue"].toString().trim();
final charCount = issueText.runes.length;
if (charCount > 60) {
_scrollToKey(repairItemKeys[i]);
return "问题描述最多输入60个字".tr;
}
} else {
_scrollToKey(repairItemKeys[i]);
return "问题描述不能为空".tr;
}
}
// 检查联系人
if (repairController.name.trim().isEmpty) {
_scrollToKey(contactKey);
return "联系人不能为空".tr;
}
if (repairController.phone.trim().isEmpty) {
_scrollToKey(phoneKey);
return "联系电话不能为空".tr;
}
if (!MyUtils.isValidPhoneNumber(repairController.phone.trim())) {
_scrollToKey(phoneKey);
return "无效的手机号码".tr;
}
return errormsg;
}
// 新增滚动方法
void _scrollToKey(GlobalKey key) {
WidgetsBinding.instance.addPostFrameCallback((_) {
Scrollable.ensureVisible(
key.currentContext!,
duration: Duration(milliseconds: 300),
curve: Curves.easeInOut,
);
});
}
} }

View File

@@ -5,6 +5,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart'; import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
class BluetoothPage extends GetView { class BluetoothPage extends GetView {
Map data; Map data;
@@ -135,18 +136,14 @@ class BluetoothPage extends GetView {
arguments: data), arguments: data),
_buildMenuButton( _buildMenuButton(
context, '房间选择', "/roomPickerPage"), context, '房间选择', "/roomPickerPage"),
_buildMenuButton( _buildMenuButton(context, '设备校准', ""),
context, '设备校准', "/devicePeopleInfo"), _buildMenuButton(context, '体征传感器', ""),
_buildMenuButton( _buildMenuButton(context, 'WIFI配置', ""),
context, '体征传感器', "/devicePeopleInfo"),
_buildMenuButton(
context, 'WIFI配置', "/devicePeopleInfo"),
_buildMenuButton( _buildMenuButton(
context, '睡眠习惯', "/sleepHabitPage"), context, '睡眠习惯', "/sleepHabitPage"),
_buildMenuButton( _buildMenuButton(
context, '分享设备', "/deviceSharePage"), context, '分享设备', "/deviceSharePage"),
_buildMenuButton( _buildMenuButton(context, '解绑', ""),
context, '解绑', "/devicePeopleInfo"),
], ],
), ),
), ),
@@ -172,6 +169,11 @@ class BluetoothPage extends GetView {
} else { } else {
Get.toNamed(path!); Get.toNamed(path!);
} }
} else {
TopSlideNotification.show(
context,
text: "功能开发中...",
);
} }
}, },
child: Container( child: Container(

View File

@@ -7,6 +7,7 @@ import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/base/THFlutterFlowDropDown.dart'; import 'package:vbvs_app/component/base/THFlutterFlowDropDown.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart'; import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/mh_controller/book_info_controller.dart'; import 'package:vbvs_app/controller/mh_controller/book_info_controller.dart';
import 'package:vbvs_app/pages/common/selectDialog.dart'; import 'package:vbvs_app/pages/common/selectDialog.dart';
import 'package:vbvs_app/pages/mh_page/book_date_widget.dart'; import 'package:vbvs_app/pages/mh_page/book_date_widget.dart';
@@ -584,39 +585,39 @@ class BookInfoPage extends GetView<BookInfoController> {
borderRadius: 16.rpx, borderRadius: 16.rpx,
gradientDirection: GradientDirection.vertical, gradientDirection: GradientDirection.vertical,
onTap: () { onTap: () {
if (controller.model.select_time_index == null) { // if (controller.model.select_time_index == null) {
showToast("请选择体验时间"); // showToast("请选择体验时间");
return; // return;
} // }
if (controller.model.userName == null || // if (controller.model.userName == null ||
controller.model.userName == "") { // controller.model.userName == "") {
showToast("请输入姓名"); // showToast("请输入姓名");
return; // return;
} // }
if (controller.model.userPhone == null || // if (controller.model.userPhone == null ||
controller.model.userPhone == "") { // controller.model.userPhone == "") {
showToast("请输入手机号"); // showToast("请输入手机号");
return; // return;
} // }
if (MyUtils.isValidPhoneNumber( // if (MyUtils.isValidPhoneNumber(
controller.model.userPhone!) == // controller.model.userPhone!) ==
false) { // false) {
showToast("请输入正确的手机号"); // showToast("请输入正确的手机号");
return; // return;
} // }
controller.submitData(data["id"]).then((d) { // controller.submitData(data["id"]).then((d) {
if (d.data["status"] == 2) { // if (d.data["status"] == 2) {
d.data["addressDetail"] = data['addressDetail']; // d.data["addressDetail"] = data['addressDetail'];
d.data["name"] = data["name"]; // d.data["name"] = data["name"];
controller.messageAdd(d.data); // controller.messageAdd(d.data);
Get.offAndToNamed("/bookSuccessPage", // Get.offAndToNamed("/bookSuccessPage",
arguments: {"data": d.data}); // arguments: {"data": d.data});
} else { // } else {
showToast("预约失败"); // showToast("预约失败");
} // }
}).catchError((d) { // }).catchError((d) {
showToast("预约失败"); // showToast("预约失败");
}); // });
// Get.toNamed("/bookSuccessPage", arguments: { // Get.toNamed("/bookSuccessPage", arguments: {
// "data": { // "data": {
// "id": "7fbfbd614ef5befa3d8a84730f666853", // "id": "7fbfbd614ef5befa3d8a84730f666853",
@@ -678,6 +679,10 @@ class BookInfoPage extends GetView<BookInfoController> {
// "storeAddress": null // "storeAddress": null
// }, // },
// }); // });
TopSlideNotification.show(
context,
text: "功能开发中...",
);
}, },
colors: const [ colors: const [
Color(0xFFFCFCFC), Color(0xFFFCFCFC),

View File

@@ -35,6 +35,9 @@ class DevicePeopleInfo extends GetView<PeopleInfoController> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
WidgetsBinding.instance.addPostFrameCallback((_) {
controller.initData(data['mac']);
});
return LayoutBuilder( return LayoutBuilder(
builder: (context, boxConstraints) => GestureDetector( builder: (context, boxConstraints) => GestureDetector(
onTap: () => FocusScope.of(context).unfocus(), onTap: () => FocusScope.of(context).unfocus(),

View File

@@ -1,20 +1,37 @@
import 'package:ef/base/widget/flutterflow/FlutterFlowTheme.dart'; import 'package:ef/base/widget/flutterflow/FlutterFlowTheme.dart';
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:vbvs_app/common/color/ServiceConstant.dart';
import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/common/util/requestWithLog.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart'; import 'package:vbvs_app/component/tool/CustomCard.dart';
class EditBedPage extends StatefulWidget { class EditBedPage extends StatefulWidget {
const EditBedPage({Key? key}) : super(key: key); final Map data;
EditBedPage({Key? key, required this.data});
@override @override
_EditBedPageState createState() => _EditBedPageState(); _EditBedPageState createState() => _EditBedPageState();
} }
BoxConstraints? bodysize; BoxConstraints? bodysize;
RxString _bedName = "".obs;
class _EditBedPageState extends State<EditBedPage> { class _EditBedPageState extends State<EditBedPage> {
late Map<String, dynamic> editedData;
late TextEditingController _nameController; //名称文本输入框
@override
void initState() {
super.initState();
editedData = Map.from(widget.data); // 创建副本
_nameController = TextEditingController(text: editedData['name']);
}
@override
void dispose() {
_nameController.dispose(); // 记得释放Controller
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return LayoutBuilder(builder: (context, cc) { return LayoutBuilder(builder: (context, cc) {
@@ -94,12 +111,13 @@ class _EditBedPageState extends State<EditBedPage> {
width: 0))), width: 0))),
child: TextFormField( child: TextFormField(
// autofocus: true, // autofocus: true,
controller: _nameController,
obscureText: false, obscureText: false,
onChanged: (val) { onChanged: (val) {
// controller.model.name = val; editedData['name'] = val;
}, },
textAlign: TextAlign.center, textAlign: TextAlign.center,
initialValue: _bedName.value, initialValue: widget.data['name'],
decoration: InputDecoration( decoration: InputDecoration(
hintText: "请输入床的名称", hintText: "请输入床的名称",
contentPadding: contentPadding:
@@ -172,7 +190,25 @@ class _EditBedPageState extends State<EditBedPage> {
child: CustomCard( child: CustomCard(
borderRadius: 16.rpx, borderRadius: 16.rpx,
gradientDirection: GradientDirection.vertical, gradientDirection: GradientDirection.vertical,
onTap: () {}, onTap: () async {
String serviceAddress =
ServiceConstant.service_address;
String serviceName =
ServiceConstant.server_service;
String serviceApi = ServiceConstant.person_info;
String queryUrl =
"$serviceAddress$serviceName$serviceApi";
await requestWithLog(
logTitle: "更新设备信息",
method: MyHttpMethod.put,
queryUrl: queryUrl,
data: {
"id": editedData["id"],
"name": editedData["name"],
},
onSuccess: (res) {},
);
},
colors: const [ colors: const [
Color(0xFFFCFCFC), Color(0xFFFCFCFC),
Color(0xFFF8FAF9), Color(0xFFF8FAF9),

View File

@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart'; import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/mh_controller/issue_controller.dart'; import 'package:vbvs_app/controller/mh_controller/issue_controller.dart';
import 'package:vbvs_app/controller/mh_controller/issue_preview_controller.dart'; import 'package:vbvs_app/controller/mh_controller/issue_preview_controller.dart';
@@ -21,13 +22,17 @@ class IssuePreviewWidget extends GetView<IssuePreviewInfoController> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return InkWell( return InkWell(
onTap: () async { onTap: () async {
issueListController.model.selectedIndex = index; // issueListController.model.selectedIndex = index;
issueListController.updateAll(); // issueListController.updateAll();
await Future.delayed(Duration(milliseconds: 100)); // await Future.delayed(Duration(milliseconds: 100));
issueListController.model.selectedIndex = -1; // issueListController.model.selectedIndex = -1;
issueListController.updateAll(); // issueListController.updateAll();
var article = issueListController.model.issueList![index]; // var article = issueListController.model.issueList![index];
Get.toNamed("/helpArticle", arguments: article); // Get.toNamed("/helpArticle", arguments: article);
TopSlideNotification.show(
context,
text: "功能开发中...",
);
}, },
child: Obx(() { child: Obx(() {
return Container( return Container(

View File

@@ -77,65 +77,65 @@ class _MessagePageState extends State<MessagePage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
messageController.messageList.value = [ // messageController.messageList.value = [
{ // {
"_id": "6836c3ee4e626030c8000000", // "_id": "6836c3ee4e626030c8000000",
"type": "app_vsm", // "type": "app_vsm",
"data": { // "data": {
"title": "实时监测通知", // "title": "实时监测通知",
"val": [ // "val": [
{"k": "设备ID", "v": "48ca43b1b454"}, // {"k": "设备ID", "v": "48ca43b1b454"},
{"k": "使用人员", "v": "bb"}, // {"k": "使用人员", "v": "bb"},
{"k": "消息类型", "v": "呼吸异常"}, // {"k": "消息类型", "v": "呼吸异常"},
{"k": "检测值", "v": '26'}, // {"k": "检测值", "v": '26'},
{"k": "检测时间", "v": "2025-05-28 16:06:07"} // {"k": "检测时间", "v": "2025-05-28 16:06:07"}
] // ]
}, // },
"level": 3, // "level": 3,
"tid": "67f5d96e26ef310463000000", // "tid": "67f5d96e26ef310463000000",
"uid": "68319fe9702cc59bd1000000", // "uid": "68319fe9702cc59bd1000000",
"status": 0, // "status": 0,
"createTime": "1748419566651" // "createTime": "1748419566651"
}, // },
{ // {
"_id": "6836c3e84e625f30c8000000", // "_id": "6836c3e84e625f30c8000000",
"type": "app_vsm", // "type": "app_vsm",
"data": { // "data": {
"title": "实时监测通知", // "title": "实时监测通知",
"val": [ // "val": [
{"k": "设备ID", "v": "48ca43b1b454"}, // {"k": "设备ID", "v": "48ca43b1b454"},
{"k": "使用人员", "v": "bb"}, // {"k": "使用人员", "v": "bb"},
{"k": "消息类型", "v": "心率异常"}, // {"k": "消息类型", "v": "心率异常"},
{"k": "检测值", "v": '115'}, // {"k": "检测值", "v": '115'},
{"k": "检测时间", "v": "2025-05-28 16:06:00"} // {"k": "检测时间", "v": "2025-05-28 16:06:00"}
] // ]
}, // },
"level": 3, // "level": 3,
"tid": "67f5d96e26ef310463000000", // "tid": "67f5d96e26ef310463000000",
"uid": "68319fe9702cc59bd1000000", // "uid": "68319fe9702cc59bd1000000",
"status": 0, // "status": 0,
"createTime": "1748419560486" // "createTime": "1748419560486"
}, // },
{ // {
"_id": "6836bd0c4e625e30c8000000", // "_id": "6836bd0c4e625e30c8000000",
"type": "app_vsm", // "type": "app_vsm",
"data": { // "data": {
"title": "实时监测通知", // "title": "实时监测通知",
"val": [ // "val": [
{"k": "设备ID", "v": "48ca43b1b454"}, // {"k": "设备ID", "v": "48ca43b1b454"},
{"k": "使用人员", "v": "bb"}, // {"k": "使用人员", "v": "bb"},
{"k": "消息类型", "v": "心率异常"}, // {"k": "消息类型", "v": "心率异常"},
{"k": "检测值", "v": '107'}, // {"k": "检测值", "v": '107'},
{"k": "检测时间", "v": "1748417761000"} // {"k": "检测时间", "v": "1748417761000"}
] // ]
}, // },
"level": 3, // "level": 3,
"tid": "67f5d96e26ef310463000000", // "tid": "67f5d96e26ef310463000000",
"uid": "68319fe9702cc59bd1000000", // "uid": "68319fe9702cc59bd1000000",
"status": 0, // "status": 0,
"createTime": "1748417804381" // "createTime": "1748417804381"
} // }
]; // ];
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle( SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
statusBarColor: Colors.transparent, statusBarColor: Colors.transparent,
@@ -239,13 +239,13 @@ class _MessagePageState extends State<MessagePage> {
onPageChanged: _onPageChanged, onPageChanged: _onPageChanged,
children: [ children: [
Obx(() { Obx(() {
final list = messageController.messageList.value; final list = messageController.messageList;
return list.isEmpty return list.isEmpty
? const NullDataWidget() ? const NullDataWidget()
: _buildMessageListView(list); : _buildMessageListView(list);
}), }),
Obx(() { Obx(() {
final list = messageController.messageList.value; final list = messageController.messageList;
return list.isEmpty return list.isEmpty
? const NullDataWidget() ? const NullDataWidget()
: _buildMessageListView(list); : _buildMessageListView(list);

View File

@@ -5,6 +5,8 @@ import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/controller/mh_controller/my_experience_list_controller.dart'; import 'package:vbvs_app/controller/mh_controller/my_experience_list_controller.dart';
import 'package:vbvs_app/pages/common/selectDialog.dart';
import 'package:vbvs_app/pages/mh_page/app_map_location.dart';
import '../../common/color/appFontsize.dart'; import '../../common/color/appFontsize.dart';
@@ -263,27 +265,27 @@ class MyExperienceWidget extends GetView {
Flexible( Flexible(
child: InkWell( child: InkWell(
onTap: () { onTap: () {
// AppMapLocation.checkInstalledApps() AppMapLocation.checkInstalledApps()
// .then((d) { .then((d) {
// if (AppMapLocation if (AppMapLocation
// .availableMapsToNames.isEmpty) { .availableMapsToNames.isEmpty) {
// showToast("未检测到导航软件"); showToast("未检测到导航软件");
// } else { } else {
// showOneSelectionDialog(context, showOneSelectionDialog(context,
// title: "选择地图", title: "选择地图",
// arr: AppMapLocation arr: AppMapLocation
// .availableMapsToNames, .availableMapsToNames,
// checkChange: (index) { checkChange: (index) {
// AppMapLocation.launchMap( AppMapLocation.launchMap(
// index, index,
// data["name"], data["name"],
// double.parse( double.parse(
// "${data["latitude"]}"), "${data["latitude"]}"),
// double.parse( double.parse(
// "${data["longitude"]}")); "${data["longitude"]}"));
// }); });
// } }
// }); });
}, },
child: Container( child: Container(
width: MediaQuery.sizeOf(context).width * width: MediaQuery.sizeOf(context).width *

View File

@@ -236,7 +236,9 @@ class _MinePageState extends State<NewMinePage> {
Padding( Padding(
padding: EdgeInsets.only(top: 46.rpx, bottom: 109.rpx), padding: EdgeInsets.only(top: 46.rpx, bottom: 109.rpx),
child: ElevatedButton( child: ElevatedButton(
onPressed: () {}, onPressed: () {
Get.toNamed("/deviceListPage");
},
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
tapTargetSize: MaterialTapTargetSize.shrinkWrap, tapTargetSize: MaterialTapTargetSize.shrinkWrap,
backgroundColor: const Color(0XFF85F5FF), backgroundColor: const Color(0XFF85F5FF),

View File

@@ -1,4 +1,5 @@
import 'package:ef/ef.dart'; import 'package:ef/ef.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:vbvs_app/common/util/FitTool.dart'; import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart'; import 'package:vbvs_app/common/util/MyUtils.dart';
@@ -151,6 +152,12 @@ class DeviceRepairPage extends GetView<RepairListController> {
Colors.white, Colors.white,
decorationThickness: 4.rpx, decorationThickness: 4.rpx,
), ),
recognizer:
TapGestureRecognizer()
..onTap = () {
MyUtils.makePhoneCall(
"400-8756-966");
},
), ),
TextSpan( TextSpan(
text: " 反馈。", text: " 反馈。",

View File

@@ -130,7 +130,7 @@ class Smys extends GetView<SleepingHabitController> {
.bodyMedium .bodyMedium
.override( .override(
fontFamily: 'Readex Pro', fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7), color: Colors.white,
fontSize: 26.rpx, fontSize: 26.rpx,
letterSpacing: 0, letterSpacing: 0,
), ),
@@ -185,7 +185,7 @@ class Smys extends GetView<SleepingHabitController> {
.bodyMedium .bodyMedium
.override( .override(
fontFamily: 'Readex Pro', fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7), color: Colors.white,
fontSize: 26.rpx, fontSize: 26.rpx,
letterSpacing: 0, letterSpacing: 0,
), ),
@@ -263,7 +263,7 @@ class Smys extends GetView<SleepingHabitController> {
.bodyMedium .bodyMedium
.override( .override(
fontFamily: 'Readex Pro', fontFamily: 'Readex Pro',
color: Color(0xFF9EA4B7), color: Colors.white,
fontSize: 26.rpx, fontSize: 26.rpx,
letterSpacing: 0, letterSpacing: 0,
), ),

View File

@@ -637,7 +637,7 @@ class _RxhxMhtState extends State<RxhxMht> {
.bodyMedium .bodyMedium
.override( .override(
fontFamily: 'Readex Pro', fontFamily: 'Readex Pro',
color: Colors.white, color: Color(0xFF929699),
fontSize: 20.rpx, fontSize: 20.rpx,
letterSpacing: 0, letterSpacing: 0,
), ),

View File

@@ -9,6 +9,7 @@ import 'package:vbvs_app/pages/main_bottom/component/main_page_b_bottom_change.d
import 'package:vbvs_app/pages/mh_page/HomeDeviceType.dart'; import 'package:vbvs_app/pages/mh_page/HomeDeviceType.dart';
import 'package:vbvs_app/pages/mh_page/LanguagePage.dart'; import 'package:vbvs_app/pages/mh_page/LanguagePage.dart';
import 'package:vbvs_app/pages/mh_page/address_list_page.dart'; import 'package:vbvs_app/pages/mh_page/address_list_page.dart';
import 'package:vbvs_app/pages/mh_page/applyRepair/apply_repair_success.dart';
import 'package:vbvs_app/pages/mh_page/apply_repair_page.dart'; import 'package:vbvs_app/pages/mh_page/apply_repair_page.dart';
import 'package:vbvs_app/pages/mh_page/book_info_page.dart'; import 'package:vbvs_app/pages/mh_page/book_info_page.dart';
import 'package:vbvs_app/pages/mh_page/book_success_page.dart'; import 'package:vbvs_app/pages/mh_page/book_success_page.dart';
@@ -68,7 +69,7 @@ var mhroutes = {
'/syms': (context) => Smys(), '/syms': (context) => Smys(),
"/applyRepairPage": (context) => ApplyRepairPage(), "/applyRepairPage": (context) => ApplyRepairPage(),
"/roomPickerPage": (context) => RoomPickerPage(), "/roomPickerPage": (context) => RoomPickerPage(),
"/editBedPage": (context) => EditBedPage(), "/editBedPage": (context, {arguments}) => EditBedPage(data: arguments),
"/experienceStorePage": (context) => ExperienceStorePage(), "/experienceStorePage": (context) => ExperienceStorePage(),
"/bookInfoPage": (context, {arguments}) => "/bookInfoPage": (context, {arguments}) =>
BookInfoPage(data: arguments["data"]), BookInfoPage(data: arguments["data"]),
@@ -92,6 +93,7 @@ var mhroutes = {
"/rxhxMht": (context) => RxhxMht(), "/rxhxMht": (context) => RxhxMht(),
"/helpArticle": (contxt, {arguments}) => HelpArticle(article: arguments), "/helpArticle": (contxt, {arguments}) => HelpArticle(article: arguments),
"/mHTPeopleInfoPage": (contxt) => MHTPeopleInfoPage(), "/mHTPeopleInfoPage": (contxt) => MHTPeopleInfoPage(),
"/applyRepairSuccess": (contxt) => ApplyRepairSuccess(),
}; };
var mhonGenerateRoute = (RouteSettings settings) { var mhonGenerateRoute = (RouteSettings settings) {
final String? name = settings.name; // 获取路由名称,如 /news 或 /search final String? name = settings.name; // 获取路由名称,如 /news 或 /search