diff --git a/android/build/reports/problems/problems-report.html b/android/build/reports/problems/problems-report.html deleted file mode 100644 index 28324f2..0000000 --- a/android/build/reports/problems/problems-report.html +++ /dev/null @@ -1,663 +0,0 @@ - - - - - - - - - - - - - Gradle Configuration Cache - - - -
- -
- Loading... -
- - - - - - diff --git a/lib/customWidget/ItemWidgetFactory.dart b/lib/customWidget/ItemWidgetFactory.dart index bb83668..b2916e9 100644 --- a/lib/customWidget/ItemWidgetFactory.dart +++ b/lib/customWidget/ItemWidgetFactory.dart @@ -66,7 +66,7 @@ class ListItemFactory { Flexible( fit: FlexFit.loose, child: Text( - _truncateText(rightText,17) , + rightText, style: TextStyle(fontSize: 13, color: Colors.grey), maxLines: 1, overflow: TextOverflow.ellipsis, diff --git a/lib/pages/home/Tap/special_work/dh_work/hot_apply_page.dart b/lib/pages/home/Tap/special_work/dh_work/hot_apply_page.dart index 143fb4e..b155843 100644 --- a/lib/pages/home/Tap/special_work/dh_work/hot_apply_page.dart +++ b/lib/pages/home/Tap/special_work/dh_work/hot_apply_page.dart @@ -5,6 +5,7 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:qhd_prevention/constants/app_enums.dart'; +import 'package:qhd_prevention/customWidget/BaiDuMap/map_webview_page.dart'; import 'package:qhd_prevention/customWidget/ItemWidgetFactory.dart'; import 'package:qhd_prevention/customWidget/bottom_picker.dart'; import 'package:qhd_prevention/customWidget/center_multi_picker.dart'; @@ -25,7 +26,6 @@ import 'package:qhd_prevention/pages/home/Tap/special_work_apply_base_page.dart' import 'package:qhd_prevention/services/SessionService.dart'; import 'package:qhd_prevention/tools/tools.dart'; - class HotWorkApplyPage extends SpecialWorkApplyBasePage { const HotWorkApplyPage({ super.key, @@ -60,6 +60,7 @@ class _HotWorkApplyPageState extends SpecialWorkApplyBaseState "workLevel": "请选择动火等级", "workStartTime": "请选择作业开始时间", "workEndTime": "请选择作业结束时间", + "longitude": "请定位位置", "workContent": "请填写作业内容", "workMonitor": "请填写动火监火人", "hotWorkLeaderConfirmUserName": "请选择动火负责人确认负责人", @@ -269,6 +270,8 @@ class _HotWorkApplyPageState extends SpecialWorkApplyBaseState text: pd['workEndTime'] ?? '', ), const Divider(), + _buildCustomLocationWidget(), + const Divider(), // 作业内容 ItemListWidget.multiLineTitleTextField( label: '作业内容:', @@ -323,6 +326,58 @@ class _HotWorkApplyPageState extends SpecialWorkApplyBaseState ); } + Widget _buildCustomLocationWidget() { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 5), + padding: const EdgeInsets.symmetric(horizontal: 5), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(2), + border: Border.all(color: Colors.grey.shade300, width: 1), + ), + child: Column( + children: [ + ItemListWidget.OneRowButtonTitleText( + horizontalnum: 10, + label: '地点坐标', + isRequired: true, + buttonText: '定位', + text: '', + onTap: () async { + final result = await pushPage(MapWebViewPage(), context); + if (result != null) { + setState(() { + pd['longitude'] = result['longitude'].toString(); + pd['latitude'] = result['latitude'].toString(); + }); + } + }, + ), + const Divider(), + ItemListWidget.itemContainer( + ListItemFactory.createRowSpaceBetweenItem( + verticalPadding: 2, + isRequired: true, + leftText: '经度', + rightText: pd['longitude'] ?? '', + isRight: false, + ), + ), + const Divider(), + ItemListWidget.itemContainer( + ListItemFactory.createRowSpaceBetweenItem( + verticalPadding: 5, + isRequired: true, + leftText: '纬度', + rightText: pd['latitude'] ?? '', + isRight: false, + ), + ), + ], + ), + ); + } + /// 动火方法多选 Future _chooseHotWorkWay() async { final items = dhworkWays.map((item) => item['dictLabel'] as String).toList(); diff --git a/lib/pages/home/Tap/special_work/sxkj_work/sxkj_apply_page.dart b/lib/pages/home/Tap/special_work/sxkj_work/sxkj_apply_page.dart index df03023..d3895cc 100644 --- a/lib/pages/home/Tap/special_work/sxkj_work/sxkj_apply_page.dart +++ b/lib/pages/home/Tap/special_work/sxkj_work/sxkj_apply_page.dart @@ -6,6 +6,7 @@ import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:qhd_prevention/common/route_service.dart'; import 'package:qhd_prevention/constants/app_enums.dart'; +import 'package:qhd_prevention/customWidget/BaiDuMap/map_webview_page.dart'; import 'package:qhd_prevention/customWidget/ItemWidgetFactory.dart'; import 'package:qhd_prevention/customWidget/bottom_picker.dart'; import 'package:qhd_prevention/customWidget/custom_button.dart'; @@ -62,6 +63,7 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState { "applyTime": "请选择申请时间", "operationTypeName": "请选择作业类型", "limitedSpaceNameAndCode": "请选择有限空间名称及编号", + "longitude": "请定位位置", "workContent": "请输入作业内容", "emergencyEquipment": "请输入应急装备", "workDepartment": "请选择作业单位", @@ -150,6 +152,58 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState { }; } + Widget _buildCustomLocationWidget() { + return Container( + margin: const EdgeInsets.symmetric(horizontal: 5), + padding: const EdgeInsets.symmetric(horizontal: 5), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(2), + border: Border.all(color: Colors.grey.shade300, width: 1), + ), + child: Column( + children: [ + ItemListWidget.OneRowButtonTitleText( + horizontalnum: 10, + label: '地点坐标', + isRequired: true, + buttonText: '定位', + text: '', + onTap: () async { + final result = await pushPage(MapWebViewPage(), context); + if (result != null) { + setState(() { + pd['longitude'] = result['longitude'].toString(); + pd['latitude'] = result['latitude'].toString(); + }); + } + }, + ), + const Divider(), + ItemListWidget.itemContainer( + ListItemFactory.createRowSpaceBetweenItem( + verticalPadding: 2, + isRequired: true, + leftText: '经度', + rightText: pd['longitude'] ?? '', + isRight: false, + ), + ), + const Divider(), + ItemListWidget.itemContainer( + ListItemFactory.createRowSpaceBetweenItem( + verticalPadding: 5, + isRequired: true, + leftText: '纬度', + rightText: pd['latitude'] ?? '', + isRight: false, + ), + ), + ], + ), + ); + } + @override Widget buildFormContent() { final chooseLimitedSpace = (pd['chooseLimitedSpace'] as Map?) ?? {}; @@ -321,6 +375,8 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState { text: chooseLimitedSpace['separateSafetyMeasures'] ?? '', ), const Divider(), + _buildCustomLocationWidget(), + const Divider(), // 作业内容 ItemListWidget.multiLineTitleTextField( label: '作业内容:', diff --git a/lib/pages/home/doorAndCar/person_selection_page.dart b/lib/pages/home/doorAndCar/person_selection_page.dart index 5e3cb2a..53ba384 100644 --- a/lib/pages/home/doorAndCar/person_selection_page.dart +++ b/lib/pages/home/doorAndCar/person_selection_page.dart @@ -126,13 +126,13 @@ class _PersonSelectionPageState extends State { employeePersonUserName: name, group: firstLetter, - personCorpId: item['deptId']??'', - personCorpName: item['deptName']??'', + personCorpId: item['corpId']??'', + personCorpName: item['corpName']??'', personDepartmentId: item['deptId']??'', personDepartmentName: item['deptName']??'', - userFaceUrl: item['deptName']??'', + userFaceUrl: item['userFaceUrl']??'', userPhone: item['phone']??'', - userCard: item['deptName']??'', + userCard: item['userCard']??'', ); diff --git a/lib/pages/home/home_page.dart b/lib/pages/home/home_page.dart index ef8ec37..cf4823d 100644 --- a/lib/pages/home/home_page.dart +++ b/lib/pages/home/home_page.dart @@ -10,6 +10,7 @@ import 'package:qhd_prevention/customWidget/custom_button.dart'; import 'package:qhd_prevention/customWidget/toast_util.dart'; import 'package:qhd_prevention/http/ApiService.dart'; import 'package:qhd_prevention/http/modules/key_tasks_api.dart'; +import 'package:qhd_prevention/pages/WebViewInteractionPage.dart'; import 'package:qhd_prevention/pages/home/Study/study_tab_list_page.dart'; import 'package:qhd_prevention/pages/home/Tap/work_tab_list_page.dart'; import 'package:qhd_prevention/pages/home/doorAndCar/doorCar_tab_page.dart'; @@ -110,6 +111,12 @@ class HomePageState extends RouteAwareState {"icon": "assets/images/ico5.png", "title": "重点作业", "unreadCount": 0}, {"icon": "assets/images/ico6.png", "title": "口门门禁", "unreadCount": 0}, {"icon": "assets/images/ico7.png", "title": "入港培训", "unreadCount": 0}, + { + "icon": "assets/icon-apps/home_yanruan.png", + "title": "设备管理", + "isHandle": true, + "unreadCount": 0, + }, ]; // 浮动 AppBar @@ -211,7 +218,13 @@ class HomePageState extends RouteAwareState for (int i = 0; i < buttonInfos.length; i++) { final title = buttonInfos[i]['title'] as String; final perm = _titleToPerm[title]; - if (perm == null || perm.isEmpty) continue; + if (perm == null || perm.isEmpty) { + if (buttonInfos[i]['isHandle'] == true && title == '设备管理') { + newVisibility[i] = + SessionService.instance.userData?.nineCompanyFlag == true; + } + continue; + } try { newVisibility[i] = routeService.hasPerm(perm); } catch (e) { @@ -766,6 +779,14 @@ class HomePageState extends RouteAwareState case "隐患治理": await pushPage(HiddenDangerTabPage(), context); break; + case "设备管理": + await pushPage( + WebViewMediaBridgePage( + userId: SessionService.instance.accountId ?? '', + ), + context, + ); + break; default: ToastUtil.showNormal(context, '功能开发中...'); break; diff --git a/lib/pages/home/keyTasks/keyTasksDetail/keyTasksHiddenDanger/key_tasks_hidden_danger_detail.dart b/lib/pages/home/keyTasks/keyTasksDetail/keyTasksHiddenDanger/key_tasks_hidden_danger_detail.dart index 2588a38..774984f 100644 --- a/lib/pages/home/keyTasks/keyTasksDetail/keyTasksHiddenDanger/key_tasks_hidden_danger_detail.dart +++ b/lib/pages/home/keyTasks/keyTasksDetail/keyTasksHiddenDanger/key_tasks_hidden_danger_detail.dart @@ -47,7 +47,7 @@ class KeyTasksHiddenDangerDetail extends StatefulWidget { this.inspectId, this.inspectCodeId, this.itemData, - }) : super(key: key); + }) : super(key: key); final item; // 1 隐患整改 2 隐患记录 3 处罚反馈 final String itemId; @@ -59,10 +59,12 @@ class KeyTasksHiddenDangerDetail extends StatefulWidget { final Map? itemData; // 整个item @override - _KeyTasksHiddenDangerDetailState createState() => _KeyTasksHiddenDangerDetailState(); + _KeyTasksHiddenDangerDetailState createState() => + _KeyTasksHiddenDangerDetailState(); } -class _KeyTasksHiddenDangerDetailState extends State { +class _KeyTasksHiddenDangerDetailState + extends State { late Map pd = {}; List files = []; @@ -94,10 +96,10 @@ class _KeyTasksHiddenDangerDetailState extends State final Map>> _personCache = {}; String attachmentUp = '处置方案附件'; + // 整改图片 List gaiHouImages = []; - ///隐患验收 // 是否合格 bool _hazardAcceptanceQualified = true; @@ -113,35 +115,36 @@ class _KeyTasksHiddenDangerDetailState extends State //附件 late SelectedFile? choosefile = null; - String title='隐患记录'; + String title = '隐患记录'; final TextEditingController _descriptionController = TextEditingController(); @override void initState() { super.initState(); - switch (widget.item) { - case 1: //隐患整改 - title = "隐患整改"; - hiddenDangerRectification['id']=widget.itemId; - hiddenDangerRectification['foreignKey']=widget.foreignKey; - hiddenDangerRectification['hiddenId']=widget.hiddenId; + switch (widget.item) { + case 1: //隐患整改 + title = "隐患整改"; + hiddenDangerRectification['id'] = widget.itemId; + hiddenDangerRectification['foreignKey'] = widget.foreignKey; + hiddenDangerRectification['hiddenId'] = widget.hiddenId; - break; - case 2: //隐患记录 - title='隐患记录'; - break; - case 3: //处罚反馈 - title='处罚反馈'; - break; - } + break; + case 2: //隐患记录 + title = '隐患记录'; + break; + case 3: //处罚反馈 + title = '处罚反馈'; + break; + } - penaltyFeedbackData['feedbackTime']= DateFormat('yyyy-MM-dd HH:mm:ss').format(DateTime.now()); + penaltyFeedbackData['feedbackTime'] = DateFormat( + 'yyyy-MM-dd HH:mm:ss', + ).format(DateTime.now()); _getUserData(); getData(); } - @override void dispose() { _videoController?.dispose(); @@ -150,7 +153,9 @@ class _KeyTasksHiddenDangerDetailState extends State Future getData() async { try { - final data = await KeyTasksApi.getKeyTasksHiddenDangerDetail(widget.itemId); + final data = await KeyTasksApi.getKeyTasksHiddenDangerDetail( + widget.itemId, + ); if (data['success']) { setState(() { pd = data['data']; @@ -162,19 +167,24 @@ class _KeyTasksHiddenDangerDetailState extends State widget.hiddenId, UploadFileType.keyProjectsHiddenDangersVideo, ); - if (pd['rectificationRecord'] != null){ + if (pd['rectificationRecord'] != null) { _getImagePath( widget.hiddenId, UploadFileType.keyHomeworkRectificationPictures, ); } - if (pd['acceptRecord'] != null){ + if (pd['acceptRecord'] != null) { _getImagePath( widget.hiddenId, UploadFileType.keyHomeworkAcceptancePictures, ); } - + if (pd['hiddenPenaltyFeedbackCO'] != null) { + _getImagePath( + pd['foreignKey'] ?? '', + UploadFileType.feedbackImageKeyHomeworkPunishment, + ); + } }); } else { ToastUtil.showNormal(context, "获取列表失败"); @@ -213,13 +223,14 @@ class _KeyTasksHiddenDangerDetailState extends State files.addAll(images); } else if (UploadFileType.keyProjectsHiddenDangersVideo == type) { videoList.addAll(images); - }else if (UploadFileType.keyHomeworkRectificationPictures == type) { + } else if (UploadFileType.keyHomeworkRectificationPictures == type) { files2.addAll(images); - }else if (UploadFileType.keyHomeworkAcceptancePictures == type) { + } else if (UploadFileType.keyHomeworkAcceptancePictures == type) { files5.addAll(images); + } else if (UploadFileType.feedbackImageKeyHomeworkPunishment == + type) { + files7.addAll(images); } - - }); } else { // ToastUtil.showNormal(context, "获取图片失败"); @@ -229,7 +240,6 @@ class _KeyTasksHiddenDangerDetailState extends State } } - @override Widget build(BuildContext context) { return Scaffold( @@ -243,7 +253,10 @@ class _KeyTasksHiddenDangerDetailState extends State Widget _listWidget() { List list = pd["hiddenAcceptUserCO"] ?? []; - + // 申辩信息 + Map defendInfo = pd["defendInfo"] ?? {}; + // 处罚反馈信息 + Map hiddenPenaltyFeedbackCO = pd["hiddenPenaltyFeedbackCO"] ?? {}; return LayoutBuilder( builder: (context, constraints) { return SingleChildScrollView( @@ -254,7 +267,6 @@ class _KeyTasksHiddenDangerDetailState extends State child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Card( color: Colors.white, child: Column( @@ -285,11 +297,8 @@ class _KeyTasksHiddenDangerDetailState extends State ), ), - _buildInfoItem( - '重点作业名称', - pd["projectName"] ?? '', - ), - if((pd["source"] ?? 0)!=1)...[ + _buildInfoItem('重点作业名称', pd["projectName"] ?? ''), + if ((pd["source"] ?? 0) != 1) ...[ Divider(height: 1), ItemListWidget.OneRowButtonTitle( isShowPoint: false, @@ -297,14 +306,15 @@ class _KeyTasksHiddenDangerDetailState extends State buttonText: '【关联检查流程】', onTap: () { pushPage( - KeyTaskesOnlylookDetailPage(inspectionId: widget.foreignKey ?? '', handleType: SafeCheckDetailMode.detail), + KeyTaskesOnlylookDetailPage( + inspectionId: widget.foreignKey ?? '', + handleType: SafeCheckDetailMode.detail, + ), context, ); }, ), ], - - ], ), ), @@ -355,7 +365,6 @@ class _KeyTasksHiddenDangerDetailState extends State Divider(height: 1), _buildInfoItem('隐患描述', pd['hiddenDesc'] ?? ''), - if ((pd['positionDesc'] ?? '').isNotEmpty) Divider(height: 1), if ((pd['positionDesc'] ?? '').isNotEmpty) @@ -368,23 +377,37 @@ class _KeyTasksHiddenDangerDetailState extends State ), Divider(height: 1), - _buildInfoItem('整改期限', pd['rectificationDeadline'] ?? ''), + _buildInfoItem( + '整改期限', + pd['rectificationDeadline'] ?? '', + ), Divider(height: 1), - _buildInfoItem('整改部门', pd['rectificationDepartmentName'] ?? ''), + _buildInfoItem( + '整改部门', + pd['rectificationDepartmentName'] ?? '', + ), Divider(height: 1), - _buildInfoItem('整改人', pd['rectificationUserName'] ?? ''), + _buildInfoItem( + '整改人', + pd['rectificationUserName'] ?? '', + ), Divider(height: 1), - _buildInfoItem('隐患发现部门', pd['findDepartmentName'] ?? ''), + _buildInfoItem( + '隐患发现部门', + pd['findDepartmentName'] ?? '', + ), Divider(height: 1), _buildInfoItem('隐患发现人', pd['findUserName'] ?? ''), Divider(height: 1), - _buildInfoItem('隐患发现时间', _changeTime(pd['createTime'] ?? ''),), - + _buildInfoItem( + '隐患发现时间', + _changeTime(pd['createTime'] ?? ''), + ), Divider(height: 1), // 隐患照片 @@ -452,7 +475,6 @@ class _KeyTasksHiddenDangerDetailState extends State ), ), - // 整改信息(发现人预填) if (pd['rectificationRecord'] != null) ...[ SizedBox(height: 10), @@ -497,41 +519,310 @@ class _KeyTasksHiddenDangerDetailState extends State pd['rectificationUserName'] ?? '', ), - Divider(height: 1), - _buildInfoItem( - '整改时间', - _changeTime( pd["rectificationRecord"]['rectificationTime'] ?? ''), - // pd["rectificationRecord"]['rectificationTime'] ?? '', + Divider(height: 1), + _buildInfoItem( + '整改时间', + _changeTime( + pd["rectificationRecord"]['rectificationTime'] ?? + '', ), + // pd["rectificationRecord"]['rectificationTime'] ?? '', + ), Divider(height: 1), _buildInfoItem( '整改描述', // _changeTime( pd["hiddenUserPresetsCO"]['rectifyDeadline'] ?? ''), - pd["rectificationRecord"]['rectificationDesc'] ?? '', + pd["rectificationRecord"]['rectificationDesc'] ?? + '', ), ListItemFactory.createTextImageItem( text: "整改后图片", imageUrls: - files2.map((item) => item['filePath'].toString()).toList(), + files2 + .map((item) => item['filePath'].toString()) + .toList(), horizontalPadding: 10, onImageTapped: (index) { presentOpaque( SingleImageViewer( imageUrl: - ApiService.baseImgPath + files2[index]['filePath'], + ApiService.baseImgPath + + files2[index]['filePath'], + ), + context, + ); + }, + ), + ], + ), + ), + ], + // 申辩信息 + if (defendInfo.isNotEmpty) ...[ + 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), + Text( + "申辩信息", + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + ItemListWidget.OneRowImageTitle( + label: '申辩人', + text: '', + onTapCallBack: (path) { + presentOpaque( + SingleImageViewer(imageUrl: path), + context, + ); + }, + imgPath: defendInfo["defendantSign"] ?? '', + ), + const Divider(), + ItemListWidget.singleLineTitleText( + label: '申辩时间', + isEditable: false, + text: defendInfo['createTime'], + ), + const Divider(), + ItemListWidget.singleLineTitleText( + label: '申辩说明', + isEditable: false, + text: defendInfo["content"] ?? '', + ), + + const Divider(), + ItemListWidget.OneRowButtonTitleText( + horizontalnum: 10, + label: '处置方案附件', + buttonText: '查看', + text: defendInfo['fileName'] ?? '', + onTap: () { + if ((defendInfo['fileUrl'] ?? '').isEmpty) { + ToastUtil.showNormal(context, '未上传文件'); + return; + } + pushPage( + ReadFilePage( + fileUrl: + ApiService.baseImgPath + + defendInfo['fileUrl'] ?? + '', + ), + context, + ); + // _downloadAndLoad(itemData['disposalFile'] ?? ''); + }, + ), + const Divider(), + ItemListWidget.singleLineTitleText( + label: '申辩是否成立', + isEditable: false, + text: defendInfo['isPass'] == 1 ? '通过' : '不通过', + ), + const Divider(), + if (defendInfo['isPass'] != 1) ...[ + ItemListWidget.singleLineTitleText( + label: '不成立理由内容', + isEditable: false, + text: defendInfo['rejectContent'] ?? '', + ), + ], + const Divider(), + ListItemFactory.createTextImageItem( + text: "检查人", + imageUrls: [defendInfo["checkSign"] ?? ''], + horizontalPadding: 10, + onImageTapped: (index) { + presentOpaque( + SingleImageViewer( + imageUrl: + ApiService.baseImgPath + '${defendInfo["checkSign"] ?? ''}', ), context, ); }, ), + ], ), ), ], + // 处罚信息 + if (pd['hiddenPenaltyCO'] != null && + (pd["hiddenPenaltyCO"]['penaltyTime'] ?? '').isNotEmpty && + pd["hiddenPenaltyCO"]['fineFlag'] == 1) ...[ + SizedBox(height: 10), + // const Divider(height: 10,color: Colors.grey,), + 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, + ), + ), + ], + ), + ), + + _buildInfoItem( + '是否进行处罚', + pd["hiddenPenaltyCO"]['fineFlag'] == 1 ? '是' : '否', + ), + Divider(height: 1), + _buildInfoItem( + '下发人', + pd["hiddenPenaltyCO"]['findUserName'] ?? '', + ), + Divider(height: 1), + _buildInfoItem( + '下发时间', + _changeTime( + pd["hiddenPenaltyCO"]['penaltyTime'] ?? '', + ), + // pd["rectificationRecord"]['rectificationTime'] ?? '', + ), + Divider(height: 1), + _buildInfoItem( + '处罚原因', + pd["hiddenPenaltyCO"]['penaltyDesc'] ?? '', + // pd["rectificationRecord"]['rectificationTime'] ?? '', + ), + Divider(height: 1), + _buildInfoItem( + '处罚金额', + pd["hiddenPenaltyCO"]['penaltyAmount'] + ?.toString() ?? + '', + // pd["rectificationRecord"]['rectificationTime'] ?? '', + ), + ], + ), + ), + ], + // 处罚反馈信息 + if (hiddenPenaltyFeedbackCO.isNotEmpty) ...[ + 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), + Text( + "处罚反馈信息", + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + if (files7.isNotEmpty) + ListItemFactory.createTextImageItem( + text: "罚款缴纳单", + imageUrls: + files7 + .map( + (item) => item['filePath'].toString(), + ) + .toList(), + horizontalPadding: 10, + onImageTapped: (index) { + presentOpaque( + SingleImageViewer( + imageUrl: + ApiService.baseImgPath + + files5[index]['filePath'], + ), + context, + ); + }, + ), + + Divider(height: 1), + _buildInfoItem( + '处罚反馈人', + hiddenPenaltyFeedbackCO['feedbackUserName'] ?? '', + ), + + const Divider(height: 1), + ItemListWidget.singleLineTitleText( + label: '处罚反馈时间', + isEditable: false, + text: penaltyFeedbackData['feedbackTime'] ?? "", + ), + + // ListItemFactory.( + // isRequired: false, + // leftText: "处罚反馈时间", + // rightText: + // penaltyFeedbackData['feedbackTime'] ?? "", + // isRight: false, + // ), + ], + ), + ), + ], // 整改验收 if (pd['acceptRecord'] != null) ...[ SizedBox(height: 10), @@ -576,25 +867,31 @@ class _KeyTasksHiddenDangerDetailState extends State pd["acceptRecord"]['acceptUserName'] ?? '', ), - - if(pd["acceptRecord"]['state']==1)...[ + if (pd["acceptRecord"]['state'] == 1) ...[ Divider(height: 1), _buildInfoItem( '验收时间', - _changeTime( pd["acceptRecord"]['acceptTime'] ?? ''), + _changeTime( + pd["acceptRecord"]['acceptTime'] ?? '', + ), // pd["rectificationRecord"]['rectificationTime'] ?? '', ), Divider(height: 1), ListItemFactory.createTextImageItem( text: "验收图片", imageUrls: - files5.map((item) => item['filePath'].toString()).toList(), + files5 + .map( + (item) => item['filePath'].toString(), + ) + .toList(), horizontalPadding: 10, onImageTapped: (index) { presentOpaque( SingleImageViewer( imageUrl: - ApiService.baseImgPath + files5[index]['filePath'], + ApiService.baseImgPath + + files5[index]['filePath'], ), context, ); @@ -602,82 +899,13 @@ class _KeyTasksHiddenDangerDetailState extends State ), ], - if(pd["acceptRecord"]['state']==0)...[ + if (pd["acceptRecord"]['state'] == 0) ...[ Divider(height: 1), _buildInfoItem( '打回意见', pd["acceptRecord"]['rejectOpinion'] ?? '', ), ], - - - ], - ), - ), - ], - - // 处罚信息 - if (pd['hiddenPenaltyCO'] != null) ...[ - SizedBox(height: 10), - // const Divider(height: 10,color: Colors.grey,), - 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, - ), - ), - ], - ), - ), - - _buildInfoItem( - '是否进行处罚', - pd["hiddenPenaltyCO"]['fineFlag'] ==1?'是':'否', - ), - Divider(height: 1), - _buildInfoItem( - '下发人', - pd["hiddenPenaltyCO"]['findUserName'] ?? '', - ), - Divider(height: 1), - _buildInfoItem( - '下发时间', - _changeTime( pd["hiddenPenaltyCO"]['penaltyTime'] ?? ''), - // pd["rectificationRecord"]['rectificationTime'] ?? '', - ), - Divider(height: 1), - _buildInfoItem( - '处罚原因', - pd["hiddenPenaltyCO"]['penaltyDesc'] ?? '', - // pd["rectificationRecord"]['rectificationTime'] ?? '', - ), - Divider(height: 1), - _buildInfoItem( - '处罚金额', - pd["hiddenPenaltyCO"]['penaltyAmount']?.toString() ?? '' - // pd["rectificationRecord"]['rectificationTime'] ?? '', - ), - ], ), ), @@ -734,11 +962,9 @@ class _KeyTasksHiddenDangerDetailState extends State // ), // ], - - ///=============以下是操作 //隐患整改操作 - if (widget.item==1)...[ + if (widget.item == 1) ...[ SizedBox(height: 10), Card( color: Colors.white, @@ -770,27 +996,33 @@ class _KeyTasksHiddenDangerDetailState extends State ), ), - GestureDetector( onTap: () async { - DateTime? picked = await BottomDateTimePicker.showDate( - mode: BottomPickerMode.dateTimeWithSeconds, - context, - allowPast:false, - ); + DateTime? picked = + await BottomDateTimePicker.showDate( + mode: BottomPickerMode.dateTimeWithSeconds, + context, + allowPast: false, + ); if (picked != null) { setState(() { - hiddenDangerRectification['rectificationTime']= DateFormat('yyyy-MM-dd HH:mm:ss').format(picked); + hiddenDangerRectification['rectificationTime'] = + DateFormat( + 'yyyy-MM-dd HH:mm:ss', + ).format(picked); }); } - }, child: Padding( padding: EdgeInsets.symmetric(horizontal: 15), child: ListItemFactory.createRowSpaceBetweenItem( - isRequired:true, + isRequired: true, leftText: "整改时间", - rightText: hiddenDangerRectification['rectificationTime'].isNotEmpty?hiddenDangerRectification['rectificationTime']:"请选择", + rightText: + hiddenDangerRectification['rectificationTime'] + .isNotEmpty + ? hiddenDangerRectification['rectificationTime'] + : "请选择", isRight: true, ), ), @@ -802,7 +1034,7 @@ class _KeyTasksHiddenDangerDetailState extends State child: Column( children: [ ListItemFactory.createBuildMultilineInput( - isRequired:true, + isRequired: true, "整改描述", "请对整改进行详细描述(必填项)", _descriptionController, @@ -813,31 +1045,27 @@ class _KeyTasksHiddenDangerDetailState extends State ItemListWidget.itemContainer( RepairedPhotoSection( - isRequired:true, + isRequired: true, title: "整改照片", maxCount: 4, mediaType: MediaType.image, onChanged: (files) { // 上传 files 到服务器 gaiHouImages.clear(); - for(int i=0;i ItemListWidget.itemContainer( RepairedPhotoSection( - isRequired:true, + isRequired: true, title: "罚款缴纳单", maxCount: 4, mediaType: MediaType.image, onChanged: (files) { // 上传 files 到服务器 gaiHouImages.clear(); - for(int i=0;i // ), // ], - - - - - //操作按钮 - - if (widget.item==1||widget.item==3)...[ - SizedBox(height: 10,), + if (widget.item == 1 || widget.item == 3) ...[ + SizedBox(height: 10), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - // 查看详情按钮 Expanded( child: CustomButton( height: 35, onPressed: () { - if(widget.item==3){ + if (widget.item == 3) { _setPenaltyFeedback(); - }else{ + } else { _setHiddenDangerRectification(); } // _setHiddenDangerAcceptance(); @@ -1084,7 +1308,6 @@ class _KeyTasksHiddenDangerDetailState extends State text: '提交', ), ), - ], ), ], @@ -1100,10 +1323,9 @@ class _KeyTasksHiddenDangerDetailState extends State ); } - Widget _buildInfoItem(String title, String value) { return Padding( - padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 10), + padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -1123,48 +1345,50 @@ class _KeyTasksHiddenDangerDetailState extends State //隐患整改 Future _setHiddenDangerRectification() async { try { + String miaoShu = _descriptionController.text.trim(); + if (miaoShu.isEmpty) { + ToastUtil.showNormal(context, "请填整改描述"); + return; + } + hiddenDangerRectification['rectificationDesc'] = miaoShu; - String miaoShu = _descriptionController.text.trim(); - if (miaoShu.isEmpty) { - ToastUtil.showNormal(context, "请填整改描述"); - return; - } - hiddenDangerRectification['rectificationDesc'] = miaoShu; + String dataTime = hiddenDangerRectification['rectificationTime'] ?? ''; + if (dataTime.isEmpty) { + ToastUtil.showNormal(context, "请选择整改时间"); + return; + } - String dataTime = hiddenDangerRectification['rectificationTime']??''; - if (dataTime.isEmpty) { - ToastUtil.showNormal(context, "请选择整改时间"); - return; - } - - if (gaiHouImages.isEmpty) { - ToastUtil.showNormal(context, "请上传整改照片"); - return; - } - - LoadingDialogHelper.show(); - - if (gaiHouImages.isNotEmpty) { - await _addImgFilesZhengGaiID( - gaiHouImages, - UploadFileType.keyHomeworkRectificationPictures, - ); - } - - late bool isSuccess = true; - List ids = files2.map((file) => file['id'].toString()).toList(); - await FileApi.deleteImages(ids).then((result) { - if (result['success']) { - isSuccess = true; - } else { - isSuccess = false; - } - }); - // await FileApi.deleteImages(ids); - LoadingDialogHelper.hide(); + if (gaiHouImages.isEmpty) { + ToastUtil.showNormal(context, "请上传整改照片"); + return; + } LoadingDialogHelper.show(); - final Map raw = await KeyTasksApi.setHiddenDangerRectification(hiddenDangerRectification,); + + if (gaiHouImages.isNotEmpty) { + await _addImgFilesZhengGaiID( + gaiHouImages, + UploadFileType.keyHomeworkRectificationPictures, + ); + } + + late bool isSuccess = true; + List ids = files2.map((file) => file['id'].toString()).toList(); + await FileApi.deleteImages(ids).then((result) { + if (result['success']) { + isSuccess = true; + } else { + isSuccess = false; + } + }); + // await FileApi.deleteImages(ids); + LoadingDialogHelper.hide(); + + LoadingDialogHelper.show(); + final Map raw = + await KeyTasksApi.setHiddenDangerRectification( + hiddenDangerRectification, + ); if (raw['success']) { LoadingDialogHelper.hide(); @@ -1186,28 +1410,29 @@ class _KeyTasksHiddenDangerDetailState extends State //隐患处理 Future _setPenaltyFeedback() async { try { - - if (gaiHouImages.isEmpty) { ToastUtil.showNormal(context, "请上传罚款缴纳单图片"); return; } - penaltyFeedbackData['hiddenPenaltyId']=widget.itemData?['hiddenPenaltyId']; - penaltyFeedbackData['feedbackUserId']=widget.itemData?['feedbackUserId']; - + penaltyFeedbackData['hiddenPenaltyId'] = + widget.itemData?['hiddenPenaltyId']; + penaltyFeedbackData['feedbackUserId'] = SessionService.instance.accountId; LoadingDialogHelper.show(); if (gaiHouImages.isNotEmpty) { - String url= await _addImgFilesZhengGaiID( + String foreignKey = await _addImgFilesZhengGaiID( gaiHouImages, UploadFileType.feedbackImageKeyHomeworkPunishment, + id: pd['foreignKey'] ?? '', ); - penaltyFeedbackData['finePaymentReceipt']=url; + penaltyFeedbackData['foreignKey'] = foreignKey; } LoadingDialogHelper.show(); - final Map raw = await KeyTasksApi.setPenaltyFeedback(penaltyFeedbackData,); + final Map raw = await KeyTasksApi.setPenaltyFeedback( + penaltyFeedbackData, + ); LoadingDialogHelper.hide(); if (raw['success']) { setState(() { @@ -1316,8 +1541,6 @@ class _KeyTasksHiddenDangerDetailState extends State } } - - // String _getSourceDangers(final item) { // int type = item["source"]; // if (1 == type) { @@ -1382,7 +1605,7 @@ class _KeyTasksHiddenDangerDetailState extends State return "安全环保检查(监管端)"; } else if (3 == type) { return "安全环保检查(企业端)"; - } else { + } else { return ""; } } @@ -1390,20 +1613,19 @@ class _KeyTasksHiddenDangerDetailState extends State String _getState(final item) { //1,未整改,2:已整改,3:已验收,4:验收打回 int type = item["state"]; - if(1==type){ + if (1 == type) { return "未整改"; - }else if(2==type){ + } else if (2 == type) { return "已整改"; - }else if(3==type){ + } else if (3 == type) { return "已验收"; - }else if(4==type){ + } else if (4 == type) { return "验收打回"; - }else{ + } else { return ""; } } - String _changeTime(String time) { try { // 解析 ISO 8601 格式的时间字符串 @@ -1471,10 +1693,15 @@ class _KeyTasksHiddenDangerDetailState extends State Future _addImgFilesZhengGaiID( List imagePaths, - UploadFileType type, - ) async { + UploadFileType type, { + String? id, + }) async { try { - final raw = await FileApi.uploadFiles(imagePaths, type, widget.hiddenId); + final raw = await FileApi.uploadFiles( + imagePaths, + type, + id ?? widget.hiddenId, + ); if (raw['success']) { // raw['data']['foreignKey']; return raw['data']['foreignKey']; @@ -1489,8 +1716,6 @@ class _KeyTasksHiddenDangerDetailState extends State } } - - String _getText(int source) { if (source == 1) { return "是"; @@ -1515,13 +1740,13 @@ class _KeyTasksHiddenDangerDetailState extends State if (text != '') { if (text == 1) { return "待审核"; - }else if(text == 2){ + } else if (text == 2) { return "审批中"; - }else if(text == 3){ + } else if (text == 3) { return "已通过"; - }else if(text == 4){ + } else if (text == 4) { return "已拒绝"; - } else if(text == 5){ + } else if (text == 5) { return "已撤回"; } else { return "未通过"; @@ -1569,7 +1794,7 @@ class _KeyTasksHiddenDangerDetailState extends State Divider(height: 1), _buildInfoItem( '整改时间', - _changeTime( itemData['rectificationTime'] ?? ''), + _changeTime(itemData['rectificationTime'] ?? ''), // itemData['rectificationTime'] ?? '', ), Divider(height: 1), @@ -1803,10 +2028,9 @@ class _KeyTasksHiddenDangerDetailState extends State .toList(); } - //隐患整改 Map hiddenDangerRectification = { - "hiddenRectificationRecordId":"", + "hiddenRectificationRecordId": "", "foreignKey": "", "hiddenId": "", "rectificationTime": "", @@ -1825,14 +2049,11 @@ class _KeyTasksHiddenDangerDetailState extends State "checkUserId": "", }; - //处罚反馈 Map penaltyFeedbackData = { "feedbackTime": "", "hiddenPenaltyId": "", "finePaymentReceipt": "", - "feedbackUserId": '' + "feedbackUserId": '', }; - - } diff --git a/lib/pages/home/keyTasks/keyTasksDetail/key_tasks_confirm_detail_page.dart b/lib/pages/home/keyTasks/keyTasksDetail/key_tasks_confirm_detail_page.dart index c86a432..a9175d0 100644 --- a/lib/pages/home/keyTasks/keyTasksDetail/key_tasks_confirm_detail_page.dart +++ b/lib/pages/home/keyTasks/keyTasksDetail/key_tasks_confirm_detail_page.dart @@ -164,6 +164,7 @@ class _KeyTasksConfirmDetailPageState extends State { horizontalnum: 10, label: '安全管理协议', buttonText: '新增', + isEdit: widget.type == 2, text: '', onTap: () async { final List picked = await DocumentPicker.showPickerModal( @@ -224,6 +225,7 @@ class _KeyTasksConfirmDetailPageState extends State { }, ), ), + if (widget.type == 2) CustomButton( text: '删除', height: 30, diff --git a/lib/pages/home/keyTasks/keyTasksDetail/punishmentKeyTasks/key_tasks_punishment_filter_page.dart b/lib/pages/home/keyTasks/keyTasksDetail/punishmentKeyTasks/key_tasks_punishment_filter_page.dart index c669575..22f1880 100644 --- a/lib/pages/home/keyTasks/keyTasksDetail/punishmentKeyTasks/key_tasks_punishment_filter_page.dart +++ b/lib/pages/home/keyTasks/keyTasksDetail/punishmentKeyTasks/key_tasks_punishment_filter_page.dart @@ -63,7 +63,7 @@ class _KeyTasksPunishmentFilterPageState extends State createState() => _KeyTasksPunishmentListState(); @@ -30,6 +27,7 @@ class KeyTasksPunishmentList extends StatefulWidget { class _KeyTasksPunishmentListState extends State { int _page = 1; + // String searchKey = ""; int _totalPage = 1; @@ -54,17 +52,15 @@ class _KeyTasksPunishmentListState extends State { _searchController.addListener(_onSearchChanged); _distinguishData(); - } Future _distinguishData() async { - - buttonTextTwo = '反馈'; - title = "处罚反馈"; - final parentPerm = 'dashboard:Key-assignment:Hidden-hazard-record'; - final targetPerm = ''; - final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm); - keyTasksPunishmentData['menuPath']=menuPath; + buttonTextTwo = '反馈'; + title = "处罚反馈"; + final parentPerm = 'dashboard:Key-assignment:Hidden-hazard-record'; + final targetPerm = ''; + final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm); + keyTasksPunishmentData['menuPath'] = menuPath; _getListData(false); } @@ -83,7 +79,7 @@ class _KeyTasksPunishmentListState extends State { final double screenWidth = MediaQuery.of(context).size.width; return Scaffold( - appBar: MyAppbar(title:title), + appBar: MyAppbar(title: title), body: SafeArea( child: NotificationListener( @@ -98,47 +94,46 @@ class _KeyTasksPunishmentListState extends State { Widget _vcDetailWidget() { return Column( children: [ - - RangeFilterBar( - initial: RangeOption.none, - mode: RangeFilterBarMode.dayWeekMonth, - onRangeChanged: (range) { - switch (range) { - case RangeOption.oneDay: - keyTasksPunishmentData['hiddenCreateTimeStart'] = DateFormat('yyyy-MM-dd HH:mm:ss') - .format(DateTime.now().subtract(const Duration(days: 1))); - break; - case RangeOption.oneWeek: - keyTasksPunishmentData['hiddenCreateTimeStart'] = DateFormat('yyyy-MM-dd HH:mm:ss') - .format(DateTime.now().subtract(const Duration(days: 7))); - break; - case RangeOption.oneMonth: - keyTasksPunishmentData['hiddenCreateTimeStart'] = DateFormat('yyyy-MM-dd HH:mm:ss') - .format(DateTime.now().subtract(const Duration(days: 30))); - break; - case RangeOption.threeMonths: - break; - case RangeOption.none: - break; - } + RangeFilterBar( + initial: RangeOption.none, + mode: RangeFilterBarMode.dayWeekMonth, + onRangeChanged: (range) { + switch (range) { + case RangeOption.oneDay: + keyTasksPunishmentData['hiddenCreateTimeStart'] = DateFormat( + 'yyyy-MM-dd HH:mm:ss', + ).format(DateTime.now().subtract(const Duration(days: 1))); + break; + case RangeOption.oneWeek: + keyTasksPunishmentData['hiddenCreateTimeStart'] = DateFormat( + 'yyyy-MM-dd HH:mm:ss', + ).format(DateTime.now().subtract(const Duration(days: 7))); + break; + case RangeOption.oneMonth: + keyTasksPunishmentData['hiddenCreateTimeStart'] = DateFormat( + 'yyyy-MM-dd HH:mm:ss', + ).format(DateTime.now().subtract(const Duration(days: 30))); + break; + case RangeOption.threeMonths: + break; + case RangeOption.none: + break; + } + _performSearch(); + }, + onFilterPressed: () async { + // 弹出筛选对话框或跳转到筛选页面 + // String searchData=''; + final searchData = await pushPage( + KeyTasksPunishmentFilterPage(searchData: keyTasksPunishmentData), + context, + ); + if (searchData != null) { + keyTasksPunishmentData = searchData; _performSearch(); - }, - onFilterPressed: () async { - // 弹出筛选对话框或跳转到筛选页面 - // String searchData=''; - final searchData= await pushPage( - KeyTasksPunishmentFilterPage( - searchData: keyTasksPunishmentData, - ), - context, - ); - if(searchData!=null){ - keyTasksPunishmentData=searchData; - _performSearch(); - } - - }, - ), + } + }, + ), Container(height: 5, color: h_backGroundColor()), Expanded( @@ -157,6 +152,17 @@ class _KeyTasksPunishmentListState extends State { ); } + // 处罚反馈状态 + String _getPunishmentStatus(Map data) { + // data['feedbackStatus'] + int status = int.parse('${data['feedbackStatus']}'); + if (status > 0) { + return '已反馈'; + } else { + return '待反馈'; + } + } + Widget _fxitemCell(pageData) { // 使用GestureDetector包裹整个列表项以添加点击事件 return GestureDetector( @@ -224,7 +230,6 @@ class _KeyTasksPunishmentListState extends State { SizedBox(height: 16), - Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Row( @@ -234,7 +239,7 @@ class _KeyTasksPunishmentListState extends State { // 隐患状态 Expanded( child: Text( - '被处罚单位: ${pageData['xgfCorpinfoName']??''}', + '被处罚单位: ${pageData['xgfCorpinfoName'] ?? ''}', style: TextStyle(fontSize: 14, color: Colors.black87), ), ), @@ -253,7 +258,7 @@ class _KeyTasksPunishmentListState extends State { // 隐患发现人 - 使用 Expanded 包裹 Expanded( child: Text( - '被处罚人:${pageData['feedbackUserName'] ?? ''}', + '被处罚人:${pageData['penalizedUserName'] ?? ''}', style: TextStyle(fontSize: 14, color: Colors.black87), maxLines: 1, overflow: TextOverflow.ellipsis, @@ -281,8 +286,8 @@ class _KeyTasksPunishmentListState extends State { children: [ // 整改人 Expanded( - child: - Text('处罚原因: ${pageData['penaltyDesc'] ?? ''}', + child: Text( + '处罚原因: ${pageData['penaltyDesc'] ?? ''}', style: TextStyle(fontSize: 14, color: Colors.black87), ), ), @@ -298,8 +303,8 @@ class _KeyTasksPunishmentListState extends State { children: [ // 整改人 Expanded( - child: - Text('下发人: ${pageData['findUserName'] ?? ''}', + child: Text( + '下发人: ${pageData['findUserName'] ?? ''}', style: TextStyle(fontSize: 14, color: Colors.black87), ), ), @@ -315,8 +320,8 @@ class _KeyTasksPunishmentListState extends State { children: [ // 整改人 Expanded( - child: - Text('处罚反馈状态: ${pageData['feedbackStatus'] ?? ''}', + child: Text( + '处罚反馈状态: ${_getPunishmentStatus(pageData)}', style: TextStyle(fontSize: 14, color: Colors.black87), ), ), @@ -332,8 +337,7 @@ class _KeyTasksPunishmentListState extends State { children: [ // 整改人 Expanded( - child: - Text( + child: Text( '重点作业名称: ${pageData['projectName'] ?? ''}', style: TextStyle(fontSize: 14, color: Colors.black87), ), @@ -352,52 +356,23 @@ class _KeyTasksPunishmentListState extends State { ), ), - SizedBox(height: 8), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - //查看 - - Expanded( - child: CustomButton( - height: 35, - onPressed: () async { - // print('查看: ${pageData['title']}'); - await pushPage( - KeyTasksHiddenDangerDetail( - 2, - pageData['hiddenTableId']??'', - pageData['hiddenId']??'', - pageData['foreignKey']??'', - false, - ), - context, - ); - _page = 1; - _getListData(false); - }, - backgroundColor: h_backGroundColor(), - textStyle: const TextStyle(color: Colors.black), - buttonStyle: ButtonStyleType.secondary, - text: buttonTextOne, - ), - ), - - - SizedBox(width: 10), // 使用width而不是height + //查看 Expanded( child: CustomButton( height: 35, onPressed: () async { - await pushPage( + // print('查看: ${pageData['title']}'); + await pushPage( KeyTasksHiddenDangerDetail( - 3, - pageData['hiddenTableId']??'', - pageData['hiddenId']??'', - pageData['foreignKey']??'', - itemData:pageData, + 2, + pageData['hiddenTableId'] ?? '', + pageData['hiddenId'] ?? '', + pageData['foreignKey'] ?? '', false, ), context, @@ -405,13 +380,39 @@ class _KeyTasksPunishmentListState extends State { _page = 1; _getListData(false); }, - backgroundColor: h_AppBarColor(), - textStyle: const TextStyle(color: Colors.white), - buttonStyle: ButtonStyleType.primary, - text: buttonTextTwo, + backgroundColor: h_backGroundColor(), + textStyle: const TextStyle(color: Colors.black), + buttonStyle: ButtonStyleType.secondary, + text: buttonTextOne, ), ), + SizedBox(width: 10), // 使用width而不是height + if (int.parse('${pageData['feedbackStatus']}') < 1) + Expanded( + child: CustomButton( + height: 35, + onPressed: () async { + await pushPage( + KeyTasksHiddenDangerDetail( + 3, + pageData['hiddenTableId'] ?? '', + pageData['hiddenId'] ?? '', + pageData['foreignKey'] ?? '', + itemData: pageData, + false, + ), + context, + ); + _page = 1; + _getListData(false); + }, + backgroundColor: h_AppBarColor(), + textStyle: const TextStyle(color: Colors.white), + buttonStyle: ButtonStyleType.primary, + text: buttonTextTwo, + ), + ), ], ), @@ -452,17 +453,17 @@ class _KeyTasksPunishmentListState extends State { }); } - Future _getListData(bool loadMore) async { try { if (_isLoading) return; _isLoading = true; - keyTasksPunishmentData['pageIndex']=_page; + keyTasksPunishmentData['pageIndex'] = _page; // keyTasksPunishmentData['hiddenDesc']=searchKey; LoadingDialogHelper.show(); - final Map result = await KeyTasksApi.getHiddenDangerPenalty(keyTasksPunishmentData); + final Map result = + await KeyTasksApi.getHiddenDangerPenalty(keyTasksPunishmentData); LoadingDialogHelper.hide(); if (result['success']) { @@ -504,7 +505,7 @@ class _KeyTasksPunishmentListState extends State { return "隐患来源:安全环保检查(监管端)"; } else if (3 == type) { return "隐患来源:安全环保检查(企业端)"; - } else { + } else { return "隐患来源:"; } } @@ -528,15 +529,15 @@ class _KeyTasksPunishmentListState extends State { String _getState(final item) { //1,未整改,2:已整改,3:已验收,4:验收打回 int type = item["state"]; - if(1==type){ + if (1 == type) { return "未整改"; - }else if(2==type){ + } else if (2 == type) { return "已整改"; - }else if(3==type){ + } else if (3 == type) { return "已验收"; - }else if(4==type){ + } else if (4 == type) { return "验收打回"; - }else{ + } else { return ""; } } @@ -560,8 +561,7 @@ class _KeyTasksPunishmentListState extends State { return input; } - - Map keyTasksPunishmentData={ + Map keyTasksPunishmentData = { "needTotalCount": true, "pageSize": 20, "orderBy": "", @@ -575,8 +575,6 @@ class _KeyTasksPunishmentListState extends State { "orderDirection": "", "findUserName": "", "projectName": "", - "hiddenCreateTimeEnd": "" + "hiddenCreateTimeEnd": "", }; - - } diff --git a/lib/pages/home/keyTasks/key_tasks_check_list_page.dart b/lib/pages/home/keyTasks/key_tasks_check_list_page.dart index 3f64b88..47dafb2 100644 --- a/lib/pages/home/keyTasks/key_tasks_check_list_page.dart +++ b/lib/pages/home/keyTasks/key_tasks_check_list_page.dart @@ -340,7 +340,6 @@ class _KeyTasksCheckListPageState extends State { Future _fetchData() async { if (isLoading) return; setState(() => isLoading = true); - try { keyTasksInspectionListData['pageIndex']=currentPage; keyTasksInspectionListData['place']=searchKey; @@ -359,6 +358,7 @@ class _KeyTasksCheckListPageState extends State { isLoading = false; }); } + } catch (e) { debugPrint('Error fetching data: $e'); setState(() => isLoading = false); diff --git a/lib/services/SessionService.dart b/lib/services/SessionService.dart index abc8ac1..4cc389d 100644 --- a/lib/services/SessionService.dart +++ b/lib/services/SessionService.dart @@ -75,6 +75,7 @@ class UserData { final String? mappingPostName; final String? mappingDeptName; final dynamic employmentFlag; + final bool nineCompanyFlag; UserData({ this.id, @@ -128,6 +129,7 @@ class UserData { this.mappingPostName, this.mappingDeptName, this.employmentFlag, + this.nineCompanyFlag = false, }); factory UserData.fromJson(Map json) { @@ -183,6 +185,10 @@ class UserData { mappingPostName: json['mappingPostName'] as String?, mappingDeptName: json['mappingDeptName'] as String?, employmentFlag: json['employmentFlag'], + nineCompanyFlag: + json['nineCompanyFlag'] is bool + ? json['nineCompanyFlag'] as bool + : false, ); } @@ -239,6 +245,7 @@ class UserData { 'mappingPostName': mappingPostName, 'mappingDeptName': mappingDeptName, 'employmentFlag': employmentFlag, + 'nineCompanyFlag': nineCompanyFlag, }; } } @@ -425,4 +432,4 @@ class SessionService { // await SessionService.instance.saveToPrefs(); // // 程序启动时尝试恢复: -// await SessionService.instance.loadFromPrefs(); \ No newline at end of file +// await SessionService.instance.loadFromPrefs(); diff --git a/pubspec.lock b/pubspec.lock index ae516ed..3ce755c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -93,10 +93,10 @@ packages: dependency: transitive description: name: characters - sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" source: hosted - version: "1.4.0" + version: "1.4.1" checked_yaml: dependency: transitive description: @@ -721,26 +721,26 @@ packages: dependency: transitive description: name: matcher - sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" source: hosted - version: "0.12.17" + version: "0.12.19" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" source: hosted - version: "0.11.1" + version: "0.13.0" meta: dependency: transitive description: name: meta - sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" source: hosted - version: "1.16.0" + version: "1.18.0" mime: dependency: transitive description: @@ -1174,10 +1174,10 @@ packages: dependency: transitive description: name: test_api - sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" source: hosted - version: "0.7.6" + version: "0.7.11" typed_data: dependency: transitive description: @@ -1467,5 +1467,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.9.0 <4.0.0" + dart: ">=3.10.0-0 <4.0.0" flutter: ">=3.35.6" diff --git a/pubspec.yaml b/pubspec.yaml index 84a1181..e0761c4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -186,7 +186,7 @@ flutter: # - family: Schyler # fonts: # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf + # - asset: fonts/Schyler-Italic.ttf8846 # style: italic # - family: Trajan Pro # fonts: