From 43155d2c6723f4005e6ddba13743c1ae5fcc313e Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Thu, 9 May 2024 15:28:51 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E5=AE=9E=E5=90=8D=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E8=AE=B0=E5=BD=95=E6=8E=A5=E5=8F=A3=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5=E5=8F=8A=E5=B8=83=E5=B1=80=E4=BF=AE=E6=94=B9=202?= =?UTF-8?q?=EF=BC=8C=E7=94=B5=E5=AD=90=E9=92=A5=E5=8C=99=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E4=BF=A1=E6=81=AF=E9=83=A8=E5=88=86=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- star_lock/images/lan/lan_zh.json | 2 +- .../electronicKeyDetail_logic.dart | 1 - .../electronicKeyDetail_page.dart | 3 +- .../electronicKeyDetail_state.dart | 2 + .../use_record_list_entity.dart | 127 +++++++++++++++--- .../value_added_services_record_logic.dart | 18 +++ .../value_added_services_record_page.dart | 98 ++++++++++++-- star_lock/lib/network/api_repository.dart | 25 ++-- 8 files changed, 237 insertions(+), 39 deletions(-) diff --git a/star_lock/images/lan/lan_zh.json b/star_lock/images/lan/lan_zh.json index fabe850c..c159b3c3 100644 --- a/star_lock/images/lan/lan_zh.json +++ b/star_lock/images/lan/lan_zh.json @@ -349,7 +349,7 @@ "customMailTemplate":"自定义邮件模版", "record":"记录", - "buyRealNameTip":"给用户发送电子钥匙时,可以要求其开锁前先进行实名认证,以保证是他本人在操作。实名认证调用国家公安系统接口,为付费功能,请购买次数后再使用。", + "buyRealNameTip":"给用户发送电子钥匙时,可以要求其开锁前先进行人脸识别,以保证是他本人在操作。人脸实名认证调用国家公安系统接口,为付费功能,请购买次数后再使用。", "buyRealNameSelectYouWantBuyTip":"请选择你希望的实名认证频数", "forTheFirstTime":"仅首次", "onceDay":"每日一次", diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart index 4de6dffd..7b7ef394 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart @@ -168,7 +168,6 @@ class ElectronicKeyDetailLogic extends BaseGetXController { showToast("修改成功".tr, something: () { eventBus.fire(ElectronicKeyListRefreshUI()); eventBus.fire(AuthorizedAdminPageRefreshUI()); - Get.back(); }); } } 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 9d9b339c..e8e836bc 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 @@ -2,9 +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:get/get_rx/src/rx_typedefs/rx_typedefs.dart'; import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_logic.dart'; -import 'package:star_lock/tools/showCupertinoAlertView.dart'; import '../../../../../appRouters.dart'; import '../../../../../app_settings/app_colors.dart'; @@ -326,6 +324,7 @@ class _ElectronicKeyDetailPageState extends State { if (alertEnum == ShowAlertEnum.name) { logic.modifyKeyNameRequest(); } else { + Get.back(); logic.updateRealNameInfoRequest(alertEnum); } }, diff --git a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_state.dart b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_state.dart index 5b35050e..9337f8bd 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_state.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_state.dart @@ -35,7 +35,9 @@ class ElectronicKeyDetailState { keyName.value = itemData.value.keyName!; if (itemData.value.userIdCard != null) { getRealName.value = itemData.value.userIdCard!.realName ?? ""; + changeRealNameController.text = getRealName.value; getIDCardNumber.value = itemData.value.userIdCard!.idCardNumber ?? ""; + changeIDCardController.text = getIDCardNumber.value; } isRemoteUnlock.value = itemData.value.remoteEnable! == 1 ? true : false; diff --git a/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart b/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart index 7af59153..6acd6ea7 100644 --- a/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart +++ b/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart @@ -1,25 +1,116 @@ class UseRecordListEntity { - UseRecordListEntity({ - this.description, - this.errorCode, - this.errorMsg, - }); - - UseRecordListEntity.fromJson(dynamic json) { - description = json['description']; - errorCode = json['errorCode']; - errorMsg = json['errorMsg']; - } - - String? description; int? errorCode; + String? description; String? errorMsg; + Data? data; + + UseRecordListEntity( + {this.errorCode, this.description, this.errorMsg, this.data}); + + UseRecordListEntity.fromJson(Map json) { + errorCode = json['errorCode']; + description = json['description']; + errorMsg = json['errorMsg']; + data = json['data'] != null ? Data.fromJson(json['data']) : null; + } Map toJson() { - final map = {}; - map['description'] = description; - map['errorCode'] = errorCode; - map['errorMsg'] = errorMsg; - return map; + final Map data = {}; + data['errorCode'] = errorCode; + data['description'] = description; + data['errorMsg'] = errorMsg; + if (this.data != null) { + data['data'] = this.data!.toJson(); + } + return data; + } +} + +class Data { + int? pageNo; + int? pageSize; + int? total; + List? useRecordList; + + Data({this.pageNo, this.pageSize, this.total, this.useRecordList}); + + Data.fromJson(Map json) { + pageNo = json['pageNo']; + pageSize = json['pageSize']; + total = json['total']; + if (json['list'] != null) { + useRecordList = []; + json['list'].forEach((v) { + useRecordList!.add(UseItemData.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = {}; + data['pageNo'] = pageNo; + data['pageSize'] = pageSize; + data['total'] = total; + if (useRecordList != null) { + data['list'] = useRecordList!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class UseItemData { + int? id; + int? userId; + String? type; + String? receiverAccount; + String? realName; + int? authStatus; + int? lockId; + String? lockName; + int? consCount; + String? createdAt; + String? updatedAt; + + UseItemData( + {this.id, + this.userId, + this.type, + this.receiverAccount, + this.realName, + this.authStatus, + this.lockId, + this.lockName, + this.consCount, + this.createdAt, + this.updatedAt}); + + UseItemData.fromJson(Map json) { + id = json['id']; + userId = json['user_id']; + type = json['type']; + receiverAccount = json['receiver_account']; + realName = json['real_name']; + authStatus = json['status']; + lockId = json['lock_id']; + lockName = json['lock_name']; + consCount = json['cons_count']; + createdAt = json['created_at']; + updatedAt = json['updated_at']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['user_id'] = userId; + data['type'] = type; + data['receiver_account'] = receiverAccount; + data['real_name'] = realName; + data['status'] = authStatus; + data['lock_id'] = lockId; + data['lock_name'] = lockName; + data['cons_count'] = consCount; + data['created_at'] = createdAt; + data['updated_at'] = updatedAt; + return data; } } diff --git a/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_logic.dart b/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_logic.dart index d1c9ec53..f7573588 100644 --- a/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_logic.dart +++ b/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_logic.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:get/get.dart'; import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_entity.dart'; +import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart'; import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_state.dart'; import 'package:star_lock/tools/baseGetXController.dart'; import '../../../network/api_repository.dart'; @@ -11,6 +12,7 @@ class ValueAddedServicesRecordLogic extends BaseGetXController { final ValueAddedServicesRecordState state = ValueAddedServicesRecordState(); int buyPageNo = 1; + int usePageNo = 1; late String type; @override @@ -41,10 +43,26 @@ class ValueAddedServicesRecordLogic extends BaseGetXController { } } + //请求使用记录列表 + Future loadUseRecordList(bool load) async { + if (!load) { + usePageNo = 1; + } + UseRecordListEntity entity = await ApiRepository.to.getUseRecordList( + type: type, + pageNo: buyPageNo, + ); + if (entity.errorCode!.codeIsSuccessful) { + state.useRecordList.value = entity.data!.useRecordList!; + state.useRecordList.refresh(); + } + } + @override void onReady() { super.onReady(); loadBuyRecordList(true); + loadUseRecordList(true); } } diff --git a/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart b/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart index b60b9d39..a4cbd4c2 100644 --- a/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart +++ b/star_lock/lib/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_entity.dart'; +import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart'; import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/value_added_services_record_logic.dart'; import 'package:star_lock/tools/noData.dart'; import '../../../app_settings/app_colors.dart'; @@ -45,10 +46,10 @@ class _ValueAddedServicesRealNamePageState Obx(() => Expanded( child: TabBarView(children: [ _PurchaseRecords( - getRecordList: logic.state.buyRecordList.value, + buyRecordList: logic.state.buyRecordList.value, ), - _PurchaseRecords( - getRecordList: logic.state.useRecordList.value, + _UseRecordsTable( + useRecordList: logic.state.useRecordList.value, ), ]), )), @@ -70,11 +71,11 @@ Widget tabTextItem(String tabText) { ); } -//购买记录、使用记录 +//购买记录 class _PurchaseRecords extends StatefulWidget { - final List getRecordList; + final List buyRecordList; - const _PurchaseRecords({required this.getRecordList}); + const _PurchaseRecords({required this.buyRecordList}); @override State<_PurchaseRecords> createState() => _PurchaseRecordsState(); @@ -88,11 +89,11 @@ class _PurchaseRecordsState extends State<_PurchaseRecords> { return EasyRefresh( onRefresh: () async {}, onLoad: () async {}, - child: widget.getRecordList.isNotEmpty + child: widget.buyRecordList.isNotEmpty ? ListView.builder( - itemCount: widget.getRecordList.length, + itemCount: widget.buyRecordList.length, itemBuilder: (BuildContext context, int index) { - return _recordKeyItem(widget.getRecordList[index]); + return _recordKeyItem(widget.buyRecordList[index]); }) : NoData(), ); @@ -143,3 +144,82 @@ class _PurchaseRecordsState extends State<_PurchaseRecords> { ); } } + +//使用记录 +class _UseRecordsTable extends StatefulWidget { + final List useRecordList; + + const _UseRecordsTable({required this.useRecordList}); + + @override + State<_UseRecordsTable> createState() => _UseRecordsTableState(); +} + +class _UseRecordsTableState extends State<_UseRecordsTable> { + @override + Widget build(BuildContext context) { + return EasyRefresh( + onRefresh: () async {}, + onLoad: () async {}, + child: widget.useRecordList.isNotEmpty + ? ListView.builder( + itemCount: widget.useRecordList.length, + itemBuilder: (BuildContext context, int index) { + return _recordKeyItem(widget.useRecordList[index]); + }) + : NoData(), + ); + } + + Widget _recordKeyItem(UseItemData itemData) { + return Container( + color: Colors.white, + margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 10.h), + padding: + EdgeInsets.only(left: 20.w, right: 20.w, top: 16.h, bottom: 16.h), + child: Column( + children: [ + Row( + children: [ + Text( + '${itemData.lockName ?? ""} ${itemData.realName ?? ""}', + style: TextStyle( + fontSize: 24.sp, + color: AppColors.blackColor, + fontWeight: FontWeight.bold), + ), + Expanded(child: Container()), + itemData.authStatus == 0 + ? Container( + padding: EdgeInsets.only( + right: 6.w, left: 6.w, top: 2.h, bottom: 2.h), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(5.w), + color: AppColors.toBeReceiveBgColor, + ), + child: Text('失败', + style: TextStyle(fontSize: 16.sp, color: Colors.red)), + ) + : Container() + ], + ), + SizedBox( + height: 8.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Text( + itemData.createdAt!.length > 10 + ? itemData.createdAt!.substring(0, 10) + : itemData.createdAt!, + textAlign: TextAlign.left, + style: TextStyle( + fontSize: 22.sp, color: AppColors.darkGrayTextColor)) + ], + ), + ], + ), + ); + } +} diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 1edc2755..291e317d 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -1387,8 +1387,19 @@ class ApiRepository { required int startTime, required int endTime, required int faceRight}) async { - final res = await apiProvider.addFaceData(lockId, faceName, faceNumber, - faceType, startDate, endDate, featureData, addType, weekDay, startTime, endTime, faceRight); + final res = await apiProvider.addFaceData( + lockId, + faceName, + faceNumber, + faceType, + startDate, + endDate, + featureData, + addType, + weekDay, + startTime, + endTime, + faceRight); return AddFaceEntity.fromJson(res.body); } @@ -1652,10 +1663,8 @@ class ApiRepository { } //重置密码钥匙 - Future keyboardPwdReset({ - required String lockId, - required List passwordKey - }) async { + Future keyboardPwdReset( + {required String lockId, required List passwordKey}) async { final res = await apiProvider.keyboardPwdReset(lockId, passwordKey); return PasswordKeyListEntity.fromJson(res.body); } @@ -2031,7 +2040,7 @@ class ApiRepository { return FaceAuthenticationEntity.fromJson(res.body); } - // 获取使用记录 + // 获取购买记录 Future getBuyRecordList({ required String type, required int pageNo, @@ -2043,7 +2052,7 @@ class ApiRepository { return AdvancedFunctionRecordEntity.fromJson(res.body); } - // 获取购买记录 + // 获取使用记录 Future getUseRecordList({ required String type, required int pageNo,