危险作业bug修改

master
hs 2026-04-14 16:24:31 +08:00
parent 95c410bf1b
commit 627ef2201f
33 changed files with 1215 additions and 784 deletions

File diff suppressed because it is too large Load Diff

View File

@ -120,7 +120,7 @@ class RouteService extends ChangeNotifier {
void visit(RouteModel m) {
if (found) return;
//
if (!m.visible) return;
if (m.showFlag == 2) return;
final mp = (m.menuPerms ?? '').trim();
if (mp.isNotEmpty && mp == needle) {

View File

@ -17,11 +17,11 @@ class ApiService {
///
// static final String baseImgPath =
// isProduct
// ? "https://jpfz.qhdsafety.com/gbsFileTest/"
// : "http://192.168.20.240:9787/mnt/"; //
static final String baseImgPath = "https://skqhdg.porthebei.com:9004/file/uploadFiles2/";
static final String baseImgPath =
isProduct
? "https://jpfz.qhdsafety.com/gbsFileTest/"
: "http://192.168.20.240:9787/mnt/"; //
// static final String baseImgPath = "https://skqhdg.porthebei.com:9004/file/uploadFiles2/";
static const publicKey =

View File

@ -153,7 +153,7 @@ class SpecialWorkApi {
static Future<Map<String, dynamic>> specialWorkFlowList(String workId) {
return HttpManager().request(
basePath + '/eightwork',
'/taskLog/listAll/$workId',
'/taskLog/flowChart/$workId',
method: Method.get,
data: {},
);

View File

@ -376,7 +376,6 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
),
],
if (_otherMeasuresList.isNotEmpty) ...[
const Divider(),
ListItemFactory.createBuildSimpleSection('其他安全措施'),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -398,10 +397,11 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
);
}).toList(),
),
const Divider(),
],
//
if (gasUsername.isNotEmpty) ...[
const Divider(),
ItemListWidget.OneRowButtonTitleText(
label: '气体分析人:',
text: gasUsername,
@ -410,9 +410,10 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
pushPage(SpecialWorkGasList(data: widget.pd), context);
},
),
const Divider(),
],
if (delayStatus.isNotEmpty) ...[
const Divider(),
ItemListWidget.OneRowButtonTitleText(
label: '延时监火',
text: '',
@ -421,14 +422,17 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
pushPage(HotDelayPage(data: widget.pd, isEdit: false,), context);
},
),
const Divider(),
],
if (_finishMeasures.isNotEmpty &&
pd['specialStepCode'] != 'measures') ...[
const Divider(),
MeasuresListWidget(
measuresList: _finishMeasures,
isAllowEdit: false,
),
const Divider(),
],
@ -438,7 +442,6 @@ class _HotWorkDetailFormWidgetState extends State<HotWorkDetailFormWidget> {
..._buildStepSignWidgets(pd),
if (rejectReason.keys.isNotEmpty) ...[
const Divider(),
ListItemFactory.createBuildSimpleSection('打回信息'),
//
ItemListWidget.singleLineTitleText(

View File

@ -1,6 +1,7 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
import 'package:qhd_prevention/customWidget/item_list_widget.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
@ -95,12 +96,15 @@ class _DhWaitPageState extends State<DhWaitPage> {
};
response = await SpecialWorkApi.specialWorkTaskLogList(data);
}else{
final parentPerm = 'dashboard:hazardous:work:hot-work:Hot-Work-Operation-Ledger';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
final data = {
"eqWorkType": SpecialWorkTypeEnum.hotWork.code,
"pageSize": rows,
"pageIndex": currentPage,
"menuPath" : menuPath,
...searchData
// "eqStatus" : 1,
};
response = await SpecialWorkApi.specialWorkList(data);
}
@ -435,7 +439,7 @@ class _DhWaitPageState extends State<DhWaitPage> {
if (status != '0' && widget.listType == SpecialListType.task) {
buttons.add(
CustomButton(
text: '审批',
text: status == '2' ? '编辑' : '审批',
backgroundColor: Colors.blue,
onPressed: () {
_goToDetail(item, true);

View File

@ -993,7 +993,7 @@ class _HotworkApplyDetailState extends State<HotworkApplyDetail> {
DateTime? picked = await BottomDateTimePicker.showDate(
mode: BottomPickerMode.dateTimeWithSeconds,
context,
minTimeStr: pd['workEndTime'] ?? '',
minTimeStr: pd['workStartTime'] ?? '',
allowFuture: true,
);
if (picked != null) {
@ -1034,7 +1034,6 @@ class _HotworkApplyDetailState extends State<HotworkApplyDetail> {
},
),
const Divider(),
if (widget.isReEdit && FormUtils.hasValue(form, 'id')) ...[
HotWorkDetailFormWidget(pd: form, isEditable: true),
],

View File

@ -175,8 +175,8 @@ class _workTabDhListState extends State<workTabDhList> {
final button = stepsData[buttonIndex];
final workTypeTitle =
(group is Map && group['groupName'] != null)
? group['groupName'].toString()
(button is Map && button['stepName'] != null)
? button['stepName'].toString()
: '';
final stepId = button['stepId'] ?? '';
await pushPage(

View File

@ -965,24 +965,7 @@ class _DlApplyPageState extends State<DlApplyPage> {
}
Widget _buildDetail() {
List linkWorks = pd['linkSpecialWorks'] ?? [];
String linkShowStr = linkWorks
.map((item) {
final workName = item['workTypeName'];
final checkNo = item['checkNo'] ?? '';
return '$workName $checkNo';
})
.toList()
.join(',');
List riskResults = pd['riskResults'] ?? [];
String riskShowStr =
riskResults
.map((item) {
final riskResultName = item['riskResultName'];
return riskResultName;
})
.toList()
.join();
return Container(
padding: const EdgeInsets.symmetric(vertical: 10),
decoration: const BoxDecoration(
@ -1148,7 +1131,7 @@ class _DlApplyPageState extends State<DlApplyPage> {
DateTime? picked = await BottomDateTimePicker.showDate(
mode: BottomPickerMode.dateTimeWithSeconds,
context,
minTimeStr: pd['workEndTime'] ?? '',
minTimeStr: pd['workStartTime'] ?? '',
allowFuture: true,
);
if (picked != null) {

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
import 'package:qhd_prevention/customWidget/item_list_widget.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
@ -94,12 +95,15 @@ class _DlWaitPageState extends State<DlWaitPage> {
};
response = await SpecialWorkApi.specialWorkTaskLogList(data);
} else {
final parentPerm = 'dashboard:hazardous:work:circuit-breaking-operation:Circuit-Breaker-Work-Ledger';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
final data = {
"eqWorkType": SpecialWorkTypeEnum.cutRoadWork.code,
"pageSize": rows,
"pageIndex": currentPage,
...searchData,
// "eqStatus" : 1,
"menuPath" : menuPath,
...searchData
};
response = await SpecialWorkApi.specialWorkList(data);
}
@ -504,7 +508,7 @@ class _DlWaitPageState extends State<DlWaitPage> {
if (status != '0' && widget.listType == SpecialListType.task) {
buttons.add(
CustomButton(
text: '审批',
text: status == '2' ? '编辑' : '审批',
backgroundColor: Colors.blue,
onPressed: () {
_goToDetail(item, true);

View File

@ -170,8 +170,8 @@ class _WorkTabDlListState extends State<WorkTabDlList> {
final button = stepsData[buttonIndex];
final workTypeTitle =
(group is Map && group['groupName'] != null)
? group['groupName'].toString()
(button is Map && button['stepName'] != null)
? button['stepName'].toString()
: '';
final stepId = button['stepId'] ?? '';
await pushPage(DlWaitPage(stepId: stepId, workTypeTitle: workTypeTitle , listType: SpecialListType.task), context);

View File

@ -962,24 +962,7 @@ class _DtApplyPageState extends State<DtApplyPage> {
}
Widget _buildDetail() {
List linkWorks = pd['linkSpecialWorks'] ?? [];
String linkShowStr = linkWorks
.map((item) {
final workName = item['workTypeName'];
final checkNo = item['checkNo'] ?? '';
return '$workName $checkNo';
})
.toList()
.join(',');
List riskResults = pd['riskResults'] ?? [];
String riskShowStr =
riskResults
.map((item) {
final riskResultName = item['riskResultName'];
return riskResultName;
})
.toList()
.join();
return Container(
padding: const EdgeInsets.symmetric(vertical: 10),
decoration: const BoxDecoration(
@ -1069,7 +1052,7 @@ class _DtApplyPageState extends State<DtApplyPage> {
DateTime? picked = await BottomDateTimePicker.showDate(
mode: BottomPickerMode.dateTimeWithSeconds,
context,
minTimeStr: pd['workEndTime'] ?? '',
minTimeStr: pd['workStartTime'] ?? '',
allowFuture: true,
);
if (picked != null) {

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
import 'package:qhd_prevention/customWidget/item_list_widget.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
@ -78,13 +79,6 @@ class _DtWaitPageState extends State<DtWaitPage> {
setState(() => isLoading = true);
try {
final data = {
"eqWorkType": "confinedspace_work",
"pageSize": rows,
"pageIndex": currentPage,
...searchData,
"eqStepId": widget.stepId,
};
var response = {};
if (widget.listType == SpecialListType.task) {
final data = {
@ -95,12 +89,15 @@ class _DtWaitPageState extends State<DtWaitPage> {
};
response = await SpecialWorkApi.specialWorkTaskLogList(data);
}else{
final parentPerm = 'dashboard:hazardous:work:earthwork-operations:Earthmoving-Work-Ledger';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
final data = {
"eqWorkType": SpecialWorkTypeEnum.breakgroundWork.code,
"pageSize": rows,
"pageIndex": currentPage,
"menuPath" : menuPath,
...searchData
// "eqStatus" : 1,
};
response = await SpecialWorkApi.specialWorkList(data);
}
@ -491,7 +488,7 @@ class _DtWaitPageState extends State<DtWaitPage> {
if (status != '0' && widget.listType == SpecialListType.task) {
buttons.add(
CustomButton(
text: '审批',
text: status == '2' ? '编辑' : '审批',
backgroundColor: Colors.blue,
onPressed: () {
_goToDetail(item, true);

View File

@ -170,8 +170,8 @@ class _WorkTabDtListState extends State<WorkTabDtList> {
final button = stepsData[buttonIndex];
final workTypeTitle =
(group is Map && group['groupName'] != null)
? group['groupName'].toString()
(button is Map && button['stepName'] != null)
? button['stepName'].toString()
: '';
final stepId = button['stepId'] ?? '';
await pushPage(DtWaitPage(stepId: stepId, workTypeTitle: workTypeTitle , listType: SpecialListType.task), context);

View File

@ -968,24 +968,7 @@ class _DzApplyPageState extends State<DzApplyPage> {
}
Widget _buildDetail() {
List linkWorks = pd['linkSpecialWorks'] ?? [];
String linkShowStr = linkWorks
.map((item) {
final workName = item['workTypeName'];
final checkNo = item['checkNo'] ?? '';
return '$workName $checkNo';
})
.toList()
.join(',');
List riskResults = pd['riskResults'] ?? [];
String riskShowStr =
riskResults
.map((item) {
final riskResultName = item['riskResultName'];
return riskResultName;
})
.toList()
.join();
return Container(
padding: const EdgeInsets.symmetric(vertical: 10),
decoration: const BoxDecoration(
@ -1149,7 +1132,7 @@ class _DzApplyPageState extends State<DzApplyPage> {
DateTime? picked = await BottomDateTimePicker.showDate(
mode: BottomPickerMode.dateTimeWithSeconds,
context,
minTimeStr: pd['workEndTime'] ?? '',
minTimeStr: pd['workStartTime'] ?? '',
allowFuture: true,
);
if (picked != null) {

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
import 'package:qhd_prevention/customWidget/item_list_widget.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
@ -78,13 +79,6 @@ class _DzWaitPageState extends State<DzWaitPage> {
setState(() => isLoading = true);
try {
final data = {
"eqWorkType": "confinedspace_work",
"pageSize": rows,
"pageIndex": currentPage,
...searchData,
"eqStepId": widget.stepId,
};
var response = {};
if (widget.listType == SpecialListType.task) {
final data = {
@ -95,12 +89,15 @@ class _DzWaitPageState extends State<DzWaitPage> {
};
response = await SpecialWorkApi.specialWorkTaskLogList(data);
}else{
final parentPerm = 'dashboard:hazardous:work:hoisting-operations:Hoisting-Operation-Ledger';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
final data = {
"eqWorkType": SpecialWorkTypeEnum.hoistingWork.code,
"pageSize": rows,
"pageIndex": currentPage,
"menuPath" : menuPath,
...searchData
// "eqStatus" : 1,
};
response = await SpecialWorkApi.specialWorkList(data);
}
@ -490,7 +487,7 @@ class _DzWaitPageState extends State<DzWaitPage> {
if (status != '0' && widget.listType == SpecialListType.task) {
buttons.add(
CustomButton(
text: '审批',
text: status == '2' ? '编辑' : '审批',
backgroundColor: Colors.blue,
onPressed: () {
_goToDetail(item, true);

View File

@ -170,8 +170,8 @@ class _WorkTabDzListState extends State<WorkTabDzList> {
final button = stepsData[buttonIndex];
final workTypeTitle =
(group is Map && group['groupName'] != null)
? group['groupName'].toString()
(button is Map && button['stepName'] != null)
? button['stepName'].toString()
: '';
final stepId = button['stepId'] ?? '';
await pushPage(DzWaitPage(stepId: stepId, workTypeTitle: workTypeTitle , listType: SpecialListType.task), context);

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
import 'package:qhd_prevention/customWidget/item_list_widget.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
@ -78,13 +79,7 @@ class _GcWaitPageState extends State<GcWaitPage> {
setState(() => isLoading = true);
try {
final data = {
"eqWorkType": "confinedspace_work",
"pageSize": rows,
"pageIndex": currentPage,
...searchData,
"eqStepId": widget.stepId,
};
var response = {};
if (widget.listType == SpecialListType.task) {
final data = {
@ -95,12 +90,15 @@ class _GcWaitPageState extends State<GcWaitPage> {
};
response = await SpecialWorkApi.specialWorkTaskLogList(data);
}else{
final parentPerm = 'dashboard:hazardous:work:work-at-height:High-altitude-Work-Ledger';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
final data = {
"eqWorkType": SpecialWorkTypeEnum.highWork.code,
"pageSize": rows,
"pageIndex": currentPage,
"menuPath" : menuPath,
...searchData
// "eqStatus" : 1,
};
response = await SpecialWorkApi.specialWorkList(data);
}
@ -493,7 +491,7 @@ class _GcWaitPageState extends State<GcWaitPage> {
if (status != '0' && widget.listType == SpecialListType.task) {
buttons.add(
CustomButton(
text: '审批',
text: status == '2' ? '编辑' : '审批',
backgroundColor: Colors.blue,
onPressed: () {
_goToDetail(item, true);

View File

@ -170,8 +170,8 @@ class _WorkTabGcListState extends State<WorkTabGcList> {
final button = stepsData[buttonIndex];
final workTypeTitle =
(group is Map && group['groupName'] != null)
? group['groupName'].toString()
(button is Map && button['stepName'] != null)
? button['stepName'].toString()
: '';
final stepId = button['stepId'] ?? '';
await pushPage(GcWaitPage(stepId: stepId, workTypeTitle: workTypeTitle , listType: SpecialListType.task), context);

View File

@ -1143,7 +1143,7 @@ class _LsydApplyPageState extends State<LsydApplyPage> {
DateTime? picked = await BottomDateTimePicker.showDate(
mode: BottomPickerMode.dateTimeWithSeconds,
context,
minTimeStr: pd['workEndTime'] ?? '',
minTimeStr: pd['workStartTime'] ?? '',
allowFuture: true,
);
if (picked != null) {

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
import 'package:qhd_prevention/customWidget/item_list_widget.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
@ -79,13 +80,6 @@ class _LsydWaitPageState extends State<LsydWaitPage> {
setState(() => isLoading = true);
try {
final data = {
"eqWorkType": "confinedspace_work",
"pageSize": rows,
"pageIndex": currentPage,
...searchData,
"eqStepId": widget.stepId,
};
var response = {};
if (widget.listType == SpecialListType.task) {
final data = {
@ -96,12 +90,15 @@ class _LsydWaitPageState extends State<LsydWaitPage> {
};
response = await SpecialWorkApi.specialWorkTaskLogList(data);
}else{
final parentPerm = 'dashboard:hazardous:work:temporary-electrical-work:Temporary-Electricity-Work-Ledger';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
final data = {
"eqWorkType": SpecialWorkTypeEnum.electricityWork.code,
"pageSize": rows,
"pageIndex": currentPage,
"menuPath" : menuPath,
...searchData
// "eqStatus" : 1,
};
response = await SpecialWorkApi.specialWorkList(data);
}
@ -516,7 +513,7 @@ class _LsydWaitPageState extends State<LsydWaitPage> {
if (status != '0' && widget.listType == SpecialListType.task) {
buttons.add(
CustomButton(
text: '审批',
text: status == '2' ? '编辑' : '审批',
backgroundColor: Colors.blue,
onPressed: () {
_goToDetail(item, true);

View File

@ -170,8 +170,8 @@ class _WorkTabLsydListState extends State<WorkTabLsydList> {
final button = stepsData[buttonIndex];
final workTypeTitle =
(group is Map && group['groupName'] != null)
? group['groupName'].toString()
(button is Map && button['stepName'] != null)
? button['stepName'].toString()
: '';
final stepId = button['stepId'] ?? '';
await pushPage(LsydWaitPage(stepId: stepId, workTypeTitle: workTypeTitle , listType: SpecialListType.task), context);

View File

@ -62,7 +62,7 @@ class _MbcdApplyPageState extends State<MbcdApplyPage> {
//
final Map<String, dynamic> _requiredRules = {
"operationTypeName": "请选择作业类型",
"blindboardWorkName": "请选择作业类别",
"blindboardWorkTypeName": "请选择作业类别",
"devicePipelineName": "请输入设备管道名称",
"workStartTime": "请选择作业开始时间",
"workUserName": "请填写作业人",

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
import 'package:qhd_prevention/customWidget/item_list_widget.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
@ -78,13 +79,6 @@ class _MbcdWaitPageState extends State<MbcdWaitPage> {
setState(() => isLoading = true);
try {
final data = {
"eqWorkType": "confinedspace_work",
"pageSize": rows,
"pageIndex": currentPage,
...searchData,
"eqStepId": widget.stepId,
};
var response = {};
if (widget.listType == SpecialListType.task) {
final data = {
@ -95,12 +89,15 @@ class _MbcdWaitPageState extends State<MbcdWaitPage> {
};
response = await SpecialWorkApi.specialWorkTaskLogList(data);
}else{
final parentPerm = 'dashboard:hazardous:work:blind-flange-plugging-operation:Blind-Flange-Blocking-Work-Ledger';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
final data = {
"eqWorkType": SpecialWorkTypeEnum.blindboardWork.code,
"pageSize": rows,
"pageIndex": currentPage,
"menuPath" : menuPath,
...searchData
// "eqStatus" : 1,
};
response = await SpecialWorkApi.specialWorkList(data);
}
@ -490,7 +487,7 @@ class _MbcdWaitPageState extends State<MbcdWaitPage> {
if (status != '0' && widget.listType == SpecialListType.task) {
buttons.add(
CustomButton(
text: '审批',
text: status == '2' ? '编辑' : '审批',
backgroundColor: Colors.blue,
onPressed: () {
_goToDetail(item, true);

View File

@ -170,8 +170,8 @@ class _WorkTabMbcdListState extends State<WorkTabMbcdList> {
final button = stepsData[buttonIndex];
final workTypeTitle =
(group is Map && group['groupName'] != null)
? group['groupName'].toString()
(button is Map && button['stepName'] != null)
? button['stepName'].toString()
: '';
final stepId = button['stepId'] ?? '';
await pushPage(MbcdWaitPage(stepId: stepId, workTypeTitle: workTypeTitle , listType: SpecialListType.task), context);

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/custom_alert_dialog.dart';
import 'package:qhd_prevention/customWidget/item_list_widget.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
@ -79,13 +80,6 @@ class _SxkjWaitPageState extends State<SxkjWaitPage> {
setState(() => isLoading = true);
try {
final data = {
"eqWorkType": "confinedspace_work",
"pageSize": rows,
"pageIndex": currentPage,
...searchData,
"eqStepId": widget.stepId,
};
var response = {};
if (widget.listType == SpecialListType.task) {
final data = {
@ -96,12 +90,15 @@ class _SxkjWaitPageState extends State<SxkjWaitPage> {
};
response = await SpecialWorkApi.specialWorkTaskLogList(data);
}else{
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": rows,
"pageIndex": currentPage,
"menuPath" : menuPath,
...searchData
// "eqStatus" : 1,
};
response = await SpecialWorkApi.specialWorkList(data);
}
@ -430,7 +427,7 @@ class _SxkjWaitPageState extends State<SxkjWaitPage> {
if (status != '0' && widget.listType == SpecialListType.task) {
buttons.add(
CustomButton(
text: '审批',
text: status == '2' ? '编辑' : '审批',
backgroundColor: Colors.blue,
onPressed: () {
_goToDetail(item, true);

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:qhd_prevention/common/route_service.dart';
import 'package:qhd_prevention/customWidget/item_list_widget.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
import 'package:qhd_prevention/CustomWidget/range_filter_bar.dart';
@ -71,12 +72,6 @@ class _SxkjTzListPageState extends State<SxkjTzListPage> {
}
}
Future<void> _fetchSteps() async {
try {} catch (e) {
print('Error fetching steps: $e');
}
}
Future<void> _fetchData() async {
if (isLoading) return;
setState(() => isLoading = true);
@ -84,10 +79,15 @@ class _SxkjTzListPageState extends State<SxkjTzListPage> {
try {
var response = {};
final parentPerm = 'dashboard:hazardous:work:confined-space-operations:confined-space-management-ledger';
final targetPerm = '';
final menuPath = await RouteService.getMenuPath(parentPerm, targetPerm);
final data = {
"eqWorkType": "confinedspace_work",
"pageSize": rows,
"pageIndex": currentPage,
"menuPath" : menuPath,
...searchData
};
response = await SpecialWorkApi.specialWorkLimitedSpaceList(data);
setState(() {

View File

@ -180,8 +180,8 @@ class _WorkTabSpaceListState extends State<WorkTabSpaceList> {
final button = stepsData[buttonIndex];
final workTypeTitle =
(group is Map && group['groupName'] != null)
? group['groupName'].toString()
(button is Map && button['stepName'] != null)
? button['stepName'].toString()
: '';
final stepId = button['stepId'] ?? '';
await pushPage(SxkjWaitPage(stepId: stepId, workTypeTitle: workTypeTitle , listType: SpecialListType.task,), context);

View File

@ -25,59 +25,59 @@ class WorkTabListPage extends StatefulWidget {
class _WorkTabListPageState extends RouteAwareState<WorkTabListPage> {
final List<_WorkButtonConfig> _allButtons = [
_WorkButtonConfig(
icon: 'assets/image/wxzy_ico7.png',
icon: 'assets/images/wxzy_ico7.png',
title: '动火作业',
workType: 'hot_work',
menuPerms: 'dashboard:hazardous-work:hot-work',
menuPerms: 'dashboard:hazardous:work:hot-work',
pageBuilder: () => workTabDhList(),
),
_WorkButtonConfig(
icon: 'assets/image/wxzy_ico6.png',
icon: 'assets/images/wxzy_ico6.png',
title: '受限空间作业',
workType: 'confinedspace_work',
menuPerms: 'dashboard:hazardous-work:confined-space-operations',
menuPerms: 'dashboard:hazardous:work:confined-space-operations',
pageBuilder: () => WorkTabSpaceList(),
),
_WorkButtonConfig(
icon: 'assets/image/wxzy_ico5.png',
icon: 'assets/images/wxzy_ico5.png',
title: '高处作业',
workType: 'high_work',
menuPerms: 'dashboard:hazardous-work:work-at-height',
menuPerms: 'dashboard:hazardous:work:work-at-height',
pageBuilder: () => WorkTabGcList(),
),
_WorkButtonConfig(
icon: 'assets/image/wxzy_ico4.png',
icon: 'assets/images/wxzy_ico4.png',
title: '动土作业',
workType: 'breakground_work',
menuPerms: 'dashboard:hazardous-work:earthwork-operations',
menuPerms: 'dashboard:hazardous:work:earthwork-operations',
pageBuilder: () => WorkTabDtList(),
),
_WorkButtonConfig(
icon: 'assets/image/wxzy_ico3.png',
icon: 'assets/images/wxzy_ico3.png',
title: '吊装作业',
workType: 'hoisting_work',
menuPerms: 'dashboard:hazardous-work:hoisting-operations',
menuPerms: 'dashboard:hazardous:work:hoisting-operations',
pageBuilder: () => WorkTabDzList(),
),
_WorkButtonConfig(
icon: 'assets/image/wxzy_ico2.png',
icon: 'assets/images/wxzy_ico2.png',
title: '断路作业',
workType: 'cutroad_work',
menuPerms: 'dashboard:hazardous-work:circuit-breaking-operation',
menuPerms: 'dashboard:hazardous:work:circuit-breaking-operation',
pageBuilder: () => WorkTabDlList(),
),
_WorkButtonConfig(
icon: 'assets/image/wxzy_ico1.png',
icon: 'assets/images/wxzy_ico1.png',
title: '临时用电作业',
workType: 'electricity_work',
menuPerms: 'dashboard:hazardous-work:temporary-electrical-work',
menuPerms: 'dashboard:hazardous:work:temporary-electrical-work',
pageBuilder: () => WorkTabLsydList(),
),
_WorkButtonConfig(
icon: 'assets/image/wxzy_ico8.png',
icon: 'assets/images/wxzy_ico8.png',
title: '盲板抽堵作业',
workType: 'blindboard_work',
menuPerms: 'dashboard:hazardous-work:blind-flange-plugging-operation',
menuPerms: 'dashboard:hazardous:work:blind-flange-plugging-operation',
pageBuilder: () => WorkTabMbcdList(),
),
];
@ -188,7 +188,7 @@ class _WorkTabListPageState extends RouteAwareState<WorkTabListPage> {
return Stack(
children: [
Image.asset(
'assets/image/wxzy_banner.png',
'assets/images/wxzy_banner.png',
width: MediaQuery.of(context).size.width,
height: bannerHeight,
fit: BoxFit.fitWidth,

View File

@ -10,6 +10,7 @@ import 'package:qhd_prevention/customWidget/custom_button.dart';
import 'package:qhd_prevention/customWidget/toast_util.dart';
import 'package:qhd_prevention/http/ApiService.dart';
import 'package:qhd_prevention/pages/home/Study/study_tab_list_page.dart';
import 'package:qhd_prevention/pages/home/Tap/work_tab_list_page.dart';
import 'package:qhd_prevention/pages/home/doorAndCar/doorCar_tab_page.dart';
import 'package:qhd_prevention/pages/home/keyTasks/key_tasks_tab_page.dart';
import 'package:qhd_prevention/pages/home/scan_page.dart';
@ -118,7 +119,7 @@ class HomePageState extends RouteAwareState<HomePage>
final Map<String, String> _titleToPerm = {
"单位管理": "dashboard-Unit-Management",
"现场监管": "dashboard-Site-Supervision",
"危险作业": "dashboard-Hazardous-Work",
"危险作业": "dashboard:hazardous:work:hot-work",
"隐患治理": "dashboard-Hazard-Management",
"重点作业": "dashboard-Hazard-Management", //
"口门门禁": "dashboard-Gate-Access-Control",
@ -640,6 +641,9 @@ class HomePageState extends RouteAwareState<HomePage>
case "重点作业":
pushPage(KeyTasksTabPage(), context);
break;
case "危险作业":
pushPage(WorkTabListPage(), context);
break;
default:
ToastUtil.showNormal(context, '功能开发中...');
break;

View File

@ -70,6 +70,19 @@ class _UnitJoinDetailPageState extends State<UnitJoinDetailPage> {
// final filePath = fileData.first['filePath'] ?? '';
}
});
if ('${pd['userAvatarUrl']}'.isEmpty) {
await FileApi.getImagePathWithType(
eqForeignKey,
'',
UploadFileType.userAvatar,
).then((result) {
if (result['success']) {
List files = result['data'] ?? [];
pd['userAvatarUrl'] = files.map((item) => item['filePath'].toString()).toList().first;
}
});
}
setState(() {
pd = data;
@ -98,7 +111,7 @@ class _UnitJoinDetailPageState extends State<UnitJoinDetailPage> {
@override
Widget build(BuildContext context) {
bool isShow = _isEdit;
if (!_isEdit && FormUtils.hasValue(pd, 'id')) {
if (!_isEdit && FormUtils.hasValue(pd, 'userAvatarUrl')) {
isShow = true;
}
return Scaffold(

View File

@ -95,26 +95,27 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
try {
Map? route;
//
// try {
// LoadingDialogHelper.show(message: '加载中...');
// final roleId = SessionService.instance.roleId;
// final res = await AppMenuApi.getAppMenu({'roleId': roleId});
// LoadingDialogHelper.hide();
// if (res['success'] == true) {
// route = res;
// } else {}
// } catch (e) {
// debugPrint(
// 'AppMenuApi.getAppMenu error: $e -> fallback to local assets.',
// );
// }
//
try {
final routeString = await loadFromAssets();
route = jsonDecode(routeString) as Map<String, dynamic>;
LoadingDialogHelper.show(message: '加载中...');
final roleId = SessionService.instance.roleId;
final res = await AppMenuApi.getAppMenu({'roleId': roleId});
LoadingDialogHelper.hide();
if (res['success'] == true) {
route = res;
printLongString(jsonEncode(route));
} else {}
} catch (e) {
debugPrint('loadFromAssets error: $e');
debugPrint(
'AppMenuApi.getAppMenu error: $e -> fallback to local assets.',
);
}
//
// try {
// final routeString = await loadFromAssets();
// route = jsonDecode(routeString) as Map<String, dynamic>;
// } catch (e) {
// debugPrint('loadFromAssets error: $e');
// }
final data = route?['data'] ?? [];
RouteService().initializeRoutes(data);
} catch (e) {

View File

@ -96,6 +96,8 @@ class _FullUserinfoPageState extends State<FullUserinfoPage> {
);
if (res['success']) {
final data = res['data'];
pd = data;
_genderText = data['sex'] ?? '';
_birthText = data['birthday'] ?? '';
final eqForeignKey = data['userId'];
@ -112,9 +114,21 @@ class _FullUserinfoPageState extends State<FullUserinfoPage> {
_idCartImgIds = files.map((item) => item['id'].toString()).toList();
}
});
if ('${pd['userAvatarUrl']}'.isEmpty) {
await FileApi.getImagePathWithType(
eqForeignKey,
'',
UploadFileType.userAvatar,
).then((result) {
if (result['success']) {
List files = result['data'] ?? [];
pd['userAvatarUrl'] = files.map((item) => item['filePath'].toString()).toList().first;
}
});
}
setState(() {
pd = data;
try {
final idCardBase64 = utf8.decode(base64.decode(pd['userIdCard']));
if (idCardBase64.isNotEmpty) {
@ -156,18 +170,6 @@ class _FullUserinfoPageState extends State<FullUserinfoPage> {
});
}
void _applyParsedIdCardInfo(IDCardInfo info, String input) {
setState(() {
pd['userIdCard'] = info.id18 ?? input;
pd['birthday'] = info.birth;
pd['age'] = info.age;
pd['gender'] = info.gender;
pd['provinceCode'] = info.provinceCode;
pd['province'] = info.province;
_genderText = info.gender ?? '未知';
_birthText = info.birth ?? '未知';
});
}
///
void _onIdChanged(String value) {
@ -312,7 +314,8 @@ class _FullUserinfoPageState extends State<FullUserinfoPage> {
.then((result) {
if (result['success']) {
pd['userAvatarUrl'] = result['data']['filePath'] ?? '';
isSuccess = true;
pd['userId'] = result['data']['foreignKey'] ?? '';
isSuccess = true;
} else {
LoadingDialogHelper.hide();
ToastUtil.showNormal(context, '人脸照片上传失败');
@ -356,7 +359,7 @@ class _FullUserinfoPageState extends State<FullUserinfoPage> {
@override
Widget build(BuildContext context) {
bool isShow = _isEdit;
if (!_isEdit && FormUtils.hasValue(pd, 'id')) {
if (!_isEdit && FormUtils.hasValue(pd, 'userAvatarUrl')) {
isShow = true;
}
String token = SessionService.instance.token ?? '';