From ca84357e3c0d1e6490194d287efca778306cce24 Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Wed, 30 Aug 2023 18:30:11 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E7=94=B5=E5=AD=90=E9=92=A5=E5=8C=99?= =?UTF-8?q?=E9=83=A8=E5=88=86=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=202?= =?UTF-8?q?=EF=BC=8C=E6=8E=88=E6=9D=83=E7=AE=A1=E7=90=86=E5=91=98=E9=83=A8?= =?UTF-8?q?=E5=88=86=E9=80=BB=E8=BE=91=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../authorizedAdmin/authorizedAdmin_page.dart | 198 ++++++++++++------ .../authorizedAdminList_page.dart | 30 ++- .../electronicKeyList_page.dart | 2 +- .../sendElectronicKey_page.dart | 24 +-- .../lockDetail/lockDetail_page.dart | 9 +- 5 files changed, 179 insertions(+), 84 deletions(-) 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 162ef5fb..94e63f71 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_page.dart @@ -1,3 +1,4 @@ +import 'package:date_format/date_format.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart'; @@ -5,8 +6,10 @@ 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/lockMian/entity/lockInfoEntity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:star_lock/tools/toast.dart'; import '../../../../appRouters.dart'; import '../../../../app_settings/app_colors.dart'; @@ -25,22 +28,30 @@ class AuthorizedAdminPage extends StatefulWidget { class _AuthorizedAdminPageState extends State { final FlutterContactPicker _contactPicker = FlutterContactPicker(); late Contact _contact; - - // bool _isRemoteUnlock = false; //是否允许远程开锁 + late KeyInfos keyInfo; + late LockMainEntity lockMainEntity; bool _isAuthentication = false; //是否可以实名认证 var _selectEffectiveDate = ''; //生效时间 var _selectFailureDate = ''; //失效时间 + late DateTime _effectiveDateTime; + late DateTime _failureDateTime; final TextEditingController _emailOrPhoneController = TextEditingController(); //邮箱/手机号输入框 final TextEditingController _keyNameController = TextEditingController(); //钥匙名输入框 late bool _isSendSuccess; + String countryName = '中国'; + String countryCode = '86'; + List weekdaysList = []; + bool _isCreateUser = false; //用户未注册时传1 已注册传0 @override void initState() { super.initState(); DateTime dateTime = DateTime.now(); + _effectiveDateTime = dateTime; + _failureDateTime = dateTime; _selectEffectiveDate = '${dateTime.year}-${dateTime.month}-${dateTime.day} ${dateTime.hour}:${dateTime.minute}'; //默认为当前时间 _selectFailureDate = @@ -50,33 +61,47 @@ class _AuthorizedAdminPageState extends State { @override Widget build(BuildContext context) { - return indexChangeWidget(); + dynamic obj = ModalRoute.of(context)?.settings.arguments; + if (obj != null && (obj["lockMainEntity"] != null)) { + lockMainEntity = obj["lockMainEntity"]; + } + if (obj != null && (obj["keyInfo"] != null)) { + keyInfo = obj["keyInfo"]; + } + + return SingleChildScrollView( + child: indexChangeWidget(), + ); } Widget indexChangeWidget() { - switch (int.parse(widget.type)) { - case 0: - { - // 限时 - // return sendElectronicKeySucceed(); + if (_isSendSuccess) { + return sendElectronicKeySucceed(); + } else { + switch (int.parse(widget.type)) { + case 0: + { + // 限时 + return Column( + children: [ + keyInfoWidget(), + keyTimeWidget(), + keyRealNameWidget(), + keyBottomWidget( + TranslationLoader.lanKeys!.authorizedAdminTip!.tr) + ], + ); + } + default: + // 永久 return Column( children: [ keyInfoWidget(), - keyTimeWidget(), keyRealNameWidget(), keyBottomWidget(TranslationLoader.lanKeys!.authorizedAdminTip!.tr) ], ); - } - default: - // 永久 - return Column( - children: [ - keyInfoWidget(), - keyRealNameWidget(), - keyBottomWidget(TranslationLoader.lanKeys!.authorizedAdminTip!.tr) - ], - ); + } } } @@ -92,12 +117,33 @@ class _AuthorizedAdminPageState extends State { isHaveRightWidget: true, rightWidget: getTFWidget(true, TranslationLoader.lanKeys!.pleaseEnterNumberOrEmail!.tr, 1)), + CommonItem( + leftTitel: TranslationLoader.lanKeys!.countryAndRegion!.tr, + rightTitle: "", + isHaveLine: true, + isHaveRightWidget: true, + isHaveDirection: true, + rightWidget: Text( + '$countryName +$countryCode', + textAlign: TextAlign.end, + style: + TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor), + ), + action: () async { + var result = await Navigator.pushNamed( + context, Routers.seletCountryRegionPage); + result as Map; + countryCode = result['code']; + countryName = result['countryName']; + setState(() {}); + }, + ), CommonItem( leftTitel: TranslationLoader.lanKeys!.name!.tr, rightTitle: "", isHaveRightWidget: true, rightWidget: getTFWidget( - false, TranslationLoader.lanKeys!.pleaseEnter!.tr, 2)), + false, TranslationLoader.lanKeys!.enterYourName!.tr, 2)), Container(height: 10.h), ], ); @@ -117,7 +163,8 @@ class _AuthorizedAdminPageState extends State { onConfirm: (p) { setState(() { _selectEffectiveDate = - '${p.year}-${p.month}-${p.day} ${p.hour}:${p.minute}'; + '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; + _effectiveDateTime = DateTime.parse(_selectEffectiveDate); }); }); }), @@ -130,7 +177,8 @@ class _AuthorizedAdminPageState extends State { onConfirm: (p) { setState(() { _selectFailureDate = - '${p.year}-${p.month}-${p.day} ${p.hour}:${p.minute}'; + '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; + _failureDateTime = DateTime.parse(_selectFailureDate); }); }); }), @@ -222,8 +270,8 @@ class _AuthorizedAdminPageState extends State { ), Image.asset( 'images/icon_send_success.png', - width: 150.w, - height: 150.w, + width: 100.w, + height: 100.w, ), SizedBox( height: 20.h, @@ -234,7 +282,7 @@ class _AuthorizedAdminPageState extends State { Text( "发送成功", style: TextStyle( - fontSize: 32.sp, + fontSize: 26.sp, color: Colors.black, fontWeight: FontWeight.w500), ), @@ -248,38 +296,51 @@ class _AuthorizedAdminPageState extends State { ), SubmitBtn( btnName: '完成', - fontSize: 28.sp, - borderRadius: 20.w, - margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 30.w), - padding: EdgeInsets.only(top: 25.w, bottom: 25.w), - onClick: () {}), - SubmitBtn( - btnName: '邮件通知', - fontSize: 28.sp, - borderRadius: 20.w, - margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 30.w), - padding: EdgeInsets.only(top: 25.w, bottom: 25.w), onClick: () { - Navigator.pushNamed(context, Routers.sendEmailNotificationPage); + _isSendSuccess = false; + setState(() {}); }), - SubmitBtn( - btnName: '微信通知', - fontSize: 28.sp, - borderRadius: 20.w, - margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 30.w), - padding: EdgeInsets.only(top: 25.w, bottom: 25.w), - onClick: () {}), - SubmitBtn( - btnName: '标记为已入住', - fontSize: 28.sp, - borderRadius: 20.w, - margin: EdgeInsets.only(left: 30.w, right: 30.w, top: 30.w), - padding: EdgeInsets.only(top: 25.w, bottom: 25.w), - onClick: () {}), + SizedBox( + height: 10.h, + ), + OutLineBtn( + btnName: '邮件通知', + onClick: () { + Navigator.pushNamed(context, Routers.sendEmailNotificationPage); + }, + ), + SizedBox( + height: 10.h, + ), + OutLineBtn( + btnName: '微信通知', + onClick: () {}, + ), + SizedBox( + height: 10.h, + ), + OutLineBtn( + btnName: '标记为已入住', + onClick: () { + updateRoomCheckIn(); + }, + ), ], ); } + //标记房间为已入住 isOn:已入住: 1 空闲:2 + Future updateRoomCheckIn() async { + var entity = await ApiRepository.to.updateSetting('0', '1', '13'); + if (entity.errorCode!.codeIsSuccessful) { + print("标记为已入住成功啦啦啦啦啦"); + Toast.show(msg: "标记成功"); + setState(() {}); + } else { + Toast.show(msg: '操作失败'); + } + } + // 接受者信息输入框 Widget getTFWidget(bool isHaveBtn, String tfStr, int lineIndex) { return SizedBox( @@ -336,22 +397,20 @@ class _AuthorizedAdminPageState extends State { ); } - //发送钥匙请求 + //发送授权管理员列表请求 Future sendElectronicKeyRequest() async { String getFailureDateTime = '0'; String getEffectiveDateTime = '0'; - String deviceID = '28'; + String lockID = keyInfo.lockId.toString(); String getKeyType = (int.parse(widget.type) + 1).toString(); if (widget.type == '0') { - getFailureDateTime = - DateTime.parse(_selectFailureDate).millisecondsSinceEpoch.toString(); - getEffectiveDateTime = DateTime.parse(_selectEffectiveDate) - .millisecondsSinceEpoch - .toString(); + getFailureDateTime = _failureDateTime.millisecondsSinceEpoch.toString(); + getEffectiveDateTime = + _effectiveDateTime.millisecondsSinceEpoch.toString(); } var entity = await ApiRepository.to.sendElectronicKey( - '0', - '0', + _isCreateUser ? "1" : "0", + countryCode, '1', getFailureDateTime, _isAuthentication == true ? '1' : '2', @@ -360,15 +419,22 @@ class _AuthorizedAdminPageState extends State { _keyNameController.text, '1', getKeyType, - deviceID, - '小吴副号', + lockID, + '', _emailOrPhoneController.text, - '0', - getEffectiveDateTime, []); + '', + getEffectiveDateTime, + weekdaysList); if (entity.errorCode!.codeIsSuccessful) { print('发送电子钥匙成功'); _isSendSuccess = true; setState(() {}); + } else { + Toast.show(msg: '${entity.errorMsg}'); + if (entity.errorCode == 425) { + //用户未注册 + _isCreateUser = true; + } } } @@ -386,4 +452,8 @@ class _AuthorizedAdminPageState extends State { }, ); } + + String intToStr(int v) { + return (v < 10) ? "0$v" : "$v"; + } } 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 f76eb6cf..16d01f7d 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/authorizedAdminList/authorizedAdminList_page.dart @@ -2,6 +2,7 @@ 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/lockMian/entity/lockInfoEntity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/baseGetXController.dart'; @@ -20,8 +21,19 @@ class AuthorizedAdminListPage extends StatefulWidget { } class _AuthorizedAdminListPageState extends State { + late KeyInfos keyInfo; + late LockMainEntity lockMainEntity; + @override Widget build(BuildContext context) { + dynamic obj = ModalRoute.of(context)?.settings.arguments; + if (obj != null && (obj["lockMainEntity"] != null)) { + lockMainEntity = obj["lockMainEntity"]; + } + if (obj != null && (obj["keyInfo"] != null)) { + keyInfo = obj["keyInfo"]; + } + return Scaffold( backgroundColor: AppColors.mainBackgroundColor, appBar: TitleAppBar( @@ -53,7 +65,11 @@ class _AuthorizedAdminListPageState extends State { TranslationLoader.lanKeys!.addAuthorizedAdmin!.tr, onClick: () { Navigator.pushNamed( - context, Routers.authorizedAdminManagePage); + context, Routers.authorizedAdminManagePage, + arguments: { + "lockMainEntity": lockMainEntity, + "keyInfo": keyInfo + }); }, ), SizedBox( @@ -72,8 +88,16 @@ class _AuthorizedAdminListPageState extends State { //请求授权管理员列表 跟电子钥匙列表的接口一样,但必须在参数中加keyRight=1为授权管理员 Future> mockNetworkDataRequest() async { - ElectronicKeyListEntity entity = await ApiRepository.to - .electronicKeyList('0', '63', '0', '28', '1', '1', '20', '0', '1'); + ElectronicKeyListEntity entity = await ApiRepository.to.electronicKeyList( + '0', + keyInfo.keyId.toString(), + '', + keyInfo.lockId.toString(), + '', + '1', + '20', + '0', + '1'); if (entity.errorCode!.codeIsSuccessful) { print("电子钥匙列表成功:${entity.data?.itemList}"); } 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 dc9922c9..8bbd283c 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_page.dart @@ -182,7 +182,7 @@ class _ElectronicKeyListPageState extends State { '1', '20', '0', - keyInfo.keyRight.toString()); + '0'); if (entity.errorCode!.codeIsSuccessful) { print("电子钥匙列表成功:${entity.data?.itemList}"); } 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 7ddc3431..4c53b1c5 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 @@ -201,10 +201,9 @@ class _SendElectronicKeyPageState extends State { Pickers.showDatePicker(context, mode: DateMode.YMDHM, onConfirm: (p) { setState(() { - _effectiveDateTime = DateTime.parse( - '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'); - _selectEffectiveDate = formatDate(_effectiveDateTime, - [yyyy, '-', mm, '-', dd, ' ', HH, ':', nn]); + _selectEffectiveDate = + '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; + _effectiveDateTime = DateTime.parse(_selectEffectiveDate); }); }); }), @@ -216,10 +215,9 @@ class _SendElectronicKeyPageState extends State { Pickers.showDatePicker(context, mode: DateMode.YMDHM, onConfirm: (p) { setState(() { - _failureDateTime = DateTime.parse( - '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'); - _selectFailureDate = formatDate(_failureDateTime, - [yyyy, '-', mm, '-', dd, ' ', HH, ':', nn]); + _selectFailureDate = + '${p.year}-${intToStr(p.month!)}-${intToStr(p.day!)} ${intToStr(p.hour!)}:${intToStr(p.minute!)}'; + _failureDateTime = DateTime.parse(_selectFailureDate); }); }); }), @@ -337,11 +335,9 @@ class _SendElectronicKeyPageState extends State { String lockID = keyInfo.lockId.toString(); String getKeyType = (int.parse(widget.type) + 1).toString(); if (widget.type == '0') { - getFailureDateTime = - DateTime.parse(_selectFailureDate).millisecondsSinceEpoch.toString(); - getEffectiveDateTime = DateTime.parse(_selectEffectiveDate) - .millisecondsSinceEpoch - .toString(); + getFailureDateTime = _failureDateTime.millisecondsSinceEpoch.toString(); + getEffectiveDateTime = + _effectiveDateTime.millisecondsSinceEpoch.toString(); } var entity = await ApiRepository.to.sendElectronicKey( _isCreateUser ? "1" : "0", @@ -352,7 +348,7 @@ class _SendElectronicKeyPageState extends State { '2', _isRemoteUnlock == true ? '1' : '2', keyNameController.text, - keyInfo.keyRight.toString(), + '0', getKeyType, lockID, '', diff --git a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart index 0b3f40bd..f1cd521f 100644 --- a/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart +++ b/star_lock/lib/main/lockDetail/lockDetail/lockDetail_page.dart @@ -210,7 +210,11 @@ class _LockDetailPageState extends State { }), bottomItem('images/main/icon_main_authorizedAdmin.png', TranslationLoader.lanKeys!.authorizedAdmin!.tr, () { - Navigator.pushNamed(context, Routers.authorizedAdminListPage); + Navigator.pushNamed(context, Routers.authorizedAdminListPage, + arguments: { + "lockMainEntity": widget.lockMainEntity, + "keyInfo": widget.keyInfo + }); }), bottomItem('images/main/icon_main_operatingRecord.png', TranslationLoader.lanKeys!.operatingRecord!.tr, () { @@ -218,7 +222,8 @@ class _LockDetailPageState extends State { }), bottomItem('images/main/icon_main_set.png', TranslationLoader.lanKeys!.set!.tr, () { - Navigator.pushNamed(context, Routers.lockSetPage, arguments: widget.keyInfo); + Navigator.pushNamed(context, Routers.lockSetPage, + arguments: widget.keyInfo); }), ], ),