2025.9.8 修改bug
parent
41c514cdc4
commit
e727730f0c
|
|
@ -343,6 +343,7 @@ class _SafeDrawerPageState extends State<SafeDrawerPage> {
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
// ),
|
// ),
|
||||||
|
const SizedBox(height: 10),
|
||||||
ItemListWidget.itemContainer(horizontal: 15,ListItemFactory.createRowSpaceBetweenItem(
|
ItemListWidget.itemContainer(horizontal: 15,ListItemFactory.createRowSpaceBetweenItem(
|
||||||
leftText: '整改部门',
|
leftText: '整改部门',
|
||||||
rightText:hiddenForm['RECTIFICATIONDEPT_NAME'] ?? '',
|
rightText:hiddenForm['RECTIFICATIONDEPT_NAME'] ?? '',
|
||||||
|
|
|
||||||
|
|
@ -61,12 +61,15 @@ class _SafecheckDetailState extends State<SafecheckDetail> {
|
||||||
{'name': 'UNITS_ID', 'message': '请选择被检查单位'},
|
{'name': 'UNITS_ID', 'message': '请选择被检查单位'},
|
||||||
{'name': 'PERSONNELMANAGEMENT_ID', 'message': '请选择被检查单位现场负责人'},
|
{'name': 'PERSONNELMANAGEMENT_ID', 'message': '请选择被检查单位现场负责人'},
|
||||||
{'name': 'INSPECTION_PLACE', 'message': '请输入检查场所'},
|
{'name': 'INSPECTION_PLACE', 'message': '请输入检查场所'},
|
||||||
{'name': 'INSPECTION_TYPE', 'message': '请选择检查类型不能为空'},
|
{'name': 'INSPECTION_TYPE', 'message': '请选择检查类型'},
|
||||||
{'name': 'INSPECTION_TIME_START', 'message': '请选择检查开始时间'},
|
{'name': 'INSPECTION_TIME_START', 'message': '请选择检查开始时间'},
|
||||||
{'name': 'INSPECTION_TIME_END', 'message': '请选择作业结束时间'},
|
{'name': 'INSPECTION_TIME_END', 'message': '请选择作业结束时间'},
|
||||||
{'name': 'INSPECTION_USERS', 'message': '请输入检查人员'},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Map<String, dynamic> form = {
|
Map<String, dynamic> form = {
|
||||||
'INSPECTION_USERS': '',
|
'INSPECTION_USERS': '',
|
||||||
'KEYPROJECTCHECK_ID': '', // 检查ID
|
'KEYPROJECTCHECK_ID': '', // 检查ID
|
||||||
|
|
@ -448,6 +451,18 @@ class _SafecheckDetailState extends State<SafecheckDetail> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// {'name': 'INSPECTION_USERS', 'message': '请输入检查人员'},
|
||||||
|
final name2 = 'INSPECTION_USERS';
|
||||||
|
final message2 ='请输入检查人员';
|
||||||
|
final v = form[name2];
|
||||||
|
if (v == null || v.toString().isEmpty || v.toString() == '请选择') {
|
||||||
|
LoadingDialogHelper.hide();
|
||||||
|
ToastUtil.showNormal(context, message2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 检查 inspectorList 中是否有重复 INSPECTION_USER_ID
|
// 检查 inspectorList 中是否有重复 INSPECTION_USER_ID
|
||||||
final List<Map<String, String>> inspectors = form['inspectorList'] ?? [];
|
final List<Map<String, String>> inspectors = form['inspectorList'] ?? [];
|
||||||
final seenIds = <String>{};
|
final seenIds = <String>{};
|
||||||
|
|
|
||||||
|
|
@ -112,7 +112,17 @@ class _PendingRectificationDetailPageState extends State<PendingRectificationDet
|
||||||
files5 = data['pImgs'] ?? [];
|
files5 = data['pImgs'] ?? [];
|
||||||
files6 = data['yImgs'] ?? [];
|
files6 = data['yImgs'] ?? [];
|
||||||
checkList = data['checkList'] ?? [];
|
checkList = data['checkList'] ?? [];
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 拉取该单位的人员列表并缓存
|
||||||
|
final result = await ApiService.getListTreePersonList(buMenId);
|
||||||
|
setState(() {
|
||||||
|
_personCache=List<Map<String, dynamic>>.from(
|
||||||
|
result['userList'] as List,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
@ -155,6 +165,15 @@ class _PendingRectificationDetailPageState extends State<PendingRectificationDet
|
||||||
files6 = data['yImgs'] ?? [];
|
files6 = data['yImgs'] ?? [];
|
||||||
checkList = data['checkList'] ?? [];
|
checkList = data['checkList'] ?? [];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 拉取该单位的人员列表并缓存
|
||||||
|
final result = await ApiService.getListTreePersonList(buMenId);
|
||||||
|
setState(() {
|
||||||
|
_personCache=List<Map<String, dynamic>>.from(
|
||||||
|
result['userList'] as List,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
@ -402,9 +421,12 @@ class _PendingRectificationDetailPageState extends State<PendingRectificationDet
|
||||||
});
|
});
|
||||||
// 拉取该单位的人员列表并缓存
|
// 拉取该单位的人员列表并缓存
|
||||||
final result = await ApiService.getListTreePersonList(id);
|
final result = await ApiService.getListTreePersonList(id);
|
||||||
_personCache=List<Map<String, dynamic>>.from(
|
setState(() {
|
||||||
result['userList'] as List,
|
_personCache=List<Map<String, dynamic>>.from(
|
||||||
);
|
result['userList'] as List,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}),
|
}),
|
||||||
|
|
@ -429,7 +451,7 @@ class _PendingRectificationDetailPageState extends State<PendingRectificationDet
|
||||||
),
|
),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if ( renYuanId.isEmpty) {
|
if ( buMenId.isEmpty) {
|
||||||
ToastUtil.showNormal(context, '请先选择部门');
|
ToastUtil.showNormal(context, '请先选择部门');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -112,9 +112,12 @@ class _SafecheckStartListPageState extends State<SafecheckStartListPage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 申请
|
/// 申请
|
||||||
void _handleApply() {
|
Future<void> _handleApply() async {
|
||||||
// 处理申请按钮点击逻辑
|
// 处理申请按钮点击逻辑
|
||||||
pushPage(SafecheckStartDetail(INSPECTION_ID: '', type: 'add',), context);
|
await pushPage(SafecheckStartDetail(INSPECTION_ID: '', type: 'add',), context);
|
||||||
|
|
||||||
|
_search();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 打开流程图
|
/// 打开流程图
|
||||||
|
|
|
||||||
|
|
@ -264,10 +264,10 @@ class _RiskControlPageState extends State<RiskControlPage> {
|
||||||
if (_isLoading) return;
|
if (_isLoading) return;
|
||||||
_isLoading = true;
|
_isLoading = true;
|
||||||
|
|
||||||
|
LoadingDialogHelper.show();
|
||||||
final result = await ApiService.getRiskRecordList( currentPage,
|
final result = await ApiService.getRiskRecordList( currentPage,
|
||||||
riskId, dept, level, keyWord);
|
riskId, dept, level, keyWord);
|
||||||
|
LoadingDialogHelper.hide();
|
||||||
if (result['result'] == 'success') {
|
if (result['result'] == 'success') {
|
||||||
|
|
||||||
_totalPage =result["page"]['totalPage'] ?? 1;
|
_totalPage =result["page"]['totalPage'] ?? 1;
|
||||||
|
|
@ -291,6 +291,7 @@ class _RiskControlPageState extends State<RiskControlPage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
LoadingDialogHelper.hide();
|
||||||
// 出错时可以 Toast 或者在页面上显示错误状态
|
// 出错时可以 Toast 或者在页面上显示错误状态
|
||||||
print('加载数据失败:$e');
|
print('加载数据失败:$e');
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:qhd_prevention/pages/my_appbar.dart';
|
import 'package:qhd_prevention/pages/my_appbar.dart';
|
||||||
|
import 'package:qhd_prevention/tools/tools.dart';
|
||||||
|
|
||||||
import '../../http/ApiService.dart';
|
import '../../http/ApiService.dart';
|
||||||
|
|
||||||
|
|
@ -24,8 +25,9 @@ class _UserinfoPageState extends State<UserinfoPage> {
|
||||||
|
|
||||||
Future<void> _getUserInfo() async {
|
Future<void> _getUserInfo() async {
|
||||||
try {
|
try {
|
||||||
|
LoadingDialogHelper.show();
|
||||||
final result = await ApiService.getUserInfo();
|
final result = await ApiService.getUserInfo();
|
||||||
|
LoadingDialogHelper.hide();
|
||||||
if (result['result'] == 'success') {
|
if (result['result'] == 'success') {
|
||||||
setState(() {
|
setState(() {
|
||||||
user= result['pd'];
|
user= result['pd'];
|
||||||
|
|
@ -35,6 +37,7 @@ class _UserinfoPageState extends State<UserinfoPage> {
|
||||||
_showMessage('加载数据失败');
|
_showMessage('加载数据失败');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
LoadingDialogHelper.hide();
|
||||||
// 出错时可以 Toast 或者在页面上显示错误状态
|
// 出错时可以 Toast 或者在页面上显示错误状态
|
||||||
print('加载数据失败:$e');
|
print('加载数据失败:$e');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -348,7 +348,9 @@ class _DangerProjectPageState extends State<DangerProjectPage> {
|
||||||
|
|
||||||
Future<void> _getAlreadyUpImages(Map item) async {
|
Future<void> _getAlreadyUpImages(Map item) async {
|
||||||
try {
|
try {
|
||||||
|
LoadingDialogHelper.show();
|
||||||
final result = await ApiService.getAlreadyUpImages(item["RECORDITEM_ID"]);
|
final result = await ApiService.getAlreadyUpImages(item["RECORDITEM_ID"]);
|
||||||
|
LoadingDialogHelper.hide();
|
||||||
if (result['result'] == 'success') {
|
if (result['result'] == 'success') {
|
||||||
final List<dynamic> newList = result['imgs'] ?? [];
|
final List<dynamic> newList = result['imgs'] ?? [];
|
||||||
List<PhotoItem> imgList = [];
|
List<PhotoItem> imgList = [];
|
||||||
|
|
@ -369,6 +371,7 @@ class _DangerProjectPageState extends State<DangerProjectPage> {
|
||||||
ToastUtil.showNormal(context, "加载数据失败");
|
ToastUtil.showNormal(context, "加载数据失败");
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
LoadingDialogHelper.hide();
|
||||||
print('加载数据失败:$e');
|
print('加载数据失败:$e');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,9 @@ class _LawsRegulationsPage extends State<LawsRegulationsPage> {
|
||||||
try {
|
try {
|
||||||
_accordionList.clear();
|
_accordionList.clear();
|
||||||
_fileList.clear();
|
_fileList.clear();
|
||||||
|
LoadingDialogHelper.show();
|
||||||
final result = await ApiService.getLowList(keyWord);
|
final result = await ApiService.getLowList(keyWord);
|
||||||
|
LoadingDialogHelper.hide();
|
||||||
if (result['result'] == 'success') {
|
if (result['result'] == 'success') {
|
||||||
final List<dynamic> newList = result['varList'] ?? [];
|
final List<dynamic> newList = result['varList'] ?? [];
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
@ -60,6 +62,7 @@ class _LawsRegulationsPage extends State<LawsRegulationsPage> {
|
||||||
_showMessage('加载数据失败');
|
_showMessage('加载数据失败');
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
LoadingDialogHelper.hide();
|
||||||
// 出错时可以 Toast 或者在页面上显示错误状态
|
// 出错时可以 Toast 或者在页面上显示错误状态
|
||||||
print('加载数据失败:$e');
|
print('加载数据失败:$e');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ class _MineSetPageState extends State<MineSetPage> {
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
child: _setItemWidget("修改密码"),
|
child: _setItemWidget("修改密码"),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
pushPage(const MineSetPwdPage(), context);
|
pushPage(const MineSetPwdPage("0"), context);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
const Divider(height: 1, color: Colors.black12),
|
const Divider(height: 1, color: Colors.black12),
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,9 @@ import '../../http/ApiService.dart';
|
||||||
import '../login_page.dart';
|
import '../login_page.dart';
|
||||||
|
|
||||||
class MineSetPwdPage extends StatefulWidget {
|
class MineSetPwdPage extends StatefulWidget {
|
||||||
const MineSetPwdPage({super.key});
|
const MineSetPwdPage(this.type, {super.key});
|
||||||
|
|
||||||
|
final String type;
|
||||||
@override
|
@override
|
||||||
State<MineSetPwdPage> createState() => _MineSetPwdPageState();
|
State<MineSetPwdPage> createState() => _MineSetPwdPageState();
|
||||||
}
|
}
|
||||||
|
|
@ -38,19 +39,19 @@ class _MineSetPwdPageState extends State<MineSetPwdPage> {
|
||||||
final confirmPwd = _confirmPwdController.text.trim();
|
final confirmPwd = _confirmPwdController.text.trim();
|
||||||
|
|
||||||
if (oldPwd.isEmpty) {
|
if (oldPwd.isEmpty) {
|
||||||
ToastUtil.showNormal(context, '请填写旧密码');
|
ToastUtil.showNormal(context, '请输入当前密码');
|
||||||
// _showMessage('请填写旧密码');
|
// _showMessage('请填写当前密码');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newPwd.isEmpty) {
|
if (newPwd.isEmpty) {
|
||||||
ToastUtil.showNormal(context, '请填写新密码');
|
ToastUtil.showNormal(context, '请输入新密码');
|
||||||
// _showMessage('请填写新密码');
|
// _showMessage('请填写新密码');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (confirmPwd.isEmpty) {
|
if (confirmPwd.isEmpty) {
|
||||||
ToastUtil.showNormal(context, '请填写确认新密码');
|
ToastUtil.showNormal(context, '请输入确认密码');
|
||||||
// _showMessage('请填写确认新密码');
|
// _showMessage('请填写确认新密码');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -62,14 +63,20 @@ class _MineSetPwdPageState extends State<MineSetPwdPage> {
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if (newPwd != confirmPwd) {
|
if (newPwd != confirmPwd) {
|
||||||
ToastUtil.showNormal(context, '新密码与确认密码不一致');
|
ToastUtil.showNormal(context, '两次输入的密码不一致');
|
||||||
// _showMessage('新密码与确认密码不一致');
|
// _showMessage('新密码与确认密码不一致');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 示例验证:密码复杂度(实际可用正则加强)
|
// 示例验证:密码复杂度(实际可用正则加强)
|
||||||
if (newPwd.length < 8 || newPwd.length > 18) {
|
if (newPwd.length < 8 ) {
|
||||||
ToastUtil.showNormal(context, '新密码长度需在8-18位之间');
|
ToastUtil.showNormal(context, '密码需要大于8位');
|
||||||
|
// _showMessage('密码长度需在8-18位之间');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( newPwd.length > 18) {
|
||||||
|
ToastUtil.showNormal(context, '密码需要小于18位');
|
||||||
// _showMessage('密码长度需在8-18位之间');
|
// _showMessage('密码长度需在8-18位之间');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -137,14 +144,14 @@ class _MineSetPwdPageState extends State<MineSetPwdPage> {
|
||||||
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
|
style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 30),
|
const SizedBox(height: 30),
|
||||||
_buildPwdField('旧密码', _oldPwdController),
|
_buildPwdField('当前密码', _oldPwdController),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
_buildPwdField('新密码', _newPwdController),
|
_buildPwdField('新密码', _newPwdController),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
_buildPwdField('确认新密码', _confirmPwdController),
|
_buildPwdField('确认新密码', _confirmPwdController),
|
||||||
const SizedBox(height: 15),
|
const SizedBox(height: 15),
|
||||||
const Text(
|
const Text(
|
||||||
'需8-18位字母大小写、数字、字符混合',
|
'为了您的账户安全,请确保密码长度为 8-18 位,必须包含大小写字母+数字+特殊字符,例如:Aa@123456',
|
||||||
style: TextStyle(color: Colors.grey, fontSize: 13),
|
style: TextStyle(color: Colors.grey, fontSize: 13),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 30,),
|
const SizedBox(height: 30,),
|
||||||
|
|
@ -173,7 +180,7 @@ class _MineSetPwdPageState extends State<MineSetPwdPage> {
|
||||||
// final hidCount = raw['hidCount'] as Map<String, dynamic>;
|
// final hidCount = raw['hidCount'] as Map<String, dynamic>;
|
||||||
// print(hidCount);
|
// print(hidCount);
|
||||||
if (raw['result'] == 'success') {
|
if (raw['result'] == 'success') {
|
||||||
ToastUtil.showNormal(context, '密码修改成功');
|
ToastUtil.showNormal(context, '新密码修改成功!');
|
||||||
// _showMessage('密码修改成功'); // 这里换成实际调用接口逻辑
|
// _showMessage('密码修改成功'); // 这里换成实际调用接口逻辑
|
||||||
Navigator.pop(context,true);
|
Navigator.pop(context,true);
|
||||||
|
|
||||||
|
|
@ -187,17 +194,17 @@ class _MineSetPwdPageState extends State<MineSetPwdPage> {
|
||||||
);
|
);
|
||||||
|
|
||||||
}else if (raw['result'] == 'usererror'){
|
}else if (raw['result'] == 'usererror'){
|
||||||
ToastUtil.showNormal(context, '旧密码输入错误');
|
ToastUtil.showNormal(context, '当前密码密码有误');
|
||||||
// _showMessage('密码修改失败');
|
// _showMessage('密码修改失败');
|
||||||
}else{
|
}else{
|
||||||
ToastUtil.showNormal(context, '密码修改失败');
|
ToastUtil.showNormal(context, '登录错误!请联系管理员');
|
||||||
// _showMessage('密码修改失败');
|
// _showMessage('密码修改失败');
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// 出错时可以 Toast 或者在页面上显示错误状态
|
// 出错时可以 Toast 或者在页面上显示错误状态
|
||||||
print('加载首页数据失败:$e');
|
print('加载首页数据失败:$e');
|
||||||
ToastUtil.showNormal(context, '密码修改失败');
|
ToastUtil.showNormal(context, '登录错误!请联系管理员');
|
||||||
// _showMessage('密码修改失败');
|
// _showMessage('密码修改失败');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'package:encrypt/encrypt.dart' as encrypt;
|
import 'package:encrypt/encrypt.dart' as encrypt;
|
||||||
import 'package:pointycastle/asymmetric/api.dart' show RSAPublicKey;
|
import 'package:pointycastle/asymmetric/api.dart' show RSAPublicKey;
|
||||||
|
import 'package:qhd_prevention/pages/mine/mine_set_pwd_page.dart';
|
||||||
import 'package:qhd_prevention/tools/tools.dart';
|
import 'package:qhd_prevention/tools/tools.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:fluttertoast/fluttertoast.dart';
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
|
|
@ -36,6 +37,14 @@ class AuthService {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if(data['result']['WEAK_PASSWORD']=='1'){
|
||||||
|
// pushPage(const MineSetPwdPage("1"), context);
|
||||||
|
// return false;
|
||||||
|
// }else if(data['result']['LONG_TERM_PASSWORD_NOT_CHANGED']=='1'){
|
||||||
|
// pushPage(const MineSetPwdPage("2"), context);
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
|
||||||
final prefs = await SharedPreferences.getInstance();
|
final prefs = await SharedPreferences.getInstance();
|
||||||
await prefs.setString(_keyUser, json.encode(data));
|
await prefs.setString(_keyUser, json.encode(data));
|
||||||
await prefs.setStringList(_keyRemember, [username, password]);
|
await prefs.setStringList(_keyRemember, [username, password]);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue