From 1296f51e5216801ba606c2d4fd2bf53c5c4a1c98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Fri, 21 Jun 2024 15:28:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BE=A4=E5=8F=91=E9=92=A5?= =?UTF-8?q?=E5=8C=99=EF=BC=8C=E5=8F=91=E9=80=81=E8=BF=9B=E5=BA=A6bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- images/lan/lan_en.json | 5 +- images/lan/lan_keys.json | 5 +- images/lan/lan_zh.json | 6 +- .../massSendElectronicKeyProgress_page.dart | 38 +++---------- .../massSendElectronicKey_logic.dart | 56 +++++++++---------- .../massSendElectronicKey_page.dart | 23 +++----- .../massSendElectronicKey_state.dart | 2 +- .../passwordKeyDetail_page.dart | 28 ++++++---- 8 files changed, 73 insertions(+), 90 deletions(-) diff --git a/images/lan/lan_en.json b/images/lan/lan_en.json index 41bfb321..5f66a7a8 100755 --- a/images/lan/lan_en.json +++ b/images/lan/lan_en.json @@ -921,5 +921,8 @@ "系统的全局配置在此项内进行设置":"The global configuration of the system is set in this item", "导出操作记录":"Export operation record", "立即查看":"View now", - "导出成功":"Export success" + "导出成功":"Export success", + "发送钥匙": "Send key", + "进度": "Progress", + "失败": "Failure" } diff --git a/images/lan/lan_keys.json b/images/lan/lan_keys.json index 33c7a7d9..c60eaf12 100755 --- a/images/lan/lan_keys.json +++ b/images/lan/lan_keys.json @@ -953,5 +953,8 @@ "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置", "导出操作记录":"导出操作记录", "立即查看":"立即查看", - "导出成功":"导出成功" + "导出成功":"导出成功", + "发送钥匙": "发送钥匙", + "进度": "进度", + "失败": "失败" } diff --git a/images/lan/lan_zh.json b/images/lan/lan_zh.json index 0450840d..59861ed2 100755 --- a/images/lan/lan_zh.json +++ b/images/lan/lan_zh.json @@ -918,5 +918,9 @@ "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置", "导出操作记录":"导出操作记录", "立即查看":"立即查看", - "导出成功":"导出成功" + "导出成功":"导出成功", + "发送钥匙": "发送钥匙", + "进度": "进度", + "失败": "失败" + } diff --git a/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKeyProgress_page.dart b/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKeyProgress_page.dart index 510cebb7..14e3739b 100644 --- a/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKeyProgress_page.dart +++ b/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKeyProgress_page.dart @@ -3,13 +3,15 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import '../../../../../appRouters.dart'; import '../../../../../app_settings/app_colors.dart'; import '../massSendLockGroupList/lockUserList/lockUserList_entity.dart'; +typedef BlockCallback = void Function(List receiverList); + class MassSendElectronicKeyProgressPage extends StatefulWidget { - MassSendElectronicKeyProgressPage({required this.receiverList, Key? key}) : super(key: key); + MassSendElectronicKeyProgressPage({required this.receiverList, required this.callback, Key? key}) : super(key: key); List receiverList; + BlockCallback callback; @override State createState() => _MassSendElectronicKeyProgressPageState(); @@ -86,7 +88,7 @@ class _MassSendElectronicKeyProgressPageState extends State[ Text('进度'.tr + ':' + '$failCount/${widget.receiverList.length}', style: TextStyle(fontSize: 24.sp)), SizedBox(width: 20.w), - Text('失败:$failCount', style: TextStyle(fontSize: 24.sp, color: Colors.red)) + Text('失败'.tr + ':' + '$failCount', style: TextStyle(fontSize: 24.sp, color: Colors.red)) ], ), ); @@ -117,19 +119,6 @@ class _MassSendElectronicKeyProgressPageState extends State[ - Text('发送中'.tr+'1/2', style: TextStyle(fontSize: 24.sp)), - SizedBox(width: 20.w), - Text('失败:1', style: TextStyle(fontSize: 24.sp, color: Colors.red)) - ], - ), - ); - } - Widget bottomBtn(){ return Container( height: 80.h, @@ -157,19 +146,10 @@ class _MassSendElectronicKeyProgressPageState extends State (element as LockUserItemData).isSendSuccess == true); - Navigator.pushNamed(context, Routers.massSendReceiverPage, - arguments: { - 'lockUserList': widget.receiverList, - }).then((Object? value) { - // if (value != null) { - // value as Map; - // state.receiverList = value['lockUserList']; - // setState(() {}); - // } - }); + Get.back(); + // 剔除发送失败的数据,重新发送 + widget.receiverList.removeWhere((element) => (element as LockUserItemData).isSendSuccess == true); + widget.callback(widget.receiverList); }, child: Container( alignment: Alignment.center, diff --git a/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_logic.dart b/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_logic.dart index 31b32a6c..fc26449c 100755 --- a/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_logic.dart +++ b/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_logic.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/main/lockDetail/lockSet/basicInformation/basicInformation/KeyDetailEntity.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/pickers/time_picker/time_utils.dart'; +import '../../../../../appRouters.dart'; import '../../../../../common/XSConstantMacro/XSConstantMacro.dart'; import '../../../../../network/api_repository.dart'; import '../../../../../tools/dateTool.dart'; @@ -31,7 +31,7 @@ class MassSendElectronicKeyLogic extends BaseGetXController { return; } - if (state.receiverList.isEmpty) { + if (state.receiverList.value.isEmpty) { showToast('请选择接收者'.tr); return; } @@ -57,33 +57,16 @@ class MassSendElectronicKeyLogic extends BaseGetXController { final KeyDetailEntity entity = await ApiRepository.to.canSendKey(getFailureDateTime, state.lockIdList); if (entity.errorCode!.codeIsSuccessful) { - - // final List futures = []; // 遍历发送 - for (int i = 0; i < state.receiverList.length; i++) { - final LockUserItemData data = state.receiverList[i]; - AppLog.log('receiverUserID:${data.userid} receiverUserName:${data.nickname} data.isSendSuccess:${data.isSendSuccess} data.sendFailReason:${data.sendFailReason}'); + for (int i = 0; i < state.receiverList.value.length; i++) { + final LockUserItemData data = state.receiverList.value[i]; await batchSendElectronicKeyRequest(data.userid ?? '', data.nickname ?? ''); - // futures.add( - // batchSendElectronicKeyRequest(data.userid ?? '', data.nickname ?? '').catchError((error) { - // // 处理异常,例如打印错误信息 - // AppLog.log('Error in batchSendElectronicKeyRequest: $error'); - // }) - // ); - AppLog.log('接口调用成功 receiverUserID:${data.userid} receiverUserName:${data.nickname} data.isSendSuccess:${data.isSendSuccess} data.sendFailReason:${data.sendFailReason}'); } - // 等待所有的Future完成 - // try { - // await Future.wait(futures); - // } catch (e) { - // AppLog.log('Error in Future.wait: $e'); - // } // 发送完成之后遍历数据,如果所有的数据都发送成功,改变state.isSendSuccess的值,如果有一个发送失败,不改变state.isSendSuccess的值,然后弹框显示进度 bool isSendSuccess = true; - for (int i = 0; i < state.receiverList.length; i++) { - final LockUserItemData data = state.receiverList[i]; - AppLog.log('遍历是否弹框 receiverUserID:${data.userid} receiverUserName:${data.nickname} data.isSendSuccess:${data.isSendSuccess} data.sendFailReason:${data.sendFailReason}'); + for (int i = 0; i < state.receiverList.value.length; i++) { + final LockUserItemData data = state.receiverList.value[i]; if (!(data.isSendSuccess ?? false)) { isSendSuccess = false; break; @@ -178,13 +161,12 @@ class MassSendElectronicKeyLogic extends BaseGetXController { state.isCreateUser.value = false; // 发送成功之后,查询发送类列表里面对应的数据,将发送成功的状态改为true - for (int i = 0; i < state.receiverList.length; i++) { - final LockUserItemData data = state.receiverList[i]; + for (int i = 0; i < state.receiverList.value.length; i++) { + final LockUserItemData data = state.receiverList.value[i]; if (data.userid == receiverUserID) { data.isSendSuccess = true; data.sendFailReason = ''; } - AppLog.log('发送成功:receiverUserID:$receiverUserID data.userid:${data.userid} receiverUserName:${data.nickname} data.isSendSuccess:${data.isSendSuccess} data.sendFailReason:${data.sendFailReason}'); } // resetData(); } else { @@ -192,16 +174,15 @@ class MassSendElectronicKeyLogic extends BaseGetXController { if (entity.errorCode == 425) { //用户未注册 重新发送 state.isCreateUser.value = true; - batchSendElectronicKeyRequest(receiverUserID, receiverUserName); + await batchSendElectronicKeyRequest(receiverUserID, receiverUserName); }else{ // 发送失败之后,查询发送类列表里面对应的数据,将发送成功的状态改为false - for (int i = 0; i < state.receiverList.length; i++) { - final LockUserItemData data = state.receiverList[i]; + for (int i = 0; i < state.receiverList.value.length; i++) { + final LockUserItemData data = state.receiverList.value[i]; if (data.userid == receiverUserID) { data.isSendSuccess = false; data.sendFailReason = entity.errorMsg; } - AppLog.log('发送失败之后 receiverUserID:$receiverUserID data.userid:${data.userid} receiverUserName:${data.nickname} data.isSendSuccess:${data.isSendSuccess} data.sendFailReason:${data.sendFailReason}'); } } } @@ -225,7 +206,20 @@ class MassSendElectronicKeyLogic extends BaseGetXController { builder: (BuildContext context) { return Dialog( backgroundColor: Colors.transparent, - child: MassSendElectronicKeyProgressPage(receiverList:state.receiverList), + child: MassSendElectronicKeyProgressPage(receiverList:state.receiverList.value, callback: (List receiverList){ + Navigator.pushNamed(context, Routers.massSendReceiverPage, + arguments: { + 'lockUserList': state.receiverList.value, + }).then((Object? value) { + if (value != null) { + value as Map; + state.receiverList.value = value['lockUserList']; + for (int i = 0; i < state.receiverList.value.length; i++) { + final LockUserItemData data = state.receiverList.value[i]; + } + } + }); + }), ); }, ); diff --git a/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_page.dart b/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_page.dart index 769c55ba..b806b4b1 100755 --- a/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_page.dart +++ b/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_page.dart @@ -1,11 +1,9 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/app_settings/app_colors.dart'; -import 'package:star_lock/app_settings/app_settings.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_state.dart'; import 'package:star_lock/tools/pickers/pickers.dart'; import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart'; @@ -155,26 +153,26 @@ class _MassSendElectronicKeyPageState extends State { Widget keyInfoWidget() { return Column( children: [ - CommonItem( + Obx(() => CommonItem( leftTitel: TranslationLoader.lanKeys!.receiver!.tr, - rightTitle: state.receiverList.isEmpty + rightTitle: state.receiverList.value.isEmpty ? TranslationLoader.lanKeys!.pleaseAdd!.tr - : state.receiverList.length.toString(), + : state.receiverList.value.length.toString(), isHaveLine: true, isHaveDirection: true, action: () { Navigator.pushNamed(context, Routers.massSendReceiverPage, arguments: { - 'lockUserList': state.receiverList, + 'lockUserList': state.receiverList.value, }).then((Object? value) { if (value != null) { value as Map; - state.receiverList = value['lockUserList']; - setState(() {}); + state.receiverList.value = value['lockUserList']; + // setState(() {}); } }); }, - ), + )), CommonItem( leftTitel: TranslationLoader.lanKeys!.countryAndRegion!.tr, rightTitle: '', @@ -247,10 +245,8 @@ class _MassSendElectronicKeyPageState extends State { rightTitle: state.endTime.value, isHaveDirection: true, action: () { - PDuration selectDate = - PDuration.parse(DateTime.tryParse(state.endTime.value)); - Pickers.showDatePicker(context, - selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) { + PDuration selectDate = PDuration.parse(DateTime.tryParse(state.endTime.value)); + Pickers.showDatePicker(context, selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (PDuration p) { state.endTime.value = DateTool().getYMDHNDateString(p, 1); }); })), @@ -298,7 +294,6 @@ class _MassSendElectronicKeyPageState extends State { state.endTime.value = result['endDate']; state.effectiveDateTime.value = result['starTime']; state.failureDateTime.value = result['endTime']; - AppLog.log('111weekdaysList:${state.weekdaysList} beginTime:${state.beginTime} endTime:${state.endTime} effectiveDateTime:${state.effectiveDateTime} failureDateTime:${state.failureDateTime}'); } })), Obx(() => Visibility( diff --git a/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_state.dart b/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_state.dart index d2208c78..bce5553f 100755 --- a/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_state.dart +++ b/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicKey_state.dart @@ -7,7 +7,7 @@ class MassSendElectronicKeyState{ late Contact contact; final RxBool isRemoteUnlock = false.obs; //是否允许远程开锁 - List receiverList = []; //接受者列表 + RxList receiverList = [].obs; //接受者列表 List lockIdList = []; //选中的锁ID列表 RxString beginTime = ''.obs; //默认为当前时间 开始时间 diff --git a/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart b/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart index 39cdf279..db0c1a52 100755 --- a/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart +++ b/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_logic.dart'; @@ -146,18 +147,21 @@ class _PasswordKeyDetailPageState extends State ], ), )), - CommonItem( - leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, - rightTitle: '', - isHaveDirection: true, - action: () { - Get.toNamed(Routers.lockOperatingRecordPage, - arguments: { - 'type': 1, - 'id': state.itemData.value.keyboardPwdId.toString(), - 'recordName': state.itemData.value.keyboardPwdName - }); - }), + Visibility( + visible: state.itemData.value.keyboardPwdType != 4, + child: CommonItem( + leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, + rightTitle: '', + isHaveDirection: true, + action: () { + Get.toNamed(Routers.lockOperatingRecordPage, + arguments: { + 'type': 1, + 'id': state.itemData.value.keyboardPwdId.toString(), + 'recordName': state.itemData.value.keyboardPwdName + }); + }), + ), Visibility( visible: state.itemData.value.isCustom == 0 && state.itemData.value.keyboardPwdType != 1 &&