更新眠花糖慢病管理
This commit is contained in:
@@ -10,10 +10,12 @@ 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/TopSlideNotification.dart';
|
||||
import 'package:vbvs_app/controller/mh_controller/people_info_controller.dart';
|
||||
import 'package:vbvs_app/pages/common/selectDialog.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/device/controller/mht_bluetooth_controller.dart';
|
||||
import 'package:vbvs_app/pages/mh_page/homepage/controller/mht_home_controller.dart';
|
||||
import 'package:vbvs_app/pages/person/select_city.dart';
|
||||
import 'package:vbvs_app/pages/person/select_disease.dart'; // 导入疾病选择
|
||||
|
||||
//保存人员信息
|
||||
class MHTPeopleInfoPage extends StatefulWidget {
|
||||
@@ -30,9 +32,13 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
|
||||
final List<TextEditingController> _contactControllers = [];
|
||||
List<Map<String, dynamic>> peopleList = [];
|
||||
List<CityModel> cityModels = []; // 存储每个person的城市数据
|
||||
List<List<String>> diseaseIdsList = []; // 存储每个person的疾病ID列表
|
||||
bool isLoading = true;
|
||||
late Future<List<CityModel>> cityDataFuture;
|
||||
|
||||
// 添加疾病数据(这里需要根据实际情况获取,可以先设为空列表)
|
||||
List diseaseList = [];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
@@ -69,11 +75,29 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
|
||||
// 初始化城市模型列表
|
||||
cityModels = List.filled(peopleList.length, CityModel());
|
||||
|
||||
// 初始化疾病ID列表
|
||||
diseaseIdsList = List.generate(peopleList.length, (index) => []);
|
||||
|
||||
// 加载疾病数据(这里需要实现获取疾病数据的方法)
|
||||
await _loadDiseaseData();
|
||||
|
||||
// Initialize controllers after data is loaded
|
||||
_initializeControllers();
|
||||
setState(() => isLoading = false);
|
||||
}
|
||||
|
||||
// 加载疾病数据的方法
|
||||
Future<void> _loadDiseaseData() async {
|
||||
try {
|
||||
PeopleInfoController controller = Get.find();
|
||||
await controller.getDiseaseData();
|
||||
diseaseList = controller.diseaseList.value;
|
||||
} catch (e) {
|
||||
print("加载疾病数据失败: $e");
|
||||
diseaseList = [];
|
||||
}
|
||||
}
|
||||
|
||||
void _initializeControllers() {
|
||||
for (var person in peopleList) {
|
||||
_nameControllers.add(TextEditingController(text: person["name"] ?? ""));
|
||||
@@ -112,6 +136,23 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
|
||||
}
|
||||
}
|
||||
|
||||
// 获取已选择的慢病名称
|
||||
String getSelectedDiseaseNames(List<String> selectedIds) {
|
||||
if (selectedIds.isEmpty) return "请选择慢病".tr;
|
||||
|
||||
final selectedNames = diseaseList
|
||||
.where((disease) => selectedIds.contains(disease['_id'].toString()))
|
||||
.map((disease) => disease['disease_type_name'].toString())
|
||||
.toList();
|
||||
|
||||
String displayText = selectedNames.join('、');
|
||||
if (displayText.length > 10) {
|
||||
displayText = '${displayText.substring(0, 10)}...';
|
||||
}
|
||||
|
||||
return displayText;
|
||||
}
|
||||
|
||||
Future<void> _savePersonData(
|
||||
Map<String, dynamic> personData, BuildContext context) async {
|
||||
String serviceAddress = ServiceConstant.service_address;
|
||||
@@ -133,6 +174,7 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
|
||||
'id': personData['id'],
|
||||
'UTC': personData['UTC'],
|
||||
'city_id': personData['city_id'],
|
||||
'disease_ids': personData['disease_ids'], // 添加疾病ID字段
|
||||
};
|
||||
await requestWithLog(
|
||||
logTitle: "保存用户信息".tr,
|
||||
@@ -315,14 +357,14 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
|
||||
}
|
||||
|
||||
// 验证城市选择
|
||||
final cityModel = cityModels[i];
|
||||
if (cityModel.id == null) {
|
||||
TopSlideNotification.show(context,
|
||||
text: "请选择城市".tr,
|
||||
textColor: Color(0xFFFF7159));
|
||||
isValid = false;
|
||||
break;
|
||||
}
|
||||
// final cityModel = cityModels[i];
|
||||
// if (cityModel.id == null) {
|
||||
// TopSlideNotification.show(context,
|
||||
// text: "请选择城市".tr,
|
||||
// textColor: Color(0xFFFF7159));
|
||||
// isValid = false;
|
||||
// break;
|
||||
// }
|
||||
}
|
||||
|
||||
if (isValid) {
|
||||
@@ -330,10 +372,12 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
|
||||
for (int i = 0; i < peopleList.length; i++) {
|
||||
final person = peopleList[i];
|
||||
final cityModel = cityModels[i];
|
||||
final diseaseIds = diseaseIdsList[i];
|
||||
|
||||
// 添加城市信息到person数据
|
||||
person['UTC'] = cityModel.UTC;
|
||||
person['city_id'] = cityModel.id;
|
||||
person['disease_ids'] = diseaseIds; // 添加疾病ID
|
||||
|
||||
await _savePersonData(person, context);
|
||||
}
|
||||
@@ -867,6 +911,83 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
|
||||
),
|
||||
),
|
||||
getLine(),
|
||||
// 慢病管理部分
|
||||
Container(
|
||||
height: 90.rpx,
|
||||
margin: EdgeInsets.only(
|
||||
left: 40.rpx, right: 35.rpx),
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
FocusScope.of(context)
|
||||
.requestFocus(FocusNode());
|
||||
Future.delayed(
|
||||
Duration(milliseconds: 250), () {
|
||||
// 获取当前已选择的慢病ID列表
|
||||
final currentDiseaseIds =
|
||||
List<String>.from(
|
||||
diseaseIdsList[index]);
|
||||
|
||||
showDiseaseSelectionDialog(
|
||||
context,
|
||||
selectedIds: currentDiseaseIds,
|
||||
diseaseList: diseaseList,
|
||||
onDiseasesChanged:
|
||||
(List<String> newDiseaseIds) {
|
||||
setState(() {
|
||||
diseaseIdsList[index] =
|
||||
newDiseaseIds;
|
||||
});
|
||||
},
|
||||
title: "选择慢病".tr,
|
||||
colors: DiseaseSelectionColors(
|
||||
pickerBackgroundColor:
|
||||
stringToColor("#003058"),
|
||||
confirmTextColor:
|
||||
stringToColor("#84F5FF"),
|
||||
selectedDiseaseColor:
|
||||
stringToColor("#84F5FF"),
|
||||
),
|
||||
);
|
||||
});
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
'慢病管理'.tr,
|
||||
style: TextStyle(
|
||||
fontFamily: 'Readex Pro',
|
||||
color: Color(0xFF9EA4B7),
|
||||
fontSize: 30.rpx,
|
||||
letterSpacing: 0,
|
||||
),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Text(
|
||||
getSelectedDiseaseNames(
|
||||
diseaseIdsList[index]),
|
||||
style: TextStyle(
|
||||
color: diseaseIdsList[index]
|
||||
.isNotEmpty
|
||||
? Colors.white
|
||||
: themeController
|
||||
.currentColor.sc4,
|
||||
fontSize: 30.rpx,
|
||||
),
|
||||
),
|
||||
SizedBox(width: 16.rpx),
|
||||
Icon(Icons.expand_more,
|
||||
color: Colors.white,
|
||||
size: 48.rpx),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
getLine(),
|
||||
],
|
||||
))
|
||||
],
|
||||
@@ -884,4 +1005,3 @@ class _MHTPeopleInfoPageState extends State<MHTPeopleInfoPage> {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user