Merge branch 'master' of gitee.com:starlock-cn/app-starlock

This commit is contained in:
Daisy 2024-05-16 14:23:59 +08:00
commit 100699d52f
22 changed files with 184 additions and 133 deletions

View File

@ -309,14 +309,14 @@ SPEC CHECKSUMS:
audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207 audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207
audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40 audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40
auto_orientation: 102ed811a5938d52c86520ddd7ecd3a126b5d39d auto_orientation: 102ed811a5938d52c86520ddd7ecd3a126b5d39d
camera_avfoundation: 759172d1a77ae7be0de08fc104cfb79738b8a59e camera_avfoundation: 8b8d780bcfb6a4a02b0fbe2b4bd17b5b71946e68
connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
DKImagePickerController: 0a24ebfe7b48beeb74c27531540aaa2cc1dac6cf DKImagePickerController: 0a24ebfe7b48beeb74c27531540aaa2cc1dac6cf
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475 EMASRest: 8df6f87836767a9415ad5cc4af739bc9d215b475
file_picker: ce3938a0df3cc1ef404671531facef740d03f920 file_picker: ce3938a0df3cc1ef404671531facef740d03f920
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_blue_plus: 4837da7d00cf5d441fdd6635b3a57f936778ea96 flutter_blue_plus: 4837da7d00cf5d441fdd6635b3a57f936778ea96
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086 flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907 flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907
@ -327,7 +327,7 @@ SPEC CHECKSUMS:
google_maps_flutter_ios: f135b968a67c05679e0a53538e900b5c174b0d99 google_maps_flutter_ios: f135b968a67c05679e0a53538e900b5c174b0d99
GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4 GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
image_picker_ios: b545a5f16c0fa88e3ecbbce3ed4de45567a8ec18 image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425
ios-voice-processor: 8e32d7f980a06d392d128ef1cd19cf6ddcaca3c1 ios-voice-processor: 8e32d7f980a06d392d128ef1cd19cf6ddcaca3c1
JCore: 05f0f3489672ea3fa55338bae4866224bc092b1f JCore: 05f0f3489672ea3fa55338bae4866224bc092b1f
JPush: 76668b765fcfd7c15f86b05ca0e5cdc01945ce23 JPush: 76668b765fcfd7c15f86b05ca0e5cdc01945ce23
@ -335,18 +335,18 @@ SPEC CHECKSUMS:
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2 permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149 ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149
SDWebImage: 40b0b4053e36c660a764958bff99eed16610acbb SDWebImage: 40b0b4053e36c660a764958bff99eed16610acbb
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
system_settings: 8f5cdbfa72c677fc8d665b863bcc20d393d87e9d system_settings: 8f5cdbfa72c677fc8d665b863bcc20d393d87e9d
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3 video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579
webview_flutter_wkwebview: be0f0d33777f1bfd0c9fdcb594786704dbf65f36 webview_flutter_wkwebview: 4f3e50f7273d31e5500066ed267e3ae4309c5ae4
WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f
PODFILE CHECKSUM: 317f9473a5705c6fe4d79d95e81676f248048fdc PODFILE CHECKSUM: 317f9473a5705c6fe4d79d95e81676f248048fdc

View File

@ -34,7 +34,7 @@ class SenderReferEventRecordTimeCommand extends SenderProtocol {
@override @override
String toString() { String toString() {
return 'SenderReferEventRecordTimeCommand{keyID: $keyID, ' return 'SenderReferEventRecordTimeCommand{keyID: $keyID, '
'userID: $userID, logsCount: $logsCount, time: ${DateTool().dateIntToYMDHNString(time)}, ' 'userID: $userID, logsCount: $logsCount, time:$time timeStr: ${DateTool().dateIntToYMDHNString(time)}, '
'token: $token, needAuthor: $needAuthor, publicKey: $publicKey, ' 'token: $token, needAuthor: $needAuthor, publicKey: $publicKey, '
'privateKey: $privateKey}'; 'privateKey: $privateKey}';
} }

View File

@ -51,8 +51,8 @@ class SenderCustomPasswordsCommand extends SenderProtocol {
return 'SenderCustomPasswordsCommand{keyID: $keyID, userID: $userID, ' return 'SenderCustomPasswordsCommand{keyID: $keyID, userID: $userID, '
'pwdNo: $pwdNo, pwd: $pwd, useCountLimit: $useCountLimit, operate: $operate, isAdmin: $isAdmin,' 'pwdNo: $pwdNo, pwd: $pwd, useCountLimit: $useCountLimit, operate: $operate, isAdmin: $isAdmin,'
'token: $token, ' 'token: $token, '
'startTime: ${DateTool().dateIntToYMDHNString(startTime)}, ' 'startTime:$startTime startTimeStr: ${DateTool().dateIntToYMDHNString(startTime)}, '
'endTime: ${DateTool().dateIntToYMDHNString(endTime)}, ' 'endTime:$endTime endTimeStr: ${DateTool().dateIntToYMDHNString(endTime)}, '
'needAuthor: $needAuthor, signKey: $signKey, privateKey: $privateKey}'; 'needAuthor: $needAuthor, signKey: $signKey, privateKey: $privateKey}';
} }

View File

@ -180,7 +180,7 @@ class SenderBeforeDataManage {
useCountLimit = 1; useCountLimit = 1;
} }
AppLog.log("startTime.hour:${startTime?.hour} startTime.minute:${startTime?.minute} endTime.hour:${endTime?.hour} endTime.minute:${endTime?.minute}}"); // AppLog.log("startTime.hour:${startTime!.hour} startTime.minute:${startTime!.minute} endTime.hour:${endTime!.hour} endTime.minute:${endTime!.minute}}");
var addUserData = AddUserCommand( var addUserData = AddUserCommand(
lockID: BlueManage().connectDeviceName, lockID: BlueManage().connectDeviceName,
authUserID: currentKeyInfo.senderUserId!.toString(), authUserID: currentKeyInfo.senderUserId!.toString(),

View File

@ -183,7 +183,8 @@ class _CardDetailPageState extends State<CardDetailPage> with RouteAware {
action: () { action: () {
Get.toNamed(Routers.lockOperatingRecordPage, arguments: { Get.toNamed(Routers.lockOperatingRecordPage, arguments: {
'type': 2, 'type': 2,
'id': state.fingerprintItemData.value.cardId.toString() 'id': state.fingerprintItemData.value.cardId.toString(),
'recordName': state.fingerprintItemData.value.cardName
}); });
}), }),
// SizedBox(height: 40.h), // SizedBox(height: 40.h),

View File

@ -63,8 +63,7 @@ class DoorLockLogLogic extends BaseGetXController {
var passwordData = indexList.sublist(7, 17); var passwordData = indexList.sublist(7, 17);
var password = utf8String(passwordData); var password = utf8String(passwordData);
indexMap["user"] = password.toString(); indexMap["user"] = password.toString();
} else { int userNo = (indexList[1]*256) + indexList[2];
int userNo = (indexList[1] * 255) + indexList[2];
indexMap["user"] = userNo.toString(); indexMap["user"] = userNo.toString();
} }

View File

@ -1,3 +1,4 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -259,7 +260,8 @@ class _ElectronicKeyDetailPageState extends State<ElectronicKeyDetailPage> {
action: () { action: () {
Get.toNamed(Routers.lockOperatingRecordPage, arguments: { Get.toNamed(Routers.lockOperatingRecordPage, arguments: {
'type': 5, 'type': 5,
'id': state.itemData.value.keyId.toString() 'id': state.itemData.value.keyId.toString(),
'recordName': state.itemData.value.keyName
}); });
}), }),
Container(height: 40.h), Container(height: 40.h),

View File

@ -2,6 +2,7 @@ import 'dart:async';
import 'package:flutter_blue_plus/flutter_blue_plus.dart'; import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/blue/io_protocol/io_addFace.dart'; import 'package:star_lock/blue/io_protocol/io_addFace.dart';
import 'package:star_lock/blue/io_type.dart'; import 'package:star_lock/blue/io_type.dart';
import 'package:star_lock/main/lockDetail/face/faceDetail/faceDetail_state.dart'; import 'package:star_lock/main/lockDetail/face/faceDetail/faceDetail_state.dart';
@ -45,7 +46,6 @@ class FaceDetailLogic extends BaseGetXController {
}else{ }else{
editFaceData(); editFaceData();
} }
deletFaceData();
break; break;
case 0x06: case 0x06:
// //

View File

@ -191,7 +191,8 @@ class _FaceDetailPageState extends State<FaceDetailPage> with RouteAware {
action: () { action: () {
Get.toNamed(Routers.lockOperatingRecordPage, arguments: { Get.toNamed(Routers.lockOperatingRecordPage, arguments: {
'type': 4, 'type': 4,
'id': state.faceItemData.value.faceId.toString() 'id': state.faceItemData.value.faceId.toString(),
'recordName': state.faceItemData.value.faceName
}); });
}), }),
// SizedBox(height: 40.h), // SizedBox(height: 40.h),

View File

@ -7,6 +7,7 @@ import 'package:star_lock/blue/io_protocol/io_addFace.dart';
import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart'; import 'package:star_lock/blue/io_protocol/io_queryingFaceStatus.dart';
import 'package:star_lock/main/lockDetail/face/faceList/faceList_state.dart'; import 'package:star_lock/main/lockDetail/face/faceList/faceList_state.dart';
import 'package:star_lock/tools/baseGetXController.dart'; import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../app_settings/app_settings.dart';
import '../../../../blue/blue_manage.dart'; import '../../../../blue/blue_manage.dart';
import '../../../../blue/io_protocol/io_checkingUserInfoCount.dart'; import '../../../../blue/io_protocol/io_checkingUserInfoCount.dart';
import '../../../../blue/io_reply.dart'; import '../../../../blue/io_reply.dart';
@ -323,10 +324,8 @@ class FaceListLogic extends BaseGetXController {
// //
void deletFacesData() async { void deletFacesData() async {
var faceId = ""; var faceId = "";
var type = "1";
if (state.isDeletAll == false) { if (state.isDeletAll == false) {
faceId = state.deletKeyID; faceId = state.deletKeyID;
type = "0";
} }
var entity = await ApiRepository.to.deleteFaceData( var entity = await ApiRepository.to.deleteFaceData(
faceId: int.parse(faceId), faceId: int.parse(faceId),

View File

@ -151,7 +151,8 @@ class _FaceListPageState extends State<FaceListPage> with RouteAware {
"faceItemData": getFaceItemData, "faceItemData": getFaceItemData,
}); });
if (data != null) { if (data != null) {
logic.getFaceListData(); logic.pageNo = 1;
getHttpData();
} }
}), }),
); );

View File

@ -6,12 +6,9 @@ import 'package:get/get.dart';
import '../../../../appRouters.dart'; import '../../../../appRouters.dart';
import '../../../../app_settings/app_colors.dart'; import '../../../../app_settings/app_colors.dart';
import '../../../../blue/blue_manage.dart';
import '../../../../tools/appRouteObserver.dart'; import '../../../../tools/appRouteObserver.dart';
import '../../../../tools/commonItem.dart'; import '../../../../tools/commonItem.dart';
import '../../../../tools/dateTool.dart'; import '../../../../tools/dateTool.dart';
import '../../../../tools/showIosTipView.dart';
import '../../../../tools/showTFView.dart';
import '../../../../tools/showTipView.dart'; import '../../../../tools/showTipView.dart';
import '../../../../tools/submitBtn.dart'; import '../../../../tools/submitBtn.dart';
import '../../../../tools/titleAppBar.dart'; import '../../../../tools/titleAppBar.dart';
@ -201,7 +198,8 @@ class _FingerprintDetailPageState extends State<FingerprintDetailPage>
// //
Get.toNamed(Routers.lockOperatingRecordPage, arguments: { Get.toNamed(Routers.lockOperatingRecordPage, arguments: {
'type': 3, 'type': 3,
'id': state.fingerprintItemData.value.fingerprintId.toString() 'id': state.fingerprintItemData.value.fingerprintId.toString(),
'recordName': state.fingerprintItemData.value.fingerprintName
}); });
}), }),
// SizedBox(height: 40.h), // SizedBox(height: 40.h),

View File

@ -209,7 +209,7 @@ class LockDetailLogic extends BaseGetXController {
var password = utf8String(passwordData); var password = utf8String(passwordData);
indexMap["user"] = password.toString(); indexMap["user"] = password.toString();
} else { } else {
int userNo = (indexList[1] * 255) + indexList[2]; int userNo = (indexList[1] * 256) + indexList[2];
indexMap["user"] = userNo.toString(); indexMap["user"] = userNo.toString();
} }
@ -259,8 +259,7 @@ class LockDetailLogic extends BaseGetXController {
var token = await Storage.getStringList(saveBlueToken); var token = await Storage.getStringList(saveBlueToken);
List<int> getTokenList = changeStringListToIntList(token!); List<int> getTokenList = changeStringListToIntList(token!);
BlueManage() BlueManage().bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!,
.bludSendData(state.keyInfos.value.bluetooth!.bluetoothDeviceName!,
(BluetoothConnectionState deviceConnectionState) async { (BluetoothConnectionState deviceConnectionState) async {
if (deviceConnectionState == BluetoothConnectionState.connected) { if (deviceConnectionState == BluetoothConnectionState.connected) {
IoSenderManage.senderOpenLock( IoSenderManage.senderOpenLock(

View File

@ -926,7 +926,7 @@ class _LockDetailPageState extends State<LockDetailPage>
'images/main/icon_main_operatingRecord.png', 'images/main/icon_main_operatingRecord.png',
TranslationLoader.lanKeys!.operatingRecord!.tr, TranslationLoader.lanKeys!.operatingRecord!.tr,
state.bottomBtnisEable.value, () { state.bottomBtnisEable.value, () {
Get.toNamed(Routers.lockOperatingRecordPage, Get.toNamed(Routers.doorLockLogPage,
arguments: {"keyInfo": state.keyInfos.value}); arguments: {"keyInfo": state.keyInfos.value});
})); }));

View File

@ -61,7 +61,7 @@ class LockOperatingRecordLogic extends BaseGetXController {
AppLog.log("password:$password passwordData:$passwordData"); AppLog.log("password:$password passwordData:$passwordData");
indexMap["user"] = password; indexMap["user"] = password;
}else{ }else{
int userNo = (indexList[1]*255) + indexList[2]; int userNo = (indexList[1]*256) + indexList[2];
indexMap["user"] = userNo.toString(); indexMap["user"] = userNo.toString();
} }

View File

@ -51,30 +51,30 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> with
return Scaffold( return Scaffold(
backgroundColor: AppColors.mainBackgroundColor, backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar( appBar: TitleAppBar(
barTitle: TranslationLoader.lanKeys!.operatingRecord!.tr, barTitle: state.recordName.value.isNotEmpty? state.recordName.value : TranslationLoader.lanKeys!.operatingRecord!.tr,
haveBack: true, haveBack: true,
backgroundColor: AppColors.mainColor, backgroundColor: AppColors.mainColor,
actionsList: [ // actionsList: [
(CommonDataManage().currentKeyInfo.isLockOwner == 1 || // (CommonDataManage().currentKeyInfo.isLockOwner == 1 ||
CommonDataManage().currentKeyInfo.keyRight == 1) // CommonDataManage().currentKeyInfo.keyRight == 1)
? IconButton( // ? IconButton(
icon: Image.asset( // icon: Image.asset(
'images/icon_bar_more.png', // 'images/icon_bar_more.png',
height: 30.h, // height: 30.h,
width: 10.w, // width: 10.w,
), // ),
onPressed: () async { // onPressed: () async {
var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot); // var isDemoMode = await Storage.getBool(ifIsDemoModeOrNot);
if (isDemoMode == false) { // if (isDemoMode == false) {
_openModalBottomSheet(); // _openModalBottomSheet();
} else { // } else {
// Get.toNamed(Routers.selectLockTypePage); // // Get.toNamed(Routers.selectLockTypePage);
logic.showToast("演示模式"); // logic.showToast("演示模式");
} // }
}, // },
) // )
: Container(), // : Container(),
], // ],
), ),
body: EasyRefreshTool( body: EasyRefreshTool(
onRefresh: (){ onRefresh: (){
@ -86,29 +86,29 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> with
}, },
child: Column( child: Column(
children: [ children: [
(CommonDataManage().currentKeyInfo.isLockOwner == 1 || // (CommonDataManage().currentKeyInfo.isLockOwner == 1 ||
CommonDataManage().currentKeyInfo.keyRight == 1) // CommonDataManage().currentKeyInfo.keyRight == 1)
? Column( // ? Column(
children: [ // children: [
Container( // Container(
padding: EdgeInsets.only(left:20.h, right: 20.h, top: 20.h), // padding: EdgeInsets.only(left:20.h, right: 20.h, top: 20.h),
child: Text( // child: Text(
TranslationLoader.lanKeys!.lockOperatingRecordTip!.tr, // TranslationLoader.lanKeys!.lockOperatingRecordTip!.tr,
textAlign: TextAlign.start, // textAlign: TextAlign.start,
style: TextStyle(fontSize: 20.sp), // style: TextStyle(fontSize: 20.sp),
), // ),
), // ),
KeySearchWidget( // KeySearchWidget(
editingController: state.searchController, // editingController: state.searchController,
onSubmittedAction: () { // onSubmittedAction: () {
logic.pageNo = 1; // logic.pageNo = 1;
getHttpData(); // getHttpData();
}, // },
), // ),
], // ],
) // )
: Container(), // : Container(),
SizedBox(height: 10.h), // SizedBox(height: 10.h),
Expanded(child: _buildMainUI()), Expanded(child: _buildMainUI()),
], ],
), ),
@ -128,7 +128,9 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> with
DateTime.fromMillisecondsSinceEpoch(operateDate!); DateTime.fromMillisecondsSinceEpoch(operateDate!);
String operateDateStr = String operateDateStr =
'${dateStr.toLocal().toString().substring(0, 16)} '; '${dateStr.toLocal().toString().substring(0, 16)} ';
return _operatingRecordItem(getTypeIcon(dataItem.recordType!), // return _operatingRecordItem(getTypeIcon(dataItem.recordType!),
// dataItem.recordTypeName!, operateDateStr, () {});
return _operatingOneRecordItem(getTypeIcon(dataItem.recordType!),
dataItem.recordTypeName!, operateDateStr, () {}); dataItem.recordTypeName!, operateDateStr, () {});
}, },
separatorBuilder: (BuildContext context, int index) { separatorBuilder: (BuildContext context, int index) {
@ -166,63 +168,111 @@ class _LockOperatingRecordPageState extends State<LockOperatingRecordPage> with
return title; return title;
} }
Widget _operatingRecordItem(String userAvatarStr, String userNameStr, Widget _operatingOneRecordItem(String userAvatarStr, String userNameStr, String unlockDescStr, Function() action) {
String unlockDescStr, Function() action) {
return GestureDetector( return GestureDetector(
onTap: action, onTap: action,
child: Container( child: Container(
height: 90.h, height: 80.h,
width: 1.sw - 10.w - 34.w - 60.w,
padding: EdgeInsets.only(left: 20.w, right: 20.w), padding: EdgeInsets.only(left: 20.w, right: 20.w),
decoration: BoxDecoration( decoration: const BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(10.w), // borderRadius: BorderRadius.circular(10.w),
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Image.asset( Icon(Icons.access_time, size: 35.w),
userAvatarStr, SizedBox(width: 10.w,),
width: 50.w, Text(
height: 50.w, unlockDescStr,
), textAlign: TextAlign.center,
SizedBox( style: TextStyle(
width: 20.w, fontSize: 24.sp,
color: AppColors.darkGrayTextColor),
), ),
SizedBox(width: 10.h),
Expanded( Expanded(
child: Column( child:Container(
mainAxisAlignment: MainAxisAlignment.center, margin: EdgeInsets.only(bottom: 3.w),
children: [ child: Row(
Row( children: [
children: [ Flexible(
Text( child: Text(
userNameStr, userNameStr,
style: TextStyle( // "发的发生大发手动阀手动阀三大发啥打法是打发三大发啥打法是打发",
fontSize: 24.sp, color: AppColors.blackColor), maxLines: 1,
), overflow: TextOverflow.ellipsis,
], style: TextStyle(
), fontSize: 24.sp, color: AppColors.blackColor)),
SizedBox(height: 10.h), ),
Row( ],
mainAxisAlignment: MainAxisAlignment.start, ),
children: [
Text(
unlockDescStr,
style: TextStyle(
fontSize: 20.sp,
color: AppColors.darkGrayTextColor),
),
],
),
SizedBox(width: 20.h),
],
), ),
), ),
SizedBox(width: 20.h),
], ],
), ),
), ),
); );
} }
// Widget _operatingRecordItem(String userAvatarStr, String userNameStr,
// String unlockDescStr, Function() action) {
// return GestureDetector(
// onTap: action,
// child: Container(
// height: 90.h,
// padding: EdgeInsets.only(left: 20.w, right: 20.w),
// decoration: BoxDecoration(
// color: Colors.white,
// borderRadius: BorderRadius.circular(10.w),
// ),
// child: Row(
// children: [
// Image.asset(
// userAvatarStr,
// width: 50.w,
// height: 50.w,
// ),
// SizedBox(
// width: 20.w,
// ),
// Expanded(
// child: Column(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// Row(
// children: [
// Text(
// userNameStr,
// style: TextStyle(
// fontSize: 24.sp, color: AppColors.blackColor),
// ),
// ],
// ),
// SizedBox(height: 10.h),
// Row(
// mainAxisAlignment: MainAxisAlignment.start,
// children: [
// Text(
// unlockDescStr,
// style: TextStyle(
// fontSize: 20.sp,
// color: AppColors.darkGrayTextColor),
// ),
// ],
// ),
// SizedBox(width: 20.h),
// ],
// ),
// ),
// SizedBox(width: 20.h),
// ],
// ),
// ),
// );
// }
Future _openModalBottomSheet() async { Future _openModalBottomSheet() async {
showModalBottomSheet( showModalBottomSheet(
context: context, context: context,

View File

@ -14,6 +14,7 @@ class LockOperatingRecordState {
var logCountPage = 10; // var logCountPage = 10; //
var idStr = ""; // var idStr = ""; //
var type = 0; // 1: 2: 3: 4: 5: var type = 0; // 1: 2: 3: 4: 5:
var recordName = "".obs; //
LockOperatingRecordState() { LockOperatingRecordState() {
Map map = Get.arguments; Map map = Get.arguments;
@ -26,5 +27,8 @@ class LockOperatingRecordState {
if(map["type"] != null){ if(map["type"] != null){
type = Get.arguments["type"]; type = Get.arguments["type"];
} }
if(map["recordName"] != null){
recordName.value = Get.arguments["recordName"];
}
} }
} }

View File

@ -113,7 +113,7 @@ class _PasswordKeyDetailPageState extends State<PasswordKeyDetailPage>
} }
})), })),
Obx(() => Visibility( Obx(() => Visibility(
visible: state.isCirculation.value == false, visible: (state.isCirculation.value == false) && (state.itemData.value.isCustom! != 1),
child: CommonItem( child: CommonItem(
leftTitel: "结束时间", leftTitel: "结束时间",
rightTitle: DateTool().dateToYMDHNString( rightTitle: DateTool().dateToYMDHNString(
@ -151,10 +151,9 @@ class _PasswordKeyDetailPageState extends State<PasswordKeyDetailPage>
rightTitle: "", rightTitle: "",
isHaveDirection: true, isHaveDirection: true,
action: () { action: () {
Navigator.pushNamed(context, Routers.lockOperatingRecordPage, Get.toNamed(Routers.lockOperatingRecordPage, arguments: {
arguments: {
'type': 1, 'type': 1,
'id': state.itemData.value.keyboardPwdId.toString() 'id': state.itemData.value.keyboardPwdId.toString(),
}); });
}), }),
Visibility( Visibility(

View File

@ -13,6 +13,7 @@ import '../../../../blue/io_reply.dart';
import '../../../../blue/io_tool/io_tool.dart'; import '../../../../blue/io_tool/io_tool.dart';
import '../../../../blue/io_tool/manager_event_bus.dart'; import '../../../../blue/io_tool/manager_event_bus.dart';
import '../../../../blue/sender_manage.dart'; import '../../../../blue/sender_manage.dart';
import '../../../../tools/dateTool.dart';
import '../../../../tools/eventBusEventManage.dart'; import '../../../../tools/eventBusEventManage.dart';
import '../../../../tools/storage.dart'; import '../../../../tools/storage.dart';
@ -52,10 +53,10 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
pwdNo: state.itemData.value.pwdUserNo!, pwdNo: state.itemData.value.pwdUserNo!,
pwd: state.itemData.value.keyboardPwd!.toString(), pwd: state.itemData.value.keyboardPwd!.toString(),
operate: 1, operate: 1,
isAdmin: 0, isAdmin: state.itemData.value.pwdUserNo!,
useCountLimit: 0xffff, useCountLimit: 0xffff,
startTime:state.itemData.value.startDate! ~/ 1000, startTime:DateTool().dateToTimestamp(state.selectEffectiveDate.value, 1) ~/ 1000,
endTime:state.itemData.value.endDate! ~/ 1000, endTime:DateTool().dateToTimestamp(state.selectFailureDate.value, 1) ~/ 1000,
needAuthor: 1, needAuthor: 1,
isBeforeAddUser: false, isBeforeAddUser: false,
signKey: signKeyDataList, signKey: signKeyDataList,
@ -73,15 +74,15 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
// //
Future<void> updatePwdRequest() async { Future<void> updatePwdRequest() async {
var beginTimeTimestamp = state.itemData.value.startDate! ~/ 1000; var beginTimeTimestamp = DateTool().dateToTimestamp(state.selectEffectiveDate.value, 1);
var endTimeTimestamp = state.itemData.value.endDate! ~/ 1000; var endTimeTimestamp = DateTool().dateToTimestamp(state.selectFailureDate.value, 1);
if (beginTimeTimestamp > endTimeTimestamp || if (beginTimeTimestamp > endTimeTimestamp ||
beginTimeTimestamp == endTimeTimestamp) { beginTimeTimestamp == endTimeTimestamp) {
showToast("失效时间需大于生效时间"); showToast("失效时间需大于生效时间");
return; return;
} }
if (endTimeTimestamp < DateTime.now().millisecondsSinceEpoch ~/ 1000) { if (endTimeTimestamp < DateTime.now().millisecondsSinceEpoch) {
showToast("生效时间需大于当前时间"); showToast("生效时间需大于当前时间");
return; return;
} }
@ -91,8 +92,8 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
keyboardPwdId: state.itemData.value.keyboardPwdId.toString(), keyboardPwdId: state.itemData.value.keyboardPwdId.toString(),
keyboardPwdName: state.itemData.value.keyboardPwdName!, keyboardPwdName: state.itemData.value.keyboardPwdName!,
newKeyboardPwd: state.itemData.value.keyboardPwd!, newKeyboardPwd: state.itemData.value.keyboardPwd!,
startDate: state.itemData.value.startDate!, startDate: beginTimeTimestamp,
endDate: state.itemData.value.endDate!, endDate: endTimeTimestamp,
changeType: '1', changeType: '1',
hoursStart: state.itemData.value.hoursStart!, hoursStart: state.itemData.value.hoursStart!,
hoursEnd: state.itemData.value.hoursEnd!, hoursEnd: state.itemData.value.hoursEnd!,
@ -137,8 +138,8 @@ class PasswordKeyDetailChangeDateLogic extends BaseGetXController {
operate: 1, operate: 1,
isAdmin: state.itemData.value.pwdUserNo!, isAdmin: state.itemData.value.pwdUserNo!,
useCountLimit: 0xffff, useCountLimit: 0xffff,
startTime:state.itemData.value.startDate! ~/ 1000, startTime:DateTool().dateToTimestamp(state.selectEffectiveDate.value, 1) ~/ 1000,
endTime:state.itemData.value.endDate! ~/ 1000, endTime:DateTool().dateToTimestamp(state.selectFailureDate.value, 1) ~/ 1000,
needAuthor: 1, needAuthor: 1,
isBeforeAddUser: false, isBeforeAddUser: false,
signKey: signKeyDataList, signKey: signKeyDataList,

View File

@ -228,22 +228,18 @@ class PasswordKeyPerpetualLogic extends BaseGetXController {
case 0xff: case 0xff:
// //
showToast("退出添加".tr); showToast("退出添加".tr);
Get.close(1);
break; break;
case 0xFE: case 0xFE:
// //
showToast("管理员已满".tr); showToast("管理员已满".tr);
Get.close(1);
break; break;
case 0xFD: case 0xFD:
// //
showToast("用户已满".tr); showToast("用户已满".tr);
Get.close(1);
break; break;
case 0xFC: case 0xFC:
// //
showToast("锁上面添加密码已满".tr); showToast("锁上面添加密码已满".tr);
Get.close(1);
break; break;
case 0xFB: case 0xFB:
// //

View File

@ -193,7 +193,7 @@ class _PasswordKeyPerpetualPageState extends State<PasswordKeyPerpetualPage>
TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr, TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr,
state.nameController), state.nameController),
keyBottomWidget( keyBottomWidget(
"密码生成后请在当日2359前使用否则过0点后失效。清空码用于清空今天0点之前生成的所有密码。".tr) "清空密码使用一次后失效。清空内容1今日0点前生成的除自定义以外所有密码日0点后生成的密码不受清空密码影响可继续使用。清空内容2清空密码使用后立即清除所有自定义密码。如需彻底清除所有密码请使用重置所有密码功能".tr)
], ],
), ),
); );

View File

@ -59,6 +59,7 @@ class SaveLockLogic extends BaseGetXController {
case 0x00: case 0x00:
// //
state.lockUserNo = listChangInt(reply.data.sublist(47, 49)); state.lockUserNo = listChangInt(reply.data.sublist(47, 49));
AppLog.log("state.lockUserNo:${state.lockUserNo}");
// //
cancelBlueConnetctToastTimer(); cancelBlueConnetctToastTimer();