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) {
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),
_buildInfoItem('处罚反馈人', SessionService.instance.userData?.name ?? "",),
_buildInfoItem('处罚反馈人', widget.foreignKey ,),
const Divider(height: 1),
GestureDetector(
@ -833,7 +833,7 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
);
if (picked != null) {
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(
isRequired:true,
leftText: "处罚反馈时间",
rightText: hiddenDangerRectification['rectificationTime'].isNotEmpty?hiddenDangerRectification['rectificationTime']:"请选择",
rightText: penaltyFeedbackData['feedbackTime'].isNotEmpty?hiddenDangerRectification['feedbackTime']:"请选择",
isRight: true,
),
),
@ -1001,7 +1001,7 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
height: 35,
onPressed: () {
if(widget.item==3){
_setPenaltyFeedback();
}else{
_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 {
try {
@ -1364,7 +1404,7 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
final raw = await FileApi.uploadFiles(imagePaths, type, widget.hiddenId);
if (raw['success']) {
// raw['data']['foreignKey'];
return raw['data'];
return raw['data']['foreignKey'];
} else {
// _showMessage('反馈提交失败');
return "";
@ -1711,4 +1751,15 @@ class _KeyTasksHiddenDangerDetailState extends State<KeyTasksHiddenDangerDetail>
"repulseCause": "",
"checkUserId": "",
};
//
Map<String, dynamic> penaltyFeedbackData = {
"feedbackTime": "",
"hiddenPenaltyId": "",
"finePaymentReceipt": "",
"feedbackUserId": ''
};
}

View File

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

View File

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

View File

@ -38,7 +38,7 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
Timer? _debounceTimer;
String buttonTextOne = '查看';
String buttonTextTwo = '确认';
String title = "隐患记录";
String title = "";
final TextEditingController _searchController = TextEditingController();
@ -53,8 +53,6 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
_searchController.addListener(_onSearchChanged);
String userId= SessionService.instance.accountId??'';
keyTasksPunishmentData['acceptUserId']=userId;
_distinguishData();
}
@ -63,7 +61,6 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
buttonTextTwo = '反馈';
title = "处罚反馈";
keyTasksPunishmentData['stateList']=[1,2,3,4];
final parentPerm = 'dashboard:Key-assignment:Hidden-hazard-record';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
@ -108,15 +105,15 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
onRangeChanged: (range) {
switch (range) {
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)));
break;
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)));
break;
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)));
break;
case RangeOption.threeMonths:
@ -397,9 +394,9 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
await pushPage(
KeyTasksHiddenDangerDetail(
3,
pageData['id'],
pageData['hiddenId'],
pageData['foreignKey'],
pageData['hiddenPenaltyId']??'',
pageData['feedbackUserId']??'',
pageData['feedbackUserName']??'',
false,
),
context,
@ -456,45 +453,45 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
Future<void> _getListData(bool loadMore) async {
// try {
// if (_isLoading) return;
// _isLoading = true;
//
// keyTasksPunishmentData['pageIndex']=_page;
// // keyTasksPunishmentData['hiddenDesc']=searchKey;
//
// LoadingDialogHelper.show();
// final Map<String, dynamic> result = await KeyTasksApi.setKeyTasksHiddenDangerList(keyTasksPunishmentData);
// LoadingDialogHelper.hide();
//
// if (result['success']) {
// _totalPage = result['pageSize'] ?? 1;
// final List<dynamic> newList = result['data'] ?? [];
// // setState(() {
// // _list.addAll(newList);
// // });
//
try {
if (_isLoading) return;
_isLoading = true;
keyTasksPunishmentData['pageIndex']=_page;
// keyTasksPunishmentData['hiddenDesc']=searchKey;
LoadingDialogHelper.show();
final Map<String, dynamic> result = await KeyTasksApi.getHiddenDangerPenalty(keyTasksPunishmentData);
LoadingDialogHelper.hide();
if (result['success']) {
_totalPage = result['pageSize'] ?? 1;
final List<dynamic> newList = result['data'] ?? [];
// setState(() {
// if (loadMore) {
// _list.addAll(newList);
// } else {
// _list = newList;
// }
// _hasMore = _page < _totalPage;
// // if (_hasMore) _page++;
// });
// } else {
// ToastUtil.showNormal(context, "加载数据失败");
// // _showMessage('加载数据失败');
// }
// } catch (e) {
// LoadingDialogHelper.hide();
// // Toast
// print('加载数据失败:$e');
// } finally {
// // if (!loadMore) LoadingDialogHelper.hide();
// _isLoading = false;
// }
setState(() {
if (loadMore) {
_list.addAll(newList);
} else {
_list = newList;
}
_hasMore = _page < _totalPage;
// if (_hasMore) _page++;
});
} else {
ToastUtil.showNormal(context, "加载数据失败");
// _showMessage('加载数据失败');
}
} catch (e) {
LoadingDialogHelper.hide();
// Toast
print('加载数据失败:$e');
} finally {
// if (!loadMore) LoadingDialogHelper.hide();
_isLoading = false;
}
}
String _getSourceDangers(final item) {
@ -564,21 +561,20 @@ class _KeyTasksPunishmentListState extends State<KeyTasksPunishmentList> {
Map<String, dynamic> keyTasksPunishmentData={
"hiddenDesc": "",
"stateList": [],
"needTotalCount": true,
"pageSize": 20,
"pageIndex": 1,
"source": "",
'sourceName': "",
"startTime": "",
"endTime": "",
"projectName": "",
"hiddenFindUserName": "",
"orderBy": "",
"orderDirection": "",
"hiddenCreateTimeStart": "",
"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),
_buildItemChild('重点作业属性:',item['projectTypeName']??""),
_buildItemChild('重点作业属性:',item['projectTypeName']!=null?item['projectTypeName'].map((e) => e.toString()).join(","):''),
const SizedBox(height: 8),
_buildItemChild('辖区单位:',item['jurisdictionCorpinfoName']??""),
const SizedBox(height: 8),
@ -193,7 +193,7 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
buttonStyle:ButtonStyleType.primary,
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),
Expanded(child: CustomButton(
height: 35,
@ -218,7 +218,7 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
text: item["applyStatus"]==1?'开工申请':'完工申请'),),
],
if(item["applyStatus"]==1)...[
if(item["applyStatus"]==1&&item["createSource"]==2)...[
const SizedBox(width: 8),
Expanded(child: CustomButton(
height: 35,
@ -230,24 +230,35 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
cancelText: '取消',
);
if (ok) {
_upKeyTasksData(item);
_deleteTasksData(item);
}
},
backgroundColor: h_AppBarColor(),
backgroundColor: Colors.red,
textStyle: const TextStyle(color: Colors.red),
buttonStyle:ButtonStyleType.secondary,
buttonStyle: ButtonStyleType.primary,
text: '删除'),),
],
if(item["applyStatus"]==7)...[
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(
height: 35,
onPressed: () async {
final ok = await CustomAlertDialog.showConfirm(
context,
title: '驳回原因',
content: '驳回原因。。。。。。。。。',
cancelText:'',
content: item["rejectReason"]??'',
);
},
@ -403,7 +414,7 @@ class _KeyTasksConfirmListPageState extends State<KeyTasksConfirmListPage> {
Map<String, dynamic> keyTasksConfirmListData={
"projectName": "",
"applyStatusList": [1,4],//,0:1:,2:,3:,4:,5:,6:
"applyStatusList": [1,4,7],//,0:1:,2:,3:,4:,5:,6:
"pageSize": 20,
"pageIndex": 1,
"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={
"applyStatus": '5',