2025.9.5 修改bug

main
xufei 2025-09-05 09:27:46 +08:00
parent 26c64aa5ea
commit 10868ac6cf
27 changed files with 509 additions and 276 deletions

View File

@ -24,7 +24,7 @@ class ApiService {
"http://192.168.20.240:8500/whb_stu_face/";
///
// static const String basePath = "https://qaaqwh.qhdsafety.com/integrated_whb";
static const String basePath = "http://192.168.20.240:8500/integrated_whb/";
static const String basePath = "http://192.168.20.240:8500/integrated_whb";
// static const String basePath = "http://192.168.0.37:8099/api";

View File

@ -7,6 +7,7 @@ import 'package:qhd_prevention/customWidget/toast_util.dart';
import 'package:qhd_prevention/http/ApiService.dart';
import 'package:qhd_prevention/pages/home/tap/item_list_widget.dart';
import 'package:qhd_prevention/pages/my_appbar.dart';
import 'package:qhd_prevention/tools/tools.dart';
class PhotoItem {
final String id;
@ -40,38 +41,38 @@ class _DangerImageUpdataPageState extends State<DangerImageUpdataPage> {
// TODO: implement initState
super.initState();
_imgList = widget.imgList;
_getAlreadyUpImages();
// _getAlreadyUpImages();
}
Future<void> _getAlreadyUpImages() async {
try {
final result = await ApiService.getAlreadyUpImages(widget.id);
if (result['result'] == 'success') {
final List<dynamic> newList = result['imgs'] ?? [];
setState(() {
for (Map item in newList) {
String id = item['IMGFILES_ID'] ?? '';
String filePath = item['FILEPATH'] ?? '';
_imgList.add(
PhotoItem(
id: id, // ID
filePath: ApiService.baseImgPath+filePath,
type: "1",
),
);
}
});
} else {
ToastUtil.showNormal(context, "加载数据失败");
// _showMessage('加载数据失败');
}
} catch (e) {
// Toast
print('加载数据失败:$e');
}
}
// Future<void> _getAlreadyUpImages() async {
// try {
// final result = await ApiService.getAlreadyUpImages(widget.id);
// if (result['result'] == 'success') {
// final List<dynamic> newList = result['imgs'] ?? [];
// setState(() {
// for (Map item in newList) {
// String id = item['IMGFILES_ID'] ?? '';
// String filePath = item['FILEPATH'] ?? '';
// _imgList.add(
// PhotoItem(
// id: id, // ID
// filePath: ApiService.baseImgPath+filePath,
// type: "1",
// ),
// );
//
// }
//
// });
// } else {
// ToastUtil.showNormal(context, "加载数据失败");
// // _showMessage('加载数据失败');
// }
// } catch (e) {
// // Toast
// print('加载数据失败:$e');
// }
// }
@override
Widget build(BuildContext context) {
@ -151,6 +152,7 @@ class _DangerImageUpdataPageState extends State<DangerImageUpdataPage> {
);
}
Future<void> _submitAll() async {
LoadingDialogHelper.show(message: "上传中...");
int i = 0;
for (PhotoItem item in _imgList) {
if (item.type == '2') {
@ -163,7 +165,7 @@ class _DangerImageUpdataPageState extends State<DangerImageUpdataPage> {
}
i++;
}
LoadingDialogHelper.hide();
ToastUtil.showNormal(context, "提交成功");
Navigator.of(context).pop();
}

View File

@ -560,6 +560,8 @@ class _QuickReportPageState extends State<QuickReportPage> {
});
}else{
LoadingDialogHelper.hide();
ToastUtil.showNormal(context, "提交失败");
}
} catch (e) {
LoadingDialogHelper.hide();

View File

@ -99,9 +99,9 @@ class _CheckingInformationOnePageState extends State<CheckingInformationOnePage>
listDates.addAll(newList);//"HIDDENDESCR" -> "3111111"
for(int i=0;i<listDates.length;i++){
try{
otherHidden.add(DepartmentEntry(department: listDates[i]["HIDDENDESCR"], responsible: '请选择',index:'',departmentId:listDates[i]['HIDDEN_ID'] ,responsibleId:''));
otherHidden.add(DepartmentEntry(department: listDates[i]["HIDDENDESCR"], responsible: '点击填写',index:'',departmentId:listDates[i]['HIDDEN_ID'] ,responsibleId:''));
}catch(e){
otherHidden.add(DepartmentEntry(department: "", responsible: '请选择',index:'',departmentId:listDates[i]['HIDDEN_ID'],responsibleId:''));
otherHidden.add(DepartmentEntry(department: "", responsible: '点击填写',index:'',departmentId:listDates[i]['HIDDEN_ID'],responsibleId:''));
}
}
@ -130,9 +130,9 @@ class _CheckingInformationOnePageState extends State<CheckingInformationOnePage>
listDates.addAll(newList);//"HIDDENDESCR" -> "3111111"
for(int i=0;i<listDates.length;i++){
try{
otherHidden.add(DepartmentEntry(department: listDates[i]["HIDDENDESCR"], responsible: '请选择',index:'',departmentId:listDates[i]['HIDDEN_ID'] ,responsibleId:''));
otherHidden.add(DepartmentEntry(department: listDates[i]["HIDDENDESCR"], responsible: '点击填写',index:'',departmentId:listDates[i]['HIDDEN_ID'] ,responsibleId:''));
}catch(e){
otherHidden.add(DepartmentEntry(department: "", responsible: '请选择',index:'',departmentId:listDates[i]['HIDDEN_ID'],responsibleId:''));
otherHidden.add(DepartmentEntry(department: "", responsible: '点击填写',index:'',departmentId:listDates[i]['HIDDEN_ID'],responsibleId:''));
}
}
@ -158,11 +158,22 @@ class _CheckingInformationOnePageState extends State<CheckingInformationOnePage>
Container(
color: Colors.white,
padding: EdgeInsets.symmetric(horizontal: 15),
child: GestureDetector(
child: ListItemFactory.createRowSpaceBetweenItem(
leftText: "日期选择",
rightText: dataTime.isEmpty?"请选择":dataTime,
isRight: true,
),
onTap: () async {
DateTime? picked = await BottomDateTimePicker.showDate(context);
if (picked != null) {
setState(() {
dataTime = DateFormat('yyyy-MM-dd').format(picked);
stringTime = DateFormat('HH:mm').format(picked);
});
}
},
),
),
Divider(height: 1,),
@ -176,6 +187,7 @@ class _CheckingInformationOnePageState extends State<CheckingInformationOnePage>
DateTime? picked = await BottomDateTimePicker.showDate(context);
if (picked != null) {
setState(() {
dataTime = DateFormat('yyyy-MM-dd').format(picked);
stringTime = DateFormat('HH:mm').format(picked);
});
}
@ -559,7 +571,7 @@ class _CheckingInformationOnePageState extends State<CheckingInformationOnePage>
}
void _addOtherHidden() {
setState(() {
otherHidden.add(DepartmentEntry(department: '请选择', responsible: '请选择',index:'',departmentId: '',responsibleId:''));
otherHidden.add(DepartmentEntry(department: '点击填写', responsible: '点击填写',index:'',departmentId: '',responsibleId:''));
});
}

View File

@ -460,9 +460,9 @@ class _DangerWaitListPageState extends State<DangerWaitListPage> {
if("1"==type){
return "隐患来源:隐患快报";
}else if("2"==type){
return "隐患来源:隐患排查清单检查";
return "隐患来源:隐患排查";
}else if("3"==type){
return "隐患来源:标准排查清单检查";
return "隐患来源:标准排查";
}else if("4"==type){
return "隐患来源:专项检查";
}else{

View File

@ -300,7 +300,8 @@ class DannerRepairState extends State<DannerRepair> {
Widget _acceptPrepare() {
final fields = [
_buildReadOnlyRow("排查日期", widget.pd["CREATTIME"]),
_buildReadOnlyRow("隐患清单", ""),
if(FormUtils.hasValue(widget.pd, "LIST_NAME"))
_buildReadOnlyRow("隐患清单", widget.pd["LIST_NAME"]),
ListItemFactory.createBuildMultilineInput("治理标准", "请输入治理标准", standardController),
ListItemFactory.createBuildMultilineInput("治理方法", "请输入治理方法", methodController),
ListItemFactory.createBuildMultilineInput("经费落实", "请输入经费落实", fundController),

View File

@ -157,7 +157,7 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
Widget _buildInfoItem(String title, String value) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
padding: const EdgeInsets.symmetric(vertical: 8,horizontal: 10),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -188,12 +188,17 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
minHeight: constraints.maxHeight,
),
child: Padding(
padding: const EdgeInsets.all(16),
padding: const EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildInfoItem('隐患描述', pd['HIDDENDESCR'] ?? ''),
Card(
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildInfoItem('隐患描述', pd['HIDDENDESCR'] ?? ''),
Divider(height: 1),
//
_buildInfoItem('隐患来源', _getSourceText(pd['SOURCE'])),
@ -240,6 +245,7 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
ListItemFactory.createTextImageItem(
text: "隐患照片",
imageUrls: files,
horizontalPadding:10,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl:ApiService.baseImgPath + files[index]),
@ -249,10 +255,14 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
),
//
if (videoList.isNotEmpty) ...[
const SizedBox(height: 16),
const Text('隐患视频', style: TextStyle(fontWeight: FontWeight.bold)),
//
if (videoList.isNotEmpty) ...[
SizedBox(height: 10),
Padding(
padding: EdgeInsets.only(left: 10,right: 10),
child: Text('隐患视频', style: TextStyle(fontWeight: FontWeight.bold)),
),
GestureDetector(
onTap: () {
showDialog(
@ -274,13 +284,27 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
height: 120,
),
),
],
],
],
),
),
SizedBox(height: 10,),
//
if (pd['STATE'] != null && int.parse(pd['STATE']) >= 2 && int.parse(pd['STATE']) <= 4) ...[
// const Divider(height: 10,color: Colors.grey,),
Row(
SizedBox(height: 10,),
Card(
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(top: 10,left: 10,right: 10),
child:
Row(
children: [
Container(width: 3, height: 15, color: Colors.blue),
const SizedBox(width: 8),
@ -290,7 +314,7 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
),
],
),
),
// const Text('整改信息', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
Divider(height: 1),
@ -307,6 +331,7 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
ListItemFactory.createTextImageItem(
text: "整改后图片",
imageUrls: files2,
horizontalPadding: 10,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl: ApiService.baseImgPath +files2[index]),
@ -346,6 +371,7 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
ListItemFactory.createTextImageItem(
text: "方案图片",
imageUrls: files4,
horizontalPadding: 10,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl: ApiService.baseImgPath +files2[index]),
@ -360,11 +386,13 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
Divider(height: 1),
_buildInfoItem('整改计划', pd['HAVEPLAN']=="0" ? '':''),
if(pd['HAVEPLAN']=="1")
Divider(height: 1),
if(pd['HAVEPLAN']=="1")
ListItemFactory.createTextImageItem(
text: "计划图片",
imageUrls: files2,
horizontalPadding: 10,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl: ApiService.baseImgPath +files2[index]),
@ -373,7 +401,9 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
},
),
],
),
),
//
_danner_type_wait(),
@ -399,7 +429,11 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
return SizedBox(
child: Column(
children: [
_getRepairState(),
Card(
color:Colors.white,
child: _getRepairState(),
),
//
// _accepted ? _getRepairState() : _noAccepet_repair(_accepted),
@ -427,11 +461,12 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
children: [
ListItemFactory.createBuildSimpleSection("隐患验收",horPadding:0),
ListItemFactory.createBuildSimpleSection("隐患验收",horPadding:10),
Divider(height: 1),
ListItemFactory.createYesNoSection(
horizontalPadding: 0,
verticalPadding:0,
title: '是否合格',
yesLabel: '',
noLabel: '',
@ -448,7 +483,7 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
Column(children: [
Divider(),
Container(
padding: EdgeInsets.only(top: 15,bottom: 15),
padding: EdgeInsets.only(top: 10,bottom: 10,left: 10,right: 10),
child: Column(
children: [
Row(
@ -481,7 +516,7 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 0),
padding: EdgeInsets.symmetric(horizontal: 10),
child: ListItemFactory.createRowSpaceBetweenItem(
leftText: "验收日期",
rightText: dataTime.isEmpty?"请选择":dataTime,
@ -494,6 +529,7 @@ class _HiddenDangerAcceptancePageState extends State<HiddenDangerAcceptancePage>
title: "验收照片",
maxCount: 4,
mediaType: MediaType.image,
horizontalPadding: 10,
onChanged: (files) {
// files
gaiHouImages.clear();

View File

@ -98,7 +98,9 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
}
}
});
}
}else{
getDataTwo();
}
} catch (e) {
print('Error fetching data: $e');
@ -156,7 +158,7 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
Widget _buildInfoItem(String title, String value) {
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
padding: const EdgeInsets.symmetric(vertical: 8,horizontal: 10),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -187,105 +189,133 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
minHeight: constraints.maxHeight,
),
child: Padding(
padding: const EdgeInsets.all(16),
padding: const EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildInfoItem('隐患描述', pd['HIDDENDESCR'] ?? ''),
Divider(height: 1),
//
_buildInfoItem('隐患来源', _getSourceText(pd['SOURCE'])),
Divider(height: 1),
//
if (pd['SOURCE'] == '2') ...[
_buildInfoItem('风险点(单元)', pd['RISK_UNIT'] ?? ''),
Divider(height: 1),
_buildInfoItem('辨识部位', pd['IDENTIFICATION'] ?? ''),
Divider(height: 1),
_buildInfoItem('存在风险', pd['RISK_DESCR'] ?? ''),
Divider(height: 1),
_buildInfoItem('风险分级', pd['LEVEL'] ?? ''),
Divider(height: 1),
_buildInfoItem('检查内容', pd['CHECK_CONTENT'] ?? ''),
Divider(height: 1),
],
Card(
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildInfoItem('隐患描述', pd['HIDDENDESCR'] ?? ''),
Divider(height: 1),
//
_buildInfoItem('隐患来源', _getSourceText(pd['SOURCE'])),
Divider(height: 1),
//
if (pd['SOURCE'] == '2') ...[
_buildInfoItem('风险点(单元)', pd['RISK_UNIT'] ?? ''),
Divider(height: 1),
_buildInfoItem('辨识部位', pd['IDENTIFICATION'] ?? ''),
Divider(height: 1),
_buildInfoItem('存在风险', pd['RISK_DESCR'] ?? ''),
Divider(height: 1),
_buildInfoItem('风险分级', pd['LEVEL'] ?? ''),
Divider(height: 1),
_buildInfoItem('检查内容', pd['CHECK_CONTENT'] ?? ''),
Divider(height: 1),
],
_buildInfoItem('隐患部位', pd['HIDDENPART'] ?? ''),
Divider(height: 1),
_buildInfoItem('发现人', pd['CREATORNAME'] ?? ''),
Divider(height: 1),
_buildInfoItem('发现时间', pd['CREATTIME'] ?? ''),
Divider(height: 1),
_buildInfoItem('隐患部位', pd['HIDDENPART'] ?? ''),
Divider(height: 1),
_buildInfoItem('发现人', pd['CREATORNAME'] ?? ''),
Divider(height: 1),
_buildInfoItem('发现时间', pd['CREATTIME'] ?? ''),
Divider(height: 1),
if (pd['HIDDEN_CATEGORY']?.isNotEmpty == true)
_buildInfoItem('隐患类别', pd['HIDDEN_CATEGORY_NAME'] ?? ''),
if (pd['HIDDEN_CATEGORY']?.isNotEmpty == true)
_buildInfoItem('隐患类别', pd['HIDDEN_CATEGORY_NAME'] ?? ''),
_buildInfoItem('隐患类型', pd['HIDDENTYPE_NAME'] ?? ''),
Divider(height: 1),
_buildInfoItem('整改类型', _getRectificationType(pd['RECTIFICATIONTYPE'])),
_buildInfoItem('隐患类型', pd['HIDDENTYPE_NAME'] ?? ''),
Divider(height: 1),
_buildInfoItem('整改类型', _getRectificationType(pd['RECTIFICATIONTYPE'])),
if (pd['RECTIFICATIONTYPE'] == '2')
_buildInfoItem('整改期限', pd['RECTIFICATIONDEADLINE'] ?? ''),
Divider(height: 1),
//
// const Text('隐患照片', style: TextStyle(fontWeight: FontWeight.bold)),
// _buildImageGrid(files, onTap: (index) => _showImageGallery(files, index)),
ListItemFactory.createTextImageItem(
text: "隐患照片",
imageUrls: files,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl:ApiService.baseImgPath + files[index]),
context,
);
},
if (pd['RECTIFICATIONTYPE'] == '2')
_buildInfoItem('整改期限', pd['RECTIFICATIONDEADLINE'] ?? ''),
Divider(height: 1),
//
// const Text('隐患照片', style: TextStyle(fontWeight: FontWeight.bold)),
// _buildImageGrid(files, onTap: (index) => _showImageGallery(files, index)),
ListItemFactory.createTextImageItem(
text: "隐患照片",
imageUrls: files,
horizontalPadding:10,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl:ApiService.baseImgPath + files[index]),
context,
);
},
),
//
if (videoList.isNotEmpty) ...[
SizedBox(height: 10),
Padding(
padding: EdgeInsets.only(left: 10,right: 10),
child: Text('隐患视频', style: TextStyle(fontWeight: FontWeight.bold)),
),
GestureDetector(
onTap: () {
showDialog(
context: context,
barrierColor: Colors.black54,
builder: (_) => VideoPlayerPopup(videoUrl: ApiService.baseImgPath + videoList[0]['FILEPATH']),
);
// present(
// BigVideoViewer(videoUrl:ApiService.baseImgPath + videoList[0]['FILEPATH']),
// context,
// );
},
// => _playVideo(ApiService.baseImgPath + videoList[0]['FILEPATH']),
child: Image.asset(
'assets/image/videostart.png', //
color: Colors.blue,
width: 120,
height: 120,
),
),
],
],
),
),
//
if (videoList.isNotEmpty) ...[
const SizedBox(height: 16),
const Text('隐患视频', style: TextStyle(fontWeight: FontWeight.bold)),
GestureDetector(
onTap: () {
showDialog(
context: context,
barrierColor: Colors.black54,
builder: (_) => VideoPlayerPopup(videoUrl: ApiService.baseImgPath + videoList[0]['FILEPATH']),
);
// present(
// BigVideoViewer(videoUrl:ApiService.baseImgPath + videoList[0]['FILEPATH']),
// context,
// );
},
// => _playVideo(ApiService.baseImgPath + videoList[0]['FILEPATH']),
child: Image.asset(
'assets/image/videostart.png', //
color: Colors.blue,
width: 120,
height: 120,
),
),
],
SizedBox(height: 10,),
//
if (pd['STATE'] != null && int.parse(pd['STATE']) >= 2 && int.parse(pd['STATE']) <= 4) ...[
SizedBox(height: 10,),
// const Divider(height: 10,color: Colors.grey,),
Row(
children: [
Container(width: 3, height: 15, color: Colors.blue),
const SizedBox(width: 8),
Text(
Card(
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(top: 10,left: 10,right: 10),
child: Row(
children: [
Container(width: 3, height: 15, color: Colors.blue),
const SizedBox(width: 8),
Text(
"整改信息",
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
],
),
],
),
),
// const Text('整改信息', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
Divider(height: 1),
_buildInfoItem('整改描述', pd['RECTIFYDESCR'] ?? ''),
@ -301,6 +331,7 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
ListItemFactory.createTextImageItem(
text: "整改后图片",
imageUrls: files2,
horizontalPadding: 10,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl: ApiService.baseImgPath +files2[index]),
@ -340,6 +371,7 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
ListItemFactory.createTextImageItem(
text: "方案图片",
imageUrls: files4,
horizontalPadding: 10,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl: ApiService.baseImgPath +files2[index]),
@ -359,6 +391,7 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
ListItemFactory.createTextImageItem(
text: "计划图片",
imageUrls: files2,
horizontalPadding: 10,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl: ApiService.baseImgPath +files2[index]),
@ -366,7 +399,9 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
);
},
),
],
),
),
// ...
],
@ -376,16 +411,26 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
if ((6==widget.dangerType.index||1==widget.dangerType.index||0==widget.dangerType.index)&&checkList.isNotEmpty) ...[
// const Divider(height: 10,color: Colors.grey,),
SizedBox(height: 10,),
Row(
Card(
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(width: 3, height: 15, color: Colors.blue),
const SizedBox(width: 8),
Text(
"验收信息",
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
],
),
Padding(
padding: EdgeInsets.only(top: 10,left: 10,right: 10),
child:
Row(
children: [
Container(width: 3, height: 15, color: Colors.blue),
const SizedBox(width: 8),
Text(
"验收信息",
style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
],
),
),
// const Text('整改信息', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
@ -405,6 +450,7 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
ListItemFactory.createTextImageItem(
text: "验收图片",
imageUrls: files7,
horizontalPadding: 10,
onImageTapped: (index) {
presentOpaque(
SingleImageViewer(imageUrl: ApiService.baseImgPath +files5[index]),
@ -412,6 +458,9 @@ class _HiddenRecordDetailPageState extends State<HiddenRecordDetailPage> {
);
},
),
],
),
),
],

View File

@ -159,7 +159,7 @@ class _EquipmentInspectionListPageState
return ListView.builder(
controller: _scrollController,
itemCount: _equipList.length,
itemCount: _periodList.length,
itemBuilder: (context, index) {
final period = _periodList[index];
final items = groupedItems[period] ?? [];

View File

@ -86,7 +86,8 @@ class _HomeNfcDetailPageState extends State<HomeNfcDetailPage> {
);
if (result == null) {
_showMessage('请求失败:结果为 null');
ToastUtil.showNormal(context, '请求失败:结果为 null');
// _showMessage('请求失败:结果为 null');
return;
}
printLongString(jsonEncode(result));

View File

@ -168,12 +168,14 @@ class _NfcQuestionFecebookState extends State<NfcQuestionFecebook> {
final text = _descriptionController.text.trim();
if (text.isEmpty) {
_showMessage('请填写问题');
ToastUtil.showNormal(context, '请填写问题');
// _showMessage('请填写问题');
return;
}
if (_images.isEmpty) {
_showMessage('请上传图片');
ToastUtil.showNormal(context, '请上传图片');
// _showMessage('请上传图片');
return;
}
Map data = {
@ -225,9 +227,11 @@ class _NfcQuestionFecebookState extends State<NfcQuestionFecebook> {
final raw = await ApiService.nfcFeedBack(data);
if (raw['result'] == 'success') {
_showMessage('提交成功');
ToastUtil.showNormal(context, '提交成功');
// _showMessage('提交成功');
} else {
_showMessage('提交失败');
ToastUtil.showNormal(context, '提交失败');
// _showMessage('提交失败');
}
} catch (e) {
// Toast

View File

@ -77,7 +77,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller1,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -86,7 +86,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller2,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -95,7 +95,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller3,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -104,7 +104,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller4,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -130,7 +130,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller5,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -139,7 +139,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller6,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -148,7 +148,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller7,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -157,7 +157,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller8,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -166,7 +166,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller9,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -175,7 +175,7 @@ class _CompanySafetyCommitmentApplyState extends State<CompanySafetyCommitmentAp
isEditable: true,
controller: _controller10,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),

View File

@ -103,7 +103,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller1,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -112,7 +112,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller2,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -123,7 +123,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller3,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -132,7 +132,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller4,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -141,7 +141,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller5,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -151,7 +151,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller6,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -161,7 +161,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller7,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -171,7 +171,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller8,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -180,7 +180,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller9,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -190,7 +190,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller10,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -200,7 +200,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller11,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -210,7 +210,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller12,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -220,7 +220,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller13,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
// const Divider(),
@ -273,7 +273,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller14,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -366,7 +366,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller16,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -375,7 +375,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller17,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -384,7 +384,7 @@ class _TeamSafetyCommitmentApplyState extends State<TeamSafetyCommitmentApply> {
isEditable: true,
controller: _controller18,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),

View File

@ -101,7 +101,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller1,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -122,7 +122,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller2,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -131,7 +131,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller3,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -140,7 +140,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller4,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -150,7 +150,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller5,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -160,7 +160,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller6,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -170,7 +170,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller7,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -179,7 +179,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller8,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -189,7 +189,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller9,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -199,7 +199,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller10,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -209,7 +209,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller11,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
@ -219,7 +219,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller12,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -228,7 +228,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller13,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -261,7 +261,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller14,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -336,7 +336,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller15,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -345,7 +345,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller16,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -354,7 +354,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller17,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),
const Divider(),
@ -363,7 +363,7 @@ class _WorkShopSafetyCommitmentApplyState extends State<WorkShopSafetyCommitment
isEditable: true,
controller: _controller18,
text: '',
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
isNumericInput: true,
keyboardType:TextInputType.number,
),

View File

@ -175,7 +175,7 @@ class _RiskControlPageState extends State<RiskControlPage> {
);
},
child: Container(
height: 100,
color: Colors.white,
padding: EdgeInsets.symmetric(horizontal: 16), //
child: Row(
@ -197,6 +197,8 @@ class _RiskControlPageState extends State<RiskControlPage> {
Text(
'风险点(单元):${item['RISKUNITNAME'] ?? ''}',
style: TextStyle(fontSize: 14, color: Colors.grey),
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
SizedBox(height: 4),
Text(
@ -209,8 +211,10 @@ class _RiskControlPageState extends State<RiskControlPage> {
//
Padding(
padding: EdgeInsets.only(top: 15),
child: Column(
padding: EdgeInsets.only(top: 5,bottom: 5),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
//
Row(
@ -235,7 +239,7 @@ class _RiskControlPageState extends State<RiskControlPage> {
SizedBox(height: 12), //
Row(
children: [
SizedBox(width: 110),
Icon(Icons.arrow_forward_ios_rounded, size: 16),
],
),

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
import 'package:qhd_prevention/pages/my_appbar.dart';
import 'package:qhd_prevention/tools/coord_convert.dart';
import 'package:qhd_prevention/tools/tools.dart';
@ -65,7 +66,7 @@ class _RiskDetailPageState extends State<RiskDetailPage> {
Future<void> _addCoordinate() async {
try {
LoadingDialogHelper.show(message: "提交中...");
//
await fetchAndSaveBd09(context);
final prefs = await SharedPreferences.getInstance();
@ -73,16 +74,20 @@ class _RiskDetailPageState extends State<RiskDetailPage> {
String longitude = prefs.getString('bd_lon') ?? '';
final result = await ApiService.addCoordinate( widget.itemData["IDENTIFICATIONPARTS_ID"],
longitude,latitude);
LoadingDialogHelper.hide();
if (result['result'] == 'success') {
setState(() {
_showMessage('提交成功');
ToastUtil.showNormal(context, "提交成功");
// _showMessage('提交成功');
Navigator.pop(context);
});
}else{
ToastUtil.showNormal(context, "提交失败");
_showMessage('加载数据失败');
}
} catch (e) {
LoadingDialogHelper.hide();
// Toast
print('加载数据失败:$e');
}
@ -99,13 +104,13 @@ class _RiskDetailPageState extends State<RiskDetailPage> {
//
const double bottomAreaHeight = 100;
final double maxCardHeight =
constraints.maxHeight - bottomAreaHeight;
constraints.maxHeight - bottomAreaHeight-10;
return Column(
children: [
//
Padding(
padding: const EdgeInsets.all(15),
padding: EdgeInsets.all(15),
child: ConstrainedBox(
constraints: BoxConstraints(maxHeight: maxCardHeight),
child: Container(
@ -118,12 +123,6 @@ class _RiskDetailPageState extends State<RiskDetailPage> {
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
_buildHeader(),
const Divider(
height: .5,
thickness: .5,
color: Colors.grey,
),
// Flexible SingleChildScrollView
Flexible(
@ -134,6 +133,14 @@ class _RiskDetailPageState extends State<RiskDetailPage> {
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
_buildHeader(),
const Divider(
height: .5,
thickness: .5,
color: Colors.grey,
),
_itemCell("存在风险",0),
_itemCell("主要管控措施",1),
_itemCell("管控部门",2),
@ -171,17 +178,23 @@ class _RiskDetailPageState extends State<RiskDetailPage> {
//
Widget _buildHeader() {
return Padding(
padding: const EdgeInsets.all(15),
padding: EdgeInsets.only(top:5,left: 15,right: 15,bottom: 15),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
widget.itemData['RISKUNITNAME']?? "",
style: TextStyle(fontSize: 16, color: Colors.black54),
Expanded(
child: Text(
widget.itemData['RISKUNITNAME']?? "",
style: TextStyle(fontSize: 16, color: Colors.black54),
),
),
Text(
widget.itemData['PARTSNAME'] ?? "未知地区",
style: const TextStyle(fontSize: 16, color: Colors.black54),
SizedBox(width: 15,),
Expanded(
child: Text(
widget.itemData['PARTSNAME'] ?? "未知地区",
style: const TextStyle(fontSize: 16, color: Colors.black54),
),
),
],
),

View File

@ -82,18 +82,19 @@ class _ScanPageState extends State<ScanPage> {
}
} else {
// STUDENT_ID id
bool found = false;
final listId = result;
for (final item in widget.totalList) {
if (item['LISTMANAGER_ID'] == listId) {
found = true;
goToList(listId: item['LISTMANAGER_ID'], listName: item['NAME']);
break;
}
}
if (!found) {
ToastUtil.showError(context, '无法检查该清单');
}
Navigator.pop(context, result);
// bool found = false;
// final listId = result;
// for (final item in widget.totalList) {
// if (item['LISTMANAGER_ID'] == listId) {
// found = true;
// goToList(listId: item['LISTMANAGER_ID'], listName: item['NAME']);
// break;
// }
// }
// if (!found) {
// ToastUtil.showError(context, '无法检查该清单');
// }
}
} catch (e, st) {
//

View File

@ -44,7 +44,7 @@ class _DangerPageState extends State<DangerPage>
List<dynamic> allList = [];
List<dynamic> listOne = [];
List<dynamic> listTwo = [];
@ -97,11 +97,11 @@ class _DangerPageState extends State<DangerPage>
listTwo.clear();
switch(widget.type ){
case 1://
appBarTitle="隐患排查清单";
appBarTitle="隐患排查";
_getHazardInvestigationList();
break;
case 2://
appBarTitle="标准排查清单";
appBarTitle="标准排查";
_getStandardInvestigationList();
break;
// case 3://-
@ -117,6 +117,7 @@ class _DangerPageState extends State<DangerPage>
final result = await ApiService.getHazardInvestigationList(id,searchKey);
if (result['result'] == 'success') {
final List<dynamic> newList = result['varList'] ?? [];
allList.addAll(newList);
setState(() {
for(int i=0;i<newList.length;i++){
@ -149,6 +150,7 @@ class _DangerPageState extends State<DangerPage>
final result = await ApiService.getStandardInvestigationList(id,searchKey);
if (result['result'] == 'success') {
final List<dynamic> newList = result['varList'] ?? [];
allList.addAll(newList);
setState(() {
for(int i=0;i<newList.length;i++){
@ -230,7 +232,7 @@ class _DangerPageState extends State<DangerPage>
Widget build(BuildContext context) {
return Scaffold(
appBar: MyAppbar(
title: "隐患排查",
title: appBarTitle,
actions: [
TextButton(
onPressed: () {
@ -427,12 +429,12 @@ class _DangerPageState extends State<DangerPage>
Future<void> _goScan() async {
final result = await Navigator.push(
context,
MaterialPageRoute(builder: (_) => ScanPage(totalList: [])),
MaterialPageRoute(builder: (_) => ScanPage(totalList: allList)),
);
dynamic item;
for(int i=0;i<listDates.length;i++){
final listItem= listDates[i];
for(int i=0;i<allList.length;i++){
final listItem= allList[i];
String code="";
switch(widget.type ){
case 1://
@ -446,8 +448,11 @@ class _DangerPageState extends State<DangerPage>
item=listItem;
}
}
_handleItemTap(item,0);
if(item!=null) {
_handleItemTap(item, 0);
}else{
ToastUtil.showNormal(context, "无法检查该清单");
}
}

View File

@ -1,9 +1,13 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:open_file/open_file.dart';
import 'dart:convert';
import 'package:path_provider/path_provider.dart';
import 'package:intl/intl.dart';
import 'package:dio/dio.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
import 'package:qhd_prevention/pages/home/work/read_file_page.dart';
import 'package:qhd_prevention/pages/home/work/risk_list_picker.dart';
import 'package:qhd_prevention/pages/my_appbar.dart';
@ -78,6 +82,34 @@ class _LawsRegulationsPage extends State<LawsRegulationsPage> {
);
}
Future<void> _downloadAndLoad(String url) async {
try {
final filename = url.split('/').last;
final dir = await getTemporaryDirectory();
final filePath = '${dir.path}/$filename';
final dio = Dio();
final response = await dio.get<List<int>>(
url,
options: Options(responseType: ResponseType.bytes),
);
final file = File(filePath);
await file.writeAsBytes(response.data!);
final result = await OpenFile.open(filePath);
if (result.type != ResultType.done) {
ToastUtil.showNormal(context, "文件加载失败");
}
} catch (e) {
//
ToastUtil.showNormal(context, "文件加载失败");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(content: Text('文件加载失败: \$e')),
// );
}
}
Future<void> _downloadFile(String filePath) async {
//
try {
@ -94,13 +126,13 @@ class _LawsRegulationsPage extends State<LawsRegulationsPage> {
//
try {
final url =ApiService.baseImgPath + file["FILEPATH"];
pushPage(
ReadFilePage(
fileUrl: url,
),
context,
);
_downloadAndLoad(url);
// pushPage(
// ReadFilePage(
// fileUrl: url,
// ),
// context,
// );
} catch (e) {
print(e.toString());
}

View File

@ -1,9 +1,13 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:open_file/open_file.dart';
import 'dart:convert';
import 'package:path_provider/path_provider.dart';
import 'package:intl/intl.dart';
import 'package:dio/dio.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
import 'package:qhd_prevention/pages/home/work/read_file_page.dart';
import 'package:qhd_prevention/pages/home/work/risk_list_picker.dart';
import 'package:qhd_prevention/pages/my_appbar.dart';
@ -57,7 +61,33 @@ class _LawsRegulationsTwoPage extends State<LawsRegulationsTwoPage> {
}
}
Future<void> _downloadAndLoad(String url) async {
try {
final filename = url.split('/').last;
final dir = await getTemporaryDirectory();
final filePath = '${dir.path}/$filename';
final dio = Dio();
final response = await dio.get<List<int>>(
url,
options: Options(responseType: ResponseType.bytes),
);
final file = File(filePath);
await file.writeAsBytes(response.data!);
final result = await OpenFile.open(filePath);
if (result.type != ResultType.done) {
ToastUtil.showNormal(context, "文件加载失败");
}
} catch (e) {
//
ToastUtil.showNormal(context, "文件加载失败");
// ScaffoldMessenger.of(context).showSnackBar(
// SnackBar(content: Text('文件加载失败: \$e')),
// );
}
}
@ -78,12 +108,13 @@ class _LawsRegulationsTwoPage extends State<LawsRegulationsTwoPage> {
try {
final url =ApiService.baseImgPath + file["FILEPATH"];
pushPage(
ReadFilePage(
fileUrl: url,
),
context,
);
_downloadAndLoad(url);
// pushPage(
// ReadFilePage(
// fileUrl: url,
// ),
// context,
// );
} catch (e) {
print(e.toString());
}

View File

@ -1,6 +1,7 @@
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
import 'package:qhd_prevention/pages/home/work_alert.dart';
import 'package:qhd_prevention/pages/my_appbar.dart';
import 'package:qhd_prevention/tools/tools.dart';
@ -103,7 +104,8 @@ class _WorkSetPageState extends State<WorkSetPage> {
final result = await ApiService.addRiCheng(data,title,content,id,urlPath);
if (result['result'] == 'success') {
setState(() {
_showMessage('保存成功');
ToastUtil.showNormal(context, '保存成功');
// _showMessage('保存成功');
String data= DateFormat('yyyy-MM-dd').format(_selectedDay);
_getRiCheng(data,false);
});

View File

@ -39,6 +39,8 @@ class _MineDutyApplicationPage extends State<MineDutyApplicationPage> {
ToastUtil.showSuccess(context, '提交成功');
widget.onClose('关闭提交'); //
Navigator.pop(context); //
}else{
ToastUtil.showSuccess(context, '提交失败');
}
} catch (e) {
print('加载出错: $e');

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:image_picker/image_picker.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
import 'dart:io';
import '../../../../../customWidget/photo_picker_row.dart';
import 'package:qhd_prevention/pages/my_appbar.dart';
@ -296,17 +297,20 @@ class _FeedbackPageState extends State<FeedbackPage> {
final text = _descriptionController.text.trim();
if (title.isEmpty ) {
_showMessage('请填写标题');
ToastUtil.showNormal(context, '请填写标题');
// _showMessage('请填写标题');
return;
}
if (text.isEmpty ) {
_showMessage('请填写问题和意见');
ToastUtil.showNormal(context, '请填写问题和意见');
// _showMessage('请填写问题和意见');
return;
}
if (_images.isEmpty) {
_showMessage('请上传隐患图片');
ToastUtil.showNormal(context, '请上传相关图片');
// _showMessage('请上传隐患图片');
return;
}
@ -373,11 +377,13 @@ class _FeedbackPageState extends State<FeedbackPage> {
final raw = await ApiService.setFeedBack(title,text,num,imagePaths);
if (raw['result'] == 'success') {
ToastUtil.showNormal(context, '反馈提交成功');
Navigator.pop(context); //
_showMessage('反馈提交成功');
// _showMessage('反馈提交成功');
}else{
_showMessage('反馈提交失败');
ToastUtil.showNormal(context, '反馈提交失败');
// _showMessage('反馈提交失败');
}
} catch (e) {

View File

@ -120,8 +120,9 @@ class _MinePageState extends State<MinePage> {
GestureDetector(
child: _setItemWidget("离岗"),
onTap: () async {
LoadingDialogHelper.show();
bool isRest= await _getIsRest();
LoadingDialogHelper.hide();
if(isRest){
ToastUtil.showNormal(context, "您已经处于离岗状态中");
return;

View File

@ -2,6 +2,7 @@ import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:qhd_prevention/customWidget/custom_button.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
import 'package:qhd_prevention/pages/my_appbar.dart';
import 'package:flutter/material.dart';
@ -36,25 +37,47 @@ class _MineSetPwdPageState extends State<MineSetPwdPage> {
final newPwd = _newPwdController.text.trim();
final confirmPwd = _confirmPwdController.text.trim();
if (oldPwd.isEmpty || newPwd.isEmpty || confirmPwd.isEmpty) {
_showMessage('请填写完整所有字段');
if (oldPwd.isEmpty) {
ToastUtil.showNormal(context, '请填写旧密码');
// _showMessage('请填写旧密码');
return;
}
if (newPwd.isEmpty) {
ToastUtil.showNormal(context, '请填写新密码');
// _showMessage('请填写新密码');
return;
}
if (confirmPwd.isEmpty) {
ToastUtil.showNormal(context, '请填写确认新密码');
// _showMessage('请填写确认新密码');
return;
}
// if (oldPwd.isEmpty || newPwd.isEmpty || confirmPwd.isEmpty) {
// _showMessage('请填写完整所有字段');
// return;
// }
if (newPwd != confirmPwd) {
_showMessage('新密码与确认密码不一致');
ToastUtil.showNormal(context, '新密码与确认密码不一致');
// _showMessage('新密码与确认密码不一致');
return;
}
final RegExp regex = RegExp(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,18}$');
if (regex.hasMatch(newPwd)) {
_showMessage('密码长度为6-18位必须包含大小字母小写字母数字和特殊符号。');
ToastUtil.showNormal(context, '密码长度为6-18位必须包含大小字母小写字母数字和特殊符号。');
// _showMessage('密码长度为6-18位必须包含大小字母小写字母数字和特殊符号。');
return;
}
//
if (newPwd.length < 8 || newPwd.length > 18) {
_showMessage('密码长度需在8-18位之间');
ToastUtil.showNormal(context, '密码长度需在8-18位之间');
// _showMessage('密码长度需在8-18位之间');
return;
}
@ -138,7 +161,8 @@ class _MineSetPwdPageState extends State<MineSetPwdPage> {
// final hidCount = raw['hidCount'] as Map<String, dynamic>;
// print(hidCount);
if (raw['result'] == 'success') {
_showMessage('密码修改成功'); //
ToastUtil.showNormal(context, '密码修改成功');
// _showMessage('密码修改成功'); //
Navigator.pop(context,true);
//
@ -151,13 +175,15 @@ class _MineSetPwdPageState extends State<MineSetPwdPage> {
);
}else{
_showMessage('密码修改失败');
ToastUtil.showNormal(context, '密码修改失败');
// _showMessage('密码修改失败');
}
} catch (e) {
// Toast
print('加载首页数据失败:$e');
_showMessage('密码修改失败');
ToastUtil.showNormal(context, '密码修改失败');
// _showMessage('密码修改失败');
}
}

View File

@ -22,6 +22,7 @@ class _NotifPageState extends State<NotifPage>
late TabController _tabController;
int _selectedTab = 0;
int pageNum = 1;
String keyWord="";
//
final List<Map<String, dynamic>> _notifications = List.generate(10, (i) {
@ -45,25 +46,26 @@ class _NotifPageState extends State<NotifPage>
if (_tabController.indexIsChanging) {
setState(() => _selectedTab = _tabController.index);
print('切换到标签:${_tabController.index}');
searchController.text = "";
keyWord="";
reRefreshData();
}
});
_getNotifList("");
_getNotifList();
}
void reRefreshData() {
pageNum = 1;
_list.clear();
searchController.text = "";
if (0 == _selectedTab) {
_getNotifList("");
_getNotifList();
} else {
_getNotifEnterprise("");
_getNotifEnterprise();
}
}
Future<void> _getNotifList(String keyWord) async {
Future<void> _getNotifList() async {
LoadingDialogHelper.show();
try {
final result = await ApiService.getNotifList(
@ -87,7 +89,7 @@ class _NotifPageState extends State<NotifPage>
}
}
Future<void> _getNotifEnterprise(String keyWord) async {
Future<void> _getNotifEnterprise() async {
// LoadingDialogHelper.show();
try {
final result = await ApiService.getNotifEnterprise(
@ -166,10 +168,11 @@ class _NotifPageState extends State<NotifPage>
// String word="整改";
pageNum = 1;
_list.clear();
keyWord=keyword;
if (0 == _selectedTab) {
_getNotifList(keyword);
_getNotifList();
} else {
_getNotifEnterprise(keyword);
_getNotifEnterprise();
}
},
),

View File

@ -114,7 +114,7 @@ dependencies:
video_compress: ^3.1.4
#息屏处理
wakelock_plus: ^1.3.2
open_file: ^3.2.1
dev_dependencies: