From b237d827ac6f299daf327f4c73cbfcf61ac7e6a9 Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Thu, 20 Jun 2024 13:54:39 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E6=96=B0=E5=A2=9E=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E9=A1=B5=E9=9D=A2=E5=B8=83=E5=B1=80=E5=8F=8A?= =?UTF-8?q?=E9=80=BB=E8=BE=91=202=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=93=8D=E4=BD=9C=E8=AE=B0=E5=BD=95=E2=80=94=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E9=94=81=E9=A1=B5=E9=9D=A2=203=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=93=8D=E4=BD=9C=E8=AE=B0=E5=BD=95=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E9=A1=B5=E9=9D=A2=E5=8F=8A=E7=9B=B8=E5=BA=94?= =?UTF-8?q?=E5=88=86=E4=BA=AB=E8=B0=83=E8=B5=B7=204=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E8=A7=92=E8=89=B2=EF=BC=88=E8=B6=85=E7=BA=A7=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98/=E6=8E=88=E6=9D=83=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98/=E6=99=AE=E9=80=9A=E7=94=A8=E6=88=B7=EF=BC=89?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E4=B8=8D=E5=90=8C=E6=93=8D=E4=BD=9C=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=93=8D=E4=BD=9C=E6=9D=83=E9=99=90?= 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 | 5 +- lib/appRouters.dart | 45 ++-- .../batchExportLog/batchExportLog_logic.dart | 6 + .../batchExportLog/batchExportLog_page.dart | 120 +++++++++++ .../batchExportLog/batchExportLog_state.dart | 11 + .../doorLockLog/doorLockLog_page.dart | 17 +- .../exportRecordDialog_page.dart | 20 +- .../exportSuccess/exportSuccess_logic.dart | 6 + .../exportSuccess/exportSuccess_page.dart | 196 ++++++++++++++++++ .../exportSuccess/exportSuccess_state.dart | 1 + 12 files changed, 399 insertions(+), 38 deletions(-) create mode 100644 lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_logic.dart create mode 100644 lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_page.dart create mode 100644 lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_state.dart diff --git a/images/lan/lan_en.json b/images/lan/lan_en.json index 241ecd5b..41bfb321 100755 --- a/images/lan/lan_en.json +++ b/images/lan/lan_en.json @@ -918,5 +918,8 @@ "智能分析":"Intelligent analytics", "精准识别设备事件,过滤无效信息":"Accurately identify device events and filter out invalid information", "系统设置":"System settings", - "系统的全局配置在此项内进行设置":"The global configuration of the system is set in this item" + "系统的全局配置在此项内进行设置":"The global configuration of the system is set in this item", + "导出操作记录":"Export operation record", + "立即查看":"View now", + "导出成功":"Export success" } diff --git a/images/lan/lan_keys.json b/images/lan/lan_keys.json index c0ea8638..33c7a7d9 100755 --- a/images/lan/lan_keys.json +++ b/images/lan/lan_keys.json @@ -950,5 +950,8 @@ "智能分析":"智能分析", "精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息", "系统设置":"系统设置", - "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置" + "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置", + "导出操作记录":"导出操作记录", + "立即查看":"立即查看", + "导出成功":"导出成功" } diff --git a/images/lan/lan_zh.json b/images/lan/lan_zh.json index bd6ef1fa..0450840d 100755 --- a/images/lan/lan_zh.json +++ b/images/lan/lan_zh.json @@ -915,5 +915,8 @@ "智能分析":"智能分析", "精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息", "系统设置":"系统设置", - "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置" + "系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置", + "导出操作记录":"导出操作记录", + "立即查看":"立即查看", + "导出成功":"导出成功" } diff --git a/lib/appRouters.dart b/lib/appRouters.dart index 48d10243..e5d54058 100755 --- a/lib/appRouters.dart +++ b/lib/appRouters.dart @@ -6,8 +6,10 @@ import 'package:star_lock/login/login/starLock_login_xhj_page.dart'; import 'package:star_lock/login/register/starLock_register_binding.dart'; import 'package:star_lock/login/register/starLock_register_xhj_page.dart'; import 'package:star_lock/main/lockDetail/accessoriesList/accessoriesList_page.dart'; +import 'package:star_lock/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_page.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_page.dart'; - +import 'package:star_lock/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_page.dart'; +import 'package:star_lock/main/lockDetail/doorLockLog/viewExportRecord/viewExportRecord_page.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_page.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_page.dart'; @@ -15,6 +17,7 @@ import 'package:star_lock/main/lockDetail/face/faceDetail/faceDetail_page.dart'; import 'package:star_lock/main/lockDetail/iris/addIris/addIris_page.dart'; import 'package:star_lock/main/lockDetail/iris/addIrisType/addIrisTypeManage/addIrisTypeManage_page.dart'; import 'package:star_lock/main/lockDetail/iris/irisList/irisList_page.dart'; +import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_main_page.dart'; import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeCustomMode/catEyeCustomMode_page.dart'; import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/catEyeSet/catEyeSet_page.dart'; import 'package:star_lock/main/lockDetail/lockSet/catEyeSet/videoSlot/videoSlot_page.dart'; @@ -22,7 +25,6 @@ import 'package:star_lock/main/lockDetail/lockSet/faceUnlock/faceUnlock_page.dar import 'package:star_lock/main/lockDetail/lockSet/liveVideo/liveVideo_page.dart'; import 'package:star_lock/main/lockDetail/lockSet/motorPower/motorPower_page.dart'; import 'package:star_lock/main/lockDetail/lockSet/openDoorDirection/openDoorDirection_page.dart'; -import 'package:star_lock/main/lockDetail/lockDetail/lockDetail_main_page.dart'; import 'package:star_lock/main/lockDetail/messageWarn/addFamily/addFamily_page.dart'; import 'package:star_lock/main/lockDetail/messageWarn/lockUser/lockUser_page.dart'; import 'package:star_lock/main/lockDetail/messageWarn/msgNotification/coerceOpenDoor/coerceFingerprint/coerceFingerprint_page.dart'; @@ -62,6 +64,8 @@ import 'login/login/starLock_login_page.dart'; import 'login/register/starLock_register_page.dart'; import 'login/selectCountryRegion/selectCountryRegion_page.dart'; import 'main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart'; +import 'main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_page.dart'; +import 'main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLockManage/volumeAuthorizationLockManage_page.dart'; import 'main/lockDetail/card/addCardType/addCardType_page.dart'; import 'main/lockDetail/card/addICCard/addICCard_page.dart'; import 'main/lockDetail/card/cardDetail/cardDetail_page.dart'; @@ -79,9 +83,13 @@ import 'main/lockDetail/checkingIn/checkingInSetWorkdaySet/checkingInSetWorkdayS import 'main/lockDetail/checkingIn/checkingInStaff/checkingInSetAddStaff/checkingInAddStaff_page.dart'; import 'main/lockDetail/checkingIn/checkingInStaff/checkingInSetStaffList/checkingInStaffList_page.dart'; import 'main/lockDetail/checkingIn/checkingInStaff/checkingInStaffDetail/checkingInStaffDetail_page.dart'; +import 'main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart'; +import 'main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart'; import 'main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyPeriodValidity/electronicKeyPeriodValidity_page.dart'; +import 'main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart'; import 'main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey/massSendElectronicManageKey/massSendElectronicKeyManage_page.dart'; import 'main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart'; +import 'main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_page.dart'; import 'main/lockDetail/face/addFace/addFace_page.dart'; import 'main/lockDetail/face/addFaceType/addFaceType_page.dart'; import 'main/lockDetail/face/faceList/faceList_page.dart'; @@ -90,6 +98,7 @@ import 'main/lockDetail/fingerprint/addFingerprintSelectType/addFingerprintType_ import 'main/lockDetail/fingerprint/addFingerprintTip/addFingerprintTip_page.dart'; import 'main/lockDetail/fingerprint/fingerprintDetail/fingerprintDetail_page.dart'; import 'main/lockDetail/fingerprint/fingerprintList/fingerprintList_page.dart'; +import 'main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart'; import 'main/lockDetail/lockSet/automaticBlocking/automaticBlocking_page.dart'; import 'main/lockDetail/lockSet/basicInformation/adminOpenLockPassword/adminOpenLockPassword_page.dart'; import 'main/lockDetail/lockSet/basicInformation/basicInformation/basicInformation_page.dart'; @@ -122,6 +131,8 @@ import 'main/lockDetail/lockSet/wirelessKeyboard/selectWirelessKeyboard/selectWi import 'main/lockDetail/lockSet/wirelessKeyboard/wirelessKeyboardList/wirelessKeyboard_page.dart'; import 'main/lockDetail/monitoring/monitoring/lockMonitoring_page.dart'; import 'main/lockDetail/monitoring/monitoringRealTimeScreen/monitoringRealTimeScreen_page.dart'; +import 'main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart'; +import 'main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart'; import 'main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart'; import 'main/lockDetail/realTimePicture/realTimePicture_page.dart'; import 'main/lockDetail/remoteControl/addRemoteControl/addRemoteControl_page.dart'; @@ -132,18 +143,9 @@ import 'main/lockDetail/videoLog/videoLogDetail/videoLogDetail_page.dart'; import 'main/lockDetail/videoLog/videoLogDownLoad/videoLogDownLoad_page.dart'; import 'main/lockMian/demoMode/demoModeLockDetail/demoModeLockDetail_page.dart'; import 'main/lockMian/demoMode/demoModeLockSet/demoModeLockSet_page.dart'; +import 'main/lockMian/lockMain/lockMain_page.dart'; import 'mine/about/about_page.dart'; import 'mine/addLock/addLock/addLock_page.dart'; -import 'main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_page.dart'; -import 'main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLockManage/volumeAuthorizationLockManage_page.dart'; -import 'main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart'; -import 'main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart'; -import 'main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart'; -import 'main/lockDetail/electronicKey/sendEmailNotification/sendEmailNotification_page.dart'; -import 'main/lockDetail/lockOperatingRecord/lockOperatingRecord_page.dart'; -import 'main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart'; -import 'main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart'; -import 'main/lockMian/lockMain/lockMain_page.dart'; import 'mine/addLock/addLockSelectCountry/addLockSelectCountry_page.dart'; import 'mine/addLock/lockAddress/gaode/lockAddressGaoDe_page.dart'; import 'mine/addLock/lockAddress/lockAddress/lockAddress_page.dart'; @@ -162,11 +164,11 @@ import 'mine/message/messageDetail/messageDetail_page.dart'; import 'mine/message/messageList/messageList_page.dart'; import 'mine/mine/starLockMine_page.dart'; import 'mine/mineMultiLanguage/mineMultiLanguage_page.dart'; -import 'mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart'; import 'mine/minePersonInfo/minePersonInfoEditAccount/minePersonInfoEditAccount/mineUnbindPhoneOrEmail_page.dart'; import 'mine/minePersonInfo/minePersonInfoEditAccount/minePersonInfoEditAccountNext/minePersonInfoEditAccountNext_page.dart'; import 'mine/minePersonInfo/minePersonInfoEditIphone/minePersonInfoEditIphone_page.dart'; import 'mine/minePersonInfo/minePersonInfoEditName/minePersonInfoEditName_page.dart'; +import 'mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart'; import 'mine/minePersonInfo/minePersonInfoResetPassword/minePersonInfoResetPassword_page.dart'; import 'mine/minePersonInfo/minePersonInfoSetSafetyProblem/minePersonInfoSetSafetyProblem_page.dart'; import 'mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart'; @@ -174,6 +176,7 @@ import 'mine/mineSet/authorityManagement/authorityManagement_page.dart'; import 'mine/mineSet/authorityManagement/getDeviceList_page.dart'; import 'mine/mineSet/authorityManagement/getNameList_page.dart'; import 'mine/mineSet/authorizedAdministrator/addAuthorizedAdministrator/addAuthorizedAdministratorManage/addAuthorizedAdministratorManage_page.dart'; +import 'mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart'; import 'mine/mineSet/hideInvalidUnlockPermissions/hideInvalidUnlockPermissions_page.dart'; import 'mine/mineSet/lockGroup/groupEditLock/groupEditLock_page.dart'; import 'mine/mineSet/lockGroup/lockGroupDetailList/lockItemList_page.dart'; @@ -192,7 +195,6 @@ import 'mine/valueAddedServices/valueAddedServicesNoteAndEmailDetail/valueAddedS import 'mine/valueAddedServices/valueAddedServicesRealName/value_added_services_real_name_page.dart'; import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/newSMSTemplate_page.dart'; import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/customSMSTemplateList_page.dart'; -import 'mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart'; import 'starLockApplication/starLockApplication.dart'; import 'tools/seletKeyCyclicDate/seletKeyCyclicDate_page.dart'; @@ -486,6 +488,9 @@ abstract class Routers { '/advancedFunctionRecordPage'; //高级功能购买记录 static const String administratorAssociationLockPage = '/administratorAssociationLockPage'; //我的设置-授权管理员-关联锁 + static const String batchExportLogPage = '/batchExportLogPage'; //批量导出操作记录 + static const String exportSuccessPage = '/exportSuccessPage'; //导出成功 + static const String viewExportRecordPage = '/viewExportRecordPage'; //查看导出记录 static const String login = '/login'; //登录 } @@ -498,7 +503,7 @@ abstract class AppRouters { ), GetPage( name: Routers.login, - page: () => F.sw( + page: () => F.sw( skyCall: () => const StarLockLoginPage(), xhjCall: () => const StarLockLoginXHJPage()), ), @@ -1143,8 +1148,16 @@ abstract class AppRouters { GetPage( name: Routers.administratorAssociationLockPage, page: () => const AdministratorAssociationLockPage()), - GetPage( + GetPage( name: Routers.expireKeyChangeDatePage, page: () => const ExpireKeyChangeDatePage()), + GetPage( + name: Routers.batchExportLogPage, + page: () => const BatchExportLogPage()), + GetPage( + name: Routers.exportSuccessPage, page: () => const ExportSuccessPage()), + GetPage( + name: Routers.viewExportRecordPage, + page: () => const ViewExportRecordPage()), ]; } diff --git a/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_logic.dart b/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_logic.dart index e69de29b..bdf4532e 100644 --- a/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_logic.dart +++ b/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_logic.dart @@ -0,0 +1,6 @@ +import 'package:star_lock/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_state.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; + +class BatchExportLogLogic extends BaseGetXController { + BatchExportLogState state = BatchExportLogState(); +} diff --git a/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_page.dart b/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_page.dart index e69de29b..8382208d 100644 --- a/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_page.dart +++ b/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_page.dart @@ -0,0 +1,120 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/appRouters.dart'; +import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_logic.dart'; +import 'package:star_lock/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_state.dart'; +import 'package:star_lock/tools/commonItem.dart'; +import 'package:star_lock/tools/dateTool.dart'; +import 'package:star_lock/tools/pickers/pickers.dart'; +import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart'; +import 'package:star_lock/tools/pickers/time_picker/model/pduration.dart'; +import 'package:star_lock/tools/submitBtn.dart'; +import 'package:star_lock/tools/titleAppBar.dart'; +import 'package:star_lock/translations/trans_lib.dart'; + +class BatchExportLogPage extends StatefulWidget { + const BatchExportLogPage({Key? key}) : super(key: key); + + @override + State createState() => _BatchExportLogPageState(); +} + +class _BatchExportLogPageState extends State + with RouteAware { + final BatchExportLogLogic logic = Get.put(BatchExportLogLogic()); + final BatchExportLogState state = Get.find().state; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.mainBackgroundColor, + appBar: TitleAppBar( + barTitle: '导出操作记录'.tr, + haveBack: true, + backgroundColor: AppColors.mainColor, + ), + body: Column( + mainAxisSize: MainAxisSize.max, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + CommonItem( + leftTitel: TranslationLoader.lanKeys!.lock!.tr, + rightTitle: state.lockIdList.isEmpty + ? TranslationLoader.lanKeys!.pleaseSelect!.tr + : state.lockIdList.length.toString(), + isHaveDirection: true, + action: () async { + final result = await Get.toNamed( + Routers.massSendLockGroupListPage, + arguments: { + 'keyLimits': '1', + 'lockIdList': state.lockIdList + }); + if (result != null && result.isNotEmpty) { + final List selectLockIdList = result['selectLockIdList']; + state.lockIdList.clear(); + selectLockIdList.forEach((element) { + state.lockIdList.add(element); + }); + setState(() {}); + } + }), + SizedBox( + height: 10.h, + ), + keyTimeWidget(), + SizedBox( + height: 60.h, + ), + SubmitBtn( + btnName: '导出'.tr, + onClick: () { + if (state.lockIdList.isEmpty) { + logic.showToast('请选择锁'.tr); + return; + } + Get.toNamed(Routers.exportSuccessPage); + }), + ], + ), + ); + } + + // 生效失效时间 + Widget keyTimeWidget() { + return Column( + children: [ + Obx(() => CommonItem( + leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr, + rightTitle: state.beginTime.value, + isHaveLine: true, + isHaveDirection: true, + action: () { + final PDuration selectDate = + PDuration.parse(DateTime.tryParse(state.beginTime.value)); + Pickers.showDatePicker(context, + selectDate: selectDate, + mode: DateMode.YMD, onConfirm: (PDuration p) { + state.beginTime.value = DateTool().getYMDHNDateString(p, 2); + }); + })), + Obx(() => CommonItem( + leftTitel: TranslationLoader.lanKeys!.failureTime!.tr, + rightTitle: state.endTime.value, + isHaveDirection: true, + action: () { + final PDuration selectDate = + PDuration.parse(DateTime.tryParse(state.endTime.value)); + Pickers.showDatePicker(context, + selectDate: selectDate, + mode: DateMode.YMD, onConfirm: (PDuration p) { + state.endTime.value = DateTool().getYMDHNDateString(p, 2); + }); + })), + Container(height: 10.h), + ], + ); + } +} diff --git a/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_state.dart b/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_state.dart index e69de29b..2e44ae4a 100644 --- a/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_state.dart +++ b/lib/main/lockDetail/doorLockLog/batchExportLog/batchExportLog_state.dart @@ -0,0 +1,11 @@ +import 'package:get/get.dart'; +import 'package:intl/intl.dart'; + +class BatchExportLogState { + List lockIdList = []; //选中的锁ID列表 + + RxString beginTime = + DateFormat('yyyy-MM-dd').format(DateTime.now()).obs; //默认为当前时间 开始时间 + RxString endTime = + DateFormat('yyyy-MM-dd').format(DateTime.now()).obs; //默认为当前时间 结束时间 +} diff --git a/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart b/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart index 92244573..95d2f8b8 100755 --- a/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart +++ b/lib/main/lockDetail/doorLockLog/doorLockLog_page.dart @@ -14,7 +14,6 @@ import 'package:star_lock/tools/menuItem/xsDropDownWidget.dart'; import 'package:star_lock/tools/noData.dart'; import 'package:star_lock/tools/showCupertinoAlertView.dart'; import 'package:star_lock/tools/showTipView.dart'; -import 'package:star_lock/tools/submitBtn.dart'; import 'package:timelines/timelines.dart'; import '../../../app_settings/app_colors.dart'; @@ -43,7 +42,8 @@ class _DoorLockLogPageState extends State with RouteAware { backgroundColor: AppColors.mainColor, actionsList: [ Visibility( - visible: CommonDataManage().currentKeyInfo.isLockOwner == 1, + visible: CommonDataManage().currentKeyInfo.isLockOwner == 1 || + CommonDataManage().currentKeyInfo.keyRight == 1, child: GestureDetector( child: Image.asset( 'images/icon_tips_Q.png', @@ -59,15 +59,18 @@ class _DoorLockLogPageState extends State with RouteAware { }, )), Visibility( - visible: CommonDataManage().currentKeyInfo.isLockOwner == 1, + visible: CommonDataManage().currentKeyInfo.isLockOwner == 1 || + CommonDataManage().currentKeyInfo.keyRight == 1, child: PopupMenuButton( onSelected: _onMenuItemSelected, color: Colors.black, itemBuilder: (BuildContext context) { return >[ _buildCustomPopupMenuItem('读取记录'), - const PopupMenuDivider(), - _buildCustomPopupMenuItem('清空记录'), + if (CommonDataManage().currentKeyInfo.isLockOwner == 1) + const PopupMenuDivider(), + if (CommonDataManage().currentKeyInfo.isLockOwner == 1) + _buildCustomPopupMenuItem('清空记录'), const PopupMenuDivider(), _buildCustomPopupMenuItem('导出记录'), ]; @@ -138,7 +141,9 @@ class _DoorLockLogPageState extends State with RouteAware { context: context, builder: (BuildContext context) { return ExportRecordDialog( - onExport: () {}, + onExport: () { + Get.toNamed(Routers.exportSuccessPage); + }, ); }, ); diff --git a/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_page.dart b/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_page.dart index 615c954f..46f9b303 100644 --- a/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_page.dart +++ b/lib/main/lockDetail/doorLockLog/exportRecordDialog/exportRecordDialog_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; +import 'package:star_lock/appRouters.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/tools/pickers/pickers.dart'; import 'package:star_lock/tools/pickers/time_picker/model/date_mode.dart'; @@ -46,8 +47,8 @@ class _DerivedRecordWidget extends StatefulWidget { } class __DerivedRecordWidgetState extends State<_DerivedRecordWidget> { - DateTime? startDate; - DateTime? endDate; + DateTime? startDate = DateTime.now(); + DateTime? endDate = DateTime.now(); @override Widget build(BuildContext context) { @@ -76,18 +77,13 @@ class __DerivedRecordWidgetState extends State<_DerivedRecordWidget> { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ _buildDateContainer( - startDate != null - ? DateFormat('yyyy-MM-dd').format(startDate!) - : DateFormat('yyyy-MM-dd').format(DateTime.now()), + DateFormat('yyyy-MM-dd').format(startDate!), _showStartDatePicker), Text( '--', style: TextStyle(fontSize: 24.sp), ), - _buildDateContainer( - endDate != null - ? DateFormat('yyyy-MM-dd').format(endDate!) - : DateFormat('yyyy-MM-dd').format(DateTime.now()), + _buildDateContainer(DateFormat('yyyy-MM-dd').format(endDate!), _showEndDatePicker), ], ), @@ -106,7 +102,8 @@ class __DerivedRecordWidgetState extends State<_DerivedRecordWidget> { children: [ TextButton( onPressed: () { - // 批量导出的处理逻辑 + Navigator.of(context).pop(); + Get.toNamed(Routers.batchExportLogPage); }, child: Text( '批量导出'.tr, @@ -197,8 +194,5 @@ class __DerivedRecordWidgetState extends State<_DerivedRecordWidget> { // 调用导出成功后的回调 widget.onExport(); - - // 关闭弹窗 - Navigator.of(context).pop(); } } diff --git a/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_logic.dart b/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_logic.dart new file mode 100644 index 00000000..a341afc9 --- /dev/null +++ b/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_logic.dart @@ -0,0 +1,6 @@ +import 'package:star_lock/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_state.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; + +class ExportSuccessLogic extends BaseGetXController { + ExportSuccessState state = ExportSuccessState(); +} diff --git a/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_page.dart b/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_page.dart new file mode 100644 index 00000000..19f91f79 --- /dev/null +++ b/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_page.dart @@ -0,0 +1,196 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/appRouters.dart'; +import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_logic.dart'; +import 'package:star_lock/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_state.dart'; +import 'package:star_lock/tools/commonDataManage.dart'; +import 'package:star_lock/tools/submitBtn.dart'; +import 'package:star_lock/tools/titleAppBar.dart'; + +class ExportSuccessPage extends StatefulWidget { + const ExportSuccessPage({Key? key}) : super(key: key); + + @override + State createState() => _ExportSuccessPageState(); +} + +class _ExportSuccessPageState extends State with RouteAware { + final ExportSuccessLogic logic = Get.put(ExportSuccessLogic()); + final ExportSuccessState state = Get.find().state; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.mainBackgroundColor, + appBar: TitleAppBar( + barTitle: '导出'.tr, + haveBack: true, + backgroundColor: AppColors.mainColor, + ), + body: sendElectronicKeySucceed(), + ); + } + + // 导出成功 + + Widget sendElectronicKeySucceed() { + return Column( + children: [ + Container( + height: 250.h, + width: 1.sw, + color: Colors.white, + child: Column( + children: [ + SizedBox( + height: 30.h, + ), + Image.asset( + 'images/icon_send_success.png', + width: 100.w, + height: 100.w, + ), + SizedBox( + height: 20.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + '导出成功'.tr, + style: TextStyle( + fontSize: 26.sp, + color: Colors.black, + fontWeight: FontWeight.w500), + ), + ], + ), + ], + ), + ), + SizedBox( + height: 60.h, + ), + SubmitBtn( + btnName: '立即查看'.tr, + onClick: () { + Get.toNamed(Routers.viewExportRecordPage); + }), + SizedBox( + height: 20.h, + ), + OutLineBtn( + btnName: '分享'.tr, + onClick: () { + _openModalBottomSheet(); + }, + ), + ], + ); + } + + Future _openModalBottomSheet() async { + showModalBottomSheet( + context: context, + shape: RoundedRectangleBorder( + borderRadius: BorderRadiusDirectional.circular(10)), + constraints: BoxConstraints(maxHeight: 270.h), + builder: (BuildContext context) { + return Column( + children: [ + SizedBox( + width: ScreenUtil().screenWidth, + height: 160.h, + child: ListView( + scrollDirection: Axis.horizontal, //横向滚动 + children: initBottomSheetList()), + ), + Container( + height: 8.h, + color: AppColors.greyBackgroundColor, + ), + TextButton( + style: ButtonStyle( + overlayColor: + MaterialStateProperty.all(Colors.white)), + child: Text( + '取消'.tr, + style: TextStyle( + color: Colors.black, fontSize: ScreenUtil().setSp(24)), + ), + onPressed: () { + Navigator.pop(context); + }, + ) + ], + ); + }); + } + + List initBottomSheetList() { + final List widgetList = []; + + widgetList.add(buildCenter3('images/icon_wechat.png', '微信好友'.tr, 0)); + widgetList.add(buildCenter3('images/icon_message.png', '短信'.tr, 1)); + widgetList.add(buildCenter3('images/icon_email.png', '邮件'.tr, 2)); + widgetList.add(buildCenter3('images/icon_more.png', '更多'.tr, 3)); + + return widgetList; + } + + GestureDetector buildCenter3( + String imageName, String titleStr, int itemIndex) { + return GestureDetector( + child: Container( + width: 120.w, + // height: 64.h, + margin: + EdgeInsets.only(top: 20.w, bottom: 20.w, left: 10.w, right: 10.w), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Image.asset( + imageName, + width: 50.w, + height: 50.h, + ), + SizedBox( + height: 16.w, + ), + Text( + titleStr, + style: TextStyle( + fontSize: ScreenUtil().setSp(20), color: Colors.black), + ), + ], + ), + ), + onTap: () => jumpSmartDeviceRoute(itemIndex), + ); + } + + Future jumpSmartDeviceRoute(int itemIndex) async { + Get.back(); + // final String pwdShareStr = logic.getShareContentStr(); + switch (itemIndex) { + case 0: //微信好友 + // NativeInteractionTool().loadNativeShare(shareText: pwdShareStr); + break; + case 1: //短信 + case 2: //邮件 + Get.toNamed(Routers.sendEmailNotificationPage, + arguments: { + 'receiver': '', + 'channelType': itemIndex == 1 ? 1 : 2, + 'keyId': CommonDataManage().currentKeyInfo.keyId, + }); + break; + case 3: //更多 + // NativeInteractionTool().loadNativeShare(shareText: pwdShareStr); + break; + default: + } + } +} diff --git a/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_state.dart b/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_state.dart new file mode 100644 index 00000000..34c6f205 --- /dev/null +++ b/lib/main/lockDetail/doorLockLog/exportSuccess/exportSuccess_state.dart @@ -0,0 +1 @@ +class ExportSuccessState {}