From 8c5ea8e660dd732cb444984dca5aefbe0bf36b24 Mon Sep 17 00:00:00 2001 From: xufei <727302827@qq.com> Date: Mon, 8 Sep 2025 14:17:00 +0800 Subject: [PATCH 1/3] =?UTF-8?q?2025.9.8=20=E5=B2=97=E4=BD=8D=E7=AE=A1?= =?UTF-8?q?=E7=90=86bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/app/checking_information_one_page.dart | 2 ++ lib/pages/app/danner_repair.dart | 2 ++ .../home/SafeCheck/Start/safeCheck_start_list_page.dart | 2 +- lib/pages/mine/mine_duty_management.dart | 9 ++++++--- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/pages/app/checking_information_one_page.dart b/lib/pages/app/checking_information_one_page.dart index 0a602ac..f272a57 100644 --- a/lib/pages/app/checking_information_one_page.dart +++ b/lib/pages/app/checking_information_one_page.dart @@ -431,6 +431,7 @@ class _CheckingInformationOnePageState extends State borderRadius: BorderRadius.circular(5), ), child: ListItemFactory.createRowSpaceBetweenItem( + isRequired:true, leftText: "整改部门", rightText: departments[index].department.isNotEmpty?departments[index].department:"请选择", isRight: true, @@ -472,6 +473,7 @@ class _CheckingInformationOnePageState extends State borderRadius: BorderRadius.circular(5), ), child: ListItemFactory.createRowSpaceBetweenItem( + isRequired:true, leftText: "整改负责人", rightText: departments[index].responsible.isNotEmpty?departments[index].responsible:"请选择", isRight: true, diff --git a/lib/pages/app/danner_repair.dart b/lib/pages/app/danner_repair.dart index 8244809..cad7358 100644 --- a/lib/pages/app/danner_repair.dart +++ b/lib/pages/app/danner_repair.dart @@ -439,6 +439,7 @@ class DannerRepairState extends State { borderRadius: BorderRadius.circular(5), ), child: ListItemFactory.createRowSpaceBetweenItem( + isRequired:true, leftText: "验收部门", rightText: departments[index].department.isNotEmpty?departments[index].department:"请选择", isRight: true, @@ -480,6 +481,7 @@ class DannerRepairState extends State { borderRadius: BorderRadius.circular(5), ), child: ListItemFactory.createRowSpaceBetweenItem( + isRequired:true, leftText: "验收部门负责人", rightText: departments[index].responsible.isNotEmpty?departments[index].responsible:"请选择", isRight: true, diff --git a/lib/pages/home/SafeCheck/Start/safeCheck_start_list_page.dart b/lib/pages/home/SafeCheck/Start/safeCheck_start_list_page.dart index 1f7c762..c501e37 100644 --- a/lib/pages/home/SafeCheck/Start/safeCheck_start_list_page.dart +++ b/lib/pages/home/SafeCheck/Start/safeCheck_start_list_page.dart @@ -506,7 +506,7 @@ class _SafecheckStartListPageState extends State { flex: 2, child: SearchBarWidget( showResetButton: false, - hintText: "请输入关键字", + hintText: "输入被检查单位部门关键字", // isClickableOnly: true, onSearch: (text) { _search(); diff --git a/lib/pages/mine/mine_duty_management.dart b/lib/pages/mine/mine_duty_management.dart index 26ebf0c..a799ede 100644 --- a/lib/pages/mine/mine_duty_management.dart +++ b/lib/pages/mine/mine_duty_management.dart @@ -156,8 +156,8 @@ class _MineDutyManagementPageState extends State { // ), // ), // 记录列表 - Expanded( - child: + // Expanded( + // child: _list.isEmpty ? NoDataWidget.show() : ListView.builder( @@ -170,7 +170,7 @@ class _MineDutyManagementPageState extends State { ), // ), // ], - ), + // ), ), ); } @@ -353,7 +353,9 @@ class _MineDutyManagementPageState extends State { Future _getListData() async { try { + LoadingDialogHelper.show(); final result = await ApiService.getDutyManagement(showCount, currentPage); + LoadingDialogHelper.hide(); if (result['result'] == 'success') { final List newList = result['varList'] ?? []; setState(() { @@ -361,6 +363,7 @@ class _MineDutyManagementPageState extends State { }); } } catch (e) { + LoadingDialogHelper.hide(); print('加载出错: $e'); } } From 41c514cdc431caa894bd1a38b7812fc2266399fa Mon Sep 17 00:00:00 2001 From: xufei <727302827@qq.com> Date: Mon, 8 Sep 2025 15:11:24 +0800 Subject: [PATCH 2/3] =?UTF-8?q?2025.9.8=20=20=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../immediately_inspection.dart | 9 +++-- .../safeCheck_sign_list_page.dart | 2 +- .../check_person_list_page.dart | 2 +- .../safeCheck_danger_list_page.dart | 2 +- .../Record/defend_record_list_page.dart | 2 +- .../Start/safeCheck_start_detail.dart | 9 ++++- lib/pages/mine/mine_set_pwd_page.dart | 33 ++++++++++++++----- 7 files changed, 42 insertions(+), 17 deletions(-) diff --git a/lib/pages/home/EquipmentInspection/immediately_inspection.dart b/lib/pages/home/EquipmentInspection/immediately_inspection.dart index 1482b2c..e0e39be 100644 --- a/lib/pages/home/EquipmentInspection/immediately_inspection.dart +++ b/lib/pages/home/EquipmentInspection/immediately_inspection.dart @@ -48,7 +48,7 @@ class _ImmediatelyInspectionState extends State { ItemListWidget.singleLineTitleText( label: '巡检人:', isEditable: true, - isRequired: false, + isRequired: true, controller: _xunController, hintText: '请输入巡检人', text: '', @@ -61,7 +61,7 @@ class _ImmediatelyInspectionState extends State { label: '巡检日期', text: dataTime.isEmpty ? '请选择' : dataTime ?? '', isEditable: true, - isRequired: false, + isRequired: true, horizontalnum: 0, ), onTap: () async { @@ -100,7 +100,7 @@ class _ImmediatelyInspectionState extends State { child: ItemListWidget.multiLineTitleTextField( label: '巡检内容:', isEditable: true, - isRequired: false, + isRequired: true, controller: _neiRongController, hintText: "(必填)", text: '', @@ -123,6 +123,7 @@ class _ImmediatelyInspectionState extends State { // SizedBox(height: 15,), if (_isFault) RepairedPhotoSection( + isRequired: true, horizontalPadding: 15, title: "故障照片", maxCount: 4, @@ -140,6 +141,7 @@ class _ImmediatelyInspectionState extends State { SizedBox(height: _isFault ? 15 : 0), if (_isFault) RepairedPhotoSection( + isRequired: true, horizontalPadding: 15, title: "故障处理后照片", maxCount: 4, @@ -156,6 +158,7 @@ class _ImmediatelyInspectionState extends State { SizedBox(height: _isFault ? 15 : 0), RepairedPhotoSection( + isRequired: true, horizontalPadding: 15, title: "巡检照片", maxCount: 4, diff --git a/lib/pages/home/SafeCheck/CheckPersonSign/safeCheck_sign_list_page.dart b/lib/pages/home/SafeCheck/CheckPersonSign/safeCheck_sign_list_page.dart index 60feb20..64d0714 100644 --- a/lib/pages/home/SafeCheck/CheckPersonSign/safeCheck_sign_list_page.dart +++ b/lib/pages/home/SafeCheck/CheckPersonSign/safeCheck_sign_list_page.dart @@ -419,7 +419,7 @@ class _SafecheckSignListPageState extends State { flex: 2, child: SearchBarWidget( showResetButton: false, - hintText: "请输入关键字", + hintText: "输入被检查单位部门关键字", // isClickableOnly: true, onSearch: (text) { _search(); diff --git a/lib/pages/home/SafeCheck/CheckPersonSure/check_person_list_page.dart b/lib/pages/home/SafeCheck/CheckPersonSure/check_person_list_page.dart index 063c454..c8eeaeb 100644 --- a/lib/pages/home/SafeCheck/CheckPersonSure/check_person_list_page.dart +++ b/lib/pages/home/SafeCheck/CheckPersonSure/check_person_list_page.dart @@ -418,7 +418,7 @@ class _CheckPersonListPageState extends State { flex: 2, child: SearchBarWidget( showResetButton: false, - hintText: "请输入关键字", + hintText: "输入被检查单位部门关键字", // isClickableOnly: true, onSearch: (text) { _search(); diff --git a/lib/pages/home/SafeCheck/DangeCheck/safeCheck_danger_list_page.dart b/lib/pages/home/SafeCheck/DangeCheck/safeCheck_danger_list_page.dart index 1f385ac..e363a5a 100644 --- a/lib/pages/home/SafeCheck/DangeCheck/safeCheck_danger_list_page.dart +++ b/lib/pages/home/SafeCheck/DangeCheck/safeCheck_danger_list_page.dart @@ -452,7 +452,7 @@ class _SafecheckDangerListPageState extends State { flex: 2, child: SearchBarWidget( showResetButton: false, - hintText: "请输入关键字", + hintText: "输入被检查单位部门关键字", // isClickableOnly: true, onSearch: (text) { _search(); diff --git a/lib/pages/home/SafeCheck/Record/defend_record_list_page.dart b/lib/pages/home/SafeCheck/Record/defend_record_list_page.dart index a89a995..5420126 100644 --- a/lib/pages/home/SafeCheck/Record/defend_record_list_page.dart +++ b/lib/pages/home/SafeCheck/Record/defend_record_list_page.dart @@ -426,7 +426,7 @@ class _DefendRecordListPageState extends State { flex: 2, child: SearchBarWidget( showResetButton: false, - hintText: "请输入关键字", + hintText: "输入被检查单位部门关键字", // isClickableOnly: true, onSearch: (text) { _search(); diff --git a/lib/pages/home/SafeCheck/Start/safeCheck_start_detail.dart b/lib/pages/home/SafeCheck/Start/safeCheck_start_detail.dart index e4db3f6..e91988b 100644 --- a/lib/pages/home/SafeCheck/Start/safeCheck_start_detail.dart +++ b/lib/pages/home/SafeCheck/Start/safeCheck_start_detail.dart @@ -75,7 +75,7 @@ class _SafecheckStartDetailState extends State { {'name': 'INSPECTED_DEPARTMENT_ID', 'message': '请选择被检查单位'}, {'name': 'INSPECTED_SITEUSER_ID', 'message': '请选择被检查单位现场负责人'}, {'name': 'INSPECTION_PLACE', 'message': '请输入检查场所'}, - {'name': 'INSPECTION_TYPE', 'message': '请选择检查类型不能为空'}, + {'name': 'INSPECTION_TYPE', 'message': '请选择检查类型'}, {'name': 'INSPECTION_TIME_START', 'message': '请选择检查开始时间'}, {'name': 'INSPECTION_TIME_END', 'message': '请选择作业结束时间'}, ]; @@ -335,6 +335,7 @@ class _SafecheckStartDetailState extends State { } // 基于 rules 验证 + bool isRulesTrue=true; for (final r in rules) { final name = r['name'] ?? ''; final message = r['message'] ?? '请完善表单'; @@ -342,9 +343,15 @@ class _SafecheckStartDetailState extends State { if (v == null || v.toString().isEmpty || v.toString() == '请选择') { LoadingDialogHelper.hide(); ToastUtil.showNormal(context, message); + isRulesTrue=false; break; } } + if(!isRulesTrue){ + return; + } + + // situationList 每项 SITUATION 非空 final situations = (form['situationList'] as List?) ?? []; for (var i = 0; i < situations.length; i++) { diff --git a/lib/pages/mine/mine_set_pwd_page.dart b/lib/pages/mine/mine_set_pwd_page.dart index b56fb17..281977a 100644 --- a/lib/pages/mine/mine_set_pwd_page.dart +++ b/lib/pages/mine/mine_set_pwd_page.dart @@ -67,27 +67,39 @@ class _MineSetPwdPageState extends State { return; } - final RegExp regex = RegExp(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,18}$'); - if (regex.hasMatch(newPwd)) { - ToastUtil.showNormal(context, '密码长度为6-18位,必须包含大小字母,小写字母数字和特殊符号。'); - // _showMessage('密码长度为6-18位,必须包含大小字母,小写字母数字和特殊符号。'); - return; - } - // 示例验证:密码复杂度(实际可用正则加强) if (newPwd.length < 8 || newPwd.length > 18) { - ToastUtil.showNormal(context, '密码长度需在8-18位之间'); + ToastUtil.showNormal(context, '新密码长度需在8-18位之间'); // _showMessage('密码长度需在8-18位之间'); return; } - + // final RegExp regex = RegExp(r'^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,18}$'); + if (!isPasswordValid(newPwd)) { + ToastUtil.showNormal(context, '必须包含大小字母,小写字母数字和特殊符号。'); + // _showMessage('密码长度为6-18位,必须包含大小字母,小写字母数字和特殊符号。'); + return; + } _changePass(oldPwd,newPwd); } + bool isPasswordValid(String password) { + // 定义各个规则的正则表达式 + final hasUpperCase = RegExp(r'[A-Z]'); + final hasLowerCase = RegExp(r'[a-z]'); + final hasNumber = RegExp(r'[0-9]'); + final hasSpecialChar = RegExp(r'[!@#$%^&*(),.?":{}|<>]'); // 根据需要调整特殊符号 + + // 检查是否同时满足所有条件 + return hasUpperCase.hasMatch(password) && + hasLowerCase.hasMatch(password) && + hasNumber.hasMatch(password) && + hasSpecialChar.hasMatch(password); + } + void _showMessage(String msg) { ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(msg))); } @@ -174,6 +186,9 @@ class _MineSetPwdPageState extends State { (Route route) => false, // 移除所有历史路由 ); + }else if (raw['result'] == 'usererror'){ + ToastUtil.showNormal(context, '旧密码输入错误'); + // _showMessage('密码修改失败'); }else{ ToastUtil.showNormal(context, '密码修改失败'); // _showMessage('密码修改失败'); From e727730f0cf1945c11e1e3e8583ccb9f39ec6b98 Mon Sep 17 00:00:00 2001 From: xufei <727302827@qq.com> Date: Mon, 8 Sep 2025 17:53:44 +0800 Subject: [PATCH 3/3] =?UTF-8?q?2025.9.8=20=E4=BF=AE=E6=94=B9bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SafeCheck/custom/safe_drawer_page.dart | 1 + .../SafeCheck/safeCheck_detail.dart | 19 ++++++++-- .../pending_rectification_detail_page.dart | 30 +++++++++++++--- .../Start/safeCheck_start_list_page.dart | 7 ++-- lib/pages/home/risk/riskControl_page.dart | 5 +-- lib/pages/home/userInfo_page.dart | 5 ++- lib/pages/home/work/danger_project_page.dart | 3 ++ .../home/work/laws_regulations_page.dart | 3 ++ lib/pages/mine/mine_set_page.dart | 2 +- lib/pages/mine/mine_set_pwd_page.dart | 35 +++++++++++-------- lib/services/auth_service.dart | 9 +++++ 11 files changed, 93 insertions(+), 26 deletions(-) diff --git a/lib/pages/KeyProjects/SafeCheck/custom/safe_drawer_page.dart b/lib/pages/KeyProjects/SafeCheck/custom/safe_drawer_page.dart index 1bcfc88..cb35693 100644 --- a/lib/pages/KeyProjects/SafeCheck/custom/safe_drawer_page.dart +++ b/lib/pages/KeyProjects/SafeCheck/custom/safe_drawer_page.dart @@ -343,6 +343,7 @@ class _SafeDrawerPageState extends State { // ), // ), // ), + const SizedBox(height: 10), ItemListWidget.itemContainer(horizontal: 15,ListItemFactory.createRowSpaceBetweenItem( leftText: '整改部门', rightText:hiddenForm['RECTIFICATIONDEPT_NAME'] ?? '', diff --git a/lib/pages/KeyProjects/SafeCheck/safeCheck_detail.dart b/lib/pages/KeyProjects/SafeCheck/safeCheck_detail.dart index 5825948..15d838d 100644 --- a/lib/pages/KeyProjects/SafeCheck/safeCheck_detail.dart +++ b/lib/pages/KeyProjects/SafeCheck/safeCheck_detail.dart @@ -61,12 +61,15 @@ class _SafecheckDetailState extends State { {'name': 'UNITS_ID', 'message': '请选择被检查单位'}, {'name': 'PERSONNELMANAGEMENT_ID', 'message': '请选择被检查单位现场负责人'}, {'name': 'INSPECTION_PLACE', 'message': '请输入检查场所'}, - {'name': 'INSPECTION_TYPE', 'message': '请选择检查类型不能为空'}, + {'name': 'INSPECTION_TYPE', 'message': '请选择检查类型'}, {'name': 'INSPECTION_TIME_START', 'message': '请选择检查开始时间'}, {'name': 'INSPECTION_TIME_END', 'message': '请选择作业结束时间'}, - {'name': 'INSPECTION_USERS', 'message': '请输入检查人员'}, + ]; + + + Map form = { 'INSPECTION_USERS': '', 'KEYPROJECTCHECK_ID': '', // 检查ID @@ -448,6 +451,18 @@ class _SafecheckDetailState extends State { } } + + // {'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 final List> inspectors = form['inspectorList'] ?? []; final seenIds = {}; diff --git a/lib/pages/app/pending_rectification_detail_page.dart b/lib/pages/app/pending_rectification_detail_page.dart index b2c59fe..1ff82b3 100644 --- a/lib/pages/app/pending_rectification_detail_page.dart +++ b/lib/pages/app/pending_rectification_detail_page.dart @@ -112,7 +112,17 @@ class _PendingRectificationDetailPageState extends State>.from( + result['userList'] as List, + ); + }); + } } catch (e) { @@ -155,6 +165,15 @@ class _PendingRectificationDetailPageState extends State>.from( + result['userList'] as List, + ); + }); + } } catch (e) { @@ -402,9 +421,12 @@ class _PendingRectificationDetailPageState extends State>.from( - result['userList'] as List, - ); + setState(() { + _personCache=List>.from( + result['userList'] as List, + ); + }); + }), @@ -429,7 +451,7 @@ class _PendingRectificationDetailPageState extends State { } /// 申请 - void _handleApply() { + Future _handleApply() async { // 处理申请按钮点击逻辑 - pushPage(SafecheckStartDetail(INSPECTION_ID: '', type: 'add',), context); + await pushPage(SafecheckStartDetail(INSPECTION_ID: '', type: 'add',), context); + + _search(); + } /// 打开流程图 diff --git a/lib/pages/home/risk/riskControl_page.dart b/lib/pages/home/risk/riskControl_page.dart index e593b79..fd36376 100644 --- a/lib/pages/home/risk/riskControl_page.dart +++ b/lib/pages/home/risk/riskControl_page.dart @@ -264,10 +264,10 @@ class _RiskControlPageState extends State { if (_isLoading) return; _isLoading = true; - + LoadingDialogHelper.show(); final result = await ApiService.getRiskRecordList( currentPage, riskId, dept, level, keyWord); - + LoadingDialogHelper.hide(); if (result['result'] == 'success') { _totalPage =result["page"]['totalPage'] ?? 1; @@ -291,6 +291,7 @@ class _RiskControlPageState extends State { } } catch (e) { + LoadingDialogHelper.hide(); // 出错时可以 Toast 或者在页面上显示错误状态 print('加载数据失败:$e'); } finally { diff --git a/lib/pages/home/userInfo_page.dart b/lib/pages/home/userInfo_page.dart index 9bf90df..8d8cdcd 100644 --- a/lib/pages/home/userInfo_page.dart +++ b/lib/pages/home/userInfo_page.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:qhd_prevention/pages/my_appbar.dart'; +import 'package:qhd_prevention/tools/tools.dart'; import '../../http/ApiService.dart'; @@ -24,8 +25,9 @@ class _UserinfoPageState extends State { Future _getUserInfo() async { try { - + LoadingDialogHelper.show(); final result = await ApiService.getUserInfo(); + LoadingDialogHelper.hide(); if (result['result'] == 'success') { setState(() { user= result['pd']; @@ -35,6 +37,7 @@ class _UserinfoPageState extends State { _showMessage('加载数据失败'); } } catch (e) { + LoadingDialogHelper.hide(); // 出错时可以 Toast 或者在页面上显示错误状态 print('加载数据失败:$e'); } diff --git a/lib/pages/home/work/danger_project_page.dart b/lib/pages/home/work/danger_project_page.dart index 14aaf03..7c7a8b9 100644 --- a/lib/pages/home/work/danger_project_page.dart +++ b/lib/pages/home/work/danger_project_page.dart @@ -348,7 +348,9 @@ class _DangerProjectPageState extends State { Future _getAlreadyUpImages(Map item) async { try { + LoadingDialogHelper.show(); final result = await ApiService.getAlreadyUpImages(item["RECORDITEM_ID"]); + LoadingDialogHelper.hide(); if (result['result'] == 'success') { final List newList = result['imgs'] ?? []; List imgList = []; @@ -369,6 +371,7 @@ class _DangerProjectPageState extends State { ToastUtil.showNormal(context, "加载数据失败"); } } catch (e) { + LoadingDialogHelper.hide(); print('加载数据失败:$e'); } } diff --git a/lib/pages/home/work/laws_regulations_page.dart b/lib/pages/home/work/laws_regulations_page.dart index 16187de..0e72646 100644 --- a/lib/pages/home/work/laws_regulations_page.dart +++ b/lib/pages/home/work/laws_regulations_page.dart @@ -45,7 +45,9 @@ class _LawsRegulationsPage extends State { try { _accordionList.clear(); _fileList.clear(); + LoadingDialogHelper.show(); final result = await ApiService.getLowList(keyWord); + LoadingDialogHelper.hide(); if (result['result'] == 'success') { final List newList = result['varList'] ?? []; setState(() { @@ -60,6 +62,7 @@ class _LawsRegulationsPage extends State { _showMessage('加载数据失败'); } } catch (e) { + LoadingDialogHelper.hide(); // 出错时可以 Toast 或者在页面上显示错误状态 print('加载数据失败:$e'); } diff --git a/lib/pages/mine/mine_set_page.dart b/lib/pages/mine/mine_set_page.dart index 28b4fec..1d3afe1 100644 --- a/lib/pages/mine/mine_set_page.dart +++ b/lib/pages/mine/mine_set_page.dart @@ -59,7 +59,7 @@ class _MineSetPageState extends State { GestureDetector( child: _setItemWidget("修改密码"), onTap: () { - pushPage(const MineSetPwdPage(), context); + pushPage(const MineSetPwdPage("0"), context); }, ), const Divider(height: 1, color: Colors.black12), diff --git a/lib/pages/mine/mine_set_pwd_page.dart b/lib/pages/mine/mine_set_pwd_page.dart index 281977a..7e53e01 100644 --- a/lib/pages/mine/mine_set_pwd_page.dart +++ b/lib/pages/mine/mine_set_pwd_page.dart @@ -13,8 +13,9 @@ import '../../http/ApiService.dart'; import '../login_page.dart'; class MineSetPwdPage extends StatefulWidget { - const MineSetPwdPage({super.key}); + const MineSetPwdPage(this.type, {super.key}); + final String type; @override State createState() => _MineSetPwdPageState(); } @@ -38,19 +39,19 @@ class _MineSetPwdPageState extends State { final confirmPwd = _confirmPwdController.text.trim(); if (oldPwd.isEmpty) { - ToastUtil.showNormal(context, '请填写旧密码'); - // _showMessage('请填写旧密码'); + ToastUtil.showNormal(context, '请输入当前密码'); + // _showMessage('请填写当前密码'); return; } if (newPwd.isEmpty) { - ToastUtil.showNormal(context, '请填写新密码'); + ToastUtil.showNormal(context, '请输入新密码'); // _showMessage('请填写新密码'); return; } if (confirmPwd.isEmpty) { - ToastUtil.showNormal(context, '请填写确认新密码'); + ToastUtil.showNormal(context, '请输入确认密码'); // _showMessage('请填写确认新密码'); return; } @@ -62,14 +63,20 @@ class _MineSetPwdPageState extends State { // } if (newPwd != confirmPwd) { - ToastUtil.showNormal(context, '新密码与确认密码不一致'); + ToastUtil.showNormal(context, '两次输入的密码不一致'); // _showMessage('新密码与确认密码不一致'); return; } // 示例验证:密码复杂度(实际可用正则加强) - if (newPwd.length < 8 || newPwd.length > 18) { - ToastUtil.showNormal(context, '新密码长度需在8-18位之间'); + if (newPwd.length < 8 ) { + ToastUtil.showNormal(context, '密码需要大于8位'); + // _showMessage('密码长度需在8-18位之间'); + return; + } + + if ( newPwd.length > 18) { + ToastUtil.showNormal(context, '密码需要小于18位'); // _showMessage('密码长度需在8-18位之间'); return; } @@ -137,14 +144,14 @@ class _MineSetPwdPageState extends State { style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), ), const SizedBox(height: 30), - _buildPwdField('旧密码', _oldPwdController), + _buildPwdField('当前密码', _oldPwdController), const SizedBox(height: 20), _buildPwdField('新密码', _newPwdController), const SizedBox(height: 20), _buildPwdField('确认新密码', _confirmPwdController), const SizedBox(height: 15), const Text( - '需8-18位字母大小写、数字、字符混合', + '为了您的账户安全,请确保密码长度为 8-18 位,必须包含大小写字母+数字+特殊字符,例如:Aa@123456', style: TextStyle(color: Colors.grey, fontSize: 13), ), const SizedBox(height: 30,), @@ -173,7 +180,7 @@ class _MineSetPwdPageState extends State { // final hidCount = raw['hidCount'] as Map; // print(hidCount); if (raw['result'] == 'success') { - ToastUtil.showNormal(context, '密码修改成功'); + ToastUtil.showNormal(context, '新密码修改成功!'); // _showMessage('密码修改成功'); // 这里换成实际调用接口逻辑 Navigator.pop(context,true); @@ -187,17 +194,17 @@ class _MineSetPwdPageState extends State { ); }else if (raw['result'] == 'usererror'){ - ToastUtil.showNormal(context, '旧密码输入错误'); + ToastUtil.showNormal(context, '当前密码密码有误'); // _showMessage('密码修改失败'); }else{ - ToastUtil.showNormal(context, '密码修改失败'); + ToastUtil.showNormal(context, '登录错误!请联系管理员'); // _showMessage('密码修改失败'); } } catch (e) { // 出错时可以 Toast 或者在页面上显示错误状态 print('加载首页数据失败:$e'); - ToastUtil.showNormal(context, '密码修改失败'); + ToastUtil.showNormal(context, '登录错误!请联系管理员'); // _showMessage('密码修改失败'); } } diff --git a/lib/services/auth_service.dart b/lib/services/auth_service.dart index ce2481c..fea8133 100644 --- a/lib/services/auth_service.dart +++ b/lib/services/auth_service.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:encrypt/encrypt.dart' as encrypt; 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:shared_preferences/shared_preferences.dart'; import 'package:fluttertoast/fluttertoast.dart'; @@ -36,6 +37,14 @@ class AuthService { 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(); await prefs.setString(_keyUser, json.encode(data)); await prefs.setStringList(_keyRemember, [username, password]);