2026.6.16 重点作业,处罚反馈
parent
9beb49cd60
commit
d7c90cc6b7
|
|
@ -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
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -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": ''
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
},
|
||||
),
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
// // });
|
||||
//
|
||||
// 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;
|
||||
// }
|
||||
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(() {
|
||||
// _list.addAll(newList);
|
||||
// });
|
||||
|
||||
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": ""
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
Loading…
Reference in New Issue