危险作业bug修改8

master
hs 2026-04-30 11:07:39 +08:00
parent 000e0200e7
commit 51abf06654
16 changed files with 91 additions and 24 deletions

View File

@ -648,7 +648,7 @@ class _MultiDictValuesPickerState extends State<MultiDictValuesPicker> {
children: [
_buildActionBar(),
const Divider(height: 1),
_buildHintMessage(),
// _buildHintMessage(),
Expanded(child: _buildContent()),
],
),

View File

@ -52,6 +52,9 @@ class SpecialListInitData {
"projectExecutionLocationCorpName",
"applyUnit",
"workId",
"internalOperationFlag",
"hotWorkLeaderConfirmUserName",
"hotWorkLeaderConfirmUserId",
//
"applyDepartment",
"applyUser",

View File

@ -558,7 +558,6 @@ class _SpecialWorkFilterPageState extends State<SpecialWorkFilterPage> {
SpecialWorkTypeEnum.hoistingWork ||
widget.workType ==
SpecialWorkTypeEnum.breakgroundWork ||
widget.workType == SpecialWorkTypeEnum.blindboardWork ||
widget.workType == SpecialWorkTypeEnum.cutRoadWork || widget.workType == SpecialWorkTypeEnum.electricityWork)
buildChooseRow(
labelText: '作业级别',

View File

@ -170,7 +170,7 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
verticalPadding: 7,
verticalPadding: 5,
title: '是否项目内作业',
isRequired: true,
isEdit: false,
@ -235,6 +235,16 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
onChanged: (value) {},
),
const Divider(),
if (pd['workLevel'] == 'hot_work_level0' && FormUtils.hasValue(pd, 'hotWorkLeaderConfirmUserName')) ...[
ItemListWidget.selectableLineTitleTextRightButton(
isRequired: false,
label: '动火负责人确认负责人',
isEditable: false,
isClean: false,
text: pd['hotWorkLeaderConfirmUserName'] ?? '',
),
const Divider(),
],
if (actUserList.isNotEmpty) ...[
ItemListWidget.multiLineAutoTitleTextField(
label: '动火操作人:',
@ -256,6 +266,8 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
],
ListItemFactory.createYesNoSection(
title: '是否安全总监审批',
horizontalPadding: 2,
verticalPadding: 5,
groupValue: true,
text: pd['14_skip'] == 1 ? '' : '',
isEdit: false,
@ -263,6 +275,8 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
),
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
verticalPadding: 5,
title: '是否需要气体检查',
groupValue: true,
text: pd['gasFlag'] == 1 ? '' : '',

View File

@ -62,6 +62,7 @@ class _HotWorkApplyPageState extends SpecialWorkApplyBaseState<HotWorkApplyPage>
"workEndTime": "请选择作业结束时间",
"workContent": "请填写作业内容",
"workMonitor": "请填写动火监火人",
"hotWorkLeaderConfirmUserName": "请选择动火负责人确认负责人",
};
@override
@ -175,7 +176,7 @@ class _HotWorkApplyPageState extends SpecialWorkApplyBaseState<HotWorkApplyPage>
if (pd['xgfFlag'] == 1) ...[
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 5,
horizontalPadding: 2,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,
@ -276,6 +277,17 @@ class _HotWorkApplyPageState extends SpecialWorkApplyBaseState<HotWorkApplyPage>
onChanged: (value) => setState(() => pd['workContent'] = value),
),
const Divider(),
if (pd['workLevel'] == 'hot_work_level0') ...[
ItemListWidget.selectableLineTitleTextRightButton(
isRequired: true,
label: '动火负责人确认负责人',
isEditable: isEditable,
isClean: false,
text: pd['hotWorkLeaderConfirmUserName'] ?? '请选择',
onTap: () => chooseHotworkLeaderConfirmHandle(),
),
const Divider(),
],
//
_buildHotWorkActUser(),
const Divider(),
@ -293,6 +305,7 @@ class _HotWorkApplyPageState extends SpecialWorkApplyBaseState<HotWorkApplyPage>
if (widget.isReEdit && FormUtils.hasValue(form, 'id')) ...[
HotWorkDetailFormWidget(pd: form, isEditable: true),
],
//
buildGroupsList(),
//

View File

@ -171,7 +171,7 @@ class _DlApplyPageState extends SpecialWorkApplyBaseState<DlApplyPage> {
if (pd['xgfFlag'] == 1) ...[
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 5,
horizontalPadding: 2,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,

View File

@ -170,7 +170,7 @@ class _DtApplyPageState extends SpecialWorkApplyBaseState<DtApplyPage> {
if (pd['xgfFlag'] == 1) ...[
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 5,
horizontalPadding: 2,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,

View File

@ -166,7 +166,7 @@ class _DzApplyPageState extends SpecialWorkApplyBaseState<DzApplyPage> {
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
verticalPadding: 7,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,
groupValue: pd['internalOperationFlag'] == 1,

View File

@ -162,7 +162,7 @@ class _GcApplyPageState extends SpecialWorkApplyBaseState<GcApplyPage> {
if (pd['xgfFlag'] == 1) ...[
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 5,
horizontalPadding: 2,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,

View File

@ -171,7 +171,7 @@ class _LsydApplyPageState extends SpecialWorkApplyBaseState<LsydApplyPage> {
if (pd['xgfFlag'] == 1) ...[
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 5,
horizontalPadding: 2,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,

View File

@ -212,7 +212,7 @@ class _MbcdApplyPageState extends SpecialWorkApplyBaseState<MbcdApplyPage> {
if (pd['xgfFlag'] == 1) ...[
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 5,
horizontalPadding: 2,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,

View File

@ -80,12 +80,21 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState<SxkjApplyPage> {
"eqWorkType": SpecialWorkTypeEnum.confinedspaceWork.code,
"pageSize": 999,
"pageIndex": 1,
"eqCorpinfoId": pd['projectExecutionLocationCorpId'],
"eqCorpinfoId": pd['projectExecutionLocationCorpId'] ?? '',
};
final limitedSpaceRes = await SpecialWorkApi.specialWorkLimitedSpaceList(data);
if (limitedSpaceRes['success'] == true) {
limitedSpaceList = limitedSpaceRes['data'] ?? [];
}
//
_clearRelatedParties();
}
Future<void> _clearRelatedParties() async {
setState(() {
pd['limitedSpaceNameAndCode'] = '';
pd['chooseLimitedSpace'] = {};
});
}
@override
@ -228,7 +237,7 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState<SxkjApplyPage> {
if (pd['xgfFlag'] == 1) ...[
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 5,
horizontalPadding: 2,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,
@ -287,7 +296,8 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState<SxkjApplyPage> {
const Divider(),
//
ListItemFactory.createYesNoSection(
horizontalPadding: 5,
horizontalPadding: 2,
verticalPadding: 0,
title: '是否重点管控有限空间',
isRequired: true,
groupValue: isLimitedSpace,

View File

@ -339,6 +339,7 @@ class _SxkjTzApplyPageState extends State<SxkjTzApplyPage> {
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
verticalPadding: 5,
isEdit: _isEditable,
title: '是否有应急指导书',
isRequired: true,

View File

@ -271,14 +271,11 @@ class _SxkjTzListPageState extends State<SxkjTzListPage> {
return Scaffold(
key: _scaffoldKey,
appBar: MyAppbar(
title: '有限空间作业台账',
title: '有限空间管理台账',
actions: [
TextButton(
IconButton(
onPressed: _handleApply,
child: const Text(
'申请',
style: TextStyle(color: Colors.white, fontSize: 17),
),
icon: const Icon(Icons.add, color: Colors.white, size: 30),
),
],
),

View File

@ -211,6 +211,9 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
if (widget.isReEdit) {
form = _toMap(initRes['data']);
pd = _toMap((form['workInfo'] ?? const {})['info'] ?? {});
if (FormUtils.hasValue(pd, 'xgfId')) {
_getRelatedPartiesUserList(true);
}
} else {
pd = _toMap(initRes['data']);
pd['xgfFlag'] = 1;
@ -476,6 +479,21 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
),
);
}
//
void chooseHotworkLeaderConfirmHandle() {
DepartmentAllPersonPicker.show(
context,
allowXgfFlag: false,
personsData: allPersonList,
serverData: [],
onSelectedWithData: (userId, name, data) {
setState(() {
pd['hotWorkLeaderConfirmUserName'] = name;
pd['hotWorkLeaderConfirmUserId'] = userId;
});
},
);
}
///
void chooseWorkUnitHandle({
@ -642,7 +660,8 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
json['projectExecutionLocationCorpName'];
});
loadExtraData();
_getRelatedPartiesUserList();
_getRelatedPartiesUserList(false);
},
onSelected: (id, name, pdId) {},
),
@ -653,7 +672,7 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
}
//
Future<void> _getRelatedPartiesUserList() async {
Future<void> _getRelatedPartiesUserList(bool isInit) async {
try {
final personRes = await BasicInfoApi.getDeptUsers(
'',
@ -670,8 +689,10 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
);
if (result['success'] == true) {
relatedPartiesPersonList = _toMapList(result['data']);
if (!isInit) {
_initGroupsFromInitData(true);
}
}
} catch (e) {
ToastUtil.showError(context, '获取相关方人员失败:$e');
}
@ -749,7 +770,8 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
if (canSkip == 1) ...[
if (skipCondition.isEmpty) ...[
ListItemFactory.createYesNoSection(
horizontalPadding: 3,
horizontalPadding: 2,
verticalPadding: 0,
isRequired: true,
title: '是否$stepName',
groupValue: pd['${stepId}_skip'] == 1,
@ -959,6 +981,9 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
Future<bool> checkForm(List groupsToCheck) async {
for (final key in requiredRules.keys) {
if (pd[key] == null || pd[key] == '') {
if (key == 'hotWorkLeaderConfirmUserName' && pd['workLevel'] != 'hot_work_level0') {
continue;
}
ToastUtil.showNormal(context, '${requiredRules[key] ?? ''}');
return false;
}

View File

@ -220,7 +220,11 @@ class _SpecialWorkTaskPageBaseState extends State<SpecialWorkTaskPageBase> {
if (steps.isNotEmpty && widget.isEdit) {
LoadingDialogHelper.show();
final personRes = await BasicInfoApi.getDeptUsers('', isMyCorp: 1);
final personRes = await BasicInfoApi.getDeptUsers(
'',
isMyCorp: 0,
corpinfoId: _initData['workInfo']['corpinfoId'] ?? '',
);
LoadingDialogHelper.dismiss();
if (personRes['success'] == true) {
_allPersonList = personRes['data'] ?? [];
@ -941,6 +945,7 @@ class _SpecialWorkTaskPageBaseState extends State<SpecialWorkTaskPageBase> {
...buildStepSignWidgets(signInfo),
if (widget.isEdit) ...[
const Divider(),
if (pd['locateStepFlag'] == 1) _locationWidget(),
if (pd['componentName'] == 'completeDelayTime') _completeDelayTimeWidget(),
if (pd['componentName'] == 'personAnderRecordFile') _personAnderRecordFileWidget(),