1、修复锁锁分组模块bug
2、修复我的模块进入添加授权管理员红屏问题 3、修复我的模块锁用户管理模块问题
This commit is contained in:
parent
5354d1bd1f
commit
dfee353519
@ -27,7 +27,6 @@ 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/addAuthorizedAdministrator/addAuthorizedAdministrator_page.dart';
|
||||
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/lockGroupList_page.dart';
|
||||
@ -163,6 +162,7 @@ import 'mine/mineSet/appUnlockNeedMobileNetworkingLock/appUnlockNeedMobileNetwor
|
||||
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/addAuthorizedAdministrator_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';
|
||||
@ -180,7 +180,7 @@ import 'mine/valueAddedServices/valueAddedServicesNoteAndEmailDetail/valueAddedS
|
||||
import 'mine/valueAddedServices/valueAddedServicesRealName/valueAddedServicesRealName_page.dart';
|
||||
import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/valueAddedServicesAddSMSTemplate_page.dart';
|
||||
import 'mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/valueAddedServicesListSMSTemplate_page.dart';
|
||||
import 'mine/mineSet/authorizedAdministrator/authorizedAdministratorList_page.dart';
|
||||
import 'mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdministratorList_page.dart';
|
||||
import 'starLockApplication/starLockApplication.dart';
|
||||
|
||||
abstract class Routers {
|
||||
|
||||
@ -12,7 +12,6 @@ import '../../../../appRouters.dart';
|
||||
import '../../../../app_settings/app_colors.dart';
|
||||
import '../../../../tools/EasyRefreshTool.dart';
|
||||
import '../../../../tools/keySearchWidget.dart';
|
||||
import '../../../../tools/left_slide_actions.dart';
|
||||
import '../../../../tools/showIosTipView.dart';
|
||||
import '../../../../tools/submitBtn.dart';
|
||||
import '../../../../tools/titleAppBar.dart';
|
||||
@ -198,29 +197,6 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
|
||||
));
|
||||
}
|
||||
|
||||
Widget _buildDeleteBtn(String keyId) {
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
// 省略: 弹出是否删除的确认对话框。
|
||||
showIosTipViewDialog(context, keyId);
|
||||
},
|
||||
child: Container(
|
||||
width: 60,
|
||||
color: const Color(0xFFF20101),
|
||||
alignment: Alignment.center,
|
||||
child: const Text(
|
||||
'删除',
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Colors.white,
|
||||
height: 1,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void showIosTipViewDialog(BuildContext context, String keyId) {
|
||||
showDialog(
|
||||
context: context,
|
||||
@ -291,7 +267,6 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
|
||||
//已过期
|
||||
keyStatus = '已过期';
|
||||
}
|
||||
|
||||
return keyStatus;
|
||||
}
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
// import 'package:flutter_reactive_ble/flutter_reactive_ble.dart';
|
||||
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
@ -2,7 +2,6 @@ import 'dart:async';
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
@ -15,7 +14,6 @@ import '../../../common/XSConstantMacro/XSConstantMacro.dart';
|
||||
import '../../../tools/appRouteObserver.dart';
|
||||
import '../../../tools/dateTool.dart';
|
||||
import '../../../tools/eventBusEventManage.dart';
|
||||
import '../../../tools/jh_pop_menus.dart';
|
||||
import '../../../tools/storage.dart';
|
||||
import '../../../translations/trans_lib.dart';
|
||||
import '../../lockMian/entity/lockListInfo_entity.dart';
|
||||
|
||||
@ -312,7 +312,6 @@ class LockSetLogic extends BaseGetXController {
|
||||
showEasyLoading();
|
||||
showBlueConnetctToastTimer(isShowBlueConnetctToast: false, action: (){
|
||||
dismissEasyLoading();
|
||||
print("333333");
|
||||
showDeletAlertTipDialog();
|
||||
});
|
||||
BlueManage().bludSendData(BlueManage().connectDeviceName, (BluetoothConnectionState connectionState) async {
|
||||
@ -337,7 +336,6 @@ class LockSetLogic extends BaseGetXController {
|
||||
} else if (connectionState == BluetoothConnectionState.disconnected) {
|
||||
dismissEasyLoading();
|
||||
cancelBlueConnetctToastTimer();
|
||||
print("444444");
|
||||
if(state.ifCurrentScreen.value == true){
|
||||
showDeletAlertTipDialog();
|
||||
}
|
||||
@ -440,7 +438,6 @@ class LockSetLogic extends BaseGetXController {
|
||||
|
||||
state.isOpenBlueBroadcast.value = state.lockSettingInfo.value.bluetoothBroadcast!;
|
||||
state.isOpenExceptionWarnings.value = state.lockSettingInfo.value.bluetoothBroadcast!;
|
||||
Get.log('请求成功333');
|
||||
// await _readSupportFunctionsNoParameters(56);
|
||||
// _readSupportFunctionsNoParameters(62);
|
||||
}
|
||||
@ -470,7 +467,7 @@ class LockSetLogic extends BaseGetXController {
|
||||
eventBus.fire(RefreshLockListInfoDataEvent());
|
||||
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(0, state.lockSettingInfo.value.attendance!.toString()));
|
||||
});
|
||||
print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
|
||||
// print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
|
||||
}
|
||||
}
|
||||
|
||||
@ -502,7 +499,7 @@ class LockSetLogic extends BaseGetXController {
|
||||
showToast("设置成功",something: (){
|
||||
eventBus.fire(LockSetChangeSetRefreshLockDetailWithType(1, state.lockSettingInfo.value.appUnlockOnline!.toString()));
|
||||
eventBus.fire(RefreshLockListInfoDataEvent());
|
||||
print("state.lockSettingInfo.value.appUnlockOnline:${state.lockSettingInfo.value.appUnlockOnline}");
|
||||
// print("state.lockSettingInfo.value.appUnlockOnline:${state.lockSettingInfo.value.appUnlockOnline}");
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -844,7 +841,7 @@ class LockSetLogic extends BaseGetXController {
|
||||
});
|
||||
}else{
|
||||
Future.delayed(const Duration(milliseconds: 200)).then((e) {
|
||||
Get.back();
|
||||
Get.close(2);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -550,18 +550,18 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
|
||||
// ),
|
||||
// Obx(() =>
|
||||
// 诊断
|
||||
Visibility(
|
||||
visible: true,
|
||||
child: CommonItem(
|
||||
leftTitel: TranslationLoader.lanKeys!.diagnose!.tr,
|
||||
rightTitle: "",
|
||||
isHaveLine: true,
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
Get.toNamed(Routers.diagnosePage, arguments: {
|
||||
'lockSetInfoData': state.lockSetInfoData.value
|
||||
});
|
||||
})),
|
||||
// Visibility(
|
||||
// visible: true,
|
||||
// child: CommonItem(
|
||||
// leftTitel: TranslationLoader.lanKeys!.diagnose!.tr,
|
||||
// rightTitle: "",
|
||||
// isHaveLine: true,
|
||||
// isHaveDirection: true,
|
||||
// action: () {
|
||||
// Get.toNamed(Routers.diagnosePage, arguments: {
|
||||
// 'lockSetInfoData': state.lockSetInfoData.value
|
||||
// });
|
||||
// })),
|
||||
// ),
|
||||
// Obx(() =>
|
||||
// 上传数据
|
||||
|
||||
@ -111,6 +111,7 @@ class _AddLockPageState extends State<AddLockPage> with BaseWidget {
|
||||
Permission.location,
|
||||
].request();
|
||||
|
||||
print("statuses:$statuses");
|
||||
//granted 通过,denied 被拒绝,permanentlyDenied 拒绝且不在提示
|
||||
if (statuses[Permission.bluetoothScan]!.isGranted &&
|
||||
statuses[Permission.bluetoothConnect]!.isGranted &&
|
||||
|
||||
@ -50,12 +50,10 @@ class _SelectLockTypePageState extends State<SelectLockTypePage>
|
||||
lockTypeItem('images/lockType/lockType_NFCLock.png',
|
||||
TranslationLoader.lanKeys!.NFCPassiveLock!.tr, () {
|
||||
// Navigator.pushNamed(context, Routers.addLockPage);
|
||||
getNearByLimits();
|
||||
}),
|
||||
lockTypeItem('images/lockType/lockType_padlock.png',
|
||||
TranslationLoader.lanKeys!.padlock!.tr, () {
|
||||
// Navigator.pushNamed(context, Routers.addLockPage);
|
||||
getNearByLimits();
|
||||
}),
|
||||
lockTypeItem('images/lockType/lockType_safeLock.png',
|
||||
TranslationLoader.lanKeys!.safeLock!.tr, () {
|
||||
@ -81,12 +79,10 @@ class _SelectLockTypePageState extends State<SelectLockTypePage>
|
||||
lockTypeItem('images/lockType/lockType_gatewayLock.png',
|
||||
TranslationLoader.lanKeys!.gateway!.tr, () {
|
||||
// Navigator.pushNamed(context, Routers.gatewayListPage);
|
||||
getNearByLimits();
|
||||
}),
|
||||
lockTypeItem('images/lockType/lockType_camera.png', '网络摄像头',
|
||||
() {
|
||||
// Navigator.pushNamed(context, Routers.gatewayListPage);
|
||||
getNearByLimits();
|
||||
}),
|
||||
],
|
||||
),
|
||||
@ -185,67 +181,6 @@ class _SelectLockTypePageState extends State<SelectLockTypePage>
|
||||
);
|
||||
}
|
||||
|
||||
//跳转到附近的锁页面先判断权限
|
||||
void getNearByLimits() {
|
||||
if (Platform.isIOS) {
|
||||
Navigator.pushNamed(context, Routers.nearbyLockPage);
|
||||
} else {
|
||||
positionPermissionAlert();
|
||||
// getMicrophonePermission().then((value) {
|
||||
// if (value) {
|
||||
// // 有权限
|
||||
// Navigator.pushNamed(context, Routers.nearbyLockPage);
|
||||
// } else {
|
||||
// //没有权限
|
||||
// openAppSettings(); //打开app系统设置
|
||||
// }
|
||||
// });
|
||||
}
|
||||
}
|
||||
|
||||
///请求权限
|
||||
Future<bool> getMicrophonePermission() async {
|
||||
// You can request multiple permissions at once.
|
||||
Map<Permission, PermissionStatus> statuses = await [
|
||||
Permission.bluetoothScan,
|
||||
Permission.bluetoothConnect,
|
||||
Permission.location,
|
||||
].request();
|
||||
|
||||
//granted 通过,denied 被拒绝,permanentlyDenied 拒绝且不在提示
|
||||
if (statuses[Permission.bluetoothScan]!.isGranted &&
|
||||
statuses[Permission.bluetoothConnect]!.isGranted &&
|
||||
statuses[Permission.location]!.isGranted) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Future<void> positionPermissionAlert() async {
|
||||
//安卓平台下首次进入应用需向用户告知获取权限用途弹窗
|
||||
if (Platform.isAndroid) {
|
||||
AppFirstEnterHandle().getAppFirstEnter(context, isAgreePosition);
|
||||
var getFlag = await Storage.getString(isAgreePosition);
|
||||
if (getFlag == isAgreePosition) {
|
||||
onPermissionPush();
|
||||
}
|
||||
} else {
|
||||
onPermissionPush();
|
||||
}
|
||||
}
|
||||
|
||||
void onPermissionPush() {
|
||||
getMicrophonePermission().then((value) {
|
||||
if (value) {
|
||||
// 有权限
|
||||
Navigator.pushNamed(context, Routers.nearbyLockPage);
|
||||
} else {
|
||||
//没有权限
|
||||
openAppSettings(); //打开app系统设置
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void onShow() {}
|
||||
|
||||
void onHide() {}
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/appRouters.dart';
|
||||
import 'package:star_lock/mine/mineSet/addAuthorizedAdministrator/AddAuthorizedAdministrator_state.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import 'package:star_lock/translations/trans_lib.dart';
|
||||
|
||||
import 'addAuthorizedAdministrator_state.dart';
|
||||
|
||||
class AddAuthorizedAdministratorLogic extends BaseGetXController {
|
||||
final AddAuthorizedAdministratorState state =
|
||||
AddAuthorizedAdministratorState();
|
||||
AddAuthorizedAdministratorState state = AddAuthorizedAdministratorState();
|
||||
|
||||
//发送批量授权管理员
|
||||
Future<void> addAuthorizedAdminRequest() async {
|
||||
@ -1,5 +1,6 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
@ -23,9 +24,7 @@ class AddAuthorizedAdministratorPage extends StatefulWidget {
|
||||
}
|
||||
}
|
||||
|
||||
class _AddAuthorizedAdministratorPageState
|
||||
extends State<AddAuthorizedAdministratorPage>
|
||||
with SingleTickerProviderStateMixin {
|
||||
class _AddAuthorizedAdministratorPageState extends State<AddAuthorizedAdministratorPage> with SingleTickerProviderStateMixin {
|
||||
final logic = Get.put(AddAuthorizedAdministratorLogic());
|
||||
final state = Get.find<AddAuthorizedAdministratorLogic>().state;
|
||||
|
||||
@ -244,25 +243,32 @@ class _AddAuthorizedAdministratorPageState
|
||||
Widget getTFWidget(
|
||||
bool isHaveBtn, String tfStr, TextEditingController editController) {
|
||||
return SizedBox(
|
||||
height: 50.h,
|
||||
height: 65.h,
|
||||
width: 300.w,
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: TextField(
|
||||
controller: editController,
|
||||
//输入框一行
|
||||
maxLines: 1,
|
||||
// controller: _controller,
|
||||
autofocus: false,
|
||||
inputFormatters: <TextInputFormatter>[
|
||||
FilteringTextInputFormatter.deny('\n'),
|
||||
LengthLimitingTextInputFormatter(18),
|
||||
],
|
||||
style: TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor),
|
||||
controller: editController,
|
||||
// autofocus: false,
|
||||
textAlign: TextAlign.end,
|
||||
decoration: InputDecoration(
|
||||
//输入里面输入文字内边距设置
|
||||
contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
|
||||
// contentPadding: const EdgeInsets.only(top: 12.0, bottom: 8.0),
|
||||
hintText: tfStr,
|
||||
hintStyle: TextStyle(fontSize: 22.sp),
|
||||
//不需要输入框下划线
|
||||
border: InputBorder.none,
|
||||
focusedBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
|
||||
disabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
|
||||
enabledBorder: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
|
||||
border: const OutlineInputBorder(borderSide: BorderSide(width: 0, color: Colors.transparent)),
|
||||
contentPadding: const EdgeInsets.symmetric(vertical: 0),
|
||||
),
|
||||
),
|
||||
),
|
||||
@ -1,8 +1,9 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../../../main/lockMian/entity/lockListInfo_entity.dart';
|
||||
import '../../../../main/lockMian/entity/lockListInfo_entity.dart';
|
||||
|
||||
class AddAuthorizedAdministratorState {
|
||||
late TabController? tabController;
|
||||
@ -34,7 +35,9 @@ class AddAuthorizedAdministratorState {
|
||||
final keyInfo = LockListInfoItemEntity().obs;
|
||||
|
||||
AddAuthorizedAdministratorState() {
|
||||
Map map = Get.arguments;
|
||||
keyInfo.value = map["keyInfo"];
|
||||
// Map map = Get.arguments;
|
||||
// if ((map["keyInfo"] != null)) {
|
||||
// keyInfo.value = map["keyInfo"];
|
||||
// }
|
||||
}
|
||||
}
|
||||
@ -3,7 +3,7 @@ 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/authorizedAdminListEntity.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';
|
||||
|
||||
@ -9,7 +9,7 @@ import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDeta
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import 'package:star_lock/tools/jh_pop_menus.dart';
|
||||
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdminListEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart';
|
||||
|
||||
import '../../../../../appRouters.dart';
|
||||
import '../../../../../app_settings/app_colors.dart';
|
||||
@ -102,11 +102,11 @@ class _AdministratorDetailsPageState extends State<AdministratorDetailsPage> {
|
||||
CommonItem(
|
||||
leftTitel: TranslationLoader.lanKeys!.lock!.tr,
|
||||
rightTitle: itemData.lockNum.toString(),
|
||||
isHaveDirection: true,
|
||||
isHaveDirection: false,
|
||||
action: () {
|
||||
//锁列表页面
|
||||
Navigator.pushNamed(context, Routers.lockItemListPage,
|
||||
arguments: {'lockList': lockItemList});
|
||||
// Navigator.pushNamed(context, Routers.lockItemListPage,
|
||||
// arguments: {'lockList': lockItemList});
|
||||
}),
|
||||
Container(height: 10.h),
|
||||
CommonItem(
|
||||
|
||||
@ -3,17 +3,17 @@ import 'package:flutter_easyloading/flutter_easyloading.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdminListEntity.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/noData.dart';
|
||||
|
||||
import '../../../../appRouters.dart';
|
||||
import '../../../../app_settings/app_colors.dart';
|
||||
import '../../../../tools/titleAppBar.dart';
|
||||
import '../../../../translations/trans_lib.dart';
|
||||
import '../../../tools/left_slide_actions.dart';
|
||||
import '../../../tools/showIosTipView.dart';
|
||||
import '../../../../../appRouters.dart';
|
||||
import '../../../../../app_settings/app_colors.dart';
|
||||
import '../../../../../tools/titleAppBar.dart';
|
||||
import '../../../../../translations/trans_lib.dart';
|
||||
import '../../../../tools/left_slide_actions.dart';
|
||||
import '../../../../tools/showIosTipView.dart';
|
||||
|
||||
class AuthorizedAdministratorListPage extends StatefulWidget {
|
||||
const AuthorizedAdministratorListPage({Key? key}) : super(key: key);
|
||||
@ -2,7 +2,7 @@ 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/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
|
||||
|
||||
@ -10,9 +10,13 @@ class GroupEditLockLogic extends BaseGetXController {
|
||||
final GroupEditLockState state = GroupEditLockState();
|
||||
|
||||
//锁分组里面添加锁
|
||||
Future<void> lockGroupAddLock(List lockId) async {
|
||||
Future<void> lockGroupAddLock(List lockIds) async {
|
||||
if(lockIds.isEmpty){
|
||||
showToast("请选择锁");
|
||||
return;
|
||||
}
|
||||
var entity = await ApiRepository.to.lockGroupAddLock(
|
||||
lockIds: lockId,
|
||||
lockIds: lockIds,
|
||||
groupId: state.selectGroupListItem.keyGroupId!);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast("添加成功");
|
||||
@ -23,8 +27,12 @@ class GroupEditLockLogic extends BaseGetXController {
|
||||
}
|
||||
|
||||
//锁分组里面添加锁
|
||||
Future<void> lockGroupDeletLock(List lockId) async {
|
||||
var entity = await ApiRepository.to.lockGroupDeletLock(lockIds: lockId);
|
||||
Future<void> lockGroupDeletLock(List lockIds) async {
|
||||
if(lockIds.isEmpty){
|
||||
showToast("请选择锁");
|
||||
return;
|
||||
}
|
||||
var entity = await ApiRepository.to.lockGroupDeletLock(lockIds: lockIds);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
showToast("删除成功");
|
||||
eventBus.fire(LockGroupEditGroupLockRefreshEvent());
|
||||
|
||||
@ -79,37 +79,37 @@ class _GroupEditLockPageState extends State<GroupEditLockPage> {
|
||||
}
|
||||
|
||||
Widget _listItemView(LockListItem itemData) {
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
height: 80.h,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(width: 20.w,),
|
||||
Image.asset('images/icon_lockGroup_item.png', width: 36, height: 36, fit: BoxFit.fill,),
|
||||
SizedBox(width: 10.w,),
|
||||
Text(
|
||||
itemData.lockAlias ?? '',
|
||||
style: TextStyle(fontSize: 24.sp),
|
||||
),
|
||||
Expanded(child: SizedBox(width: 10.w)),
|
||||
GestureDetector(
|
||||
child: Image.asset(
|
||||
return GestureDetector(
|
||||
onTap: (){
|
||||
setState(() {
|
||||
itemData.isChecked = !itemData.isChecked;
|
||||
});
|
||||
},
|
||||
child: Container(
|
||||
color: Colors.white,
|
||||
height: 80.h,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
SizedBox(width: 20.w,),
|
||||
Image.asset('images/icon_lockGroup_item.png', width: 36, height: 36, fit: BoxFit.fill,),
|
||||
SizedBox(width: 10.w,),
|
||||
Text(
|
||||
itemData.lockAlias ?? '',
|
||||
style: TextStyle(fontSize: 24.sp),
|
||||
),
|
||||
Expanded(child: SizedBox(width: 10.w)),
|
||||
Image.asset(
|
||||
itemData.isChecked
|
||||
? 'images/icon_round_select.png'
|
||||
: 'images/icon_round_unSelect.png',
|
||||
width: 35.w,
|
||||
height: 35.w,
|
||||
),
|
||||
onTap: (){
|
||||
setState(() {
|
||||
itemData.isChecked = !itemData.isChecked;
|
||||
});
|
||||
},
|
||||
),
|
||||
SizedBox(width: 30.w)
|
||||
],
|
||||
SizedBox(width: 30.w)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@ -35,7 +35,7 @@ class _LockItemListPageState extends State<LockItemListPage> {
|
||||
appBar: TitleAppBar(
|
||||
barTitle: TranslationLoader.lanKeys!.lock!.tr,
|
||||
haveBack: true,
|
||||
actionsList: (lockList.isNotEmpty && groupListItem.groupType == 0) ? [
|
||||
actionsList: (lockList.isNotEmpty && groupListItem.groupType != 0) ? [
|
||||
IconButton(
|
||||
icon: Image.asset(
|
||||
'images/icon_bar_more.png',
|
||||
@ -81,6 +81,7 @@ class _LockItemListPageState extends State<LockItemListPage> {
|
||||
: Stack(
|
||||
alignment: Alignment.center,
|
||||
children: [
|
||||
NoData(),
|
||||
Positioned(
|
||||
bottom: 350.h,
|
||||
left: (ScreenUtil().screenWidth - 200.w) / 2,
|
||||
@ -92,7 +93,6 @@ class _LockItemListPageState extends State<LockItemListPage> {
|
||||
Get.toNamed(Routers.groupEditLockPage, arguments: {'groupListItem': groupListItem, 'ungrouped': ungrouped, 'type': 0});
|
||||
},
|
||||
)),
|
||||
NoData(),
|
||||
],
|
||||
));
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ 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/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@ 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/electronicKeyDetail/keyOperationRecord/keyOperationRecord_entity.dart';
|
||||
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import 'package:star_lock/tools/pickers/pickers.dart';
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
|
||||
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
|
||||
import '../../../../network/api_repository.dart';
|
||||
import 'expireLockList_entity.dart';
|
||||
import 'expireLockList_state.dart';
|
||||
|
||||
class ExpireLockListLogic extends BaseGetXController{
|
||||
ExpireLockListState state = ExpireLockListState();
|
||||
|
||||
//请求即将到期列表
|
||||
Future<ExpireLockListEntity> expireLockListRequest() async {
|
||||
ExpireLockListEntity entity = await ApiRepository.to.expireLockList(pageNo.toString(), pageSize.toString());
|
||||
if(entity.errorCode!.codeIsSuccessful){
|
||||
if (pageNo == 1) {
|
||||
state.dataList.value = entity.data!.itemList!;
|
||||
pageNo++;
|
||||
} else {
|
||||
if (entity.data!.itemList!.isNotEmpty) {
|
||||
state.dataList.value.addAll(entity.data!.itemList!);
|
||||
pageNo++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
//使用期限
|
||||
String getExpireDateStr(ExpireLockItem itemData) {
|
||||
DateTime startDateStr =
|
||||
DateTime.fromMillisecondsSinceEpoch(itemData.startDate!);
|
||||
DateTime endDateStr =
|
||||
DateTime.fromMillisecondsSinceEpoch(itemData.endDate!);
|
||||
String useDateStr =
|
||||
'${startDateStr.toLocal().toString().substring(0, 10)}-${endDateStr.toLocal().toString().substring(0, 10)}';
|
||||
return useDateStr;
|
||||
}
|
||||
}
|
||||
@ -1,14 +1,15 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.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/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
|
||||
|
||||
import '../../../../appRouters.dart';
|
||||
import '../../../../app_settings/app_colors.dart';
|
||||
import '../../../../tools/EasyRefreshTool.dart';
|
||||
import '../../../../tools/noData.dart';
|
||||
import '../../../../tools/titleAppBar.dart';
|
||||
import '../../../../translations/trans_lib.dart';
|
||||
import 'expireLockList_logic.dart';
|
||||
|
||||
class ExpireLockListPage extends StatefulWidget {
|
||||
const ExpireLockListPage({Key? key}) : super(key: key);
|
||||
@ -18,13 +19,20 @@ class ExpireLockListPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ExpireLockListPageState extends State<ExpireLockListPage> {
|
||||
List<ExpireLockItem> dataList = [];
|
||||
final logic = Get.put(ExpireLockListLogic());
|
||||
final state = Get.find<ExpireLockListLogic>().state;
|
||||
|
||||
Future<void> getHttpData() async {
|
||||
logic.expireLockListRequest().then((ExpireLockListEntity value){
|
||||
if(mounted) setState(() {});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
expireLockListRequest();
|
||||
getHttpData();
|
||||
}
|
||||
|
||||
@override
|
||||
@ -36,15 +44,26 @@ class _ExpireLockListPageState extends State<ExpireLockListPage> {
|
||||
haveBack: true,
|
||||
backgroundColor: AppColors.mainColor,
|
||||
),
|
||||
body: _buildMainUI(),
|
||||
body: EasyRefreshTool(
|
||||
onRefresh: (){
|
||||
logic.pageNo = 1;
|
||||
getHttpData();
|
||||
},
|
||||
onLoad: (){
|
||||
getHttpData();
|
||||
},
|
||||
child: Obx(() => _buildMainUI())
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildMainUI() {
|
||||
return ListView.separated(
|
||||
itemCount: dataList.length,
|
||||
return state.dataList.isEmpty
|
||||
? NoData(noDataHeight: 1.sh - ScreenUtil().statusBarHeight - ScreenUtil().bottomBarHeight - 190.h - 64.h)
|
||||
: ListView.separated(
|
||||
itemCount: state.dataList.length,
|
||||
itemBuilder: (c, index) {
|
||||
ExpireLockItem indexEntity = dataList[index];
|
||||
ExpireLockItem indexEntity = state.dataList[index];
|
||||
return _electronicKeyItem(indexEntity);
|
||||
},
|
||||
separatorBuilder: (BuildContext context, int index) {
|
||||
@ -56,30 +75,6 @@ class _ExpireLockListPageState extends State<ExpireLockListPage> {
|
||||
);
|
||||
}
|
||||
|
||||
//请求即将到期列表
|
||||
Future<List<ExpireLockItem>> expireLockListRequest() async {
|
||||
ExpireLockListEntity entity =
|
||||
await ApiRepository.to.expireLockList('0', '1', '20');
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
setState(() {
|
||||
dataList = entity.data!.itemList!;
|
||||
// dataList = entity.data!;
|
||||
});
|
||||
}
|
||||
return dataList;
|
||||
}
|
||||
|
||||
//使用期限
|
||||
String getExpireDateStr(ExpireLockItem itemData) {
|
||||
DateTime startDateStr =
|
||||
DateTime.fromMillisecondsSinceEpoch(itemData.startDate!);
|
||||
DateTime endDateStr =
|
||||
DateTime.fromMillisecondsSinceEpoch(itemData.endDate!);
|
||||
String useDateStr =
|
||||
'${startDateStr.toLocal().toString().substring(0, 10)}-${endDateStr.toLocal().toString().substring(0, 10)}';
|
||||
return useDateStr;
|
||||
}
|
||||
|
||||
Widget _electronicKeyItem(ExpireLockItem itemData) {
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
@ -130,7 +125,7 @@ class _ExpireLockListPageState extends State<ExpireLockListPage> {
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
getExpireDateStr(itemData),
|
||||
logic.getExpireDateStr(itemData),
|
||||
style: TextStyle(
|
||||
fontSize: 18.sp,
|
||||
color: AppColors.placeholderTextColor),
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
|
||||
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import 'expireLockList_entity.dart';
|
||||
|
||||
class ExpireLockListState{
|
||||
final dataList = <ExpireLockItem>[].obs;
|
||||
}
|
||||
@ -2,7 +2,7 @@ import 'dart:async';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/appRouters.dart';
|
||||
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockListEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
|
||||
import 'package:star_lock/mine/mineSet/mineSet/mineSet_state.dart';
|
||||
import 'package:star_lock/tools/storage.dart';
|
||||
import '../../../../network/api_repository.dart';
|
||||
|
||||
@ -1,17 +1,19 @@
|
||||
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import '../../../../network/api_repository.dart';
|
||||
import 'transferSmartLock_entity.dart';
|
||||
import 'transferSmartLock_state.dart';
|
||||
|
||||
class TransferSmartLockLogic extends BaseGetXController{
|
||||
TransferSmartLockState state = TransferSmartLockState();
|
||||
|
||||
// 获取锁列表
|
||||
Future<void> getTransferLockListData() async{
|
||||
Future<TransferSmartLockEntity> getTransferLockListData() async{
|
||||
var entity = await ApiRepository.to.getTransferLockListData();
|
||||
if(entity.errorCode!.codeIsSuccessful){
|
||||
state.transferSmartLockListData.value = entity.data!.list!;
|
||||
}
|
||||
return entity;
|
||||
}
|
||||
|
||||
@override
|
||||
@ -20,7 +22,7 @@ class TransferSmartLockLogic extends BaseGetXController{
|
||||
super.onReady();
|
||||
print("onReady()");
|
||||
|
||||
getTransferLockListData();
|
||||
// getTransferLockListData();
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
@ -6,6 +6,8 @@ import '../../../../../appRouters.dart';
|
||||
import '../../../../../app_settings/app_colors.dart';
|
||||
import '../../../../../tools/titleAppBar.dart';
|
||||
import '../../../../../translations/trans_lib.dart';
|
||||
import '../../../../tools/EasyRefreshTool.dart';
|
||||
import '../../../../tools/keySearchWidget.dart';
|
||||
import '../../../../tools/noData.dart';
|
||||
import 'transferSmartLock_entity.dart';
|
||||
import 'transferSmartLock_logic.dart';
|
||||
@ -21,6 +23,19 @@ class _TransferSmartLockPageState extends State<TransferSmartLockPage> {
|
||||
final logic = Get.put(TransferSmartLockLogic());
|
||||
final state = Get.find<TransferSmartLockLogic>().state;
|
||||
|
||||
Future<void> getHttpData() async {
|
||||
logic.getTransferLockListData().then((TransferSmartLockEntity value){
|
||||
setState(() {});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
getHttpData();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
@ -47,67 +62,24 @@ class _TransferSmartLockPageState extends State<TransferSmartLockPage> {
|
||||
child: Text(state.isSelectAll == true ? TranslationLoader.lanKeys!.checkAll!.tr : TranslationLoader.lanKeys!.cancel!.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp)))
|
||||
],
|
||||
),
|
||||
body: Column(
|
||||
children: [
|
||||
_searchWidget(),
|
||||
SizedBox(height: 10.h),
|
||||
Expanded(child: _buildMainUI()),
|
||||
SizedBox(height: 20.h),
|
||||
_buildNextBtn(),
|
||||
SizedBox(height: 64.h)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _searchWidget() {
|
||||
return Container(
|
||||
height: 60.h,
|
||||
margin: EdgeInsets.only(top: 20.w, left: 20.w, right: 10.w),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white, borderRadius: BorderRadius.circular(5)),
|
||||
child: TextField(
|
||||
//输入框一行
|
||||
maxLines: 1,
|
||||
controller: state.searchController,
|
||||
autofocus: false,
|
||||
onChanged: (value){
|
||||
print("onChanged:$value");
|
||||
body: EasyRefreshTool(
|
||||
onRefresh: (){
|
||||
getHttpData();
|
||||
},
|
||||
onEditingComplete: (){
|
||||
print("onEditingComplete:");
|
||||
},
|
||||
onSubmitted: (value) async {
|
||||
FocusScope.of(context).requestFocus(FocusNode());
|
||||
await logic.getTransferLockListData();
|
||||
if(state.searchController.text.isNotEmpty){
|
||||
var contrList = <TransferSmartLockItemData>[];
|
||||
for (var element in state.transferSmartLockListData.value) {
|
||||
if(element.lockAlias!.contains(state.searchController.text)){
|
||||
contrList.add(element);
|
||||
}
|
||||
}
|
||||
state.transferSmartLockListData.value = contrList;
|
||||
print("contrList:${contrList[0].lockAlias} state.transferSmartLockListData.value:${state.transferSmartLockListData.value[0].lockAlias}");
|
||||
}
|
||||
},
|
||||
decoration: InputDecoration(
|
||||
//输入里面输入文字内边距设置
|
||||
contentPadding: const EdgeInsets.only(top: 12.0, left: -19.0, right: -15.0, bottom: 8.0),
|
||||
hintText: TranslationLoader.lanKeys!.pleaseEnter!.tr,
|
||||
hintStyle: TextStyle(fontSize: 22.sp, height: 3.0),
|
||||
//不需要输入框下划线
|
||||
border: InputBorder.none,
|
||||
//左边图标设置
|
||||
icon: Padding(
|
||||
padding: EdgeInsets.only(
|
||||
top: 20.h, bottom: 20.h, right: 20.w, left: 10.w),
|
||||
child: Image.asset(
|
||||
'images/main/icon_main_search.png',
|
||||
width: 40.w,
|
||||
height: 40.w,
|
||||
),
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
// KeySearchWidget(
|
||||
// editingController: state.searchController,
|
||||
// onSubmittedAction: () {
|
||||
// getHttpData();
|
||||
// },
|
||||
// ),
|
||||
SizedBox(height: 10.h),
|
||||
Expanded(child: _buildMainUI()),
|
||||
SizedBox(height: 20.h),
|
||||
_buildNextBtn(),
|
||||
SizedBox(height: 64.h)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@ -486,7 +486,7 @@ class ApiProvider extends BaseProvider {
|
||||
Future<Response> lockGroupAddLock(List lockIds, int groupId) => post(
|
||||
lockGroupAddLockURL.toUrl,
|
||||
jsonEncode({
|
||||
'lockId': lockIds,
|
||||
'lockIds': lockIds,
|
||||
'groupId': groupId,
|
||||
}));
|
||||
|
||||
@ -494,7 +494,7 @@ class ApiProvider extends BaseProvider {
|
||||
Future<Response> lockGroupDeletLock(List lockIds) => post(
|
||||
lockGroupDeletLockURL.toUrl,
|
||||
jsonEncode({
|
||||
'lockId': lockIds,
|
||||
'lockIds': lockIds,
|
||||
}));
|
||||
|
||||
Future<Response> selectLockList() =>
|
||||
@ -523,12 +523,10 @@ class ApiProvider extends BaseProvider {
|
||||
'remoteEnable': remoteEnable
|
||||
}));
|
||||
|
||||
Future<Response> expireLockList(
|
||||
String operatorUid, String pageNo, String pageSize) =>
|
||||
Future<Response> expireLockList(String pageNo, String pageSize) =>
|
||||
post(
|
||||
expireLockListURL.toUrl,
|
||||
jsonEncode({
|
||||
'operatorUid': operatorUid,
|
||||
'pageNo': pageNo,
|
||||
'pageSize': pageSize,
|
||||
}));
|
||||
|
||||
@ -16,8 +16,8 @@ import 'package:star_lock/mine/minePersonInfo/minePersonInfoSetSafetyProblem/min
|
||||
import 'package:star_lock/mine/minePersonInfo/minePersonInfoViewSafetyProblem/minePersonInfoViewSafetyProblem_entity.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/lockUserManage/expireLockList/expireLockListEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/lockUserManage/expireLockList/expireLockList_entity.dart';
|
||||
import 'package:star_lock/mine/mineSet/lockUserManage/lockUserManageList/keyListByUserEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/mineSet/userSettingInfoEntity.dart';
|
||||
import '../common/safetyVerification/entity/CheckSafetyVerificationEntity.dart';
|
||||
@ -541,9 +541,8 @@ class ApiRepository {
|
||||
}
|
||||
|
||||
//即将到期的锁列表
|
||||
Future<ExpireLockListEntity> expireLockList(
|
||||
String operatorUid, String pageNo, String pageSize) async {
|
||||
final res = await apiProvider.expireLockList(operatorUid, pageNo, pageSize);
|
||||
Future<ExpireLockListEntity> expireLockList(String pageNo, String pageSize) async {
|
||||
final res = await apiProvider.expireLockList(pageNo, pageSize);
|
||||
return ExpireLockListEntity.fromJson(res.body);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user