From d783cd875a226b937950987acfa32caf1a964f65 Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Thu, 31 Aug 2023 15:58:29 +0800 Subject: [PATCH 1/4] =?UTF-8?q?1=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=88=86?= =?UTF-8?q?=E7=BB=84=E7=9A=84=E6=8E=A5=E5=8F=A3=E5=9C=B0=E5=9D=80=202?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E9=94=81=E5=88=97=E8=A1=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=8F=8A=E9=83=A8=E5=88=86=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../massSendLockGroupList_page.dart | 163 ++++++++++++++++++ star_lock/lib/network/api.dart | 2 + star_lock/lib/network/api_provider.dart | 7 + star_lock/lib/network/api_repository.dart | 13 ++ 4 files changed, 185 insertions(+) create mode 100644 star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart new file mode 100644 index 00000000..ff690b08 --- /dev/null +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart @@ -0,0 +1,163 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/utils.dart'; +import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/tools/ExpandedListView.dart'; +import 'package:star_lock/translations/trans_lib.dart'; + +class MassSendLockGroupListPage extends StatefulWidget { + const MassSendLockGroupListPage({Key? key}) : super(key: key); + + @override + State createState() { + return _MassSendLockGroupListPageState(); + } +} + +class _MassSendLockGroupListPageState extends State { + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: AppColors.mainColor, + title: Text( + TranslationLoader.lanKeys!.authorityManagement!.tr, + style: TextStyle( + color: Colors.white, + fontSize: 28.sp, + fontWeight: FontWeight.w600), + ), + elevation: 0, + leading: IconButton( + icon: const Icon(Icons.arrow_back_ios, color: Colors.white), + onPressed: () => Navigator.of(context).pop(), + ), + ), + body: Column( + children: [ + Text( + '请选择要发送的锁', + style: TextStyle( + color: AppColors.darkGrayTextColor, fontSize: 22.sp), + ), + _keyGroupList() + ], + )); + } + +//设备列表 + Widget _keyGroupList() { + return Column( + children: [ + SizedBox( + height: 10.h, + ), + Expanded( + child: ListView.separated( + itemBuilder: (context, index) { + if (index == 0) { + return _buildLockExpandedList(context, index, "大门锁"); + } else if (index == 1) { + return _buildLockExpandedList(context, index, "办公室锁"); + } else if (index == 2) { + return _buildLockExpandedList(context, index, "会议室锁"); + } else { + return _buildLockExpandedList(context, index, "宴会厅锁"); + } + }, + separatorBuilder: (context, index) { + return const Divider( + height: 1, + color: AppColors.greyLineColor, + ); + }, + itemCount: 5)), + ], + ); + } + +//设备多层级列表 + Widget _buildLockExpandedList(context, index, deviceName) { + return ExpandedListTile( + onTap: () => print("onTap."), + title: deviceName, + imgName: 'images/icon_lock.png', + typeImgList: const [], + child: ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: 10, + itemBuilder: (_, index) { + if (index == 0) { + return _buildNameWidget( + context, index, 'images/icon_password.png', '张三'); + } else if (index == 1) { + return _buildNameWidget( + context, index, 'images/icon_card.png', '李四'); + } else if (index == 2) { + return _buildNameWidget( + context, index, 'images/icon_fingerprint.png', '王二'); + } else if (index == 3) { + return _buildNameWidget( + context, index, 'images/icon_card.png', '麻子'); + } else { + return null; + } + }, + separatorBuilder: (BuildContext context, int index) { + return const Divider( + height: 1, + color: AppColors.greyLineColor, + ); + }, + ), + ); + } + + //单个姓名行 + Widget _buildNameWidget(context, index, imageName, getName) { + return GestureDetector( + child: Container( + height: 60.h, + color: Colors.white, + width: ScreenUtil().screenWidth, + child: Row( + children: [ + SizedBox( + width: 30.w, + ), + Image.asset( + 'images/controls_user.png', + width: 36.w, + height: 36.w, + ), + SizedBox( + width: 10.w, + ), + Text( + getName, + style: TextStyle( + fontSize: 20.sp, color: AppColors.darkGrayTextColor), + ), + SizedBox( + width: 30.w, + ) + ], + ), + ), + onTap: () { + // selectNameIndex = index; + // setState(() { + // if (selectNameIndex == index) { + // isNameSelect = !isNameSelect; + // } + // }); + }, + ); + } +} diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart index f3e9c1fa..dbeeb595 100644 --- a/star_lock/lib/network/api.dart +++ b/star_lock/lib/network/api.dart @@ -35,4 +35,6 @@ abstract class Api { final String addlockGroupURL = '/keyGroup/add'; //创建锁分组 final String lockGroupListURL = '/authorizedAdmin/listGroup'; //锁分组列表 final String updateSettingURL = '/room/updateSetting'; //标记房态 + final String keyGroupListURL = '/keyGroup/list'; //分组列表 + final String lockListByGroupURL = '/room/listByGroup'; //分组下的锁 } diff --git a/star_lock/lib/network/api_provider.dart b/star_lock/lib/network/api_provider.dart index 17724f64..72b22227 100644 --- a/star_lock/lib/network/api_provider.dart +++ b/star_lock/lib/network/api_provider.dart @@ -342,6 +342,13 @@ class ApiProvider extends BaseProvider { Future updateSetting(String lockId, String isOn, String type) => post(updateSettingURL.toUrl, jsonEncode({'lockId': lockId, 'isOn': isOn, 'type': type})); + + Future keyGroupList(String type) => + post(keyGroupListURL.toUrl, jsonEncode({'type': type})); + + Future lockListByGroup(String type, String keyGroupId) => post( + lockListByGroupURL.toUrl, + jsonEncode({'type': type, 'keyGroupId': keyGroupId})); } extension ExtensionString on String { diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index deceb636..3786c781 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -325,4 +325,17 @@ class ApiRepository { final res = await apiProvider.deleteKeyboardPwd(lockId, isOn, type); return PasswordKeyEntity.fromJson(res.body); } + + //分组列表 + Future keyGroupList(String type) async { + final res = await apiProvider.keyGroupList(type); + return PasswordKeyEntity.fromJson(res.body); + } + + //分组下的锁 + Future lockListByGroup( + String type, String keyGroupId) async { + final res = await apiProvider.lockListByGroup(type, keyGroupId); + return PasswordKeyEntity.fromJson(res.body); + } } From d6570450cfa3828d7140b73266bab108589eae2f Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Thu, 31 Aug 2023 18:50:28 +0800 Subject: [PATCH 2/4] =?UTF-8?q?1=EF=BC=8C=E5=8F=91=E9=80=81=E9=92=A5?= =?UTF-8?q?=E5=8C=99=E6=88=90=E5=8A=9F=E5=90=8E=E8=BF=94=E5=9B=9E=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorizedAdmin_logic.dart | 65 +++++----- .../authorizedAdmin/authorizedAdmin_page.dart | 2 +- .../authorizedAdminList_page.dart | 7 +- .../electronicKeyList_page.dart | 7 +- .../sendElectronicKey_page.dart | 120 +++++++++--------- .../passwordKeyList/passwordKeyList_page.dart | 23 ++-- .../passwordKey_perpetual_logic.dart | 80 ++++++------ .../passwordKey_perpetual_page.dart | 36 ++++-- 8 files changed, 182 insertions(+), 158 deletions(-) diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart index bc476fcf..01d2e090 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_logic.dart @@ -1,4 +1,3 @@ - import 'dart:async'; import 'package:flutter_reactive_ble/flutter_reactive_ble.dart'; @@ -21,9 +20,10 @@ class AuthorizedAdminLogic extends BaseGetXController { // 监听设备返回的数据 late StreamSubscription _replySubscription; void _initReplySubscription() { - _replySubscription = EventBusManager().eventBus!.on().listen((reply) async { + _replySubscription = + EventBusManager().eventBus!.on().listen((reply) async { // 开门 - if(reply is TransferPermissionsReply) { + if (reply is TransferPermissionsReply) { var token = reply.data.sublist(2, 6); var saveStrList = changeIntListToStringList(token); print("_replyFactoryDataResetKeyToken:$token"); @@ -32,17 +32,18 @@ class AuthorizedAdminLogic extends BaseGetXController { int status = reply.data[6]; print("status:$status"); - switch(status){ + switch (status) { case 0x00: - //成功 + //成功 print("${reply.commandType!.typeValue} 数据解析成功"); break; case 0x06: - //无权限 + //无权限 print("${reply.commandType!.typeValue} 需要鉴权"); var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); + List getPrivateKeyList = + changeStringListToIntList(privateKey!); var publicKey = await Storage.getStringList(saveBluePublicKey); List publicKeyDataList = changeStringListToIntList(publicKey!); @@ -51,27 +52,26 @@ class AuthorizedAdminLogic extends BaseGetXController { List getTokenList = changeStringListToIntList(token!); IoSenderManage.senderFactoryDataReset( - lockID:BlueManage().connectDeviceName, - userID:await Storage.getUid(), - keyID:"1", - needAuthor:1, - publicKey:publicKeyDataList, - privateKey:getPrivateKeyList, - token: getTokenList - ); + lockID: BlueManage().connectDeviceName, + userID: await Storage.getUid(), + keyID: "1", + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList); break; case 0x07: - //无权限 + //无权限 print("${reply.commandType!.typeValue} 用户无权限"); break; case 0x09: - // 权限校验错误 + // 权限校验错误 print("${reply.commandType!.typeValue} 权限校验错误"); break; default: - //失败 + //失败 print("${reply.commandType!.typeValue} 失败"); break; @@ -82,8 +82,10 @@ class AuthorizedAdminLogic extends BaseGetXController { // 转移权限 Future transferPermissionsAction() async { - BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState state) async { - if (state == DeviceConnectionState.connected){ + BlueManage().judgeReconnect( + BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, + (DeviceConnectionState state) async { + if (state == DeviceConnectionState.connected) { var privateKey = await Storage.getStringList(saveBluePrivateKey); List getPrivateKeyList = changeStringListToIntList(privateKey!); @@ -95,16 +97,15 @@ class AuthorizedAdminLogic extends BaseGetXController { print("openDoorTokenPubToken:$getTokenList"); IoSenderManage.senderTransferPermissions( - lockID:BlueManage().connectDeviceName, - authUserID:await Storage.getUid(), - keyID:"1", - oldUserID:await Storage.getUid(), - newUserID:"100002", - needAuthor:1, - publicKey:publicKeyDataList, - privateKey:getPrivateKeyList, - token: getTokenList - ); + lockID: BlueManage().connectDeviceName, + authUserID: await Storage.getUid(), + keyID: "1", + oldUserID: await Storage.getUid(), + newUserID: "100002", + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList); } }); } @@ -121,7 +122,6 @@ class AuthorizedAdminLogic extends BaseGetXController { void onInit() { // TODO: implement onInit super.onInit(); - } @override @@ -129,5 +129,4 @@ class AuthorizedAdminLogic extends BaseGetXController { // TODO: implement onClose _replySubscription.cancel(); } - -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart index 769bcd45..e523ae71 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart @@ -302,7 +302,7 @@ class _AuthorizedAdminPageState extends State { btnName: '完成', onClick: () { _isSendSuccess = false; - setState(() {}); + Navigator.pop(context, true); }), SizedBox( height: 10.h, diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_page.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_page.dart index bf9cb1c6..79024fb1 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_page.dart @@ -69,7 +69,12 @@ class _AuthorizedAdminListPageState extends State { arguments: { "lockMainEntity": lockMainEntity, "keyInfo": keyInfo - }); + }).then((val) { + if (val != null) { + mockNetworkDataRequest(); + setState(() {}); + } + }); }, ), SizedBox( diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart index 95dc8a1a..68c3cfa3 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart @@ -82,7 +82,12 @@ class _ElectronicKeyListPageState extends State { arguments: { "lockMainEntity": lockMainEntity, "keyInfo": keyInfo - }); + }).then((val) { + if (val != null) { + mockNetworkDataRequest(); + setState(() {}); + } + }); }, ), SizedBox( diff --git a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart index deb03563..73e397c0 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/sendElectronicKey_page.dart @@ -80,67 +80,63 @@ class _SendElectronicKeyPageState extends State { } Widget indexChangeWidget() { - switch (int.parse(widget.type)) { - case 0: - { - // 限时 - return _isSendSuccess - ? sendElectronicKeySucceed() - : Column( - children: [ - keyInfoWidget(), - keyTimeWidget(), - remoteUnlockingWidget(), - keyRealNameWidget(), - keyBottomWidget() - ], - ); - } - case 1: - { - // 永久 - return _isSendSuccess - ? sendElectronicKeySucceed() - : Column( - children: [ - keyInfoWidget(), - remoteUnlockingWidget(), - keyRealNameWidget(), - keyBottomWidget() - ], - ); - } - case 2: - { - // 单次 - return _isSendSuccess - ? sendElectronicKeySucceed() - : Column( - children: [ - keyInfoWidget(), - remoteUnlockingWidget(), - keyRealNameWidget(), - keyBottomWidget() - ], - ); - } - case 3: - { - // 循环 - return _isSendSuccess - ? sendElectronicKeySucceed() - : Column( - children: [ - keyInfoWidget(), - keyPeriodValidityWidget(), - remoteUnlockingWidget(), - keyRealNameWidget(), - keyBottomWidget() - ], - ); - } - default: - return Container(); + if (_isSendSuccess) { + return sendElectronicKeySucceed(); + } else { + switch (int.parse(widget.type)) { + case 0: + { + // 限时 + return Column( + children: [ + keyInfoWidget(), + keyTimeWidget(), + remoteUnlockingWidget(), + keyRealNameWidget(), + keyBottomWidget() + ], + ); + } + case 1: + { + // 永久 + return Column( + children: [ + keyInfoWidget(), + remoteUnlockingWidget(), + keyRealNameWidget(), + keyBottomWidget() + ], + ); + } + case 2: + { + // 单次 + return Column( + children: [ + keyInfoWidget(), + remoteUnlockingWidget(), + keyRealNameWidget(), + keyBottomWidget() + ], + ); + } + case 3: + { + // 循环 + return Column( + children: [ + keyInfoWidget(), + keyPeriodValidityWidget(), + remoteUnlockingWidget(), + keyRealNameWidget(), + keyBottomWidget() + ], + ); + } + default: + return Container(); + } } } @@ -412,7 +408,7 @@ class _SendElectronicKeyPageState extends State { btnName: '完成', onClick: () { _isSendSuccess = false; - setState(() {}); + Navigator.pop(context, true); }), SizedBox( height: 10.h, diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart index 90d5c26d..cf0eb3ee 100644 --- a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart +++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyList/passwordKeyList_page.dart @@ -75,15 +75,20 @@ class _PasswordKeyListPageState extends State { height: 20.h, ), AddBottomWhiteBtn( - btnName: TranslationLoader.lanKeys!.getPassword!.tr, - onClick: () { - Navigator.pushNamed( - context, Routers.passwordKeyManagePage, arguments: { - "lockMainEntity": lockMainEntity, - "keyInfo": keyInfo - }); - }, - ), + btnName: TranslationLoader.lanKeys!.getPassword!.tr, + onClick: () { + Navigator.pushNamed( + context, Routers.passwordKeyManagePage, + arguments: { + "lockMainEntity": lockMainEntity, + "keyInfo": keyInfo + }).then((val) { + if (val != null) { + mockNetworkDataRequest(); + setState(() {}); + } + }); + }), SizedBox( height: 42.h, ) diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart index 95993fc1..5d57a1fc 100644 --- a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart +++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart @@ -14,13 +14,14 @@ import '../../../../tools/baseGetXController.dart'; import '../../../../tools/storage.dart'; class PasswordKeyPerpetualLogic extends BaseGetXController { - + late DateTime getStartDateTime; // 监听设备返回的数据 late StreamSubscription _replySubscription; void _initReplySubscription() { - _replySubscription = EventBusManager().eventBus!.on().listen((reply) async { + _replySubscription = + EventBusManager().eventBus!.on().listen((reply) async { // 设置自定义密码 - if(reply is SenderCustomPasswordsReply) { + if (reply is SenderCustomPasswordsReply) { var token = reply.data.sublist(2, 6); var saveStrList = changeIntListToStringList(token); print("_replyFactoryDataResetKeyToken:$token"); @@ -29,47 +30,49 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { int status = reply.data[6]; print("status:$status"); - switch(status){ + switch (status) { case 0x00: - //成功 + //成功 print("${reply.commandType!.typeValue} 数据解析成功"); break; case 0x06: - //无权限 + //无权限 print("${reply.commandType!.typeValue} 需要鉴权"); var privateKey = await Storage.getStringList(saveBluePrivateKey); - List getPrivateKeyList = changeStringListToIntList(privateKey!); + List getPrivateKeyList = + changeStringListToIntList(privateKey!); var publicKey = await Storage.getStringList(saveBluePublicKey); List publicKeyDataList = changeStringListToIntList(publicKey!); + print('得到的开始时间时间戳$getStartDate'); + IoSenderManage.senderCustomPasswordsCommand( - keyID:"1", - userID:await Storage.getUid(), - pwdNo:1, + keyID: "1", + userID: await Storage.getUid(), + pwdNo: 1, pwd: "123456", - useCountLimit:0xff, - startTime:0x11223344, - endTime:0x11223344, - needAuthor:1, - publicKey:publicKeyDataList, - privateKey:getPrivateKeyList, - token: token - ); + useCountLimit: 0xff, + startTime: 0x11223344, + endTime: 0x11223344, + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: token); break; case 0x07: - //无权限 + //无权限 print("${reply.commandType!.typeValue} 用户无权限"); break; case 0x09: - // 权限校验错误 + // 权限校验错误 print("${reply.commandType!.typeValue} 权限校验错误"); break; default: - //失败 + //失败 print("${reply.commandType!.typeValue} 失败"); break; @@ -78,10 +81,16 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { }); } + void getStartDate(DateTime startDate) { + getStartDateTime = startDate; + } + // 设置自定义密码 Future senderCustomPasswords() async { - BlueManage().judgeReconnect(BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, (DeviceConnectionState state) async { - if (state == DeviceConnectionState.connected){ + BlueManage().judgeReconnect( + BlueManage().connectDeviceMacAddress, BlueManage().connectDeviceName, + (DeviceConnectionState state) async { + if (state == DeviceConnectionState.connected) { var publicKey = await Storage.getStringList(saveBluePublicKey); List publicKeyDataList = changeStringListToIntList(publicKey!); @@ -93,18 +102,17 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { print("openDoorTokenPubToken:$getTokenList"); IoSenderManage.senderCustomPasswordsCommand( - keyID:"1", - userID:await Storage.getUid(), - pwdNo:1, + keyID: "1", + userID: await Storage.getUid(), + pwdNo: 1, pwd: "123456", - useCountLimit:0xff, - startTime:0x11223344, - endTime:0x11223344, - needAuthor:1, - publicKey:publicKeyDataList, - privateKey:getPrivateKeyList, - token: getTokenList - ); + useCountLimit: 0xff, + startTime: 0x11223344, + endTime: 0x11223344, + needAuthor: 1, + publicKey: publicKeyDataList, + privateKey: getPrivateKeyList, + token: getTokenList); } }); } @@ -121,7 +129,6 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { void onInit() { // TODO: implement onInit super.onInit(); - } @override @@ -129,5 +136,4 @@ class PasswordKeyPerpetualLogic extends BaseGetXController { // TODO: implement onClose _replySubscription.cancel(); } - -} \ No newline at end of file +} diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart index 940fe685..b227de6d 100644 --- a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart +++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart @@ -6,6 +6,7 @@ import 'package:flutter_pickers/style/default_style.dart'; import 'package:flutter_pickers/time_picker/model/date_mode.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_logic.dart'; import 'package:star_lock/main/lockMian/entity/lockInfoEntity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; @@ -33,7 +34,10 @@ class PasswordKeyPerpetualPage extends StatefulWidget { } class _PasswordKeyPerpetualPageState extends State { - final TextEditingController _controller = TextEditingController(); + final TextEditingController _nameController = TextEditingController(); + final TextEditingController _pwdController = TextEditingController(); + final logic = Get.put(PasswordKeyPerpetualLogic()); + late bool _isSendSuccess; //是否发送成功 late bool _isPermanent; //是否永久 late String _getPwdStr; @@ -47,7 +51,9 @@ class _PasswordKeyPerpetualPageState extends State { @override Widget build(BuildContext context) { - return indexChangeWidget(); + return SingleChildScrollView( + child: indexChangeWidget(), + ); } @override @@ -85,7 +91,7 @@ class _PasswordKeyPerpetualPageState extends State { perpetualKeyWidget( TranslationLoader.lanKeys!.name!.tr, TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr, - _controller), + _nameController), keyBottomWidget(TranslationLoader.lanKeys!.getPasswordTip1!.tr) ], ); @@ -99,7 +105,7 @@ class _PasswordKeyPerpetualPageState extends State { perpetualKeyWidget( TranslationLoader.lanKeys!.name!.tr, TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr, - _controller), + _nameController), keyBottomWidget(TranslationLoader.lanKeys!.getPasswordTip2!.tr) ], ); @@ -112,7 +118,7 @@ class _PasswordKeyPerpetualPageState extends State { perpetualKeyWidget( TranslationLoader.lanKeys!.name!.tr, TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr, - _controller), + _nameController), keyBottomWidget(TranslationLoader.lanKeys!.getPasswordTip3!.tr) ], ); @@ -127,9 +133,9 @@ class _PasswordKeyPerpetualPageState extends State { perpetualKeyWidget( TranslationLoader.lanKeys!.name!.tr, TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr, - _controller), + _nameController), perpetualKeyWidget(TranslationLoader.lanKeys!.password!.tr, - "请输入6-9位数字", _controller), + "请输入6-9位数字", _pwdController), keyBottomWidget(TranslationLoader.lanKeys!.getPasswordTip4!.tr) ], ); @@ -143,7 +149,7 @@ class _PasswordKeyPerpetualPageState extends State { perpetualKeyWidget( TranslationLoader.lanKeys!.name!.tr, TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr, - _controller), + _nameController), keyBottomWidget(TranslationLoader.lanKeys!.getPasswordTip5!.tr) ], ); @@ -156,7 +162,7 @@ class _PasswordKeyPerpetualPageState extends State { perpetualKeyWidget( TranslationLoader.lanKeys!.name!.tr, TranslationLoader.lanKeys!.pleaseNameYourPassword!.tr, - _controller), + _nameController), keyBottomWidget(TranslationLoader.lanKeys!.getPasswordTip6!.tr) ], ); @@ -179,7 +185,7 @@ class _PasswordKeyPerpetualPageState extends State { leftTitel: titleStr, rightTitle: "", isHaveRightWidget: true, - rightWidget: getTFWidget(rightTitle)), + rightWidget: getTFWidget(rightTitle, controller)), ), SizedBox(height: 10.h), ], @@ -346,6 +352,7 @@ class _PasswordKeyPerpetualPageState extends State { SubmitBtn( btnName: TranslationLoader.lanKeys!.getPassword!.tr, onClick: () { + logic.getStartDate(_effectiveDateTime); getKeyboardPwdRequest(); }), ], @@ -403,7 +410,7 @@ class _PasswordKeyPerpetualPageState extends State { var entity = await ApiRepository.to.getPasswordKey( getFailureDateTime, '0', - _controller.text, + _nameController.text, getKeyType, '0', lockId, @@ -466,7 +473,8 @@ class _PasswordKeyPerpetualPageState extends State { SubmitBtn( btnName: '完成', onClick: () { - Navigator.pop(context); + _isSendSuccess = false; + Navigator.pop(context, true); }), SizedBox( height: 10.h, @@ -489,7 +497,7 @@ class _PasswordKeyPerpetualPageState extends State { } // 接受者信息输入框 - Widget getTFWidget(String tfStr) { + Widget getTFWidget(String tfStr, TextEditingController editController) { return SizedBox( height: 50.h, width: 300.w, @@ -499,7 +507,7 @@ class _PasswordKeyPerpetualPageState extends State { child: TextField( //输入框一行 maxLines: 1, - controller: _controller, + controller: editController, autofocus: false, textAlign: TextAlign.end, decoration: InputDecoration( From f2cbec8f5eb4f23a0f46feacdbf200920790c0bd Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Mon, 4 Sep 2023 11:11:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?1=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=94=B5=E5=AD=90=E9=92=A5=E5=8C=99=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=202=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=88=A0=E9=99=A4=E5=AF=86?= =?UTF-8?q?=E7=A0=81=E6=8E=A5=E5=8F=A3=203=EF=BC=8C=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E7=94=B5=E5=AD=90=E9=92=A5=E5=8C=99=E6=9C=89=E6=95=88=E6=9C=9F?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=9B=B4=E6=94=B9=E6=8E=A5=E5=8F=A3u?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../electronicKeyDetail_page.dart | 7 +- .../electronicKeyDetailChangeDate_page.dart | 100 ++++-- .../basicInformation_page.dart | 33 ++ .../passwordKeyDetail_page.dart | 306 +++++++++--------- .../passwordKey_perpetual_page.dart | 2 +- star_lock/lib/network/api.dart | 5 +- star_lock/lib/network/api_provider.dart | 26 +- star_lock/lib/network/api_repository.dart | 35 +- 8 files changed, 321 insertions(+), 193 deletions(-) diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart index 4be60c8c..e361ca3a 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart @@ -81,7 +81,8 @@ class _ElectronicKeyDetailPageState extends State { isHaveDirection: true, action: () { Navigator.pushNamed( - context, Routers.electronicKeyDetailChangeDate); + context, Routers.electronicKeyDetailChangeDate, + arguments: {"itemData": itemData}); }), Container(height: 10.h), CommonItem( @@ -252,7 +253,7 @@ class _ElectronicKeyDetailPageState extends State { Future modifyKeyNameRequest() async { KeyOperationRecordEntity entity = await ApiRepository.to .modifyKeyNameForAdmin( - itemData.keyId.toString(), _changeNameController.text, '0'); + itemData.keyId.toString(), _changeNameController.text, ''); if (entity.errorCode!.codeIsSuccessful) { print("修改要是名称成功啦啦啦啦啦"); Toast.show(msg: "修改成功"); @@ -265,7 +266,7 @@ class _ElectronicKeyDetailPageState extends State { //删除电子钥匙名称请求 Future deleteKeyRequest() async { ElectronicKeyListEntity entity = - await ApiRepository.to.deleteElectronicKey('0'); + await ApiRepository.to.deleteElectronicKey(itemData.keyId.toString()); if (entity.errorCode!.codeIsSuccessful) { print("删除电子钥匙成功"); Toast.show(msg: "删除成功"); diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart index 40615e15..b29d7afa 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetailChangeDate/electronicKeyDetailChangeDate_page.dart @@ -1,11 +1,16 @@ import 'package:flutter/material.dart'; -import 'package:flutter_cupertino_datetime_picker/flutter_cupertino_datetime_picker.dart'; +import 'package:flutter_pickers/pickers.dart'; +import 'package:flutter_pickers/time_picker/model/date_mode.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/keyOperationRecordEntity.dart'; +import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; +import 'package:star_lock/network/api_repository.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:star_lock/tools/toast.dart'; import '../../../../../app_settings/app_colors.dart'; import '../../../../../tools/commonItem.dart'; -import '../../../../../tools/showSeletDateTime.dart'; import '../../../../../tools/titleAppBar.dart'; import '../../../../../translations/trans_lib.dart'; @@ -19,8 +24,23 @@ class ElectronicKeyDetailChangeDate extends StatefulWidget { class _ElectronicKeyDetailChangeDateState extends State { + ElectronicKeyListItem itemData = ElectronicKeyListItem(); + + String _selectEffectiveDate = ''; //生效时间 + String _selectFailureDate = ''; //失效时间 + late DateTime _effectiveDateTime; + late DateTime _failureDateTime; + late String endDay = ''; + late String startDay = ''; + late List weekDays = []; + @override Widget build(BuildContext context) { + dynamic obj = ModalRoute.of(context)?.settings.arguments; + if (obj != null && (obj["itemData"] != null)) { + itemData = obj["itemData"]; + } + return Scaffold( backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( @@ -34,7 +54,9 @@ class _ElectronicKeyDetailChangeDateState TranslationLoader.lanKeys!.sure!.tr, style: TextStyle(color: Colors.white, fontSize: 24.sp), ), - onPressed: () {}, + onPressed: () { + updateKeyDateRequest(); + }, ), ], ), @@ -47,50 +69,58 @@ class _ElectronicKeyDetailChangeDateState children: [ CommonItem( leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr, - rightTitle: "2020.06.20 11:49", - isHaveDirection: true, + rightTitle: _selectEffectiveDate, isHaveLine: true, + isHaveDirection: true, action: () { - ShowSeletDateTime().showDatePicker( - context, - '2100-01-01 00:00', - '1900-01-01 00:00', - getNowDate(), - 'yyyy-MMMM-dd HH:mm', - (dateTime, List index) {}); + Pickers.showDatePicker(context, mode: DateMode.YMDHM, + onConfirm: (p) { + setState(() { + _selectEffectiveDate = + '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; + _effectiveDateTime = DateTime.parse(_selectEffectiveDate); + }); + }); }), CommonItem( leftTitel: TranslationLoader.lanKeys!.failureTime!.tr, - rightTitle: "2020.06.20 11:49", + rightTitle: _selectFailureDate, isHaveDirection: true, action: () { - ShowSeletDateTime().showDatePicker(context, '00:00', '00:00', - getNowDate(), 'HH:mm', (dateTime, List index) {}); + Pickers.showDatePicker(context, mode: DateMode.YMDHM, + onConfirm: (p) { + setState(() { + _selectFailureDate = + '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; + _failureDateTime = DateTime.parse(_selectFailureDate); + }); + }); }), ], ); } - String getNowDate() { - // 获取当前时间对象 - DateTime today = DateTime.now(); - String dateSlug = - "${today.hour.toString().padLeft(2, '0')}:${today.minute.toString().padLeft(2, '0')}"; + //修改钥匙名称请求 + Future updateKeyDateRequest() async { + KeyOperationRecordEntity entity = await ApiRepository.to.updateKeyDate( + itemData.keyId.toString(), + itemData.lockId.toString(), + _failureDateTime.millisecondsSinceEpoch.toString(), + endDay, + '', + _effectiveDateTime.millisecondsSinceEpoch.toString(), + startDay, + weekDays); + if (entity.errorCode!.codeIsSuccessful) { + print("修改要是名称成功啦啦啦啦啦"); + Toast.show(msg: "修改成功"); + setState(() { + Navigator.pop(context); + }); + } + } - // //获取当前时间的年 - // int year = now.year; - // //获取当前时间的月 - // int month = now.month; - // //获取当前时间的日 - // int day = now.day; - // //获取当前时间的时 - // int hour = now.hour; - // //获取当前时间的分 - // int minute = now.minute; - // //获取当前时间的秒 - // int millisecond = now.millisecond; - - // print("组合 $year-$month-$day $hour:$minute:$millisecond"); - return dateSlug; + String intToStr(int v) { + return (v < 10) ? "0$v" : "$v"; } } diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart index 56af0a4c..eff9bdad 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/network/api_repository.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; import '../../../../../appRouters.dart'; import '../../../../../app_settings/app_colors.dart'; @@ -104,4 +106,35 @@ class _BasicInformationPageState extends State { ], )); } + + void getLockInfo() async { + var entity = await ApiRepository.to.getLockInfo( + lastUpdateDate: DateTime.now().millisecondsSinceEpoch.toString(), + pageNo: '1', + ); + if (entity.errorCode!.codeIsSuccessful) { + // if (page == 0) { + // refreshController.refreshCompleted(); + // } else { + // if (entity.data!.keyInfos!.isEmpty) { + // refreshController.loadNoData(); + // } else { + // refreshController.loadComplete(); + // } + // } + // page++; + + if (entity.data!.keyInfos!.isEmpty) { + state.dataLength.value = 0; + } else if (entity.data!.keyInfos!.length == 1) { + state.dataLength.value = 1; + } else { + state.dataLength.value = 2; + } + state.lockMainEntity.value = entity; + } else { + // refreshController.loadFailed(); + } + // refreshController.refreshCompleted(); + } } diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart index e6c4e9a4..4c8effca 100644 --- a/star_lock/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart +++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKeyDetail/passwordKeyDetail_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart'; import 'package:star_lock/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKeyEntity.dart'; import 'package:star_lock/network/api_repository.dart'; @@ -33,149 +34,166 @@ class _PasswordKeyDetailPageState extends State { } return Scaffold( - backgroundColor: AppColors.mainBackgroundColor, - appBar: TitleAppBar( - barTitle: TranslationLoader.lanKeys!.passwordDetail!.tr, - haveBack: true, - backgroundColor: AppColors.mainColor, - actionsList: [ - IconButton( - icon: Image.asset( - 'images/icon_bar_share.png', - height: 30.h, - width: 30.w, + backgroundColor: AppColors.mainBackgroundColor, + appBar: TitleAppBar( + barTitle: TranslationLoader.lanKeys!.passwordDetail!.tr, + haveBack: true, + backgroundColor: AppColors.mainColor, + actionsList: [ + IconButton( + icon: Image.asset( + 'images/icon_bar_share.png', + height: 30.h, + width: 30.w, + ), + onPressed: () {}, ), - onPressed: () {}, + ], + // actionsList: [ + // TextButton( + // child: Text( + // "分享", + // style: TextStyle(color: Colors.white, fontSize: 24.sp), + // ), + // onPressed: () {}, + // ), + // ], + ), + body: SingleChildScrollView( + child: Column( + children: [ + CommonItem( + leftTitel: TranslationLoader.lanKeys!.password!.tr, + rightTitle: itemData.keyboardPwd, + isHaveDirection: true, + isHaveLine: true, + action: () { + showCupertinoAlertDialog(context); + }), + CommonItem( + leftTitel: TranslationLoader.lanKeys!.name!.tr, + rightTitle: itemData.keyboardPwdName, + isHaveDirection: true, + isHaveLine: true, + action: () { + showCupertinoAlertDialog(context); + }), + CommonItem( + leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr, + rightTitle: "永久", + isHaveDirection: true, + action: () { + Navigator.pushNamed( + context, Routers.electronicKeyDetailChangeDate); + }), + Container(height: 10.h), + CommonItem( + leftTitel: TranslationLoader.lanKeys!.sender!.tr, + rightTitle: itemData.senderUsername, + isHaveLine: true, + action: () {}), + CommonItem( + leftTitel: TranslationLoader.lanKeys!.senderTime!.tr, + rightTitle: getSenderDate(itemData), + action: () {}), + Container(height: 10.h), + CommonItem( + leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, + rightTitle: "", + isHaveDirection: true, + action: () { + Navigator.pushNamed(context, Routers.keyOperationRecordPage, + arguments: { + 'lockId': itemData.lockId.toString(), + 'keyId': itemData.keyboardPwdId.toString() + }); + }), + Container(height: 40.h), + SizedBox( + width: ScreenUtil().screenWidth - 40.w, + height: 60.h, + child: OutlinedButton( + style: OutlinedButton.styleFrom( + // backgroundColor: Colors.white, + side: BorderSide(width: 1, color: AppColors.mainColor)), + onPressed: () { + Navigator.pushNamed( + context, Routers.otherTypeKeyManagePage, + arguments: 0); + }, + child: Text( + '设置卡', + style: TextStyle( + color: AppColors.mainColor, fontSize: 24.sp), + )), + ), + SizedBox( + height: 10.h, + ), + SizedBox( + width: ScreenUtil().screenWidth - 40.w, + height: 60.h, + child: OutlinedButton( + style: OutlinedButton.styleFrom( + // backgroundColor: Colors.white, + side: BorderSide(width: 1, color: AppColors.mainColor)), + onPressed: () { + Navigator.pushNamed( + context, Routers.otherTypeKeyManagePage, + arguments: 1); + }, + child: Text( + '设置指纹', + style: TextStyle( + color: AppColors.mainColor, fontSize: 24.sp), + )), + ), + SizedBox( + height: 10.h, + ), + SizedBox( + width: ScreenUtil().screenWidth - 40.w, + height: 60.h, + child: OutlinedButton( + style: OutlinedButton.styleFrom( + // backgroundColor: Colors.white, + side: BorderSide(width: 1, color: AppColors.mainColor)), + onPressed: () { + Navigator.pushNamed( + context, Routers.otherTypeKeyManagePage, + arguments: 2); + }, + child: Text( + '设置遥控', + style: TextStyle( + color: AppColors.mainColor, fontSize: 24.sp), + )), + ), + SizedBox( + height: 30.h, + ), + SubmitBtn( + btnName: TranslationLoader.lanKeys!.delete!.tr, + isDelete: true, + borderRadius: 20.w, + margin: EdgeInsets.only( + left: 30.w, right: 30.w, top: 30.w, bottom: 30.w), + padding: EdgeInsets.only(top: 25.w, bottom: 25.w), + onClick: () { + deletePwdRequest(); + }), + ], ), - ], - // actionsList: [ - // TextButton( - // child: Text( - // "分享", - // style: TextStyle(color: Colors.white, fontSize: 24.sp), - // ), - // onPressed: () {}, - // ), - // ], - ), - body: Column( - children: [ - CommonItem( - leftTitel: TranslationLoader.lanKeys!.password!.tr, - rightTitle: itemData.keyboardPwd, - isHaveDirection: true, - isHaveLine: true, - action: () { - showCupertinoAlertDialog(context); - }), - CommonItem( - leftTitel: TranslationLoader.lanKeys!.name!.tr, - rightTitle: itemData.keyboardPwdName, - isHaveDirection: true, - isHaveLine: true, - action: () { - showCupertinoAlertDialog(context); - }), - CommonItem( - leftTitel: TranslationLoader.lanKeys!.effectiveTime!.tr, - rightTitle: "永久", - isHaveDirection: true, - action: () { - Navigator.pushNamed( - context, Routers.electronicKeyDetailChangeDate); - }), - Container(height: 10.h), - CommonItem( - leftTitel: TranslationLoader.lanKeys!.sender!.tr, - rightTitle: itemData.senderUsername, - action: () {}), - CommonItem( - leftTitel: TranslationLoader.lanKeys!.senderTime!.tr, - rightTitle: itemData.sendDate.toString(), - action: () {}), - Container(height: 10.h), - CommonItem( - leftTitel: TranslationLoader.lanKeys!.operatingRecord!.tr, - rightTitle: "", - isHaveDirection: true, - action: () { - Navigator.pushNamed(context, Routers.keyOperationRecordPage, - arguments: { - 'lockId': itemData.lockId.toString(), - 'keyId': itemData.keyboardPwdId.toString() - }); - }), - Container(height: 40.h), - SizedBox( - width: ScreenUtil().screenWidth - 40.w, - height: 60.h, - child: OutlinedButton( - style: OutlinedButton.styleFrom( - // backgroundColor: Colors.white, - side: BorderSide(width: 1, color: AppColors.mainColor)), - onPressed: () { - Navigator.pushNamed(context, Routers.otherTypeKeyManagePage, - arguments: 0); - }, - child: Text( - '设置卡', - style: TextStyle(color: AppColors.mainColor, fontSize: 24.sp), - )), - ), - SizedBox( - height: 10.h, - ), - SizedBox( - width: ScreenUtil().screenWidth - 40.w, - height: 60.h, - child: OutlinedButton( - style: OutlinedButton.styleFrom( - // backgroundColor: Colors.white, - side: BorderSide(width: 1, color: AppColors.mainColor)), - onPressed: () { - Navigator.pushNamed(context, Routers.otherTypeKeyManagePage, - arguments: 1); - }, - child: Text( - '设置指纹', - style: TextStyle(color: AppColors.mainColor, fontSize: 24.sp), - )), - ), - SizedBox( - height: 10.h, - ), - SizedBox( - width: ScreenUtil().screenWidth - 40.w, - height: 60.h, - child: OutlinedButton( - style: OutlinedButton.styleFrom( - // backgroundColor: Colors.white, - side: BorderSide(width: 1, color: AppColors.mainColor)), - onPressed: () { - Navigator.pushNamed(context, Routers.otherTypeKeyManagePage, - arguments: 2); - }, - child: Text( - '设置遥控', - style: TextStyle(color: AppColors.mainColor, fontSize: 24.sp), - )), - ), - SizedBox( - height: 30.h, - ), - SubmitBtn( - btnName: TranslationLoader.lanKeys!.delete!.tr, - isDelete: true, - borderRadius: 20.w, - margin: EdgeInsets.only( - left: 30.w, right: 30.w, top: 30.w, bottom: 30.w), - padding: EdgeInsets.only(top: 25.w, bottom: 25.w), - onClick: () { - deletePwdRequest(); - }), - ], - ), - ); + )); + } + + //发送时间 + String getSenderDate(PasswordKeyListItem indexEntity) { + String senderDate = ''; + DateTime dateStr = + DateTime.fromMillisecondsSinceEpoch(indexEntity.sendDate!); + senderDate = dateStr.toLocal().toString().substring(0, 16); + return senderDate; } Widget commonItem(String leftTitle, String rightTitle, @@ -241,10 +259,10 @@ class _PasswordKeyDetailPageState extends State { ); } - //删除密码请求 + //删除密码请求 deleteType:1-蓝牙 2-网关 Future deletePwdRequest() async { - PasswordKeyEntity entity = - await ApiRepository.to.deleteKeyboardPwd('0', '1', '1'); + PasswordKeyEntity entity = await ApiRepository.to.deleteKeyboardPwd( + itemData.lockId.toString(), itemData.keyboardPwdId.toString(), '1'); if (entity.errorCode!.codeIsSuccessful) { print("删除密码成功"); Toast.show(msg: "删除成功"); diff --git a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart index b227de6d..cb51559b 100644 --- a/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart +++ b/star_lock/lib/main/lockDetail/passwordKey/passwordKey_perpetual/passwordKey_perpetual_page.dart @@ -400,7 +400,7 @@ class _PasswordKeyPerpetualPageState extends State { //清空码 getKeyType = '4'; } - if (widget.type == '0') { + if (widget.type != '0' || widget.type != '2' || widget.type == '5') { getFailureDateTime = DateTime.parse(_selectFailureDate).millisecondsSinceEpoch.toString(); getEffectiveDateTime = DateTime.parse(_selectEffectiveDate) diff --git a/star_lock/lib/network/api.dart b/star_lock/lib/network/api.dart index dbeeb595..450deeec 100644 --- a/star_lock/lib/network/api.dart +++ b/star_lock/lib/network/api.dart @@ -23,10 +23,11 @@ abstract class Api { final String modifyKeyNameURL = '/key/modifyKeyName'; //修改锁名称 final String modifyKeyNameForAdminURL = '/key/modifyKeyNameForAdmin'; //编辑电子钥匙名字 + final String updateKeyDateURL = '/key/updateKeyDate'; //编辑电子钥匙的有效期、有效时间、有效日 final String passwordKeyListURL = '/keyboardPwd/listSendRecords'; //密码钥匙列表 final String passwordKeyResetURL = '/keyboardPwd/reset'; //密码钥匙重置 - final String deleteElectronicKeyURL = '/keyboardPwd/reset'; //删除电子钥匙 - final String deleteKeyboardPwdURL = '/keyboardPwd/reset'; //删除密码 + final String deleteElectronicKeyURL = '/key/delete'; //删除电子钥匙 + final String deleteKeyboardPwdURL = '/keyboardPwd/delete'; //删除密码 final String getLockInfoURL = '/lock/syncDataPage'; // 获取锁信息 final String deletLockURL = '/lock/delete'; // 删除锁 diff --git a/star_lock/lib/network/api_provider.dart b/star_lock/lib/network/api_provider.dart index cef6de78..4af64b07 100644 --- a/star_lock/lib/network/api_provider.dart +++ b/star_lock/lib/network/api_provider.dart @@ -194,6 +194,28 @@ class ApiProvider extends BaseProvider { 'operatorUid': operatorUid, })); + Future updateKeyDate( + String keyId, + String lockId, + String endDate, + String endDay, + String operatorUid, + String startDate, + String startDay, + List weekDays) => + post( + updateKeyDateURL.toUrl, + jsonEncode({ + 'keyId': keyId, + 'lockId': lockId, + 'endDate': endDate, + 'endDay': endDay, + 'operatorUid': operatorUid, + 'startDate': startDate, + 'startDay': startDay, + 'weekDays': weekDays, + })); + Future resetElectronicKey(String lockId, String operatorUid) => post(resetElectronicKeyURL.toUrl, jsonEncode({'lockId': lockId, 'operatorUid': operatorUid})); @@ -332,11 +354,11 @@ class ApiProvider extends BaseProvider { post(deleteElectronicKeyURL.toUrl, jsonEncode({'keyId': keyId})); Future deleteKeyboardPwd( - String keyId, String keyboardPwdId, String deleteType) => + String lockId, String keyboardPwdId, String deleteType) => post( deleteKeyboardPwdURL.toUrl, jsonEncode({ - 'keyId': keyId, + 'lockId': lockId, 'keyboardPwdId': keyboardPwdId, 'deleteType': deleteType })); diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 518d1cfd..b90d03c7 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -192,9 +192,17 @@ class ApiRepository { required Map position, required Map bluetooth, required String deviceNo, - required String lockUserNo}) async { - final res = await apiProvider.bindingBlueAdmin(bindingDate, hotelMode, - lockAlias, lockData, nbInitSuccess, position, bluetooth, deviceNo, lockUserNo); + required String lockUserNo}) async { + final res = await apiProvider.bindingBlueAdmin( + bindingDate, + hotelMode, + lockAlias, + lockData, + nbInitSuccess, + position, + bluetooth, + deviceNo, + lockUserNo); return SaveLockEntity.fromJson(res.body); } @@ -229,7 +237,22 @@ class ApiRepository { return KeyOperationRecordEntity.fromJson(res.body); } - //编辑电子钥匙名字 + //编辑电子钥匙有效期 + Future updateKeyDate( + String keyId, + String lockId, + String endDate, + String endDay, + String operatorUid, + String startDate, + String startDay, + List weekDays) async { + final res = await apiProvider.updateKeyDate(keyId, lockId, endDate, endDay, + operatorUid, startDate, startDay, weekDays); + return KeyOperationRecordEntity.fromJson(res.body); + } + + //密码列表 Future passwordKeyList( String keyStatus, String lockId, @@ -314,9 +337,9 @@ class ApiRepository { //删除密码 Future deleteKeyboardPwd( - String keyId, String keyboardPwdId, String deleteType) async { + String lockId, String keyboardPwdId, String deleteType) async { final res = - await apiProvider.deleteKeyboardPwd(keyId, keyboardPwdId, deleteType); + await apiProvider.deleteKeyboardPwd(lockId, keyboardPwdId, deleteType); return PasswordKeyEntity.fromJson(res.body); } From d8c68b5ac75b4b9cb86c9dd2f5750e43b065f1bd Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Mon, 4 Sep 2023 11:17:00 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E9=83=A8=E5=88=86=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basicInformation/basicInformation_page.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart index eff9bdad..65b17056 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/basicInformation/basicInformation_page.dart @@ -107,6 +107,7 @@ class _BasicInformationPageState extends State { )); } +/* void getLockInfo() async { var entity = await ApiRepository.to.getLockInfo( lastUpdateDate: DateTime.now().millisecondsSinceEpoch.toString(), @@ -137,4 +138,5 @@ class _BasicInformationPageState extends State { } // refreshController.refreshCompleted(); } + */ }