diff --git a/star_lock/lib/appRouters.dart b/star_lock/lib/appRouters.dart index 6aed0cf8..62479be0 100644 --- a/star_lock/lib/appRouters.dart +++ b/star_lock/lib/appRouters.dart @@ -1,5 +1,3 @@ - - import 'package:get/get.dart'; import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart'; import 'package:star_lock/login/register/starLock_register_binding.dart'; @@ -15,6 +13,7 @@ import 'package:star_lock/mine/mineSet/authorizedAdministrator/addAuthorizedAdmi import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart'; import 'package:star_lock/mine/mineSet/lockGroup/lockGroupList_page.dart'; +import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockChangeDate_page.dart'; import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_page.dart'; import 'package:star_lock/mine/mineSet/lockUserManage/lockUserManageList_Page.dart'; import 'package:star_lock/mine/mineSet/mineSet_page.dart'; @@ -162,10 +161,14 @@ abstract class Routers { static const passwordKeyManagePage = '/PasswordKeyManagePage'; // 密码钥匙 static const passwordKeyDetailPage = '/PasswordKeyDetailPage'; // 密码钥匙详情 static const otherTypeKeyListPage = '/OtherTypeKeyListPage'; // 卡、指纹、遥控钥匙列表 - static const otherTypeKeyDetailPage = '/OtherTypeKeyDetailPage'; // 卡、指纹、遥控钥匙详情 - static const otherTypeKeyManagePage = '/OtherTypeKeyManagePage'; // 卡、指纹、遥控钥匙添加 - static const otherTypeKeyChangeDatePage = '/OtherTypeKeyChangeDatePage'; // 卡、指纹、遥控钥匙详情修改日期 - static const otherTypeKeyChangeValidityDatePage = '/OtherTypeKeyChangeValidityDatePage'; // 卡、指纹、遥控钥匙详情修改有效期 + static const otherTypeKeyDetailPage = + '/OtherTypeKeyDetailPage'; // 卡、指纹、遥控钥匙详情 + static const otherTypeKeyManagePage = + '/OtherTypeKeyManagePage'; // 卡、指纹、遥控钥匙添加 + static const otherTypeKeyChangeDatePage = + '/OtherTypeKeyChangeDatePage'; // 卡、指纹、遥控钥匙详情修改日期 + static const otherTypeKeyChangeValidityDatePage = + '/OtherTypeKeyChangeValidityDatePage'; // 卡、指纹、遥控钥匙详情修改有效期 static const addFingerprintTipPage = '/AddFingerprintTipPage'; // 添加指纹提示 static const addFingerprintPage = '/AddFingerprintPage'; // 添加指纹 @@ -223,7 +226,8 @@ abstract class Routers { '/CheckingInSetHolidaysPage'; // 节假日设置 static const checkingInAddHolidaysPage = '/CheckingInAddHolidaysPage'; // 添加假日 static const checkingInDetailPage = '/CheckingInDetailPage'; // 考勤详情 - static const checkingInDeletHolidaysPage = '/CheckingInDeletHolidaysPage'; // 删除考勤 + static const checkingInDeletHolidaysPage = + '/CheckingInDeletHolidaysPage'; // 删除考勤 static const mineSetPage = '/MineSetPage'; // 我的设置 static const mineMultiLanguagePage = '/MineMultiLanguagePage'; // 我的设置 @@ -317,6 +321,8 @@ abstract class Routers { static const adminDetailChangeDatePage = '/adminDetailChangeDatePage'; //管理员详情修改生效时间 static const adminLockListPage = '/adminLockListPage'; //管理员详情的锁列表 + static const expireLockChangeDatePage = + '/expireLockChangeDatePage'; //即将到期列表有效期修改 } abstract class AppRouters { @@ -798,6 +804,9 @@ abstract class AppRouters { GetPage(name: Routers.addICCardPage, page: () => const AddICCardPage()), GetPage( name: Routers.adminDetailChangeDatePage, - page: () => const AdminDetailChangeDatePage()) + page: () => const AdminDetailChangeDatePage()), + GetPage( + name: Routers.expireLockChangeDatePage, + page: () => const ExpireLockChangeDatePage()) ]; } diff --git a/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart b/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart index 72799c6e..656e1c67 100644 --- a/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart +++ b/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetworkingLock_page.dart @@ -1,6 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/mine/mineSet/appUnlockNeedMobileNetworkingLock/selectLockListEntity.dart'; +import 'package:star_lock/network/api_repository.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:star_lock/tools/toast.dart'; import '../../../app_settings/app_colors.dart'; import '../../../tools/commonItem.dart'; @@ -18,6 +22,16 @@ class APPUnlockNeedMobileNetworkingLockPage extends StatefulWidget { class _APPUnlockNeedMobileNetworkingLockPageState extends State { + List lockItemList = []; + List selectLockIdList = []; + + @override + void initState() { + super.initState(); + + mockNetworkDataRequest(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -73,19 +87,22 @@ class _APPUnlockNeedMobileNetworkingLockPageState SizedBox(height: 15.h), Expanded( child: ListView.builder( - itemCount: 10, + itemCount: lockItemList.length, itemBuilder: (c, index) { - return _gatewatListItem( - 'images/mine/icon_mine_gatewayListMainIcon.png', - "星锁网关", - "在线", - "2", () { - // Navigator.pushNamed(context, Routers.gatewayDetailPage); - }); + LockItemData itemData = lockItemList[index]; + // itemData.isCheck = false; + return _gatewatListItem(itemData); }), ), SubmitBtn( - btnName: TranslationLoader.lanKeys!.sure!.tr, onClick: () {}), + btnName: TranslationLoader.lanKeys!.sure!.tr, + onClick: () { + if (selectLockIdList.isNotEmpty) { + setAppUnlockMustOnlineRequest(); + } else { + Toast.show(msg: '请选择需设置的锁'); + } + }), SizedBox( height: 40.h, ) @@ -93,10 +110,18 @@ class _APPUnlockNeedMobileNetworkingLockPageState )); } - Widget _gatewatListItem(String lockTypeIcon, String gateWayName, - String isOnline, String lockNumber, Function() action) { + Widget _gatewatListItem(LockItemData itemData) { return GestureDetector( - onTap: action, + onTap: () { + setState(() { + itemData.isCheck = !itemData.isCheck; + if (itemData.isCheck == true) { + selectLockIdList.add(itemData.lockId); + } else { + selectLockIdList.remove(itemData.lockId); + } + }); + }, child: Container( height: 80.h, margin: const EdgeInsets.only(bottom: 2), @@ -112,7 +137,9 @@ class _APPUnlockNeedMobileNetworkingLockPageState width: 15.w, ), Image.asset( - 'images/icon_round_unSelet.png', + itemData.isCheck == true + ? 'images/icon_round_selet.png' + : 'images/icon_round_unSelet.png', width: 30.w, height: 30.w, ), @@ -120,7 +147,7 @@ class _APPUnlockNeedMobileNetworkingLockPageState width: 10.w, ), Text( - "MCBN01_8f3106", + itemData.lockAlias ?? "", style: TextStyle(fontSize: 22.sp, fontWeight: FontWeight.w600), ) ], @@ -128,4 +155,26 @@ class _APPUnlockNeedMobileNetworkingLockPageState ), ); } + + //请求锁列表 + Future> mockNetworkDataRequest() async { + SelectLockListEntity entity = await ApiRepository.to.selectLockList(); + List dataList = []; + if (entity.errorCode!.codeIsSuccessful) { + dataList = entity.data!.list!; + setState(() { + lockItemList = dataList; + }); + } + return dataList; + } + + //APP开锁时需手机联网的锁 + Future setAppUnlockMustOnlineRequest() async { + SelectLockListEntity entity = + await ApiRepository.to.setAppUnlockMustOnline(selectLockIdList); + if (entity.errorCode!.codeIsSuccessful) { + Toast.show(msg: '操作成功'); + } + } } diff --git a/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/selectLockListEntity.dart b/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/selectLockListEntity.dart new file mode 100644 index 00000000..e1b957ae --- /dev/null +++ b/star_lock/lib/mine/mineSet/appUnlockNeedMobileNetworkingLock/selectLockListEntity.dart @@ -0,0 +1,70 @@ +class SelectLockListEntity { + int? errorCode; + String? description; + String? errorMsg; + Data? data; + + SelectLockListEntity( + {this.errorCode, this.description, this.errorMsg, this.data}); + + SelectLockListEntity.fromJson(Map json) { + errorCode = json['errorCode']; + description = json['description']; + errorMsg = json['errorMsg']; + data = json['data'] != null ? Data.fromJson(json['data']) : null; + } + + Map toJson() { + final Map data = {}; + data['errorCode'] = errorCode; + data['description'] = description; + data['errorMsg'] = errorMsg; + if (this.data != null) { + data['data'] = this.data!.toJson(); + } + return data; + } +} + +class Data { + List? list; + + Data({this.list}); + + Data.fromJson(Map json) { + if (json['list'] != null) { + list = []; + json['list'].forEach((v) { + list!.add(LockItemData.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = {}; + if (list != null) { + data['list'] = list!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class LockItemData { + int? lockId; + String? lockAlias; + bool isCheck = false; + + LockItemData({this.lockId, this.lockAlias, required this.isCheck}); + + LockItemData.fromJson(Map json) { + lockId = json['lockId']; + lockAlias = json['lockAlias']; + } + + Map toJson() { + final Map data = {}; + data['lockId'] = lockId; + data['lockAlias'] = lockAlias; + return data; + } +} diff --git a/star_lock/lib/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart b/star_lock/lib/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart index e18f0510..0535d515 100644 --- a/star_lock/lib/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart +++ b/star_lock/lib/mine/mineSet/authorizedAdministrator/administratorDetails/adminDetailChangeDate_page.dart @@ -113,46 +113,6 @@ class _AdminDetailChangeDatePage extends State { } } -/* - //修改钥匙名称请求 - Future updateKeyDateRequest() async { - KeyOperationRecordEntity entity = await ApiRepository.to.updateKeyDate( - itemData.keyId.toString(), - itemData.lockId.toString(), - _failureDateTime.millisecondsSinceEpoch.toString(), - endDay, - '', - _effectiveDateTime.millisecondsSinceEpoch.toString(), - startDay, - weekDays); - if (entity.errorCode!.codeIsSuccessful) { - print("修改要是名称成功啦啦啦啦啦"); - Toast.show(msg: "修改成功"); - setState(() { - Navigator.pop(context); - }); - } - } - - //更新密码请求 - Future updatePwdRequest() async { - PasswordKeyEntity entity = await ApiRepository.to.updatePasswordKey( - lockId, - pwdId, - '', - '', - _effectiveDateTime.millisecondsSinceEpoch.toString(), - _failureDateTime.millisecondsSinceEpoch.toString(), - ''); - if (entity.errorCode!.codeIsSuccessful) { - Toast.show(msg: "修改成功"); - setState(() { - Navigator.pop(context); - }); - } - } - */ - String intToStr(int v) { return (v < 10) ? "0$v" : "$v"; } diff --git a/star_lock/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart b/star_lock/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart index fda48f48..f2e2c3f5 100644 --- a/star_lock/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart +++ b/star_lock/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart @@ -229,7 +229,7 @@ class _AdministratorDetailsPageState extends State { onChanged: (value) { setState(() { _isOnRemote = !_isOnRemote; - updateAdministratorRequest(); + updateAdministratorRequest(true); }); }, ); @@ -247,7 +247,7 @@ class _AdministratorDetailsPageState extends State { } //更新管理员信息请求 - Future updateAdministratorRequest() async { + Future updateAdministratorRequest(bool isRemote) async { String isRemoteUnlock = _isOnRemote == true ? '1' : '2'; ElectronicKeyListEntity entity = await ApiRepository.to.updateAdministrator( itemData.uid.toString(), @@ -259,7 +259,9 @@ class _AdministratorDetailsPageState extends State { print("修改管理员信息成功啦啦啦啦啦"); Toast.show(msg: "修改成功"); setState(() { - Navigator.pop(context); + if (isRemote) { + Navigator.pop(context); + } }); } } @@ -289,7 +291,7 @@ class _AdministratorDetailsPageState extends State { sureClick: () { //发送编辑钥匙名称请求 if (_changeNameController.text.isNotEmpty) { - updateAdministratorRequest(); + updateAdministratorRequest(false); } }, cancelClick: () { diff --git a/star_lock/lib/mine/mineSet/lockUserManage/expireLockList/expireLockChangeDate_page.dart b/star_lock/lib/mine/mineSet/lockUserManage/expireLockList/expireLockChangeDate_page.dart new file mode 100644 index 00000000..c71279e9 --- /dev/null +++ b/star_lock/lib/mine/mineSet/lockUserManage/expireLockList/expireLockChangeDate_page.dart @@ -0,0 +1,121 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_pickers/pickers.dart'; +import 'package:flutter_pickers/time_picker/model/date_mode.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; +import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart'; +import 'package:star_lock/network/api_repository.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:star_lock/tools/toast.dart'; + +import '../../../../../app_settings/app_colors.dart'; +import '../../../../../tools/commonItem.dart'; +import '../../../../../tools/titleAppBar.dart'; +import '../../../../../translations/trans_lib.dart'; + +class ExpireLockChangeDatePage extends StatefulWidget { + const ExpireLockChangeDatePage({Key? key}) : super(key: key); + + @override + State createState() => + _ExpireLockChangeDatePageState(); +} + +class _ExpireLockChangeDatePageState extends State { + ExpireLockItem itemData = ExpireLockItem(); + + 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: () { + updateKeyDateRequest(); + }, + ), + ], + ), + body: buildMainUI(), + ); + } + + Widget buildMainUI() { + return Column( + children: [ + CommonItem( + leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr, + rightTitle: _selectEffectiveDate, + isHaveLine: true, + isHaveDirection: true, + action: () { + Pickers.showDatePicker(context, 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: () { + Pickers.showDatePicker(context, 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 updateKeyDateRequest() async { + KeyOperationRecordEntity entity = await ApiRepository.to.updateKeyDate( + itemData.keyId.toString(), + itemData.lockId.toString(), + _failureDateTime.millisecondsSinceEpoch.toString(), + '', + '', + _effectiveDateTime.millisecondsSinceEpoch.toString(), + '', []); + if (entity.errorCode!.codeIsSuccessful) { + print("修改要是名称成功啦啦啦啦啦"); + Toast.show(msg: "修改成功"); + setState(() { + Navigator.pop(context); + }); + } + } + + String intToStr(int v) { + return (v < 10) ? "0$v" : "$v"; + } +} diff --git a/star_lock/lib/mine/mineSet/lockUserManage/expireLockList/expireLockList_page.dart b/star_lock/lib/mine/mineSet/lockUserManage/expireLockList/expireLockList_page.dart index b8e37a62..c4ee6008 100644 --- a/star_lock/lib/mine/mineSet/lockUserManage/expireLockList/expireLockList_page.dart +++ b/star_lock/lib/mine/mineSet/lockUserManage/expireLockList/expireLockList_page.dart @@ -83,8 +83,8 @@ class _ExpireLockListPageState extends State { Widget _electronicKeyItem(ExpireLockItem itemData) { return GestureDetector( onTap: () { - Navigator.pushNamed(context, Routers.ownedKeyListPage, - arguments: {'uid': itemData.uid}); + Navigator.pushNamed(context, Routers.expireLockChangeDatePage, + arguments: {"itemData": itemData}); }, child: Container( height: 90.h, diff --git a/star_lock/lib/mine/mineSet/mineSet_page.dart b/star_lock/lib/mine/mineSet/mineSet_page.dart index 2d06b967..602ff4c8 100644 --- a/star_lock/lib/mine/mineSet/mineSet_page.dart +++ b/star_lock/lib/mine/mineSet/mineSet_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/login/login/entity/LoginEntity.dart'; import 'package:star_lock/mine/mineSet/entity/userSettingInfoEntity.dart'; import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart'; import 'package:star_lock/network/api_repository.dart'; @@ -243,7 +244,10 @@ class _MineSetPageState extends State { SubmitBtn( btnName: TranslationLoader.lanKeys!.logout!.tr, isDelete: true, - onClick: () {}), + onClick: () { + //退出登录 + userLogoutRequest(); + }), Container( padding: EdgeInsets.only(right: 30.w), // color: Colors.red, @@ -301,6 +305,16 @@ class _MineSetPageState extends State { } } + //退出登录请求 + Future userLogoutRequest() async { + LoginEntity entity = await ApiRepository.to.userLogout(); + if (entity.errorCode!.codeIsSuccessful) { + setState(() { + Get.offNamedUntil(Routers.starLockLoginPage, (route) => false); + }); + } + } + //更新触摸开锁 Future updateTouchUnlockRequest() async { ExpireLockListEntity entity = await ApiRepository.to diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart index f3eac6e5..a40f1aca 100644 --- a/star_lock/lib/network/api.dart +++ b/star_lock/lib/network/api.dart @@ -105,4 +105,8 @@ abstract class Api { final String setAlertModeURL = '/user/setAlertMode'; //提示音 final String setTouchUnlockFlagURL = '/user/setTouchUnlockFlag'; //触摸开锁 final String changeSettingsURL = '/user/changeSettings'; //锁屏/隐藏无效开锁权限 + final String selectLockListURL = '/room/listForTransfer'; //选择锁列表 + final String setAppUnlockMustOnlineURL = + '/room/setAppUnlockMustOnline'; //APP开锁时需手机联网的锁 + final String userLogoutURL = '/user/logout'; //退出登录 } diff --git a/star_lock/lib/network/api_provider.dart b/star_lock/lib/network/api_provider.dart index 3e12cea9..fba110fd 100644 --- a/star_lock/lib/network/api_provider.dart +++ b/star_lock/lib/network/api_provider.dart @@ -402,6 +402,13 @@ class ApiProvider extends BaseProvider { Future lockGroupList(String type) => post(lockGroupListURL.toUrl, jsonEncode({'type': type})); + Future selectLockList() => + post(selectLockListURL.toUrl, jsonEncode({})); + +//APP开锁时需手机联网的锁 + Future setAppUnlockMustOnline(List lockIdList) => post( + setAppUnlockMustOnlineURL.toUrl, jsonEncode({'lockIdList': lockIdList})); + Future deleteElectronicKey(String keyId) => post(deleteElectronicKeyURL.toUrl, jsonEncode({'keyId': keyId})); @@ -1055,6 +1062,9 @@ class ApiProvider extends BaseProvider { 'countryCode': countryCode, 'usernameType': usernameType })); + +//退出登录 + Future userLogout() => get(userLogoutURL.toUrl); } extension ExtensionString on String { diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 1e146aaf..bc8e88b0 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -8,6 +8,7 @@ import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/basicInformat import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/LockGroupListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart'; +import 'package:star_lock/mine/mineSet/appUnlockNeedMobileNetworkingLock/selectLockListEntity.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetailEntity.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdminListEntity.dart'; import 'package:star_lock/mine/mineSet/entity/userSettingInfoEntity.dart'; @@ -388,6 +389,18 @@ class ApiRepository { return MassSendLockGroupListEntity.fromJson(res.body); } + //选择锁列表 + Future selectLockList() async { + final res = await apiProvider.selectLockList(); + return SelectLockListEntity.fromJson(res.body); + } + + //APP开锁时需手机联网的锁 + Future setAppUnlockMustOnline(List lockIdList) async { + final res = await apiProvider.setAppUnlockMustOnline(lockIdList); + return SelectLockListEntity.fromJson(res.body); + } + //删除电子钥匙 Future deleteElectronicKey(String keyId) async { final res = await apiProvider.deleteElectronicKey(keyId); @@ -1032,4 +1045,10 @@ class ApiRepository { lockId, cardId, cardUserNo); return LoginEntity.fromJson(res.body); } + + // 退出登录 + Future userLogout() async { + final res = await apiProvider.userLogout(); + return LoginEntity.fromJson(res.body); + } }