1,新增批量导出页面布局及逻辑
2,新增导出操作记录—选择锁页面 3,新增操作记录导出成功页面及相应分享调起 4,根据角色(超级管理员/授权管理员/普通用户)展示不同操作记录操作权限
This commit is contained in:
parent
4cf9c99e5d
commit
b237d827ac
@ -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"
|
||||
}
|
||||
|
||||
@ -950,5 +950,8 @@
|
||||
"智能分析":"智能分析",
|
||||
"精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息",
|
||||
"系统设置":"系统设置",
|
||||
"系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置"
|
||||
"系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置",
|
||||
"导出操作记录":"导出操作记录",
|
||||
"立即查看":"立即查看",
|
||||
"导出成功":"导出成功"
|
||||
}
|
||||
|
||||
@ -915,5 +915,8 @@
|
||||
"智能分析":"智能分析",
|
||||
"精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息",
|
||||
"系统设置":"系统设置",
|
||||
"系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置"
|
||||
"系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置",
|
||||
"导出操作记录":"导出操作记录",
|
||||
"立即查看":"立即查看",
|
||||
"导出成功":"导出成功"
|
||||
}
|
||||
|
||||
@ -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<dynamic>(
|
||||
name: Routers.login,
|
||||
page: () => F.sw(
|
||||
page: () => F.sw(
|
||||
skyCall: () => const StarLockLoginPage(),
|
||||
xhjCall: () => const StarLockLoginXHJPage()),
|
||||
),
|
||||
@ -1143,8 +1148,16 @@ abstract class AppRouters {
|
||||
GetPage<dynamic>(
|
||||
name: Routers.administratorAssociationLockPage,
|
||||
page: () => const AdministratorAssociationLockPage()),
|
||||
GetPage(
|
||||
GetPage<dynamic>(
|
||||
name: Routers.expireKeyChangeDatePage,
|
||||
page: () => const ExpireKeyChangeDatePage()),
|
||||
GetPage<dynamic>(
|
||||
name: Routers.batchExportLogPage,
|
||||
page: () => const BatchExportLogPage()),
|
||||
GetPage<dynamic>(
|
||||
name: Routers.exportSuccessPage, page: () => const ExportSuccessPage()),
|
||||
GetPage<dynamic>(
|
||||
name: Routers.viewExportRecordPage,
|
||||
page: () => const ViewExportRecordPage()),
|
||||
];
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
@ -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<BatchExportLogPage> createState() => _BatchExportLogPageState();
|
||||
}
|
||||
|
||||
class _BatchExportLogPageState extends State<BatchExportLogPage>
|
||||
with RouteAware {
|
||||
final BatchExportLogLogic logic = Get.put(BatchExportLogLogic());
|
||||
final BatchExportLogState state = Get.find<BatchExportLogLogic>().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: <Widget>[
|
||||
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: <String, Object>{
|
||||
'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: <Widget>[
|
||||
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),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
class BatchExportLogState {
|
||||
List<int> lockIdList = <int>[]; //选中的锁ID列表
|
||||
|
||||
RxString beginTime =
|
||||
DateFormat('yyyy-MM-dd').format(DateTime.now()).obs; //默认为当前时间 开始时间
|
||||
RxString endTime =
|
||||
DateFormat('yyyy-MM-dd').format(DateTime.now()).obs; //默认为当前时间 结束时间
|
||||
}
|
||||
@ -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<DoorLockLogPage> with RouteAware {
|
||||
backgroundColor: AppColors.mainColor,
|
||||
actionsList: <Widget>[
|
||||
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<DoorLockLogPage> with RouteAware {
|
||||
},
|
||||
)),
|
||||
Visibility(
|
||||
visible: CommonDataManage().currentKeyInfo.isLockOwner == 1,
|
||||
visible: CommonDataManage().currentKeyInfo.isLockOwner == 1 ||
|
||||
CommonDataManage().currentKeyInfo.keyRight == 1,
|
||||
child: PopupMenuButton<String>(
|
||||
onSelected: _onMenuItemSelected,
|
||||
color: Colors.black,
|
||||
itemBuilder: (BuildContext context) {
|
||||
return <PopupMenuEntry<String>>[
|
||||
_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<DoorLockLogPage> with RouteAware {
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return ExportRecordDialog(
|
||||
onExport: () {},
|
||||
onExport: () {
|
||||
Get.toNamed(Routers.exportSuccessPage);
|
||||
},
|
||||
);
|
||||
},
|
||||
);
|
||||
|
||||
@ -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: <Widget>[
|
||||
_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: <Widget>[
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
@ -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<ExportSuccessPage> createState() => _ExportSuccessPageState();
|
||||
}
|
||||
|
||||
class _ExportSuccessPageState extends State<ExportSuccessPage> with RouteAware {
|
||||
final ExportSuccessLogic logic = Get.put(ExportSuccessLogic());
|
||||
final ExportSuccessState state = Get.find<ExportSuccessLogic>().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: <Widget>[
|
||||
Container(
|
||||
height: 250.h,
|
||||
width: 1.sw,
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
children: <Widget>[
|
||||
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: <Widget>[
|
||||
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<void> _openModalBottomSheet() async {
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadiusDirectional.circular(10)),
|
||||
constraints: BoxConstraints(maxHeight: 270.h),
|
||||
builder: (BuildContext context) {
|
||||
return Column(
|
||||
children: <Widget>[
|
||||
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<Color>(Colors.white)),
|
||||
child: Text(
|
||||
'取消'.tr,
|
||||
style: TextStyle(
|
||||
color: Colors.black, fontSize: ScreenUtil().setSp(24)),
|
||||
),
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
)
|
||||
],
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
List<Widget> initBottomSheetList() {
|
||||
final List<Widget> widgetList = <Widget>[];
|
||||
|
||||
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: <Widget>[
|
||||
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<void> 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: <String, Object?>{
|
||||
'receiver': '',
|
||||
'channelType': itemIndex == 1 ? 1 : 2,
|
||||
'keyId': CommonDataManage().currentKeyInfo.keyId,
|
||||
});
|
||||
break;
|
||||
case 3: //更多
|
||||
// NativeInteractionTool().loadNativeShare(shareText: pwdShareStr);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1 @@
|
||||
class ExportSuccessState {}
|
||||
Loading…
x
Reference in New Issue
Block a user