Compare commits

..

No commits in common. "aed92c4bed4445686b80076aea36e02e11a3cc13" and "047351bc6c1f96646f47b091d9c6e7dc2356f223" have entirely different histories.

18 changed files with 86 additions and 207 deletions

View File

@ -6,8 +6,6 @@ import '../tools/tools.dart';
///
class ListItemFactory {
static const Color detailtextColor = Colors.black54;
/// 1spaceBetween
static Widget createRowSpaceBetweenItem({
required String leftText,
@ -335,7 +333,7 @@ class ListItemFactory {
),
],
),
if (!isEdit) Text(text, style: TextStyle(color: detailtextColor)),
if (!isEdit) Text(text, style: TextStyle()),
],
),
),

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,9 +52,6 @@ class SpecialListInitData {
"projectExecutionLocationCorpName",
"applyUnit",
"workId",
"internalOperationFlag",
"hotWorkLeaderConfirmUserName",
"hotWorkLeaderConfirmUserId",
//
"applyDepartment",
"applyUser",

View File

@ -558,6 +558,7 @@ 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: 5,
verticalPadding: 7,
title: '是否项目内作业',
isRequired: true,
isEdit: false,
@ -235,16 +235,6 @@ 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: '动火操作人:',
@ -266,8 +256,6 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
],
ListItemFactory.createYesNoSection(
title: '是否安全总监审批',
horizontalPadding: 2,
verticalPadding: 5,
groupValue: true,
text: pd['14_skip'] == 1 ? '' : '',
isEdit: false,
@ -275,8 +263,6 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
),
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
verticalPadding: 5,
title: '是否需要气体检查',
groupValue: true,
text: pd['gasFlag'] == 1 ? '' : '',

View File

@ -44,53 +44,18 @@ class DhWaitPage extends SpecialWorkWaitPageBase {
Map<String, dynamic> item,
bool isEdit,
) async {
final hotworkId = '${item['id'] ?? ''}';
final hotworkCodeId = '${item['workId'] ?? ''}';
final hotworkId = item['id'] ?? '';
final hotworkCodeId = item['workId'] ?? '';
final hotworkInfo = listType == SpecialListType.task ? (item['workInfo'] ?? {}) : item;
final Map<String, dynamic> hotworkInfo =
listType == SpecialListType.task
? (item['workInfo'] as Map<String, dynamic>? ?? <String, dynamic>{})
: item;
final stepId = '${item['stepId'] ?? ''}';
final status = '${hotworkInfo['status'] ?? ''}';
final statusName = listType == SpecialListType.task
final stepName = isEdit
? (listType == SpecialListType.task
? '${item['stepName'] ?? ''}'
: '${hotworkInfo['currentStep'] ?? ''}';
: '${hotworkInfo['currentStep'] ?? ''}')
: '查看';
// task
if (listType != SpecialListType.task) {
await _openTaskPage(
context: context,
workId: hotworkId,
workCodeId: hotworkCodeId,
stepName: statusName,
isEdit: isEdit,
);
return;
}
// task
if (stepId == '2') {
if (isEdit) {
await pushPage(
SpecialWorkGasList(data: item, addFlag: true),
context,
);
} else {
await _openTaskPage(
context: context,
workId: hotworkId,
workCodeId: hotworkCodeId,
stepName: statusName,
isEdit: false,
);
}
return;
}
// task 0 / 2
if (listType == SpecialListType.task) {
if (status == '0' || status == '2') {
if (isEdit) {
await pushPage(
@ -102,62 +67,42 @@ class DhWaitPage extends SpecialWorkWaitPageBase {
context,
);
} else {
await _openTaskPage(
context: context,
workId: hotworkId,
workCodeId: hotworkCodeId,
stepName: '查看',
isEdit: false,
);
}
return;
}
// task
if (stepId == '12') {
if (isEdit) {
await pushPage(
HotDelayPage(data: item, isEdit: true),
context,
);
} else {
await _openTaskPage(
context: context,
workId: hotworkId,
workCodeId: hotworkCodeId,
stepName: statusName,
isEdit: false,
);
}
return;
}
//
await _openTaskPage(
context: context,
workId: hotworkId,
workCodeId: hotworkCodeId,
stepName: statusName,
isEdit: isEdit,
);
}
Future<void> _openTaskPage({
required BuildContext context,
required String workId,
required String workCodeId,
required String stepName,
required bool isEdit,
}) async {
await pushPage(
HotTaskPage(
workId: workId,
workId: hotworkId,
stepName: stepName,
workCodeId: workCodeId,
workCodeId: hotworkCodeId,
isEdit: false,
type: listType,
),
context,
);
}
return;
}
await pushPage(
HotTaskPage(
workId: hotworkId,
stepName: stepName,
workCodeId: hotworkCodeId,
isEdit: isEdit,
type: listType,
),
context,
);
} else {
await pushPage(
HotTaskPage(
workId: hotworkId,
stepName: stepName,
workCodeId: hotworkCodeId,
isEdit: isEdit,
type: listType,
),
context,
);
}
}
@override

View File

@ -62,7 +62,6 @@ class _HotWorkApplyPageState extends SpecialWorkApplyBaseState<HotWorkApplyPage>
"workEndTime": "请选择作业结束时间",
"workContent": "请填写作业内容",
"workMonitor": "请填写动火监火人",
"hotWorkLeaderConfirmUserName": "请选择动火负责人确认负责人",
};
@override
@ -176,7 +175,7 @@ class _HotWorkApplyPageState extends SpecialWorkApplyBaseState<HotWorkApplyPage>
if (pd['xgfFlag'] == 1) ...[
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
horizontalPadding: 5,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,
@ -277,17 +276,6 @@ 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(),
@ -305,7 +293,6 @@ 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: 2,
horizontalPadding: 5,
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: 2,
horizontalPadding: 5,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,

View File

@ -166,7 +166,7 @@ class _DzApplyPageState extends SpecialWorkApplyBaseState<DzApplyPage> {
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
verticalPadding: 0,
verticalPadding: 7,
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: 2,
horizontalPadding: 5,
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: 2,
horizontalPadding: 5,
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: 2,
horizontalPadding: 5,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,

View File

@ -75,26 +75,20 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState<SxkjApplyPage> {
@override
Future<void> loadExtraData() async {
final parentPerm =
'dashboard:hazardous:work:confined-space-operations:Confined-Space-Work-Ledger';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
final data = {
"eqWorkType": SpecialWorkTypeEnum.confinedspaceWork.code,
"pageSize": 999,
"pageIndex": 1,
"eqCorpinfoId": pd['projectExecutionLocationCorpId'] ?? '',
"menuPath": menuPath,
};
final limitedSpaceRes = await SpecialWorkApi.specialWorkLimitedSpaceList(data);
if (limitedSpaceRes['success'] == true) {
limitedSpaceList = limitedSpaceRes['data'] ?? [];
}
//
_clearRelatedParties();
}
Future<void> _clearRelatedParties() async {
setState(() {
pd['limitedSpaceNameAndCode'] = '';
pd['chooseLimitedSpace'] = {};
});
}
@override
@ -237,7 +231,7 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState<SxkjApplyPage> {
if (pd['xgfFlag'] == 1) ...[
const Divider(),
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
horizontalPadding: 5,
verticalPadding: 0,
title: '是否项目内作业',
isRequired: true,
@ -296,8 +290,7 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState<SxkjApplyPage> {
const Divider(),
//
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
verticalPadding: 0,
horizontalPadding: 5,
title: '是否重点管控有限空间',
isRequired: true,
groupValue: isLimitedSpace,
@ -433,7 +426,7 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState<SxkjApplyPage> {
///
Future<void> _chooseFromLedger() async {
if (limitedSpaceList.isEmpty) {
ToastUtil.showNormal(context, '暂无可选台账,请选择正确的相关方项目');
ToastUtil.showNormal(context, '暂无可选台账');
return;
}
final result = await BottomPicker.show<String>(
@ -511,7 +504,7 @@ class _SxkjApplyPageState extends SpecialWorkApplyBaseState<SxkjApplyPage> {
pd['workGuardianUserDepartmentName'] = data['departmentName'];
allowChoosePerson['2'] = data;
}
super.clearRelatedPartiesPerson();
super.getFlowInit(true);
});
},
);

View File

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

View File

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

View File

@ -211,9 +211,6 @@ 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;
@ -239,6 +236,7 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
await getFlowInit(false);
}
await loadExtraData();
await afterInitDataLoaded();
if (enableSafeProtection) {
@ -479,21 +477,6 @@ 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({
@ -589,10 +572,10 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
//
if (stepId == '20') {
allowChoosePerson['1'] = data;
clearRelatedPartiesPerson();
_clearRelatedPartiesPerson();
} else if (stepId == '21') {
allowChoosePerson['2'] = data;
clearRelatedPartiesPerson();
_clearRelatedPartiesPerson();
}
});
},
@ -600,7 +583,7 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
}
//
void clearRelatedPartiesPerson() {
void _clearRelatedPartiesPerson() {
setState(() {
for (Map item in groups) {
final stepId = item['stepId']?.toString() ?? '';
@ -659,9 +642,7 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
pd['projectExecutionLocationCorpName'] =
json['projectExecutionLocationCorpName'];
});
loadExtraData();
_getRelatedPartiesUserList(false);
_getRelatedPartiesUserList();
},
onSelected: (id, name, pdId) {},
),
@ -672,7 +653,7 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
}
//
Future<void> _getRelatedPartiesUserList(bool isInit) async {
Future<void> _getRelatedPartiesUserList() async {
try {
final personRes = await BasicInfoApi.getDeptUsers(
'',
@ -689,10 +670,8 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
);
if (result['success'] == true) {
relatedPartiesPersonList = _toMapList(result['data']);
if (!isInit) {
_initGroupsFromInitData(true);
}
}
} catch (e) {
ToastUtil.showError(context, '获取相关方人员失败:$e');
}
@ -770,8 +749,7 @@ abstract class SpecialWorkApplyBaseState<T extends SpecialWorkApplyBasePage>
if (canSkip == 1) ...[
if (skipCondition.isEmpty) ...[
ListItemFactory.createYesNoSection(
horizontalPadding: 2,
verticalPadding: 0,
horizontalPadding: 3,
isRequired: true,
title: '是否$stepName',
groupValue: pd['${stepId}_skip'] == 1,
@ -981,9 +959,6 @@ 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,11 +220,7 @@ class _SpecialWorkTaskPageBaseState extends State<SpecialWorkTaskPageBase> {
if (steps.isNotEmpty && widget.isEdit) {
LoadingDialogHelper.show();
final personRes = await BasicInfoApi.getDeptUsers(
'',
isMyCorp: 0,
corpinfoId: _initData['workInfo']['corpinfoId'] ?? '',
);
final personRes = await BasicInfoApi.getDeptUsers('', isMyCorp: 1);
LoadingDialogHelper.dismiss();
if (personRes['success'] == true) {
_allPersonList = personRes['data'] ?? [];
@ -945,7 +941,6 @@ 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(),