2026.6.16 重点作业,处罚反馈

master
xufei 2026-06-16 15:54:50 +08:00
parent 9beb49cd60
commit d7c90cc6b7
6 changed files with 193 additions and 77 deletions

View File

@ -47,6 +47,18 @@ class KeyTasksApi {
); );
} }
///
static Future<Map<String, dynamic>> deleteTasksData(String id) {
return HttpManager().request(
'${ApiService.basePath}/keyProject',
'/keyProject/$id',
method: Method.post,
data: {
// ...data
},
);
}
/// - /// -
static Future<Map<String, dynamic>> getKeyTasksListCameraAll(String type) { static Future<Map<String, dynamic>> getKeyTasksListCameraAll(String type) {
return HttpManager().request( return HttpManager().request(
@ -153,4 +165,31 @@ class KeyTasksApi {
} }
///
static Future<Map<String, dynamic>> getHiddenDangerPenalty(Map data) {
return HttpManager().request(
'${ApiService.basePath}/keyProject',
'/hidden/penalty/feedback/list',
method: Method.post,
data: {
...data
},
);
}
///
static Future<Map<String, dynamic>> setPenaltyFeedback(Map data) {
return HttpManager().request(
'${ApiService.basePath}/keyProject',
'/hidden/penalty/feedback/save',
method: Method.post,
data: {
...data
},
);
}
} }

View File

@ -821,7 +821,7 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
), ),
Divider(height: 1), Divider(height: 1),
_buildInfoItem('处罚反馈人', SessionService.instance.userData?.name ?? "",), _buildInfoItem('处罚反馈人', widget.foreignKey ,),
const Divider(height: 1), const Divider(height: 1),
GestureDetector( GestureDetector(
@ -833,7 +833,7 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
); );
if (picked != null) { if (picked != null) {
setState(() { setState(() {
hiddenDangerRectification['rectificationTime']= DateFormat('yyyy-MM-dd HH:mm:ss').format(picked); penaltyFeedbackData['feedbackTime']= DateFormat('yyyy-MM-dd HH:mm:ss').format(picked);
}); });
} }
@ -843,7 +843,7 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
child: ListItemFactory.createRowSpaceBetweenItem( child: ListItemFactory.createRowSpaceBetweenItem(
isRequired:true, isRequired:true,
leftText: "处罚反馈时间", leftText: "处罚反馈时间",
rightText: hiddenDangerRectification['rectificationTime'].isNotEmpty?hiddenDangerRectification['rectificationTime']:"请选择", rightText: penaltyFeedbackData['feedbackTime'].isNotEmpty?hiddenDangerRectification['feedbackTime']:"请选择",
isRight: true, isRight: true,
), ),
), ),
@ -1001,7 +1001,7 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
height: 35, height: 35,
onPressed: () { onPressed: () {
if(widget.item==3){ if(widget.item==3){
_setPenaltyFeedback();
}else{ }else{
_setHiddenDangerRectification(); _setHiddenDangerRectification();
} }
@ -1111,6 +1111,46 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
} }
} }
//
Future<void> _setPenaltyFeedback() async {
try {
if (gaiHouImages.isEmpty) {
ToastUtil.showNormal(context, "请上传罚款缴纳单图片");
return;
}
penaltyFeedbackData['hiddenPenaltyId']=widget.itemId;
penaltyFeedbackData['feedbackUserId']=widget.hiddenId;
LoadingDialogHelper.show();
if (gaiHouImages.isNotEmpty) {
String url= await _addImgFilesZhengGaiID(
gaiHouImages,
UploadFileType.keyHomeworkRectificationPictures,
);
penaltyFeedbackData['finePaymentReceipt']=url;
}
LoadingDialogHelper.show();
final Map<String, dynamic> raw = await KeyTasksApi.setPenaltyFeedback(penaltyFeedbackData,);
LoadingDialogHelper.hide();
if (raw['success']) {
setState(() {
ToastUtil.showNormal(context, "提交成功");
Navigator.of(context).pop('1');
});
} else {
ToastUtil.showNormal(context, "提交失败");
}
} catch (e) {
// Toast
print('加载首页数据失败:$e');
LoadingDialogHelper.hide();
}
}
// //
Future<void> _setHiddenDangerAcceptance() async { Future<void> _setHiddenDangerAcceptance() async {
try { try {
@ -1364,7 +1404,7 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
final raw = await FileApi.uploadFiles(imagePaths, type, widget.hiddenId); final raw = await FileApi.uploadFiles(imagePaths, type, widget.hiddenId);
if (raw['success']) { if (raw['success']) {
// raw['data']['foreignKey']; // raw['data']['foreignKey'];
return raw['data']; return raw['data']['foreignKey'];
} else { } else {
// _showMessage('反馈提交失败'); // _showMessage('反馈提交失败');
return ""; return "";
@ -1711,4 +1751,15 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
"repulseCause": "", "repulseCause": "",
"checkUserId": "", "checkUserId": "",
}; };
//
Map<String, dynamic> penaltyFeedbackData = {
"feedbackTime": "",
"hiddenPenaltyId": "",
"finePaymentReceipt": "",
"feedbackUserId": ''
};
} }

View File

@ -132,7 +132,7 @@ class _KeyTasksConfirmDetailPageState extends State<KeyTasksConfirmDetailPage> {
Divider(height: 1), Divider(height: 1),
_buildInfoItem('重点作业名称', pd['projectName'] ?? ''), _buildInfoItem('重点作业名称', pd['projectName'] ?? ''),
Divider(height: 1), Divider(height: 1),
_buildInfoItem('重点作业属性', pd['projectTypeName'] ?? ''), _buildInfoItem('重点作业属性', pd['projectTypeName']!=null?pd['projectTypeName'].map((e) => e.toString()).join(","):''),
Divider(height: 1), Divider(height: 1),
_buildInfoItem('计划工期开始', pd['planWorkStartDate'] ?? ''), _buildInfoItem('计划工期开始', pd['planWorkStartDate'] ?? ''),
Divider(height: 1), Divider(height: 1),

View File

@ -61,7 +61,7 @@ class _KeyTasksPunishmentFilterPageState extends State<KeyTasksPunishmentFilterP
setState(() { setState(() {
searchData=widget.searchData; searchData=widget.searchData;
_inspectionSiteController.text = searchData['hiddenDesc']; _inspectionSiteController.text = searchData['hiddenDesc'];
_initiatorInspectionController.text = searchData['hiddenFindUserName']; _initiatorInspectionController.text = searchData['xgfCorpinfoName'];
_inspectorController.text = searchData['projectName']; _inspectorController.text = searchData['projectName'];
_punishmentReasonController.text = searchData['projectName']; _punishmentReasonController.text = searchData['projectName'];
@ -103,7 +103,7 @@ class _KeyTasksPunishmentFilterPageState extends State<KeyTasksPunishmentFilterP
controller: _initiatorInspectionController, controller: _initiatorInspectionController,
hintText: '请输入被处罚单位', hintText: '请输入被处罚单位',
onChanged: (value) { onChanged: (value) {
searchData['hiddenFindUserName'] = value; searchData['xgfCorpinfoName'] = value;
}, },
), ),

View File

@ -38,7 +38,7 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
Timer? _debounceTimer; Timer? _debounceTimer;
String buttonTextOne = '查看'; String buttonTextOne = '查看';
String buttonTextTwo = '确认'; String buttonTextTwo = '确认';
String title = "隐患记录"; String title = "";
final TextEditingController _searchController = TextEditingController(); final TextEditingController _searchController = TextEditingController();
@ -53,8 +53,6 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
_searchController.addListener(_onSearchChanged); _searchController.addListener(_onSearchChanged);
String userId= SessionService.instance.accountId??'';
keyTasksPunishmentData['acceptUserId']=userId;
_distinguishData(); _distinguishData();
} }
@ -63,7 +61,6 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
buttonTextTwo = '反馈'; buttonTextTwo = '反馈';
title = "处罚反馈"; title = "处罚反馈";
keyTasksPunishmentData['stateList']=[1,2,3,4];
final parentPerm = 'dashboard:Key-assignment:Hidden-hazard-record'; final parentPerm = 'dashboard:Key-assignment:Hidden-hazard-record';
final targetPerm = ''; final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm); final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
@ -108,15 +105,15 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
onRangeChanged: (range) { onRangeChanged: (range) {
switch (range) { switch (range) {
case RangeOption.oneDay: case RangeOption.oneDay:
keyTasksPunishmentData['startTime'] = DateFormat('yyyy-MM-dd HH:mm:ss') keyTasksPunishmentData['hiddenCreateTimeStart'] = DateFormat('yyyy-MM-dd HH:mm:ss')
.format(DateTime.now().subtract(const Duration(days: 1))); .format(DateTime.now().subtract(const Duration(days: 1)));
break; break;
case RangeOption.oneWeek: case RangeOption.oneWeek:
keyTasksPunishmentData['startTime'] = DateFormat('yyyy-MM-dd HH:mm:ss') keyTasksPunishmentData['hiddenCreateTimeStart'] = DateFormat('yyyy-MM-dd HH:mm:ss')
.format(DateTime.now().subtract(const Duration(days: 7))); .format(DateTime.now().subtract(const Duration(days: 7)));
break; break;
case RangeOption.oneMonth: case RangeOption.oneMonth:
keyTasksPunishmentData['startTime'] = DateFormat('yyyy-MM-dd HH:mm:ss') keyTasksPunishmentData['hiddenCreateTimeStart'] = DateFormat('yyyy-MM-dd HH:mm:ss')
.format(DateTime.now().subtract(const Duration(days: 30))); .format(DateTime.now().subtract(const Duration(days: 30)));
break; break;
case RangeOption.threeMonths: case RangeOption.threeMonths:
@ -397,9 +394,9 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
await pushPage( await pushPage(
KeyTasksHiddenDangerDetail( KeyTasksHiddenDangerDetail(
3, 3,
pageData['id'], pageData['hiddenPenaltyId']??'',
pageData['hiddenId'], pageData['feedbackUserId']??'',
pageData['foreignKey'], pageData['feedbackUserName']??'',
false, false,
), ),
context, context,
@ -456,45 +453,45 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
Future<void> _getListData(bool loadMore) async { Future<void> _getListData(bool loadMore) async {
// try { try {
// if (_isLoading) return; if (_isLoading) return;
// _isLoading = true; _isLoading = true;
//
// keyTasksPunishmentData['pageIndex']=_page; keyTasksPunishmentData['pageIndex']=_page;
// // keyTasksPunishmentData['hiddenDesc']=searchKey; // keyTasksPunishmentData['hiddenDesc']=searchKey;
//
// LoadingDialogHelper.show(); LoadingDialogHelper.show();
// final Map<String, dynamic> result = await KeyTasksApi.setKeyTasksHiddenDangerList(keyTasksPunishmentData); final Map<String, dynamic> result = await KeyTasksApi.getHiddenDangerPenalty(keyTasksPunishmentData);
// LoadingDialogHelper.hide(); LoadingDialogHelper.hide();
//
// if (result['success']) { if (result['success']) {
// _totalPage = result['pageSize'] ?? 1; _totalPage = result['pageSize'] ?? 1;
// final List<dynamic> newList = result['data'] ?? []; final List<dynamic> newList = result['data'] ?? [];
// // setState(() { // setState(() {
// // _list.addAll(newList); // _list.addAll(newList);
// // }); // });
//
// setState(() { setState(() {
// if (loadMore) { if (loadMore) {
// _list.addAll(newList); _list.addAll(newList);
// } else { } else {
// _list = newList; _list = newList;
// } }
// _hasMore = _page < _totalPage; _hasMore = _page < _totalPage;
// // if (_hasMore) _page++; // if (_hasMore) _page++;
// }); });
// } else { } else {
// ToastUtil.showNormal(context, "加载数据失败"); ToastUtil.showNormal(context, "加载数据失败");
// // _showMessage('加载数据失败'); // _showMessage('加载数据失败');
// } }
// } catch (e) { } catch (e) {
// LoadingDialogHelper.hide(); LoadingDialogHelper.hide();
// // Toast // Toast
// print('加载数据失败:$e'); print('加载数据失败:$e');
// } finally { } finally {
// // if (!loadMore) LoadingDialogHelper.hide(); // if (!loadMore) LoadingDialogHelper.hide();
// _isLoading = false; _isLoading = false;
// } }
} }
String _getSourceDangers(final item) { String _getSourceDangers(final item) {
@ -564,21 +561,20 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
Map<String, dynamic> keyTasksPunishmentData={ Map<String, dynamic> keyTasksPunishmentData={
"hiddenDesc": "", "needTotalCount": true,
"stateList": [],
"pageSize": 20, "pageSize": 20,
"pageIndex": 1,
"source": "",
'sourceName': "",
"startTime": "",
"endTime": "",
"projectName": "",
"hiddenFindUserName": "",
"orderBy": "", "orderBy": "",
"orderDirection": "", "hiddenCreateTimeStart": "",
"groupBy": "", "groupBy": "",
"fineFlag": 1,
"hiddenDesc": "",
"xgfCorpinfoName": "",
"pageIndex": '',
"hiddenSource": '',
"orderDirection": "",
"findUserName": "",
"projectName": "",
"hiddenCreateTimeEnd": ""
}; };

View File

@ -163,7 +163,7 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
), ),
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
_buildItemChild('重点作业属性:',item['projectTypeName']??""), _buildItemChild('重点作业属性:',item['projectTypeName']!=null?item['projectTypeName'].map((e) => e.toString()).join(","):''),
const SizedBox(height: 8), const SizedBox(height: 8),
_buildItemChild('辖区单位:',item['jurisdictionCorpinfoName']??""), _buildItemChild('辖区单位:',item['jurisdictionCorpinfoName']??""),
const SizedBox(height: 8), const SizedBox(height: 8),
@ -193,7 +193,7 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
buttonStyle:ButtonStyleType.primary, buttonStyle:ButtonStyleType.primary,
text: '查看'),), text: '查看'),),
if((item['uncheckHiddenCount']==0&&item['unFinishInspectionCount']==0)||item["applyStatus"]==1)...[ if(((item['uncheckHiddenCount']==0&&item['unFinishInspectionCount']==0)||item["applyStatus"]==1)&&item["applyStatus"]!=7)...[
const SizedBox(width: 8), const SizedBox(width: 8),
Expanded(child: CustomButton( Expanded(child: CustomButton(
height: 35, height: 35,
@ -218,7 +218,7 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
text: item["applyStatus"]==1?'开工申请':'完工申请'),), text: item["applyStatus"]==1?'开工申请':'完工申请'),),
], ],
if(item["applyStatus"]==1)...[ if(item["applyStatus"]==1&&item["createSource"]==2)...[
const SizedBox(width: 8), const SizedBox(width: 8),
Expanded(child: CustomButton( Expanded(child: CustomButton(
height: 35, height: 35,
@ -230,24 +230,35 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
cancelText: '取消', cancelText: '取消',
); );
if (ok) { if (ok) {
_upKeyTasksData(item); _deleteTasksData(item);
} }
}, },
backgroundColor: h_AppBarColor(), backgroundColor: Colors.red,
textStyle: const TextStyle(color: Colors.red), textStyle: const TextStyle(color: Colors.red),
buttonStyle:ButtonStyleType.secondary, buttonStyle: ButtonStyleType.primary,
text: '删除'),), text: '删除'),),
], ],
if(item["applyStatus"]==7)...[ if(item["applyStatus"]==7)...[
const SizedBox(width: 8), const SizedBox(width: 8),
Expanded(child: CustomButton(
height: 35,
onPressed: () {
_goToDetail(item,index,2);
},
backgroundColor: h_AppBarColor(),
textStyle: const TextStyle(color: Colors.red),
buttonStyle:ButtonStyleType.primary,
text: '重新提交'),),
const SizedBox(width: 8),
Expanded(child: CustomButton( Expanded(child: CustomButton(
height: 35, height: 35,
onPressed: () async { onPressed: () async {
final ok = await CustomAlertDialog.showConfirm( final ok = await CustomAlertDialog.showConfirm(
context, context,
title: '驳回原因', title: '驳回原因',
content: '驳回原因。。。。。。。。。', cancelText:'',
content: item["rejectReason"]??'',
); );
}, },
@ -403,7 +414,7 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
Map<String, dynamic> keyTasksConfirmListData={ Map<String, dynamic> keyTasksConfirmListData={
"projectName": "", "projectName": "",
"applyStatusList": [1,4],//,0:1:,2:,3:,4:,5:,6: "applyStatusList": [1,4,7],//,0:1:,2:,3:,4:,5:,6:
"pageSize": 20, "pageSize": 20,
"pageIndex": 1, "pageIndex": 1,
"needTotalCount": true, "needTotalCount": true,
@ -428,6 +439,25 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
} }
} }
Future<void> _deleteTasksData( item) async {
try {
final Map<String, dynamic> result;
result = await KeyTasksApi.deleteTasksData(item["id"]);
if (result['success'] ) {
ToastUtil.showNormal(context, '删除成功');
// _list.remove(item);
getListData(false);
}else{
ToastUtil.showNormal(context, '删除失败');
// _showMessage('加载数据失败');
}
} catch (e) {
// Toast
print('加载数据失败:$e');
}
}
Map<String, dynamic> upKeyTasksData={ Map<String, dynamic> upKeyTasksData={
"applyStatus": '5', "applyStatus": '5',