diff --git a/lib/appRouters.dart b/lib/appRouters.dart index f415e1aa..20730494 100755 --- a/lib/appRouters.dart +++ b/lib/appRouters.dart @@ -42,7 +42,7 @@ import 'package:star_lock/mine/about/webviewShow_page.dart'; import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/mineBindPhoneOrEmail_page.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoViewSafetyProblem/minePersonInfoViewSafetyProblem_page.dart'; -import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_page.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart'; import 'package:star_lock/mine/mineSet/lockGroup/lockGroupList/lockGroupList_page.dart'; import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockManage_page.dart'; @@ -373,7 +373,8 @@ abstract class Routers { static const getDeviceListPage = '/getDeviceListPage'; //设备列表 static const getNameListPage = '/getNameListPage'; //姓名列表 static const authorityManagementPage = '/authorityManagementPage'; //批量授权 - static const massSendLockGroupListPage = '/massSendLockGroupListPage'; //群发锁分组列表 + static const massSendLockGroupListPage = + '/massSendLockGroupListPage'; //群发锁分组列表 static const massSendReceiverPage = '/massSendReceiverPage'; //群发接收人 static const lockUserListPage = '/lockUserListPage'; //锁用户列表 static const administratorDetailsPage = '/administratorDetailsPage'; //管理员详情 diff --git a/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart b/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart index a04a8fbb..65599936 100755 --- a/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart +++ b/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart @@ -1,4 +1,3 @@ -import 'package:date_format/date_format.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_logic.dart b/lib/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_logic.dart new file mode 100644 index 00000000..1a7b15b1 --- /dev/null +++ b/lib/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_logic.dart @@ -0,0 +1,47 @@ +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_state.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetailEntity.dart'; +import 'package:star_lock/network/api_repository.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:star_lock/tools/dateTool.dart'; +import 'package:star_lock/tools/eventBusEventManage.dart'; + +class AdminDetailChangeDateLogic extends BaseGetXController { + AdminDetailChangeDateState state = AdminDetailChangeDateState(); + + //更新管理员信息请求 + Future updateAdministratorRequest() async { + final int beginTimeTimestamp = + DateTool().dateToTimestamp(state.beginTime.value, 1); + final int endTimeTimestamp = + DateTool().dateToTimestamp(state.endTime.value, 1); + if (beginTimeTimestamp > endTimeTimestamp || + beginTimeTimestamp == endTimeTimestamp) { + showToast('失效时间需大于生效时间'.tr); + return; + } + + if (endTimeTimestamp < DateTime.now().millisecondsSinceEpoch) { + showToast('生效时间需大于当前时间'.tr); + return; + } + + final AdministratorDetailEntity entity = await ApiRepository.to + .updateAdministrator( + uid: state.itemData.value.uid.toString(), + endDate: endTimeTimestamp.toString(), + startDate: beginTimeTimestamp.toString(), + keyName: '', + isOnlyManageSelf: + state.itemData.value.onlyManageYouCreatesUser == true ? 1 : 2); + if (entity.errorCode!.codeIsSuccessful) { + EasyLoading.showToast('修改成功', duration: 2000.milliseconds); + eventBus.fire(MineAuthorizedAdminPageRefreshUI()); + Get.back(result: { + 'beginTimeTimestamp': beginTimeTimestamp, + 'endTimeTimestamp': endTimeTimestamp, + }); + } + } +} diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_page.dart b/lib/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_page.dart new file mode 100755 index 00000000..e6da7317 --- /dev/null +++ b/lib/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_page.dart @@ -0,0 +1,88 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_logic.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_state.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 '../../../../../app_settings/app_colors.dart'; +import '../../../../../tools/commonItem.dart'; +import '../../../../../tools/dateTool.dart'; +import '../../../../../tools/titleAppBar.dart'; +import '../../../../../translations/trans_lib.dart'; + +class AdminDetailChangeDatePage extends StatefulWidget { + const AdminDetailChangeDatePage({Key? key}) : super(key: key); + + @override + State createState() => + _AdminDetailChangeDatePageState(); +} + +class _AdminDetailChangeDatePageState extends State { + final AdminDetailChangeDateLogic logic = + Get.put(AdminDetailChangeDateLogic()); + final AdminDetailChangeDateState state = + Get.find().state; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.mainBackgroundColor, + appBar: TitleAppBar( + barTitle: + '${TranslationLoader.lanKeys!.amend!.tr}${TranslationLoader.lanKeys!.periodValidity!.tr}', + haveBack: true, + backgroundColor: AppColors.mainColor, + actionsList: [ + TextButton( + child: Text( + TranslationLoader.lanKeys!.sure!.tr, + style: TextStyle(color: Colors.white, fontSize: 24.sp), + ), + onPressed: logic.updateAdministratorRequest, + ), + ], + ), + body: buildMainUI(), + ); + } + + Widget buildMainUI() { + 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.YMDHM, onConfirm: (p) { + setState(() { + state.beginTime.value = DateTool().getYMDHNDateString(p, 1); + }); + }); + })), + 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.YMDHM, onConfirm: (p) { + setState(() { + state.endTime.value = DateTool().getYMDHNDateString(p, 1); + }); + }); + })), + ], + ); + } +} diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_state.dart b/lib/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_state.dart new file mode 100644 index 00000000..34846db1 --- /dev/null +++ b/lib/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_state.dart @@ -0,0 +1,34 @@ +import 'package:get/get.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart'; +import 'package:star_lock/tools/dateTool.dart'; + +class AdminDetailChangeDateState { + AdminDetailChangeDateState() { + final Map map = Get.arguments; + if (map['itemData'] != null) { + itemData.value = map['itemData']; + + keyId.value = itemData.value.keyId!; + + if (itemData.value.startDate == 0 && itemData.value.endDate == 0) { + beginTime.value = DateTool().dateToYMDHNString( + DateTime.now().millisecondsSinceEpoch.toString()); + endTime.value = DateTool().dateToYMDHNString( + DateTime.now().millisecondsSinceEpoch.toString()); + } else { + beginTime.value = + DateTool().dateToYMDHNString(itemData.value.startDate.toString()); + endTime.value = + DateTool().dateToYMDHNString(itemData.value.endDate.toString()); + } + } + } + Rx itemData = AuthorizedAdminListItem().obs; + + var beginTime = ''.obs; // 开始时间 + var endTime = ''.obs; // 结束时间 + + var keyId = 0.obs; + var lockId = 0.obs; + var isOnlyManageSelf = 0.obs; +} diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart b/lib/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart deleted file mode 100755 index fea078a5..00000000 --- a/lib/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart +++ /dev/null @@ -1,123 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_easyloading/flutter_easyloading.dart'; -import 'package:flutter_screenutil/flutter_screenutil.dart'; -import 'package:get/get.dart'; -import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; -import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart'; -import 'package:star_lock/network/api_repository.dart'; -import 'package:star_lock/tools/baseGetXController.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 '../../../../../app_settings/app_colors.dart'; -import '../../../../../tools/commonItem.dart'; -import '../../../../../tools/titleAppBar.dart'; -import '../../../../../translations/trans_lib.dart'; - -class AdminDetailChangeDatePage extends StatefulWidget { - const AdminDetailChangeDatePage({Key? key}) : super(key: key); - - @override - State createState() => - _AdminDetailChangeDatePage(); -} - -class _AdminDetailChangeDatePage extends State { - AuthorizedAdminListItem itemData = AuthorizedAdminListItem(); - - String _selectEffectiveDate = ''; //生效时间 - String _selectFailureDate = ''; //失效时间 - late DateTime _effectiveDateTime; - late DateTime _failureDateTime; - - @override - Widget build(BuildContext context) { - dynamic obj = ModalRoute.of(context)?.settings.arguments; - if (obj != null && (obj['itemData'] != null)) { - itemData = obj['itemData']; - } - - return Scaffold( - backgroundColor: AppColors.mainBackgroundColor, - appBar: TitleAppBar( - barTitle: - "${TranslationLoader.lanKeys!.amend!.tr}${TranslationLoader.lanKeys!.periodValidity!.tr}", - haveBack: true, - backgroundColor: AppColors.mainColor, - actionsList: [ - TextButton( - child: Text( - TranslationLoader.lanKeys!.sure!.tr, - style: TextStyle(color: Colors.white, fontSize: 24.sp), - ), - onPressed: () { - updateAdministratorRequest(); - }, - ), - ], - ), - body: buildMainUI(), - ); - } - - Widget buildMainUI() { - return Column( - children: [ - CommonItem( - leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr, - rightTitle: _selectEffectiveDate, - isHaveLine: true, - isHaveDirection: true, - action: () { - PDuration selectDate = PDuration.parse(_effectiveDateTime); - Pickers.showDatePicker(context, - selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (p) { - setState(() { - _selectEffectiveDate = - '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; - _effectiveDateTime = DateTime.parse(_selectEffectiveDate); - }); - }); - }), - CommonItem( - leftTitel: TranslationLoader.lanKeys!.failureTime!.tr, - rightTitle: _selectFailureDate, - isHaveDirection: true, - action: () { - PDuration selectDate = PDuration.parse(_failureDateTime); - Pickers.showDatePicker(context, - selectDate: selectDate, mode: DateMode.YMDHM, onConfirm: (p) { - setState(() { - _selectFailureDate = - '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; - _failureDateTime = DateTime.parse(_selectFailureDate); - }); - }); - }), - ], - ); - } - - //更新管理员信息请求 - Future updateAdministratorRequest() async { - final ElectronicKeyListEntity entity = await ApiRepository.to - .updateAdministrator( - uid: itemData.uid.toString(), - endDate: _failureDateTime.millisecondsSinceEpoch.toString(), - startDate: _effectiveDateTime.millisecondsSinceEpoch.toString(), - keyName: '', - isOnlyManageSelf: - itemData.onlyManageYouCreatesUser == true ? 1 : 2); - if (entity.errorCode!.codeIsSuccessful) { - EasyLoading.showToast('修改成功', duration: 2000.milliseconds); - setState(() { - Navigator.pop(context); - }); - } - } - - String intToStr(int v) { - return (v < 10) ? '0$v' : '$v'; - } -} diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_logic.dart b/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_logic.dart index 4743fe25..904b5133 100755 --- a/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_logic.dart +++ b/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_logic.dart @@ -31,7 +31,7 @@ class AdministratorDetailsLogic extends BaseGetXController { if (!isChangeName) { isManageCreateUser = state.onlyManageYouCreatesUser.value == true ? 2 : 1; } - final ElectronicKeyListEntity entity = await ApiRepository.to + final AdministratorDetailEntity entity = await ApiRepository.to .updateAdministrator( uid: state.itemData.value.uid.toString(), keyName: isChangeName @@ -147,29 +147,29 @@ class AdministratorDetailsLogic extends BaseGetXController { } //使用期限 - String getUseDateStr(AuthorizedAdminListItem indexEntity) { + String getUseDateStr() { String useDateStr = ''; - if (indexEntity.keyType == XSConstantMacro.keyTypeTime) { + if (state.itemData.value.keyType == XSConstantMacro.keyTypeTime) { //限期 final DateTime startDateStr = - DateTime.fromMillisecondsSinceEpoch(indexEntity.startDate!); + DateTime.fromMillisecondsSinceEpoch(state.itemData.value.startDate!); final DateTime endDateStr = - DateTime.fromMillisecondsSinceEpoch(indexEntity.endDate!); + DateTime.fromMillisecondsSinceEpoch(state.itemData.value.endDate!); useDateStr = '${startDateStr.toLocal().toString().substring(0, 16)}\n${endDateStr.toLocal().toString().substring(0, 16)}'; - } else if (indexEntity.keyType == XSConstantMacro.keyTypeLong) { + } else if (state.itemData.value.keyType == XSConstantMacro.keyTypeLong) { //永久 final DateTime dateStr = - DateTime.fromMillisecondsSinceEpoch(indexEntity.date!); + DateTime.fromMillisecondsSinceEpoch(state.itemData.value.date!); useDateStr = '${dateStr.toLocal().toString().substring(0, 16)}\n${"永久".tr}'; - } else if (indexEntity.keyType == XSConstantMacro.keyTypeOnce) { + } else if (state.itemData.value.keyType == XSConstantMacro.keyTypeOnce) { //单次 final DateTime dateStr = - DateTime.fromMillisecondsSinceEpoch(indexEntity.date!); + DateTime.fromMillisecondsSinceEpoch(state.itemData.value.date!); useDateStr = '${dateStr.toLocal().toString().substring(0, 16)} \n${"单次".tr}'; - } else if (indexEntity.keyType == XSConstantMacro.keyTypeLoop) { + } else if (state.itemData.value.keyType == XSConstantMacro.keyTypeLoop) { //循环 useDateStr = '循环'.tr; } @@ -178,21 +178,8 @@ class AdministratorDetailsLogic extends BaseGetXController { @override void onReady() { - // TODO: implement onReady super.onReady(); administratorDetailRequest(); } - - @override - void onInit() { - // TODO: implement onInit - super.onInit(); - } - - @override - void onClose() { - // TODO: implement onClose - super.onClose(); - } } diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart b/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart index ee1da87f..ad579644 100755 --- a/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart +++ b/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart @@ -67,14 +67,22 @@ class _AdministratorDetailsPageState extends State { CommonItem( leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr, allHeight: 90.h, - rightTitle: logic.getUseDateStr(state.itemData.value), + rightTitle: logic.getUseDateStr(), isHaveDirection: true, - action: () { - Navigator.pushNamed( - context, Routers.adminDetailChangeDatePage, + action: () async { + final data = await Get.toNamed( + Routers.adminDetailChangeDatePage, arguments: { - 'itemData': state.itemData.value + 'itemData': state.itemData.value, }); + if (data != null) { + setState(() { + state.itemData.value.startDate = + data['beginTimeTimestamp']; + state.itemData.value.endDate = data['endTimeTimestamp']; + state.itemData.value.keyType = 2; + }); + } }), Container(height: 10.h), CommonItem( diff --git a/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_logic.dart b/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_logic.dart index b18616f5..a9cfb383 100755 --- a/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_logic.dart +++ b/lib/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_logic.dart @@ -71,12 +71,13 @@ class AuthorizedAdministratorListLogic extends BaseGetXController { return useDateStr; } - /// 刷新电子钥匙列表 - StreamSubscription? _authorizedAdministratorListPageRefreshUIEvent; - void _authorizedAdministratorListPageRefreshUIAction() { + /// 刷新我的设置-授权管理员列表 + late StreamSubscription _getMineAuthorizedAdminPageRefreshUIEvent; + void _getMineAuthorizedAdminPageRefreshUIEventAction() { // 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus - _authorizedAdministratorListPageRefreshUIEvent = - eventBus.on().listen((event) { + _getMineAuthorizedAdminPageRefreshUIEvent = eventBus + .on() + .listen((MineAuthorizedAdminPageRefreshUI event) { pageNo = 1; mockNetworkDataRequest(); }); @@ -84,21 +85,13 @@ class AuthorizedAdministratorListLogic extends BaseGetXController { @override void onReady() { - // TODO: implement onReady super.onReady(); - _authorizedAdministratorListPageRefreshUIAction(); - } - - @override - void onInit() { - // TODO: implement onInit - super.onInit(); + _getMineAuthorizedAdminPageRefreshUIEventAction(); } @override void onClose() { - // TODO: implement onClose super.onClose(); - _authorizedAdministratorListPageRefreshUIEvent?.cancel(); + _getMineAuthorizedAdminPageRefreshUIEvent?.cancel(); } } diff --git a/lib/network/api_repository.dart b/lib/network/api_repository.dart index 099aad41..64818b1f 100755 --- a/lib/network/api_repository.dart +++ b/lib/network/api_repository.dart @@ -421,8 +421,11 @@ class ApiRepository { // 获取锁信息列表 Future getStarLockListInfo( - {required int pageNo, required int pageSize,required bool isUnShowLoading}) async { - final res = await apiProvider.getStarLockListInfo(pageNo, pageSize,isUnShowLoading:isUnShowLoading); + {required int pageNo, + required int pageSize, + required bool isUnShowLoading}) async { + final res = await apiProvider.getStarLockListInfo(pageNo, pageSize, + isUnShowLoading: isUnShowLoading); return LockListInfoEntity.fromJson(res.body); } @@ -617,7 +620,7 @@ class ApiRepository { } //更新授权管理员 - Future updateAdministrator( + Future updateAdministrator( {required String uid, required String keyName, required String endDate, @@ -625,7 +628,7 @@ class ApiRepository { required int isOnlyManageSelf}) async { final res = await apiProvider.updateAdministrator( uid, keyName, endDate, startDate, isOnlyManageSelf); - return ElectronicKeyListEntity.fromJson(res.body); + return AdministratorDetailEntity.fromJson(res.body); } //设置授权管理员 diff --git a/lib/tools/eventBusEventManage.dart b/lib/tools/eventBusEventManage.dart index f6fca01a..bf19c88b 100755 --- a/lib/tools/eventBusEventManage.dart +++ b/lib/tools/eventBusEventManage.dart @@ -137,6 +137,11 @@ class AuthorizedAdminPageRefreshUI { AuthorizedAdminPageRefreshUI(); } +/// 刷新我的设置-授权管理员列表 +class MineAuthorizedAdminPageRefreshUI { + MineAuthorizedAdminPageRefreshUI(); +} + /// 刷新门锁日志列表 class DoorLockLogListRefreshUI { DateTime getDoorLockLogTime;