完善锁设置功能,修复已知bug

This commit is contained in:
魏少阳 2023-11-03 13:58:41 +08:00
parent 181922c6ff
commit 1434a44f78
43 changed files with 1123 additions and 351 deletions

View File

@ -40,7 +40,7 @@
<!--允许读设备等信息,用于问题排查-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:label="star_lock"
android:label="星锁"
android:name="${applicationName}"
android:icon="@mipmap/ic_logo">
<!-- 配置定位Service -->

View File

@ -1,9 +1,7 @@
import 'package:get/get.dart';
import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart';
import 'package:star_lock/login/register/starLock_register_binding.dart';
import 'package:get/get.dart';
import 'package:star_lock/common/safetyVerification/safetyVerification_binding.dart';
import 'package:star_lock/login/register/starLock_register_binding.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';
@ -18,7 +16,6 @@ import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDeta
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/mineSet_page.dart';
import 'package:star_lock/mine/mineSet/transferGateway/selectGetewayList_page.dart';
import 'package:star_lock/mine/mineSet/transferSmartLock/recipientInformation/recipientInformation_page.dart';
@ -128,7 +125,8 @@ import 'mine/mineSet/authorityManagement/getNameList_page.dart';
import 'mine/mineSet/hideInvalidUnlockPermissions/hideInvalidUnlockPermissions_page.dart';
import 'mine/mineSet/lockGroup/lockItemList_page.dart';
import 'mine/mineSet/lockScreen/lockScreen_page.dart';
import 'mine/mineSet/lockUserManage/ownedKeyList_page.dart';
import 'mine/mineSet/lockUserManage/lockUserManageList/lockUserManageList_page.dart';
import 'mine/mineSet/lockUserManage/ownedKeyList/ownedKeyList_page.dart';
import 'mine/supportStaff/supportStaff_page.dart';
import 'mine/valueAddedServices/valueAddedServicesBuy/valueAddedServicesBuy_page.dart';
import 'mine/valueAddedServices/valueAddedServicesBuyAndUseRecord/valueAddedServicesBuyAndUseRecordManage/valueAddedServicesBuyAndUseRecordManage_page.dart';

View File

@ -8,6 +8,7 @@ import 'package:star_lock/blue/sender_manage.dart';
import '../app_settings/app_settings.dart';
import '../tools/storage.dart';
import '../tools/toast.dart';
import 'io_tool/io_manager.dart';
import 'io_tool/io_model.dart';
import 'io_tool/io_tool.dart';
@ -230,10 +231,14 @@ class BlueManage{
}
connectStateCallBack!(deviceConnectionState!);
}else{
print("333333333:${deviceConnectionState}");
// print("333333333:${deviceConnectionState}");
connect(deviceMAC, deviceName, isShowLoading: false, connectStateCallBack: (state){
print("44444444:${state}");
connectStateCallBack!(state);
// print("44444444:${state}");
// if(deviceConnectionState == DeviceConnectionState.connected){
connectStateCallBack!(state);
// }else {
// Toast.show(msg: "连接设备失败,请确保在设备附近,设备未被连接,设备已打开");
// }
});
}
}

View File

@ -5,6 +5,7 @@ import 'package:get/get.dart';
import '../../appRouters.dart';
import '../../app_settings/app_colors.dart';
import '../../common/XSConstantMacro/XSConstantMacro.dart';
import '../../tools/tf_loginInput.dart';
import '../../tools/submitBtn.dart';
import '../../tools/titleAppBar.dart';
@ -102,13 +103,25 @@ class _StarLockLoginPageState extends State<StarLockLoginPage> {
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
child: Text('${TranslationLoader.lanKeys!.userAgreement!.tr}', style: TextStyle(color: AppColors.mainColor, fontSize: 20.sp)),
onTap: () {},
onTap: () {
Get.toNamed(Routers.webviewShowPage,
arguments: {
"url": XSConstantMacro.userAgreementURL,
"title": '用户协议'
});
},
)),
WidgetSpan(
alignment: PlaceholderAlignment.middle,
child: GestureDetector(
child: Text('${TranslationLoader.lanKeys!.privacyPolicy!.tr}', style: TextStyle( color: AppColors.mainColor, fontSize: 20.sp)),
onTap: () {},
onTap: () {
Get.toNamed(Routers.webviewShowPage,
arguments: {
"url": XSConstantMacro.privacyPolicyURL,
"title": '隐私政策'
});
},
)),
],
)),

View File

@ -8,6 +8,7 @@ import 'package:get/get.dart';
import '../../appRouters.dart';
import '../../app_settings/app_colors.dart';
import '../../common/XSConstantMacro/XSConstantMacro.dart';
import '../../tools/tf_loginInput.dart';
import '../../tools/submitBtn.dart';
import '../../tools/titleAppBar.dart';
@ -358,7 +359,13 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
'${TranslationLoader.lanKeys!.userAgreement!.tr}',
style: TextStyle(
color: AppColors.mainColor, fontSize: 20.sp)),
onTap: () {},
onTap: () {
Get.toNamed(Routers.webviewShowPage,
arguments: {
"url": XSConstantMacro.userAgreementURL,
"title": '用户协议'
});
},
)),
WidgetSpan(
alignment: PlaceholderAlignment.middle,
@ -367,7 +374,12 @@ class _StarLockRegisterPageState extends State<StarLockRegisterPage> {
'${TranslationLoader.lanKeys!.privacyPolicy!.tr}',
style: TextStyle(
color: AppColors.mainColor, fontSize: 20.sp)),
onTap: () {},
onTap: () {
Get.toNamed(Routers.webviewShowPage, arguments: {
"url": XSConstantMacro.privacyPolicyURL,
"title": '隐私政策'
});
},
)),
],
)),

View File

@ -315,14 +315,24 @@ class _AuthorizedAdminPageState extends State<AuthorizedAdminPage> {
// isOn:: 1 2
Future<void> updateRoomCheckIn() async {
var entity = await ApiRepository.to
.updateSetting(state.keyInfo.value.lockId.toString(), '1', '13');
if (entity.errorCode!.codeIsSuccessful) {
// var entity = await ApiRepository.to
// .updateSetting(state.keyInfo.value.lockId.toString(), '1', '13');
// if (entity.errorCode!.codeIsSuccessful) {
// print("标记为已入住成功啦啦啦啦啦");
// Toast.show(msg: "标记成功");
// setState(() {});
// } else {
// Toast.show(msg: '操作失败');
// }
var entity = await ApiRepository.to.setRoomStatusData(
lockId: state.keyInfo.value.lockId!,
roomStatus:1,
);
if(entity.errorCode!.codeIsSuccessful){
print("标记为已入住成功啦啦啦啦啦");
Toast.show(msg: "标记成功");
setState(() {});
} else {
Toast.show(msg: '操作失败');
}
}

View File

@ -62,7 +62,7 @@ class _CheckingInSetPageState extends State<CheckingInSetPage> {
isHaveDirection: true,
action: () async {
var data = await Get.toNamed(Routers.checkingInSetWorkTimePage, arguments: {
"getKeyInfosData": state.getKeyInfosData.value,
// "getKeyInfosData": state.getKeyInfosData.value,
"companyId": state.companyId.value,
"pushType": "2",
"checkingInSetInfo": state.checkingInSetInfo.value,

View File

@ -5,7 +5,7 @@ import '../../../lockMian/entity/lockListInfo_entity.dart';
import '../checkingInSet/checkingInSet_entity.dart';
class CheckingInSetWorkTimeState{
final getKeyInfosData = LockListInfoItemEntity().obs;
// final getKeyInfosData = LockListInfoItemEntity().obs;
final checkingInSetInfo = CheckingInSetInfo().obs;
final companyId = "".obs;
@ -19,7 +19,7 @@ class CheckingInSetWorkTimeState{
CheckingInSetWorkTimeState() {
Map map = Get.arguments;
pushType.value = map["pushType"];
getKeyInfosData.value = map["getKeyInfosData"];
// getKeyInfosData.value = map["getKeyInfosData"];
companyId.value = map["companyId"];
checkingInSetInfo.value = map["checkingInSetInfo"];
if(pushType.value != "0"){

View File

@ -165,7 +165,8 @@ class CheckingInAddStaffLogic extends BaseGetXController{
"0",
'0',
0,
0);
0,
1);
if (entity.errorCode!.codeIsSuccessful) {
print('获取密码成功');
if (entity.data != null) {

View File

@ -152,12 +152,14 @@ class _ElectronicKeyDetailPageState extends State<ElectronicKeyDetailPage> {
'${startDateStr.toLocal().toString().substring(0, 16)}\n${endDateStr.toLocal().toString().substring(0, 16)}';
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLong) {
//
DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.date!);
useDateStr = '${dateStr.toLocal().toString().substring(0, 16)}\n 永久';
// DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.date!);
// useDateStr = '${dateStr.toLocal().toString().substring(0, 16)}\n 永久';
useDateStr = '永久';
} else if (indexEntity.keyType == XSConstantMacro.keyTypeOnce) {
//
DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.date!);
useDateStr = '${dateStr.toLocal().toString().substring(0, 16)}\n 单次';
// DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.date!);
// useDateStr = '${dateStr.toLocal().toString().substring(0, 16)}\n 单次';
useDateStr = '单次';
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLoop) {
//
useDateStr = '循环';
@ -169,7 +171,7 @@ class _ElectronicKeyDetailPageState extends State<ElectronicKeyDetailPage> {
//
String getSenderDate(ElectronicKeyListItem indexEntity) {
String senderDate = '';
DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.date!);
DateTime dateStr = DateTime.fromMillisecondsSinceEpoch(indexEntity.sendDate!);
senderDate = dateStr.toLocal().toString().substring(0, 16);
return senderDate;
}

View File

@ -83,7 +83,7 @@ class ElectronicKeyListItem {
String? remarks;
int? isCameraEnable;
int? faceAuthentication;
int? date;
int? sendDate;
int? remoteEnable;
int? appUnlockMustOnline;
List? weekDays;
@ -105,7 +105,7 @@ class ElectronicKeyListItem {
this.remarks,
this.isCameraEnable,
this.faceAuthentication,
this.date,
this.sendDate,
this.remoteEnable,
this.appUnlockMustOnline,
this.weekDays});
@ -131,7 +131,7 @@ class ElectronicKeyListItem {
json['faceAuthentication'] != null
? faceAuthentication = json['faceAuthentication']
: 0;
date = json['date'];
sendDate = json['sendDate'];
remoteEnable = json['remoteEnable'];
appUnlockMustOnline = json['appUnlockMustOnline'];
json['weekDays'] != null ? weekDays = json['weekDays'] : [];
@ -155,7 +155,7 @@ class ElectronicKeyListItem {
data['remarks'] = remarks;
data['isCameraEnable'] = isCameraEnable;
data['faceAuthentication'] = faceAuthentication;
data['date'] = date;
data['sendDate'] = sendDate;
data['remoteEnable'] = remoteEnable;
data['appUnlockMustOnline'] = appUnlockMustOnline;
data['weekDays'] = weekDays;

View File

@ -394,14 +394,24 @@ class _SendElectronicKeyPageState extends State<SendElectronicKeyPage> {
// isOn:: 1 2
Future<void> updateRoomCheckIn() async {
var entity = await ApiRepository.to
.updateSetting(state.keyInfo.value.lockId.toString(), '1', '13');
if (entity.errorCode!.codeIsSuccessful) {
// var entity = await ApiRepository.to
// .updateSetting(state.keyInfo.value.lockId.toString(), '1', '13');
// if (entity.errorCode!.codeIsSuccessful) {
// print("标记为已入住成功啦啦啦啦啦");
// Toast.show(msg: "标记成功");
// setState(() {});
// } else {
// Toast.show(msg: '操作失败');
// }
var entity = await ApiRepository.to.setRoomStatusData(
lockId: state.keyInfo.value.lockId!,
roomStatus:1,
);
if(entity.errorCode!.codeIsSuccessful){
print("标记为已入住成功啦啦啦啦啦");
Toast.show(msg: "标记成功");
setState(() {});
} else {
Toast.show(msg: '操作失败');
}
}

View File

@ -7,7 +7,6 @@ import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_readSupportFunctionsWithParameters.dart';
import '../../../../blue/io_reply.dart';
import '../../../../blue/io_tool/io_manager.dart';
import '../../../../blue/io_tool/io_tool.dart';
import '../../../../blue/io_tool/manager_event_bus.dart';
import '../../../../blue/sender_manage.dart';
@ -20,26 +19,16 @@ import 'automaticBlocking_state.dart';
class AutomaticBlockingLogic extends BaseGetXController{
final AutomaticBlockingState state = AutomaticBlockingState();
void _setAutoUnLock() async{
String autoTime;
if(state.isOpen.value == false){
autoTime = "-1";
}else{
if(state.isCustomLockTime.value == true){
autoTime = state.timeController.text;
}else{
autoTime = state.autoLockTime.value;
}
}
void setAutoUnLock() async{
var entity = await ApiRepository.to.setAutoUnlock(
lockId: state.lockSetInfoData.value.lockId!,
autoLockTime:int.parse(autoTime),
type: 1,
autoLock:state.isOpen.value == true ? 1 : 0,
autoLockSecond: int.parse(state.autoLockTime.value),
);
if(entity.errorCode!.codeIsSuccessful){
state.autoLockTime.value = state.isOpen.value == false ? "0" : autoTime;
state.lockSetInfoData.value.lockSettingInfo!.autoLockSecond = int.parse(autoTime);
state.autoLockTime.value = state.isOpen.value == false ? "0" : state.autoLockTime.value;
state.lockSetInfoData.value.lockSettingInfo!.autoLockSecond = int.parse(state.autoLockTime.value);
eventBus.fire(RefreshLockListInfoDataEvent());
eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
Toast.show(msg: "操作成功");
@ -101,7 +90,7 @@ class AutomaticBlockingLogic extends BaseGetXController{
case 0x00:
//
print("${reply.commandType}数据解析成功");
_setAutoUnLock();
setAutoUnLock();
break;
case 0x06:
//

View File

@ -27,11 +27,9 @@ class CheckInCreatCompanyLogic extends BaseGetXController{
//
void setLockSetGeneralSetting() async{
var entity = await ApiRepository.to.setLockSetGeneralSettingData(
lockId: state.lockSetInfoData.value.lockId.toString(),
changeType:"1",
isOn:"1",
type:"1",
var entity = await ApiRepository.to.setCheckInData(
lockId: state.lockSetInfoData.value.lockId!,
attendance:1,
);
if(entity.errorCode!.codeIsSuccessful){
eventBus.fire(RefreshLockListInfoDataEvent());

View File

@ -46,7 +46,7 @@ class _CheckInCreatCompanyPageState extends State<CheckInCreatCompanyPage> {
isHaveDirection: true,
action: () async {
var data = await Get.toNamed(Routers.checkingInSetWorkTimePage, arguments: {
"getKeyInfosData": state.lockSetInfoData.value,
// "getKeyInfosData": state.lockSetInfoData.value,
"companyId": "1",
"pushType": "0",
"checkingInSetInfo": CheckingInSetInfo(),

View File

@ -64,7 +64,8 @@ class _LockEscalationPageState extends State<LockEscalationPage> {
height: 10.h,
),
Text(
"${TranslationLoader.lanKeys!.newVersion!.tr}1.0.1",
// "${TranslationLoader.lanKeys!.newVersion!.tr}1.0.1",
"未发现新版本",
style: TextStyle(color: AppColors.mainColor, fontSize: 18.sp),
),
SizedBox(

View File

@ -403,7 +403,7 @@ class LockSettingInfo {
int? lightingTime;
int? lightingSecond;
int? passageMode;
List<int>? passageModeConfig;
List<PassageModeConfig>? passageModeConfig;
int? attendance;
int? appUnlockOnline;
int? bluetoothBroadcast;
@ -451,7 +451,12 @@ class LockSettingInfo {
lightingTime = json['lightingTime'];
lightingSecond = json['lightingSecond'];
passageMode = json['passageMode'];
passageModeConfig = json['passageModeConfig'].cast<int>();
if (json['passageModeConfig'] != null) {
passageModeConfig = <PassageModeConfig>[];
json['passageModeConfig'].forEach((v) {
passageModeConfig!.add(PassageModeConfig.fromJson(v));
});
}
attendance = json['attendance'];
appUnlockOnline = json['appUnlockOnline'];
bluetoothBroadcast = json['bluetoothBroadcast'];
@ -477,7 +482,10 @@ class LockSettingInfo {
data['lightingTime'] = lightingTime;
data['lightingSecond'] = lightingSecond;
data['passageMode'] = passageMode;
data['passageModeConfig'] = passageModeConfig;
if (passageModeConfig != null) {
data['passageModeConfig'] =
passageModeConfig!.map((v) => v.toJson()).toList();
}
data['attendance'] = attendance;
data['appUnlockOnline'] = appUnlockOnline;
data['bluetoothBroadcast'] = bluetoothBroadcast;
@ -488,3 +496,29 @@ class LockSettingInfo {
}
}
class PassageModeConfig {
int? startDate;
int? endDate;
List<int>? weekDays;
int? isAllDay;
PassageModeConfig(
{this.startDate, this.endDate, this.weekDays, this.isAllDay});
PassageModeConfig.fromJson(Map<String, dynamic> json) {
startDate = json['startDate'];
endDate = json['endDate'];
weekDays = json['weekDays'].cast<int>();
isAllDay = json['isAllDay'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['startDate'] = startDate;
data['endDate'] = endDate;
data['weekDays'] = weekDays;
data['isAllDay'] = isAllDay;
return data;
}
}

View File

@ -64,8 +64,7 @@ class LockSetLogic extends BaseGetXController {
print("${reply.commandType}需要鉴权");
var privateKey = await Storage.getStringList(saveBluePrivateKey);
List<int> getPrivateKeyList =
changeStringListToIntList(privateKey!);
List<int> getPrivateKeyList = changeStringListToIntList(privateKey!);
var publicKey = await Storage.getStringList(saveBluePublicKey);
List<int> publicKeyDataList = changeStringListToIntList(publicKey!);
@ -218,6 +217,7 @@ class LockSetLogic extends BaseGetXController {
state.lockSettingInfo.value = state.lockSetInfoData.value.lockSettingInfo!;
state.lockFeature.value = state.lockSetInfoData.value.lockFeature!;
state.lockStatus.value = state.lockSetInfoData.value.lockStatus!;
state.isAttendance.value = state.lockSettingInfo.value.attendance!;
}
}
@ -291,34 +291,32 @@ class LockSetLogic extends BaseGetXController {
}
//
void setLockSetGeneralSetting(String isOn) async {
var entity = await ApiRepository.to.setLockSetGeneralSettingData(
lockId: state.lockSetInfoData.value.lockId.toString(),
changeType: "1",
isOn: isOn,
type: "1",
void setLockSetGeneralSetting() async {
var entity = await ApiRepository.to.setCheckInData(
lockId: state.lockSetInfoData.value.lockId!,
attendance:state.isAttendance.value == 1 ? 0 : 1,
);
if (entity.errorCode!.codeIsSuccessful) {
if(entity.errorCode!.codeIsSuccessful){
eventBus.fire(RefreshLockListInfoDataEvent());
// state.lockSetInfoData.value.attendance = int.parse(isOn);
// eventBus.fire(PassCurrentLockInformationEvent(state.getKeyInfosData.value));
state.isAttendance.value = (state.isAttendance.value == 1 ? 0 : 1);
state.lockSettingInfo.value.attendance = state.isAttendance.value;
print("state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
Toast.show(msg: "设置成功");
} else {}
}
}
//
void setLockPickingReminder() async {
var entity = await ApiRepository.to.setLockPickingReminderData(
lockId: state.lockSetInfoData.value.lockId.toString(),
keyId: state.lockSetInfoData.value.lockBasicInfo!.keyId.toString(),
monitorFlag: state.isLockPickingReminder.value == 1 ? "1" : "2", // 12
lockId: state.lockSetInfoData.value.lockId!,
unlockReminderPush: state.isLockPickingReminder.value == 1 ? 0 : 1,
);
if (entity.errorCode!.codeIsSuccessful) {
eventBus.fire(RefreshLockListInfoDataEvent());
// state.lockSetInfoData.value.unlockReminder = state.isLockPickingReminder.value;
// eventBus.fire(PassCurrentLockInformationEvent(state.getKeyInfosData.value));
state.isLockPickingReminder.value = (state.isLockPickingReminder.value == 1 ? 0 : 1);
state.lockSettingInfo.value.unlockReminderPush = state.isLockPickingReminder.value;
Toast.show(msg: "设置成功");
} else {}
}

View File

@ -188,8 +188,8 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
SizedBox(height: 10.h),
//
Obx(() => Visibility(
// visible: state.lockFeature.value.passageMode == 1 ? true : false,
visible:true,
visible: state.lockFeature.value.passageMode == 1 ? true : false,
// visible:true,
child: CommonItem(
leftTitel: TranslationLoader.lanKeys!.normallyOpenMode!.tr,
rightTitle: (state.lockSettingInfo.value.passageMode ?? 0) == 1
@ -320,20 +320,23 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
//
Obx(() {
var title = "";
if (state.lockSettingInfo.value.passageMode == 1) {
if (state.lockStatus.value.roomStatus == 1) {
title = TranslationLoader.lanKeys!.checkedIn!.tr;
} else if (state.lockSettingInfo.value.passageMode == 2) {
} else if (state.lockStatus.value.roomStatus == 0) {
title = TranslationLoader.lanKeys!.leisure!.tr;
}
return Visibility(
visible: state.lockStatus.value.roomStatus == 1 ? true : false,
// visible: true,
child: CommonItem(
leftTitel: TranslationLoader.lanKeys!.markedHouseState!.tr,
rightTitle: title,
isHaveLine: true,
isHaveDirection: true,
action: () {
Get.toNamed(Routers.markedHouseStatePage, arguments: state.lockSetInfoData.value);
Get.toNamed(Routers.markedHouseStatePage, arguments: {
'lockSetInfoData': state.lockSetInfoData.value
});
}));
}),
//
@ -470,28 +473,20 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
}
CupertinoSwitch _openCheckInSwitch() {
print("111111state.lockSettingInfo.value.attendance:${state.lockSettingInfo.value.attendance}");
return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: ((state.lockSettingInfo.value.attendance ?? 0) == 1) ? true : false,
value: ((state.isAttendance.value) == 1) ? true : false,
onChanged: (value) {
setState(() {
int isOnStr;
if (value == true) {
isOnStr = 1;
} else {
isOnStr = 2;
}
logic.openCheckingInData((checkingInInfoDataEntity) {
if (checkingInInfoDataEntity.data!.companyId == 0) {
showCupertinoAlertDialog(context);
} else {
logic.setLockSetGeneralSetting(isOnStr.toString());
logic.setLockSetGeneralSetting();
}
});
});
},
);
}
@ -501,10 +496,9 @@ class _LockSetPageState extends State<LockSetPage> with RouteAware {
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: (state.lockSettingInfo.value.unlockReminder ?? 0) == 1 ? true : false,
value: (state.isLockPickingReminder.value) == 1 ? true : false,
onChanged: (value) {
setState(() {
state.isLockPickingReminder.value = state.isLockPickingReminder.value == 1 ? 2 : 1;
logic.setLockPickingReminder();
});
},

View File

@ -11,9 +11,9 @@ class LockSetState {
final lockId = 0.obs;
var isAttendance = 1.obs;//
var isAttendance = 0.obs;//
var currentDeviceUUid = "".obs;// uuid
var isLockPickingReminder = 1.obs;//
var isLockPickingReminder = 0.obs;//
var passwordTF = TextEditingController();
LockSetState() {

View File

@ -28,7 +28,7 @@ class GetServerDatetimeEntity {
}
class Data {
String? date;
int? date;
Data(
{this.date});

View File

@ -186,7 +186,7 @@ class LockTimeLogic extends BaseGetXController{
lockId: state.lockSetInfoData.value.lockId.toString(),
);
if(entity.errorCode!.codeIsSuccessful){
String dataEime = DateTool().dateToYMDHNSString("${int.parse(entity.data!.date!)}");
String dataEime = DateTool().dateToYMDHNSString("${entity.data!.date!}");
state.dateTime.value = dataEime;
sendTiming();
}

View File

@ -53,19 +53,19 @@ class _LockTimePageState extends State<LockTimePage> {
padding: EdgeInsets.only(top: 20.w, bottom: 20.w),
onClick: () {
// print("1111111");
// logic.sendTiming();
logic.getServerDatetime();
logic.sendTiming();
// logic.getServerDatetime();
}),
SizedBox(
height: 40.h,
),
GestureDetector(
onTap: () {},
child: Container(
child: Text(TranslationLoader.lanKeys!.setTheDSTMode!.tr,
style: TextStyle(
fontSize: 24.sp, color: AppColors.mainColor))),
),
// GestureDetector(
// onTap: () {},
// child: Container(
// child: Text(TranslationLoader.lanKeys!.setTheDSTMode!.tr,
// style: TextStyle(
// fontSize: 24.sp, color: AppColors.mainColor))),
// ),
],
),
));

View File

@ -11,19 +11,16 @@ class MarkedHouseStateLogic extends BaseGetXController{
MarkedHouseStateState state = MarkedHouseStateState();
//
Future<void> setLockSetGeneralSetting() async{
var entity = await ApiRepository.to.setLockSetGeneralSettingData(
lockId: state.getKeyInfosData.value.lockId.toString(),
changeType:"1",
isOn:state.roomStatus.value.toString(), // : 1 2
type:"13", //
Future<void> setRoomStatusData() async{
var entity = await ApiRepository.to.setRoomStatusData(
lockId: state.lockSetInfoData.value.lockId!,
roomStatus:state.roomStatus.value,
);
if(entity.errorCode!.codeIsSuccessful){
eventBus.fire(RefreshLockListInfoDataEvent());
state.roomStatus.value = state.roomStatus.value;
// state.getKeyInfosData.value.antiPrySwitch = state.roomStatus.value;
// eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value.lockSetting!));
state.lockSetInfoData.value.lockStatus!.roomStatus = state.roomStatus.value;
eventBus.fire(PassCurrentLockInformationEvent(state.lockSetInfoData.value));
Toast.show(msg: "操作成功");
}else if(entity.errorCode! == 1){
//
@ -31,5 +28,4 @@ class MarkedHouseStateLogic extends BaseGetXController{
}
}
}

View File

@ -38,13 +38,13 @@ class _MarkedHouseStatePageState extends State<MarkedHouseStatePage> {
rightWidget: GestureDetector(
onTap: () {
setState(() {
state.roomStatus.value = 2;
state.roomStatus.value = 0;
});
},
child: Row(
children: [
Image.asset(
state.roomStatus.value == 2 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png',
state.roomStatus.value == 0 ? 'images/icon_round_selet.png' : 'images/icon_round_unSelet.png',
width: 30.w,
height: 30.w,
),
@ -82,7 +82,7 @@ class _MarkedHouseStatePageState extends State<MarkedHouseStatePage> {
// margin: EdgeInsets.only(left: 03.w, right: 30.w, top: 20.w),
padding: EdgeInsets.only(top: 20.w, bottom: 20.w),
onClick: () {
logic.setLockSetGeneralSetting();
logic.setRoomStatusData();
}),
],
));

View File

@ -6,13 +6,13 @@ import '../lockSet/lockSetInfo_entity.dart';
class MarkedHouseStateState{
var lockSetInfoData = LockSetInfoData().obs;
final getKeyInfosData = LockListInfoItemEntity().obs;
var roomStatus = 0.obs;
MarkedHouseStateState() {
var map = Get.arguments;
lockSetInfoData.value = map["lockSetInfoData"];
getKeyInfosData.value = map["keyInfo"];
roomStatus.value = lockSetInfoData.value.lockStatus!.roomStatus!;
}
}

View File

@ -23,42 +23,30 @@ import 'normallyOpenMode_state.dart';
class NormallyOpenModeLogic extends BaseGetXController{
NormallyOpenModeState state = NormallyOpenModeState();
//
void getNormallyOpenModeConfig() async{
var entity = await ApiRepository.to.getPassageModeConfig(
lockId: state.lockSetInfoData.value.lockId.toString(),
);
if(entity.errorCode!.codeIsSuccessful){
state.getPassageModeConfigData.value = entity;
state.isOpenNormallyOpenMode.value = state.getPassageModeConfigData.value.data!.passageMode == 1 ? true : false;
state.isOpenAutomaticUnLock.value = state.getPassageModeConfigData.value.data!.autoUnlock == 1 ? true : false;
state.isAllDay.value = state.getPassageModeConfigData.value.data!.isAllDay == 1 ? 1 : 2;
state.weekDays.value = state.getPassageModeConfigData.value.data!.weekDays!;
state.beginTimeMinute.value = state.getPassageModeConfigData.value.data!.startDate!;
state.beginTime.value = "${state.getPassageModeConfigData.value.data!.startDate!~/60}:${state.getPassageModeConfigData.value.data!.startDate! % 60}";
state.endTimeMinute.value = state.getPassageModeConfigData.value.data!.endDate!;
state.endTime.value = "${state.getPassageModeConfigData.value.data!.endDate!~/60}:${state.getPassageModeConfigData.value.data!.endDate! % 60}";
}
}
//
void configPassageMode() async{
if(state.weekDays.value.isNotEmpty){
Toast.show(msg:"请选择常开日期");
return;
}
if(state.endTimeMinute.value < state.beginTimeMinute.value){
Toast.show(msg:"结束时间不能小于开始时间哦");
return;
}
print("state.isOpenNormallyOpenMode.value:${state.isOpenNormallyOpenMode.value}");
var entity = await ApiRepository.to.configPassageModeLoadData(
lockId: state.lockSetInfoData.value.lockId.toString(),
passageMode:state.isOpenNormallyOpenMode.value == true ? "1":"2",
autoUnlock:state.isOpenAutomaticUnLock.value == true ? "1":"2",
type: "1",
startDate: state.beginTimeMinute.value.toString(),
endDate: state.endTimeMinute.value.toString(),
isAllDay: state.isAllDay.value == 1 ? "1":"2",
weekDays: state.weekDays,
var map = {
"isAllDay":state.isAllDay.value,
"weekDays":state.weekDays.value,
"startDate":state.beginTimeMinute.value,
"endDate":state.endTimeMinute.value,
};
// print("state.isOpenNormallyOpenMode.value:${state.isOpenNormallyOpenMode.value}");
var entity = await ApiRepository.to.setNormallyModeData(
lockId: state.lockSetInfoData.value.lockId!,
passageMode:state.isOpenNormallyOpenMode.value == true ? 1:0,
passageModeConfig: map,
);
if(entity.errorCode!.codeIsSuccessful){
eventBus.fire(RefreshLockListInfoDataEvent());
@ -194,7 +182,7 @@ class NormallyOpenModeLogic extends BaseGetXController{
list.add(state.endTimeMinute.value);
list.add(state.isAllDay.value == 1 ? 1:0);
list.add(0);
list.add(state.isOpenAutomaticUnLock.value == true ? 1:0);
list.add(0);
IoSenderManage.setSupportFunctionsWithParametersCommand(
keyID: state.lockSetInfoData.value.lockBasicInfo!.keyId.toString(),
@ -216,10 +204,6 @@ class NormallyOpenModeLogic extends BaseGetXController{
super.onReady();
print("onReady()");
if(state.lockSetInfoData.value.lockSettingInfo!.passageMode == 1){
getNormallyOpenModeConfig();
}
_initReplySubscription();
}

View File

@ -67,36 +67,36 @@ class _NormallyOpenModePageState extends State<NormallyOpenModePage> {
color: Colors.white,
child: Column(
children: [
CommonItem(
leftTitel: TranslationLoader.lanKeys!.automaticUnLock!.tr,
rightTitle: "",
isHaveLine: false,
isHaveRightWidget: true,
rightWidget:
SizedBox(width: 60.w, height: 50.h, child: _autoUnlockSwitch())),
Container(
height: 1.h,
color: AppColors.mainBackgroundColor,
),
Container(
padding: EdgeInsets.only(
left: 30.w, right: 30.w, top: 20.w, bottom: 20.w),
color: Colors.white,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Expanded(
child: Text(
TranslationLoader.lanKeys!.automaticUnLockTip!.tr,
style: TextStyle(fontSize: 20.sp),
)),
],
),
),
Container(
height: 10.h,
color: AppColors.mainBackgroundColor,
),
// CommonItem(
// leftTitel: TranslationLoader.lanKeys!.automaticUnLock!.tr,
// rightTitle: "",
// isHaveLine: false,
// isHaveRightWidget: true,
// rightWidget:
// SizedBox(width: 60.w, height: 50.h, child: _autoUnlockSwitch())),
// Container(
// height: 1.h,
// color: AppColors.mainBackgroundColor,
// ),
// Container(
// padding: EdgeInsets.only(
// left: 30.w, right: 30.w, top: 20.w, bottom: 20.w),
// color: Colors.white,
// child: Row(
// mainAxisAlignment: MainAxisAlignment.start,
// children: [
// Expanded(
// child: Text(
// TranslationLoader.lanKeys!.automaticUnLockTip!.tr,
// style: TextStyle(fontSize: 20.sp),
// )),
// ],
// ),
// ),
// Container(
// height: 10.h,
// color: AppColors.mainBackgroundColor,
// ),
topWidget(),
SizedBox(
height: 10.h,
@ -224,7 +224,7 @@ class _NormallyOpenModePageState extends State<NormallyOpenModePage> {
onTap: () {
//
if(state.isAllDay.value == 1){
state.isAllDay.value = 2;
state.isAllDay.value = 0;
}else{
state.isAllDay.value = 1;
}
@ -304,17 +304,17 @@ class _NormallyOpenModePageState extends State<NormallyOpenModePage> {
);
}
CupertinoSwitch _autoUnlockSwitch() {
return CupertinoSwitch(
activeColor: CupertinoColors.activeBlue,
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.isOpenAutomaticUnLock.value,
onChanged: (value) {
setState(() {
state.isOpenAutomaticUnLock.value = value;
});
},
);
}
// CupertinoSwitch _autoUnlockSwitch() {
// return CupertinoSwitch(
// activeColor: CupertinoColors.activeBlue,
// trackColor: CupertinoColors.systemGrey5,
// thumbColor: CupertinoColors.white,
// value: state.isOpenAutomaticUnLock.value,
// onChanged: (value) {
// setState(() {
// state.isOpenAutomaticUnLock.value = value;
// });
// },
// );
// }
}

View File

@ -1,16 +1,13 @@
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/lcokSet/normallyOpenMode/getPassageModeConfig_entity.dart';
import '../../../lockMian/entity/lockListInfo_entity.dart';
import '../lockSet/lockSetInfo_entity.dart';
class NormallyOpenModeState{
var lockSetInfoData = LockSetInfoData().obs;
var getPassageModeConfigData = GetPassageModeConfigEntity().obs;
// var getPassageModeConfigData = GetPassageModeConfigEntity().obs;
var isOpenNormallyOpenMode = false.obs;// 1-2-
var isOpenAutomaticUnLock = false.obs;// :1-2-
// var isOpenAutomaticUnLock = false.obs;// :1-2-
var isAllDay = 0.obs;// 1-2-, startDate和endDate参数将被忽略.
var weekDays = [].obs;//
var beginTime = "".obs;//
@ -21,5 +18,16 @@ class NormallyOpenModeState{
NormallyOpenModeState() {
var map = Get.arguments;
lockSetInfoData.value = map["lockSetInfoData"];
isOpenNormallyOpenMode.value = lockSetInfoData.value.lockSettingInfo!.passageMode! == 1 ? true : false;
if((isOpenNormallyOpenMode.value == true) && (lockSetInfoData.value.lockSettingInfo!.passageModeConfig!.isNotEmpty)){
isAllDay.value = lockSetInfoData.value.lockSettingInfo!.passageModeConfig![0].isAllDay!;
weekDays.value = lockSetInfoData.value.lockSettingInfo!.passageModeConfig![0].weekDays!;
beginTimeMinute.value = lockSetInfoData.value.lockSettingInfo!.passageModeConfig![0].startDate!;
beginTime.value = "${lockSetInfoData.value.lockSettingInfo!.passageModeConfig![0].startDate!~/60}:${lockSetInfoData.value.lockSettingInfo!.passageModeConfig![0].startDate! % 60}";
endTimeMinute.value = lockSetInfoData.value.lockSettingInfo!.passageModeConfig![0].endDate!;
endTime.value = "${lockSetInfoData.value.lockSettingInfo!.passageModeConfig![0].endDate!~/60}:${lockSetInfoData.value.lockSettingInfo!.passageModeConfig![0].endDate! % 60}";
}
}
}

View File

@ -129,9 +129,10 @@ class _PasswordKeyDetailPageState extends State<PasswordKeyDetailPage> {
// backgroundColor: Colors.white,
side: BorderSide(width: 1, color: AppColors.mainColor)),
onPressed: () {
Navigator.pushNamed(
context, Routers.otherTypeKeyManagePage,
arguments: 0);
Navigator.pushNamed(context, Routers.otherTypeKeyManagePage, arguments: {
"lockId": itemData.lockId,
"fromType": 0
});
},
child: Text(
'设置卡',
@ -151,13 +152,12 @@ class _PasswordKeyDetailPageState extends State<PasswordKeyDetailPage> {
side: BorderSide(width: 1, color: AppColors.mainColor)),
onPressed: () {
Navigator.pushNamed(
context, Routers.otherTypeKeyManagePage,
arguments: 1);
context, Routers.otherTypeKeyManagePage,arguments: {
"lockId": itemData.lockId,
"fromType": 1
});
},
child: Text(
'设置指纹',
style: TextStyle(
color: AppColors.mainColor, fontSize: 24.sp),
child: Text('设置指纹', style: TextStyle(color: AppColors.mainColor, fontSize: 24.sp),
)),
),
SizedBox(
@ -171,9 +171,10 @@ class _PasswordKeyDetailPageState extends State<PasswordKeyDetailPage> {
// backgroundColor: Colors.white,
side: BorderSide(width: 1, color: AppColors.mainColor)),
onPressed: () {
Navigator.pushNamed(
context, Routers.otherTypeKeyManagePage,
arguments: 2);
Navigator.pushNamed(context, Routers.otherTypeKeyManagePage, arguments: {
"lockId": itemData.lockId,
"fromType": 2
});
},
child: Text(
'设置遥控',

View File

@ -1,3 +1,4 @@
import 'package:date_format/date_format.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -16,6 +17,7 @@ import 'package:star_lock/tools/toast.dart';
import '../../../../appRouters.dart';
import '../../../../tools/commonItem.dart';
import '../../../../tools/submitBtn.dart';
import '../../../../translations/trans_lib.dart';
import '../../../lockMian/entity/lockListInfo_entity.dart';
@ -241,7 +243,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
//
Widget keyIfPerpetualWidget() {
return Container(
margin: EdgeInsets.only(left: 20.w, right: 20.w),
// margin: EdgeInsets.only(left: 20.w, right: 20.w),
child: Column(
children: [
CommonItem(
@ -262,7 +264,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
//
Widget keyCirculationWidget() {
return Container(
margin: EdgeInsets.only(left: 20.w, right: 20.w),
// margin: EdgeInsets.only(left: 20.w, right: 20.w),
child: Column(
children: [
CommonItem(
@ -291,7 +293,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
isHaveLine: true,
isHaveDirection: true,
action: () {
Pickers.showDatePicker(context, mode: DateMode.HM,
Pickers.showDatePicker(context, mode: DateMode.H,
onConfirm: (p) {
setState(() {
_effectiveDateTime = DateTime.parse(
@ -307,8 +309,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
rightTitle: _selectFailureDate,
isHaveDirection: true,
action: () {
Pickers.showDatePicker(context, mode: DateMode.HM,
onConfirm: (p) {
Pickers.showDatePicker(context, mode: DateMode.H, onConfirm: (p) {
setState(() {
_failureDateTime = DateTime.parse(
'${_failureDateTime.year}-${intToStr(_failureDateTime.month)}-${intToStr(_failureDateTime.day)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}');
@ -325,9 +326,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
//pickerView
showPickerView(BuildContext context, List dataList) {
Pickers.showSinglePicker(context,
data: dataList,
pickerStyle: DefaultPickerStyle(), onConfirm: (p, position) {
Pickers.showSinglePicker(context, data: dataList, pickerStyle: DefaultPickerStyle(), onConfirm: (p, position) {
setState(() {
cyclicModeStr = p;
});
@ -482,7 +481,8 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage> {
getEffectiveDateTime,
'0',
startHours,
endHours);
endHours,
1);
if (entity.errorCode!.codeIsSuccessful) {
print('获取密码成功');
_isSendSuccess = true;

View File

@ -114,6 +114,7 @@ class LockListInfoItemEntity {
int? keyRight;
int? keyStatus;
int? isLockOwner;
int? sendDate;
Bluetooth? bluetooth;
LockFeature? lockFeature;
LockSetting? lockSetting;
@ -140,7 +141,8 @@ class LockListInfoItemEntity {
this.isLockOwner,
this.bluetooth,
this.lockFeature,
this.lockSetting});
this.lockSetting,
this.sendDate});
LockListInfoItemEntity.fromJson(Map<String, dynamic> json) {
keyId = json['keyId'];
@ -162,6 +164,7 @@ class LockListInfoItemEntity {
keyRight = json['keyRight'];
keyStatus = json['keyStatus'];
isLockOwner = json['isLockOwner'];
sendDate = json['sendDate'];
bluetooth = json['bluetooth'] != null
? Bluetooth.fromJson(json['bluetooth'])
: null;
@ -194,6 +197,7 @@ class LockListInfoItemEntity {
data['keyRight'] = keyRight;
data['keyStatus'] = keyStatus;
data['isLockOwner'] = isLockOwner;
data['sendDate'] = sendDate;
if (bluetooth != null) {
data['bluetooth'] = bluetooth!.toJson();
}

View File

@ -0,0 +1,206 @@
class KeyListByUserEntity {
int? errorCode;
String? description;
String? errorMsg;
KeyListByUserData? data;
KeyListByUserEntity(
{this.errorCode, this.description, this.errorMsg, this.data});
KeyListByUserEntity.fromJson(Map<String, dynamic> json) {
errorCode = json['errorCode'];
description = json['description'];
errorMsg = json['errorMsg'];
data =
json['data'] != null ? KeyListByUserData.fromJson(json['data']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['errorCode'] = errorCode;
data['description'] = description;
data['errorMsg'] = errorMsg;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
return data;
}
}
class KeyListByUserData {
List<KeyListItem>? keyList;
int? pageNo;
int? pageSize;
int? pages;
int? total;
KeyListByUserData(
{this.keyList, this.pageNo, this.pageSize, this.pages, this.total});
KeyListByUserData.fromJson(Map<String, dynamic> json) {
if (json['list'] != null) {
keyList = <KeyListItem>[];
json['list'].forEach((v) {
keyList!.add(KeyListItem.fromJson(v));
});
}
pageNo = json['pageNo'];
pageSize = json['pageSize'];
pages = json['pages'];
total = json['total'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
if (keyList != null) {
data['list'] = keyList!.map((v) => v.toJson()).toList();
}
data['pageNo'] = pageNo;
data['pageSize'] = pageSize;
data['pages'] = pages;
data['total'] = total;
return data;
}
}
class KeyListItem {
String? clientId;
int? lockOwnerId;
int? lockId;
int? senderUserId;
String? keyName;
int? keyType;
int? startDate;
int? endDate;
List? weekDays;
String? remarks;
int? remoteEnable;
int? isCameraEnable;
int? faceAuthentication;
int? keyRight;
int? userType;
int? keyStatus;
int? groupId;
int? lockUserNo;
int? date;
String? createdAt;
String? updatedAt;
UserInfo? userInfo;
int? keyId;
int? uid;
String? lockAlias;
KeyListItem(
{this.clientId,
this.lockOwnerId,
this.lockId,
this.senderUserId,
this.keyName,
this.keyType,
this.startDate,
this.endDate,
this.weekDays,
this.remarks,
this.remoteEnable,
this.isCameraEnable,
this.faceAuthentication,
this.keyRight,
this.userType,
this.keyStatus,
this.groupId,
this.lockUserNo,
this.date,
this.createdAt,
this.updatedAt,
this.userInfo,
this.keyId,
this.uid,
this.lockAlias});
KeyListItem.fromJson(Map<String, dynamic> json) {
clientId = json['clientId'];
lockOwnerId = json['lockOwnerId'];
lockId = json['lockId'];
senderUserId = json['senderUserId'];
keyName = json['keyName'];
keyType = json['keyType'];
startDate = json['startDate'];
endDate = json['endDate'];
if (json['weekDays'] != null) {
weekDays = [];
json['weekDays'].forEach((v) {
weekDays!.add(v);
});
}
remarks = json['remarks'];
remoteEnable = json['remoteEnable'];
isCameraEnable = json['isCameraEnable'];
faceAuthentication = json['faceAuthentication'];
keyRight = json['keyRight'];
userType = json['userType'];
keyStatus = json['keyStatus'];
groupId = json['groupId'];
lockUserNo = json['lockUserNo'];
date = json['date'];
createdAt = json['created_at'];
updatedAt = json['updated_at'];
userInfo =
json['user_info'] != null ? UserInfo.fromJson(json['user_info']) : null;
keyId = json['keyId'];
uid = json['uid'];
lockAlias = json['lockAlias'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['clientId'] = clientId;
data['lockOwnerId'] = lockOwnerId;
data['lockId'] = lockId;
data['senderUserId'] = senderUserId;
data['keyName'] = keyName;
data['keyType'] = keyType;
data['startDate'] = startDate;
data['endDate'] = endDate;
if (weekDays != null) {
data['weekDays'] = weekDays!.map((v) => v.toJson()).toList();
}
data['remarks'] = remarks;
data['remoteEnable'] = remoteEnable;
data['isCameraEnable'] = isCameraEnable;
data['faceAuthentication'] = faceAuthentication;
data['keyRight'] = keyRight;
data['userType'] = userType;
data['keyStatus'] = keyStatus;
data['groupId'] = groupId;
data['lockUserNo'] = lockUserNo;
data['date'] = date;
data['created_at'] = createdAt;
data['updated_at'] = updatedAt;
if (userInfo != null) {
data['user_info'] = userInfo!.toJson();
}
data['keyId'] = keyId;
data['uid'] = uid;
data['lockAlias'] = lockAlias;
return data;
}
}
class UserInfo {
int? id;
String? accountName;
UserInfo({this.id, this.accountName});
UserInfo.fromJson(Map<String, dynamic> json) {
id = json['id'];
accountName = json['account_name'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = id;
data['account_name'] = accountName;
return data;
}
}

View File

@ -0,0 +1,48 @@
import '../../../../main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart';
import '../../../../network/api_repository.dart';
import '../../../../tools/baseGetXController.dart';
import '../../../../tools/toast.dart';
import 'lockUserManageList_state.dart';
class LockUserManageListLogic extends BaseGetXController {
final LockUserManageListState state = LockUserManageListState();
//
void lockUserListRequest() async {
LockUserListEntity entity =
await ApiRepository.to.lockUserList('1', '20', state.searchController.text);
if (entity.errorCode!.codeIsSuccessful) {
state.dataList.value = entity.data!;
}
}
//
Future<void> deletelockUserRequest(int uid) async {
var entity = await ApiRepository.to.deletLockUser(uid);
if (entity.errorCode!.codeIsSuccessful) {
Toast.show(msg: "删除成功");
lockUserListRequest();
}
}
@override
void onReady() {
// TODO: implement onReady
super.onReady();
lockUserListRequest();
}
@override
void onInit() {
// TODO: implement onInit
super.onInit();
}
@override
void onClose() {
// TODO: implement onClose
}
}

View File

@ -0,0 +1,262 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.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 'lockUserManageList_logic.dart';
class LockUserManageListPage extends StatefulWidget {
const LockUserManageListPage({Key? key}) : super(key: key);
@override
State<LockUserManageListPage> createState() => _LockUserManageListPageState();
}
class _LockUserManageListPageState extends State<LockUserManageListPage> {
final logic = Get.put(LockUserManageListLogic());
final state = Get.find<LockUserManageListLogic>().state;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.lockUserManagement!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor,
actionsList: [
TextButton(
child: Text(
TranslationLoader.lanKeys!.aboutToExpire!.tr,
style: TextStyle(color: Colors.white, fontSize: 24.sp),
),
onPressed: () {
Navigator.pushNamed(context, Routers.expireLockListPage);
},
),
],
),
body: Column(
children: [
_searchWidget(),
SizedBox(
height: 20.h,
),
Obx(() => Expanded(child: _buildMainUI())),
SizedBox(
width: ScreenUtil().screenWidth - 40.w,
height: 90.h,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.white,
),
onPressed: () {
Navigator.pushNamed(
context, Routers.massSendElectronicKeyManagePage)
.then((value) {
logic.lockUserListRequest();
});
},
child: Text(
TranslationLoader.lanKeys!.sendGroupKey!.tr,
style: TextStyle(
color: AppColors.mainColor,
fontSize: 24.sp,
fontWeight: FontWeight.w600),
)),
),
SizedBox(
height: 64.h,
)
],
),
);
}
Widget _searchWidget() {
return Container(
height: 60.h,
margin: EdgeInsets.only(top: 20.w, left: 20.w, right: 20.w),
decoration: BoxDecoration(
color: Colors.white, borderRadius: BorderRadius.circular(5)),
child: TextField(
//
maxLines: 1,
controller: state.searchController,
autofocus: false,
onSubmitted: (value) {
logic.lockUserListRequest();
},
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,
),
),
),
),
);
}
Widget _buildMainUI() {
return state.dataList.isEmpty
? const NoData()
: ListView.separated(
itemCount: state.dataList.length,
itemBuilder: (c, index) {
LockUserData indexEntity = state.dataList[index];
if (index < state.dataList.length) {
return LeftSlideActions(
key: Key(indexEntity.userid!),
actionsWidth: 60,
actions: [
_buildDeleteBtn(indexEntity),
],
decoration: const BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(1)),
),
child: _electronicKeyItem(indexEntity),
);
}
return const SizedBox.shrink();
// return _electronicKeyItem(indexEntity);
},
separatorBuilder: (BuildContext context, int index) {
return const Divider(
height: 1,
color: AppColors.greyLineColor,
);
},
);
}
Widget _electronicKeyItem(LockUserData itemData) {
return GestureDetector(
onTap: () {
Navigator.pushNamed(context, Routers.ownedKeyListPage,
arguments: {'uid': itemData.uid});
},
child: Container(
height: 90.h,
color: Colors.white,
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.circular(10.w),
// ),
child: Row(
children: [
SizedBox(
width: 30.w,
),
Image.asset(
'images/controls_user.png',
width: 60.w,
height: 60.w,
),
SizedBox(
width: 20.w,
),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
itemData.nickname ?? '',
style: TextStyle(
fontSize: 24.sp, color: AppColors.blackColor),
),
],
),
SizedBox(height: 5.h),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
itemData.userid ?? '',
style: TextStyle(
fontSize: 18.sp,
color: AppColors.placeholderTextColor),
),
],
),
SizedBox(width: 20.h),
],
),
),
Image.asset(
'images/icon_right_grey.png',
width: 12.w,
height: 21.w,
),
SizedBox(width: 20.w),
],
),
),
);
}
Widget _buildDeleteBtn(LockUserData passwordKeyListItem) {
return GestureDetector(
onTap: () {
// :
showIosTipViewDialog(context, passwordKeyListItem);
},
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, LockUserData lockUserData) {
showDialog(
context: context,
builder: (BuildContext context) {
return ShowIosTipView(
title: "提示",
tipTitle: "确定要删除吗?",
sureClick: () {
Get.back();
logic.deletelockUserRequest(lockUserData.uid!);
},
cancelClick: () {
Get.back();
},
);
}
);
}
}

View File

@ -0,0 +1,11 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../../../main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart';
class LockUserManageListState {
final dataList = <LockUserData>[].obs;
final TextEditingController searchController = TextEditingController();
}

View File

@ -0,0 +1,198 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get_utils/get_utils.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/lockUserManageList/keyListByUserEntity.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 '../../../../../app_settings/app_colors.dart';
import '../../../../../tools/titleAppBar.dart';
class OwnedKeyListPage extends StatefulWidget {
const OwnedKeyListPage({Key? key}) : super(key: key);
@override
State<OwnedKeyListPage> createState() => _OwnedKeyListPageState();
}
class _OwnedKeyListPageState extends State<OwnedKeyListPage> {
String getUidStr = '';
List dataList = [];
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
dynamic obj = ModalRoute.of(context)?.settings.arguments;
if (obj != null && (obj["uid"] != null)) {
getUidStr = obj["uid"].toString();
}
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.ownedKey!.tr,
haveBack: true,
backgroundColor: AppColors.mainColor,
),
body: FutureBuilder<List<KeyListItem>>(
future: mockNetworkDataRequest(),
builder: (BuildContext context,
AsyncSnapshot<List<KeyListItem>> snapshot) {
//
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
//
return const Text('请求失败');
} else {
//
final List<KeyListItem> itemList = snapshot.data!;
return Column(
children: [
_topOwnedKeyText(),
Expanded(child: _buildMainUI(itemList)),
],
);
}
} else {
// loading
return Container();
}
}));
}
Widget _topOwnedKeyText() {
return Container(
color: Colors.white,
width: ScreenUtil().screenWidth,
// margin: EdgeInsets.only(left: 30.w, top: 30.w, right: 30.w, bottom: 30.w),
child: Padding(
padding:
EdgeInsets.only(left: 30.w, top: 20.w, right: 20.w, bottom: 10.w),
child: Text(
TranslationLoader.lanKeys!.ownedKey!.tr,
style: TextStyle(fontSize: 24.sp),
),
),
);
}
//
Future<List<KeyListItem>> mockNetworkDataRequest() async {
KeyListByUserEntity entity =
await ApiRepository.to.keyListByUser('1', '20', getUidStr);
if (entity.errorCode!.codeIsSuccessful) {
print("请求用户拥有的锁:${entity.data!.keyList}");
}
if (entity.data != null) {
return entity.data!.keyList!;
} else {
List<KeyListItem> dataList = [];
return dataList;
}
}
//使
String getUseDateStr(KeyListItem indexEntity) {
String useDateStr = '';
if (indexEntity.keyType == XSConstantMacro.keyTypeTime) {
//
if (indexEntity.startDate != null && indexEntity.endDate != null) {
DateTime startDateStr =
DateTime.fromMillisecondsSinceEpoch(indexEntity.startDate!);
DateTime endDateStr =
DateTime.fromMillisecondsSinceEpoch(indexEntity.endDate!);
useDateStr =
'${startDateStr.toLocal().toString().substring(0, 16)}-${endDateStr.toLocal().toString().substring(0, 16)}';
} else {
useDateStr = '限期';
}
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLong) {
//
useDateStr = '永久';
} else if (indexEntity.keyType == XSConstantMacro.keyTypeOnce) {
//
useDateStr = '单次';
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLoop) {
//
useDateStr = '循环';
}
return useDateStr;
}
Widget _buildMainUI(List itemList) {
return ListView.builder(
itemCount: itemList.length,
itemBuilder: (c, index) {
KeyListItem itemData = itemList[index];
return _electronicKeyItem(itemData);
});
}
Widget _electronicKeyItem(KeyListItem itemData) {
return GestureDetector(
onTap: () {},
child: Container(
height: 90.h,
margin: const EdgeInsets.only(top: 1),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10.w),
),
child: Row(
children: [
SizedBox(
width: 30.w,
),
Image.asset(
'images/icon_lockGroup_item.png',
width: 60.w,
height: 60.w,
),
SizedBox(
width: 20.w,
),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
itemData.lockAlias ?? '',
style: TextStyle(
fontSize: 24.sp, color: AppColors.blackColor),
),
],
),
SizedBox(height: 5.h),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
getUseDateStr(itemData),
style: TextStyle(
fontSize: 18.sp,
color: AppColors.placeholderTextColor),
),
],
),
SizedBox(width: 20.h),
],
),
),
SizedBox(width: 20.h),
],
),
),
);
}
}

View File

@ -8,6 +8,7 @@ import 'package:star_lock/tools/storage.dart';
import '../../../../network/api_repository.dart';
import '../../../../tools/baseGetXController.dart';
import '../../../tools/eventBusEventManage.dart';
import '../../../tools/toast.dart';
class MineSetLogic extends BaseGetXController {
final MineSetState state = MineSetState();
@ -41,6 +42,7 @@ class MineSetLogic extends BaseGetXController {
ExpireLockListEntity entity = await ApiRepository.to
.setAlertMode('1', state.isPrompTone.value == true ? '1' : '2');
if (entity.errorCode!.codeIsSuccessful) {
Toast.show(msg: "设置成功");
userSettingsInfoRequest();
}
}
@ -64,6 +66,7 @@ class MineSetLogic extends BaseGetXController {
ExpireLockListEntity entity = await ApiRepository.to
.setTouchUnlockFlag(state.isTouchUnlock.value == true ? '1' : '2');
if (entity.errorCode!.codeIsSuccessful) {
Toast.show(msg: "设置成功");
userSettingsInfoRequest();
}
}

View File

@ -73,9 +73,7 @@ class _MineSetPageState extends State<MineSetPage> {
width: 60.w,
height: 50.h,
child: Obx(() => _isPushNotificationSwitch()))),
SizedBox(
height: 10.h,
),
SizedBox(height: 10.h),
CommonItem(
leftTitel: TranslationLoader.lanKeys!.lockUserManagement!.tr,
rightTitle: "",

View File

@ -49,18 +49,12 @@ abstract class Api {
final String addlockGroupURL = '/keyGroup/add'; //
final String setlockGroupURL = '/keyGroup/setGroup'; //
final String lockGroupListURL = '/authorizedAdmin/listGroup'; //
final String listLockByGroupURL =
'/authorizedAdmin/listLockByGroup'; //
final String updateSettingURL = '/room/updateSetting'; //
final String listLockByGroupURL = '/authorizedAdmin/listLockByGroup'; //
final String setRoomStatusURL = '/lock/updateLockStatus'; //
final String keyGroupListURL = '/keyGroup/list'; //
final String lockListByGroupURL = '/room/listByGroup'; //
final String getWifiServiceIpURL = '/wifiLock/getWifiServiceIp'; // Wifi锁服务器
final String updateLockSettingUrl = '/lockSetting/updateLockSetting'; // /
final String setAutoLockTimeUrl = '/room/setAutoLockTime'; //
final String getPassageModeConfigUrl = '/room/getPassageModeConfig'; //
final String configPassageModeUrl = '/room/configPassageMode'; //
final String updateSettingUrl = '/room/updateSetting'; // ///
final String updateLockSettingUrl = '/lockSetting/updateLockSetting'; //
final String roomQueryDateUrl = '/room/queryDate'; //
final String lockDiagnoseUrl = '/room/uploadLockInfo'; //
@ -70,8 +64,6 @@ abstract class Api {
'/attendanceCompany/isExistenceCompany'; //
final String setCheckInCreateCompanyURL =
'/attendanceCompany/add'; //
final String setLockPickingReminderDataURL =
'/key/updateMonitorFlag'; //
final String getAttendanceRecordListByDateURL = '/attendanceRecord/listByDate'; // -
final String getAttendanceRecordListByMonthURL = '/attendanceRecord/earlyListByMonth'; // -
@ -111,6 +103,7 @@ abstract class Api {
final String getKeyDetailURL = '/key/get'; //
final String lockUserListURL = '/keyUser/listKeyUser'; //
final String deletLockUserURL = '/keyUser/deleteKeyUser'; //
final String canSendKeyURL = '/keyUser/canSendKey'; //
final String batchSendKeyURL = '/key/batchSend'; //
final String addAuthorizedAdminURL = '/authorizedAdmin/add'; //

View File

@ -376,7 +376,8 @@ class ApiProvider extends BaseProvider {
String startDate,
String timezoneRawOffSet,
int startHours,
int endHours) =>
int endHours,
int isCoerced) =>
post(
passwordKeyGetURL.toUrl,
jsonEncode({
@ -390,7 +391,8 @@ class ApiProvider extends BaseProvider {
'startDate': startDate,
'timezoneRawOffSet': timezoneRawOffSet,
'hoursStart': startHours,
'hoursEnd': endHours
'hoursEnd': endHours,
'isCoerced': isCoerced,
}));
Future<Response> addKeyboardPwd(
@ -495,9 +497,9 @@ class ApiProvider extends BaseProvider {
'deleteType': deleteType
}));
Future<Response> updateSetting(String lockId, String isOn, String type) =>
post(updateSettingURL.toUrl,
jsonEncode({'lockId': lockId, 'isOn': isOn, 'type': type}));
// Future<Response> updateSetting(String lockId, String isOn, String type) =>
// post(updateSettingURL.toUrl,
// jsonEncode({'lockId': lockId, 'isOn': isOn, 'type': type}));
Future<Response> keyGroupList(String type) =>
post(keyGroupListURL.toUrl, jsonEncode({'type': type}));
@ -508,13 +510,13 @@ class ApiProvider extends BaseProvider {
///
//
Future<Response> setAutoUnlockLoadData(int lockId, int autoLockTime, int type) =>
Future<Response> setAutoUnlockLoadData(int lockId, int autoLock, int autoLockSecond) =>
post(
setAutoLockTimeUrl.toUrl,
updateLockSettingUrl.toUrl,
jsonEncode({
'lockId': lockId,
'autoLockTime': autoLockTime,
'type': type,
'autoLock': autoLock,
'autoLockSecond': autoLockSecond,
}));
//
@ -555,46 +557,32 @@ class ApiProvider extends BaseProvider {
'resetSwitch': resetSwitch,
}));
//
Future<Response> getPassageModeConfigLoadData(String lockId) => post(
getPassageModeConfigUrl.toUrl,
jsonEncode({
'lockId': lockId,
}));
//
Future<Response> configPassageMode(
String lockId,
String passageMode,
String autoUnlock,
String type,
String startDate,
String endDate,
String isAllDay,
List weekDays) =>
//
Future<Response> setCheckInData(int lockId, int resetSwitch) =>
post(
configPassageModeUrl.toUrl,
updateLockSettingUrl.toUrl,
jsonEncode({
'lockId': lockId,
'attendance': resetSwitch,
}));
//
Future<Response> setRoomStatusData(int lockId, int roomStatus) =>
post(
setRoomStatusURL.toUrl,
jsonEncode({
'lockId': lockId,
'roomStatus': roomStatus,
}));
//
Future<Response> setNormallyModeData(int lockId, int passageMode, Map passageModeConfig) =>
post(
updateLockSettingUrl.toUrl,
jsonEncode({
'lockId': lockId,
'passageMode': passageMode,
'autoUnlock': autoUnlock,
'type': type,
'startDate': startDate,
'endDate': endDate,
'isAllDay': isAllDay,
'weekDays': weekDays,
}));
//
Future<Response> setLockSetGeneralSetting(
String lockId, String changeType, String isOn, String type) =>
post(
updateSettingUrl.toUrl,
jsonEncode({
'lockId': lockId,
'changeType': changeType,
'isOn': isOn,
'type': type,
'passageModeConfig': passageModeConfig,
}));
//
@ -680,14 +668,11 @@ class ApiProvider extends BaseProvider {
}));
//
Future<Response> setLockPickingReminderData(
String lockId, String keyId, String monitorFlag) =>
post(
setLockPickingReminderDataURL.toUrl,
Future<Response> setLockPickingReminderData(int lockId, int unlockReminderPush) =>
post(updateLockSettingUrl.toUrl,
jsonEncode({
'lockId': lockId,
'keyId': keyId,
'monitorFlag': monitorFlag,
'unlockReminderPush': unlockReminderPush,
}));
//
@ -1096,6 +1081,13 @@ class ApiProvider extends BaseProvider {
'searchStr': searchStr
}));
Future<Response> deletLockUser(int uid) =>
post(
deletLockUserURL.toUrl,
jsonEncode({
'uid': uid,
}));
Future<Response> keyListByUser(String pageNo, String pageSize, String uid) =>
post(keyListByUserURL.toUrl,
jsonEncode({'pageNo': pageNo, 'pageSize': pageSize, 'uid': uid}));

View File

@ -15,7 +15,7 @@ import 'package:star_lock/mine/mineSet/appUnlockNeedMobileNetworkingLock/selectL
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/lockUserManage/keyListByUserEntity.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';
import '../common/safetyVerification/entity/SafetyVerificationEntity.dart';
@ -33,7 +33,6 @@ import '../main/lockDetail/lcokSet/configuringWifi/configuringWifiEntity.dart';
import '../main/lockDetail/lcokSet/lockSet/checkingInInfoData_entity.dart';
import '../main/lockDetail/lcokSet/lockSet/lockSetInfo_entity.dart';
import '../main/lockDetail/lcokSet/lockTime/getServerDatetime_entity.dart';
import '../main/lockDetail/lcokSet/normallyOpenMode/getPassageModeConfig_entity.dart';
import '../main/lockDetail/lockOperatingRecord/lockOperatingRecordGetLastRecordTime_entity.dart';
import '../main/lockDetail/otherTypeKey/addFingerprint/addFingerprint/addFingerprint_entity.dart';
import '../main/lockDetail/otherTypeKey/addICCard/addICCard_entity.dart';
@ -380,7 +379,8 @@ class ApiRepository {
String startDate,
String timezoneRawOffSet,
int startHours,
int endHours) async {
int endHours,
int isCoerced) async {
final res = await apiProvider.getKeyboardPwd(
endDate,
isExclusive,
@ -392,7 +392,8 @@ class ApiRepository {
startDate,
timezoneRawOffSet,
startHours,
endHours);
endHours,
isCoerced);
return PasswordKeyEntity.fromJson(res.body);
}
@ -504,13 +505,6 @@ class ApiRepository {
return PasswordKeyEntity.fromJson(res.body);
}
//
Future<PasswordKeyEntity> updateSetting(
String lockId, String isOn, String type) async {
final res = await apiProvider.updateSetting(lockId, isOn, type);
return PasswordKeyEntity.fromJson(res.body);
}
//
Future<PasswordKeyEntity> keyGroupList(String type) async {
final res = await apiProvider.keyGroupList(type);
@ -534,11 +528,11 @@ class ApiRepository {
//
Future<LoginEntity> setAutoUnlock({
required int lockId,
required int autoLockTime,
required int type,
required int autoLock,
required int autoLockSecond,
}) async {
final res =
await apiProvider.setAutoUnlockLoadData(lockId, autoLockTime, type);
await apiProvider.setAutoUnlockLoadData(lockId, autoLock, autoLockSecond);
return LoginEntity.fromJson(res.body);
}
@ -582,48 +576,53 @@ class ApiRepository {
return LoginEntity.fromJson(res.body);
}
// configPassageMode
Future<GetPassageModeConfigEntity> getPassageModeConfig({
required String lockId,
//
Future<LoginEntity> setCheckInData({
required int lockId,
required int attendance,
}) async {
final res = await apiProvider.getPassageModeConfigLoadData(lockId);
return GetPassageModeConfigEntity.fromJson(res.body);
}
//
Future<GetPassageModeConfigEntity> configPassageModeLoadData({
required String lockId,
required String passageMode,
required String autoUnlock,
required String type,
required String startDate,
required String endDate,
required String isAllDay,
required List weekDays,
}) async {
final res = await apiProvider.configPassageMode(lockId, passageMode,
autoUnlock, type, startDate, endDate, isAllDay, weekDays);
return GetPassageModeConfigEntity.fromJson(res.body);
}
//
Future<LoginEntity> setLockSetGeneralSettingData({
required String lockId,
required String changeType,
required String isOn,
required String type,
}) async {
final res = await apiProvider.setLockSetGeneralSetting(
lockId, changeType, isOn, type);
final res = await apiProvider.setCheckInData(lockId, attendance);
return LoginEntity.fromJson(res.body);
}
//
Future<LoginEntity> setRoomStatusData({
required int lockId,
required int roomStatus,
}) async {
final res = await apiProvider.setRoomStatusData(lockId, roomStatus);
return LoginEntity.fromJson(res.body);
}
//
Future<LoginEntity> setNormallyModeData({
required int lockId,
required int passageMode,
required Map passageModeConfig,
}) async {
final res =
await apiProvider.setNormallyModeData(lockId, passageMode, passageModeConfig);
return LoginEntity.fromJson(res.body);
}
//
// Future<LoginEntity> setLockSetGeneralSettingData({
// required String lockId,
// required String changeType,
// required String isOn,
// required String type,
// }) async {
// final res = await apiProvider.setLockSetGeneralSetting(
// lockId, changeType, isOn, type);
// return LoginEntity.fromJson(res.body);
// }
//
Future<GetPassageModeConfigEntity> getLockTimeFromGateway({
Future<GetServerDatetimeEntity> getLockTimeFromGateway({
required String lockId,
}) async {
final res = await apiProvider.getLockTimeFromGatewayLoadData(lockId);
return GetPassageModeConfigEntity.fromJson(res.body);
return GetServerDatetimeEntity.fromJson(res.body);
}
//
@ -685,6 +684,12 @@ class ApiRepository {
return LockUserListEntity.fromJson(res.body);
}
//
Future<LockUserListEntity> deletLockUser(int uid) async {
final res = await apiProvider.deletLockUser(uid);
return LockUserListEntity.fromJson(res.body);
}
//
Future<KeyListByUserEntity> keyListByUser(
String pageNo, String pageSize, String uid) async {
@ -833,12 +838,10 @@ class ApiRepository {
//
Future<LoginEntity> setLockPickingReminderData({
required String lockId,
required String keyId,
required String monitorFlag,
required int lockId,
required int unlockReminderPush,
}) async {
final res = await apiProvider.setLockPickingReminderData(
lockId, keyId, monitorFlag);
final res = await apiProvider.setLockPickingReminderData(lockId, unlockReminderPush);
return LoginEntity.fromJson(res.body);
}

View File

@ -41,7 +41,7 @@ class CommonItem extends StatelessWidget {
children: [
SizedBox(width: 20.w),
SizedBox(
width: isHaveRightWidget! ? 100.w : 300.w,
// width: isHaveRightWidget! ? 100.w : 300.w,
child: Text(leftTitel!, style: TextStyle(fontSize: 22.sp))
),
SizedBox(width: 6.w),