From d98dc5a14ba6fef77995dfb089358b6ee0b22eaf Mon Sep 17 00:00:00 2001
From: hs <873121290@qq.com>
Date: Wed, 29 Jul 2026 10:14:52 +0800
Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E7=81=AB=E3=80=81=E6=9C=89=E9=99=90?=
=?UTF-8?q?=E7=A9=BA=E9=97=B4=E7=94=B3=E8=AF=B7=E6=B7=BB=E5=8A=A0=E5=AE=9A?=
=?UTF-8?q?=E4=BD=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../reports/problems/problems-report.html | 663 ----------------
lib/customWidget/ItemWidgetFactory.dart | 2 +-
.../special_work/dh_work/hot_apply_page.dart | 57 +-
.../sxkj_work/sxkj_apply_page.dart | 56 ++
.../doorAndCar/person_selection_page.dart | 8 +-
lib/pages/home/home_page.dart | 23 +-
.../key_tasks_hidden_danger_detail.dart | 735 ++++++++++++------
.../key_tasks_confirm_detail_page.dart | 2 +
.../key_tasks_punishment_filter_page.dart | 9 +-
.../key_tasks_punishment_list.dart | 234 +++---
.../keyTasks/key_tasks_check_list_page.dart | 2 +-
lib/services/SessionService.dart | 9 +-
pubspec.lock | 22 +-
pubspec.yaml | 2 +-
14 files changed, 762 insertions(+), 1062 deletions(-)
delete mode 100644 android/build/reports/problems/problems-report.html
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: