1,新增批量导出页面布局及逻辑

2,新增导出操作记录—选择锁页面
3,新增操作记录导出成功页面及相应分享调起
4,根据角色(超级管理员/授权管理员/普通用户)展示不同操作记录操作权限
This commit is contained in:
Daisy 2024-06-20 13:54:39 +08:00
parent 4cf9c99e5d
commit b237d827ac
12 changed files with 399 additions and 38 deletions

View File

@ -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"
}

View File

@ -950,5 +950,8 @@
"智能分析":"智能分析",
"精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息",
"系统设置":"系统设置",
"系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置"
"系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置",
"导出操作记录":"导出操作记录",
"立即查看":"立即查看",
"导出成功":"导出成功"
}

View File

@ -915,5 +915,8 @@
"智能分析":"智能分析",
"精准识别设备事件,过滤无效信息":"精准识别设备事件,过滤无效信息",
"系统设置":"系统设置",
"系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置"
"系统的全局配置在此项内进行设置":"系统的全局配置在此项内进行设置",
"导出操作记录":"导出操作记录",
"立即查看":"立即查看",
"导出成功":"导出成功"
}

View File

@ -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()),
];
}

View File

@ -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();
}

View File

@ -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),
],
);
}
}

View File

@ -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; //
}

View File

@ -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);
},
);
},
);

View File

@ -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();
}
}

View File

@ -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();
}

View File

@ -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:
}
}
}

View File

@ -0,0 +1 @@
class ExportSuccessState {}