1,统一短信、邮件、实名认证、高级功能模块中使用记录和购买记录实体类并根据类型显示数据
2,修复增值服务--邮件 使用记录:少了接收方账号和查询多久的备注问题 3,修复增值服务--短信 少了接收方账号、条数和查询多久的备注。记录进入有时不显示需下拉,下拉有英文提示问题
This commit is contained in:
parent
89c7f57e2b
commit
5e4256a766
@ -127,6 +127,8 @@ PODS:
|
||||
- Flutter
|
||||
- network_info_plus (0.0.1):
|
||||
- Flutter
|
||||
- open_filex (0.0.2):
|
||||
- Flutter
|
||||
- package_info_plus (0.4.5):
|
||||
- Flutter
|
||||
- path_provider_foundation (0.0.1):
|
||||
@ -188,6 +190,7 @@ DEPENDENCIES:
|
||||
- jpush_flutter (from `.symlinks/plugins/jpush_flutter/ios`)
|
||||
- just_audio (from `.symlinks/plugins/just_audio/ios`)
|
||||
- network_info_plus (from `.symlinks/plugins/network_info_plus/ios`)
|
||||
- open_filex (from `.symlinks/plugins/open_filex/ios`)
|
||||
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
|
||||
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
|
||||
@ -280,6 +283,8 @@ EXTERNAL SOURCES:
|
||||
:path: ".symlinks/plugins/just_audio/ios"
|
||||
network_info_plus:
|
||||
:path: ".symlinks/plugins/network_info_plus/ios"
|
||||
open_filex:
|
||||
:path: ".symlinks/plugins/open_filex/ios"
|
||||
package_info_plus:
|
||||
:path: ".symlinks/plugins/package_info_plus/ios"
|
||||
path_provider_foundation:
|
||||
@ -318,7 +323,7 @@ SPEC CHECKSUMS:
|
||||
audioplayers_darwin: 877d9a4d06331c5c374595e46e16453ac7eafa40
|
||||
auto_orientation: 102ed811a5938d52c86520ddd7ecd3a126b5d39d
|
||||
Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31
|
||||
camera_avfoundation: 759172d1a77ae7be0de08fc104cfb79738b8a59e
|
||||
camera_avfoundation: 8b8d780bcfb6a4a02b0fbe2b4bd17b5b71946e68
|
||||
connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
|
||||
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
|
||||
DKImagePickerController: 0a24ebfe7b48beeb74c27531540aaa2cc1dac6cf
|
||||
@ -332,33 +337,34 @@ SPEC CHECKSUMS:
|
||||
flutter_native_contact_picker: bd430ba0fbf82768bb50c2c52a69a65759a8f907
|
||||
flutter_pcm_sound: de0572ca4f99091cc2abfcc31601b8a4ddd33c0e
|
||||
flutter_voice_processor: 2b89b93d69b02227ae3fd58589ee0bcfa3ca2a82
|
||||
fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db
|
||||
fluttertoast: 77ff8760d90ff5041a97e3d0c0ecaaa8472524d2
|
||||
fluwx: c18fd6c16b03a2187cd07d6e48e32a7801962849
|
||||
google_maps_flutter_ios: f135b968a67c05679e0a53538e900b5c174b0d99
|
||||
GoogleMaps: 20d7b12be49a14287f797e88e0e31bc4156aaeb4
|
||||
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
|
||||
image_picker_ios: b545a5f16c0fa88e3ecbbce3ed4de45567a8ec18
|
||||
image_picker_ios: 99dfe1854b4fa34d0364e74a78448a0151025425
|
||||
ios-voice-processor: 8e32d7f980a06d392d128ef1cd19cf6ddcaca3c1
|
||||
JCore: 05f0f3489672ea3fa55338bae4866224bc092b1f
|
||||
JPush: 76668b765fcfd7c15f86b05ca0e5cdc01945ce23
|
||||
jpush_flutter: 1f436f1a02db5c5ef9e9b42378f557096ccd328b
|
||||
just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
|
||||
network_info_plus: 6d0c3eb8367b8164fa3fb0c19875e3f59d49697f
|
||||
open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4
|
||||
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
|
||||
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
||||
ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149
|
||||
SDWebImage: 40b0b4053e36c660a764958bff99eed16610acbb
|
||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
|
||||
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
||||
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
|
||||
system_settings: 8f5cdbfa72c677fc8d665b863bcc20d393d87e9d
|
||||
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
|
||||
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
||||
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
|
||||
webview_flutter_wkwebview: be0f0d33777f1bfd0c9fdcb594786704dbf65f36
|
||||
url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812
|
||||
video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579
|
||||
webview_flutter_wkwebview: 4f3e50f7273d31e5500066ed267e3ae4309c5ae4
|
||||
WechatOpenSDK-XCFramework: 36fb2bea0754266c17184adf4963d7e6ff98b69f
|
||||
|
||||
PODFILE CHECKSUM: 317f9473a5705c6fe4d79d95e81676f248048fdc
|
||||
|
||||
COCOAPODS: 1.14.3
|
||||
COCOAPODS: 1.12.1
|
||||
|
||||
@ -186,7 +186,6 @@ import 'mine/mineSet/lockUserManage/lockUserManageList/lockUserManageList_page.d
|
||||
import 'mine/mineSet/lockUserManage/ownedKeyList/ownedKeyList_page.dart';
|
||||
import 'mine/supportStaff/supportStaff_page.dart';
|
||||
import 'mine/valueAddedServices/valueAddedServicesBuy/valueAddedServicesBuy_page.dart';
|
||||
import 'mine/valueAddedServices/valueAddedServicesBuyAndUseRecord/valueAddedServicesBuyAndUseRecordManage/valueAddedServicesBuyAndUseRecordManage_page.dart';
|
||||
import 'mine/valueAddedServices/valueAddedServicesEmailTemplate/valueAddedServicesAddEmailTemplate/valueAddedServicesAddEmailTemplate_page.dart';
|
||||
import 'mine/valueAddedServices/valueAddedServicesEmailTemplate/valueAddedServicesListEmailTemplate/valueAddedServicesListEmailTemplate_page.dart';
|
||||
import 'mine/valueAddedServices/valueAddedServicesHighFunction/valueAddedServicesHighFunction_page.dart';
|
||||
@ -895,10 +894,6 @@ abstract class AppRouters {
|
||||
name: Routers.valueAddedServicesAddEmailTemplatePage,
|
||||
page: () => const ValueAddedServicesAddEmailTemplatePage(),
|
||||
),
|
||||
GetPage<dynamic>(
|
||||
name: Routers.valueAddedServicesBuyAndUseRecordManagePage,
|
||||
page: () => const ValueAddedServicesBuyAndUseRecordManagePage(),
|
||||
),
|
||||
GetPage<dynamic>(
|
||||
name: Routers.lockScreenPage,
|
||||
page: () => const LockScreenPage(),
|
||||
|
||||
@ -5,11 +5,10 @@ import 'package:flutter_blue_plus/flutter_blue_plus.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/appRouters.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||
import 'package:star_lock/login/login/entity/LoginEntity.dart';
|
||||
import 'package:star_lock/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_entity.dart';
|
||||
import 'package:star_lock/main/lockDetail/authorizedAdmin/authorizedAdmin/notice_template_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesHighFunction/valueAddedServicesHighFunction_entity.dart';
|
||||
import 'package:star_lock/tools/NativeInteractionTool.dart';
|
||||
import 'package:star_lock/tools/dateTool.dart';
|
||||
import 'package:star_lock/tools/showCupertinoAlertView.dart';
|
||||
@ -244,7 +243,7 @@ class AuthorizedAdminLogic extends BaseGetXController {
|
||||
|
||||
//检测实名认证是否支持开启
|
||||
Future<void> keyCheckFace() async {
|
||||
final AdvancedFunctionRecordEntity entity =
|
||||
final ValueAddedServicesHighFunctionEntity entity =
|
||||
await ApiRepository.to.keyCheckFace(
|
||||
lockId: CommonDataManage().currentKeyInfo.lockId ?? 0,
|
||||
);
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/appRouters.dart';
|
||||
@ -6,7 +5,7 @@ import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_page.dart';
|
||||
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyDetail/electronicKeyDetail/electronicKeyDetail_state.dart';
|
||||
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesHighFunction/valueAddedServicesHighFunction_entity.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import 'package:star_lock/tools/showCupertinoAlertView.dart';
|
||||
@ -148,7 +147,7 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
|
||||
Future<void> checkRealNameStatus(int realNameAuthStatus) async {
|
||||
//打开实名认证 必须输入身份证号和真实姓名
|
||||
if (realNameAuthStatus == 1) {
|
||||
final AdvancedFunctionRecordEntity entity =
|
||||
final ValueAddedServicesHighFunctionEntity entity =
|
||||
await ApiRepository.to.keyCheckFace(
|
||||
lockId: CommonDataManage().currentKeyInfo.lockId ?? 0,
|
||||
);
|
||||
@ -397,7 +396,7 @@ class ElectronicKeyDetailLogic extends BaseGetXController {
|
||||
|
||||
//检测实名认证是否支持开启
|
||||
Future<void> keyCheckFace() async {
|
||||
final AdvancedFunctionRecordEntity entity =
|
||||
final ValueAddedServicesHighFunctionEntity entity =
|
||||
await ApiRepository.to.keyCheckFace(
|
||||
lockId: CommonDataManage().currentKeyInfo.lockId ?? 0,
|
||||
);
|
||||
|
||||
@ -5,7 +5,7 @@ import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
|
||||
import 'package:star_lock/main/lockDetail/authorizedAdmin/authorizedAdmin/authorizedAdmin_entity.dart';
|
||||
import 'package:star_lock/main/lockDetail/authorizedAdmin/authorizedAdmin/notice_template_entity.dart';
|
||||
import 'package:star_lock/main/lockDetail/electronicKey/sendElectronicKey/sendElectronicKey/view/sendElectronicKeyView_state.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesHighFunction/valueAddedServicesHighFunction_entity.dart';
|
||||
import 'package:star_lock/network/api_repository.dart';
|
||||
import 'package:star_lock/tools/NativeInteractionTool.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
@ -205,7 +205,7 @@ class SendElectronicKeyViewLogic extends BaseGetXController {
|
||||
|
||||
//检测实名认证是否支持开启
|
||||
Future<void> keyCheckFace() async {
|
||||
final AdvancedFunctionRecordEntity entity =
|
||||
final ValueAddedServicesHighFunctionEntity entity =
|
||||
await ApiRepository.to.keyCheckFace(
|
||||
lockId: CommonDataManage().currentKeyInfo.lockId ?? 0,
|
||||
);
|
||||
|
||||
@ -1,132 +0,0 @@
|
||||
class AdvancedFunctionRecordEntity {
|
||||
int? errorCode;
|
||||
String? description;
|
||||
String? errorMsg;
|
||||
Data? data;
|
||||
|
||||
AdvancedFunctionRecordEntity(
|
||||
{this.errorCode, this.description, this.errorMsg, this.data});
|
||||
|
||||
AdvancedFunctionRecordEntity.fromJson(Map<String, dynamic> json) {
|
||||
errorCode = json['errorCode'];
|
||||
description = json['description'];
|
||||
errorMsg = json['errorMsg'];
|
||||
data = json['data'] != null ? Data.fromJson(json['data']) : null;
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['errorCode'] = errorCode;
|
||||
data['description'] = description;
|
||||
data['errorMsg'] = errorMsg;
|
||||
if (this.data != null) {
|
||||
data['data'] = this.data!.toJson();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class Data {
|
||||
int? pageNo;
|
||||
int? pageSize;
|
||||
int? total;
|
||||
List<RecordItem>? recordList;
|
||||
|
||||
Data({this.pageNo, this.pageSize, this.total, this.recordList});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
pageNo = json['pageNo'];
|
||||
pageSize = json['pageSize'];
|
||||
total = json['total'];
|
||||
if (json['list'] != null) {
|
||||
recordList = <RecordItem>[];
|
||||
json['list'].forEach((v) {
|
||||
recordList!.add(RecordItem.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['pageNo'] = pageNo;
|
||||
data['pageSize'] = pageSize;
|
||||
data['total'] = total;
|
||||
if (recordList != null) {
|
||||
data['list'] = recordList!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
class RecordItem {
|
||||
int? id;
|
||||
int? userId;
|
||||
String? orderNumber;
|
||||
String? type;
|
||||
int? recordType;
|
||||
int? smsCount;
|
||||
int? emailCount;
|
||||
int? cloudauthCount;
|
||||
int? vipLockCount;
|
||||
int? vipYear;
|
||||
String? amount;
|
||||
String? createdAt;
|
||||
String? updatedAt;
|
||||
String? useDate;
|
||||
String? buyDate;
|
||||
|
||||
RecordItem(
|
||||
{this.id,
|
||||
this.userId,
|
||||
this.orderNumber,
|
||||
this.type,
|
||||
this.recordType,
|
||||
this.smsCount,
|
||||
this.emailCount,
|
||||
this.cloudauthCount,
|
||||
this.vipLockCount,
|
||||
this.vipYear,
|
||||
this.amount,
|
||||
this.createdAt,
|
||||
this.updatedAt,
|
||||
this.useDate,
|
||||
this.buyDate});
|
||||
|
||||
RecordItem.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
userId = json['user_id'];
|
||||
orderNumber = json['order_number'];
|
||||
type = json['type'];
|
||||
recordType = json['record_type'];
|
||||
smsCount = json['sms_count'];
|
||||
emailCount = json['email_count'];
|
||||
cloudauthCount = json['cloudauth_count'];
|
||||
vipLockCount = json['vip_lock_count'];
|
||||
vipYear = json['vip_year'];
|
||||
amount = json['amount'];
|
||||
createdAt = json['created_at'];
|
||||
updatedAt = json['updated_at'];
|
||||
useDate = json['useDate'];
|
||||
buyDate = json['buyDate'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = <String, dynamic>{};
|
||||
data['id'] = id;
|
||||
data['user_id'] = userId;
|
||||
data['order_number'] = orderNumber;
|
||||
data['type'] = type;
|
||||
data['record_type'] = recordType;
|
||||
data['sms_count'] = smsCount;
|
||||
data['email_count'] = emailCount;
|
||||
data['cloudauth_count'] = cloudauthCount;
|
||||
data['vip_lock_count'] = vipLockCount;
|
||||
data['vip_year'] = vipYear;
|
||||
data['amount'] = amount;
|
||||
data['created_at'] = createdAt;
|
||||
data['updated_at'] = updatedAt;
|
||||
data['useDate'] = useDate;
|
||||
data['buyDate'] = buyDate;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -1,8 +1,8 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_state.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart';
|
||||
|
||||
import '../../../../network/api_repository.dart';
|
||||
import '../../../../tools/baseGetXController.dart';
|
||||
@ -28,8 +28,7 @@ class AdvancedFunctionRecordLogic extends BaseGetXController {
|
||||
if (!load) {
|
||||
buyPageNo = 1;
|
||||
}
|
||||
AdvancedFunctionRecordEntity entity =
|
||||
await ApiRepository.to.getBuyRecordList(
|
||||
UseRecordListEntity entity = await ApiRepository.to.getBuyRecordList(
|
||||
type: type,
|
||||
recordType: 10,
|
||||
pageNo: buyPageNo,
|
||||
|
||||
@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/app_settings/app_colors.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_logic.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart';
|
||||
import 'package:star_lock/tools/noData.dart';
|
||||
|
||||
import '../../../tools/titleAppBar.dart';
|
||||
@ -44,7 +44,7 @@ class _AdvancedFunctionRecordPageState
|
||||
));
|
||||
}
|
||||
|
||||
Widget _recordKeyItem(RecordItem itemData) {
|
||||
Widget _recordKeyItem(UseItemData itemData) {
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
margin: EdgeInsets.only(left: 20.w, right: 20.w, top: 10.h),
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
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';
|
||||
|
||||
class AdvancedFunctionRecordState {
|
||||
var buyRecordList = <RecordItem>[].obs;
|
||||
var buyRecordList = <UseItemData>[].obs;
|
||||
}
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../../../../app_settings/app_colors.dart';
|
||||
import '../../../../tools/titleAppBar.dart';
|
||||
import '../../../../translations/trans_lib.dart';
|
||||
import 'valueAddedServicesBuyAndUseRecordManage_tabbar.dart';
|
||||
|
||||
class ValueAddedServicesBuyAndUseRecordManagePage extends StatefulWidget {
|
||||
const ValueAddedServicesBuyAndUseRecordManagePage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<ValueAddedServicesBuyAndUseRecordManagePage> createState() => _ValueAddedServicesBuyAndUseRecordManagePageState();
|
||||
}
|
||||
|
||||
class _ValueAddedServicesBuyAndUseRecordManagePageState extends State<ValueAddedServicesBuyAndUseRecordManagePage> {
|
||||
var index=0;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: Colors.white,
|
||||
appBar: TitleAppBar(barTitle: TranslationLoader.lanKeys!.sendKey!.tr, haveBack:true, backgroundColor: AppColors.mainColor),
|
||||
body: Column(
|
||||
children: [
|
||||
ValueAddedServicesBuyAndUseRecordManageTabbar(initialIndex: index,),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,111 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
|
||||
import '../../../../app_settings/app_colors.dart';
|
||||
import '../../../../tools/CustomUnderlineTabIndicator.dart';
|
||||
import '../valueAddedServicesBuyAndUseRecord_page.dart';
|
||||
|
||||
class ValueAddedServicesBuyAndUseRecordManageTabbar extends StatefulWidget {
|
||||
var initialIndex = 1;
|
||||
|
||||
ValueAddedServicesBuyAndUseRecordManageTabbar(
|
||||
{Key? key, required this.initialIndex})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
State<ValueAddedServicesBuyAndUseRecordManageTabbar> createState() =>
|
||||
_ValueAddedServicesBuyAndUseRecordManageTabbarState();
|
||||
}
|
||||
|
||||
class _ValueAddedServicesBuyAndUseRecordManageTabbarState
|
||||
extends State<ValueAddedServicesBuyAndUseRecordManageTabbar>
|
||||
with SingleTickerProviderStateMixin {
|
||||
late TabController _tabController;
|
||||
|
||||
final List<ItemView> _itemTabs = <ItemView>[
|
||||
ItemView(title: "购买记录", type: "0"),
|
||||
ItemView(title: "使用记录", type: "1")
|
||||
// ItemView(title: TranslationLoader.lanKeys!.once!.tr, type: "2"),
|
||||
// ItemView(title: TranslationLoader.lanKeys!.circulation!.tr, type: "3"),
|
||||
];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
// TODO: implement initState
|
||||
super.initState();
|
||||
_tabController = TabController(
|
||||
vsync: this,
|
||||
length: _itemTabs.length,
|
||||
initialIndex: widget.initialIndex);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Expanded(
|
||||
child: Column(
|
||||
children: [
|
||||
_tabBar(),
|
||||
_pageWidget(),
|
||||
],
|
||||
));
|
||||
}
|
||||
|
||||
TabBar _tabBar() {
|
||||
return TabBar(
|
||||
controller: _tabController,
|
||||
tabs: _itemTabs.map((ItemView item) => _tab(item)).toList(),
|
||||
isScrollable: true,
|
||||
indicatorColor: Colors.red,
|
||||
unselectedLabelColor: Colors.black,
|
||||
unselectedLabelStyle: TextStyle(
|
||||
color: AppColors.mainColor,
|
||||
fontSize: 24.sp,
|
||||
),
|
||||
automaticIndicatorColorAdjustment: true,
|
||||
labelColor: AppColors.mainColor,
|
||||
labelStyle: TextStyle(
|
||||
color: AppColors.mainColor,
|
||||
fontSize: 24.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
indicator: CustomUnderlineTabIndicator(
|
||||
borderSide: BorderSide(color: AppColors.mainColor, width: 4.w),
|
||||
strokeCap: StrokeCap.round,
|
||||
width: 30.w),
|
||||
);
|
||||
}
|
||||
|
||||
Tab _tab(ItemView item) {
|
||||
return Tab(
|
||||
// text: item.title,
|
||||
child: Container(
|
||||
width: 1.sw / 4,
|
||||
margin: EdgeInsets.all(10.w),
|
||||
// color: Colors.red,
|
||||
child: Text(
|
||||
item.title,
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _pageWidget() {
|
||||
return Expanded(
|
||||
child: TabBarView(
|
||||
controller: _tabController,
|
||||
children: _itemTabs
|
||||
.map((ItemView item) => ValueAddedServicesBuyAndUseRecordPage(
|
||||
type: item.type,
|
||||
))
|
||||
.toList(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class ItemView {
|
||||
const ItemView({required this.title, required this.type});
|
||||
|
||||
final String title;
|
||||
final String type;
|
||||
}
|
||||
@ -1,111 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:star_lock/app_settings/app_colors.dart';
|
||||
|
||||
class ValueAddedServicesBuyAndUseRecordPage extends StatefulWidget {
|
||||
final String type;
|
||||
|
||||
const ValueAddedServicesBuyAndUseRecordPage({Key? key, required this.type})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
State<ValueAddedServicesBuyAndUseRecordPage> createState() =>
|
||||
_ValueAddedServicesBuyAndUseRecordPageState();
|
||||
}
|
||||
|
||||
class _ValueAddedServicesBuyAndUseRecordPageState
|
||||
extends State<ValueAddedServicesBuyAndUseRecordPage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ListView.builder(
|
||||
itemCount: 20,
|
||||
itemBuilder: (c, index) {
|
||||
if (index % 2 == 0) {
|
||||
return _dateItem("2023-06-29");
|
||||
} else {
|
||||
return _operatingRecordItem('images/controls_user.png', "张三",
|
||||
"2023.6.21 11.15", "2023.6.21 11.15", () {
|
||||
// Navigator.pushNamed(context, Routers.electronicKeyDetailPage);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Widget _dateItem(String lockDate) {
|
||||
return Container(
|
||||
height: 60.h,
|
||||
color: AppColors.mainBackgroundColor,
|
||||
padding: EdgeInsets.only(left: 20.h, right: 20.h),
|
||||
child: Row(
|
||||
children: [
|
||||
Text(
|
||||
lockDate,
|
||||
style: TextStyle(fontSize: 24.sp, color: AppColors.blackColor),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _operatingRecordItem(String lockTypeIcon, String lockTypeTitle,
|
||||
String beginTime, String endTime, 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: [
|
||||
SizedBox(
|
||||
width: 30.w,
|
||||
),
|
||||
Image.asset(
|
||||
lockTypeIcon,
|
||||
width: 50.w,
|
||||
height: 50.w,
|
||||
),
|
||||
SizedBox(
|
||||
width: 20.w,
|
||||
),
|
||||
Expanded(
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
Text(
|
||||
lockTypeTitle,
|
||||
style: TextStyle(
|
||||
fontSize: 24.sp, color: AppColors.blackColor),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 10.h),
|
||||
Container(
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
"2023.6.21 11.15",
|
||||
style: TextStyle(
|
||||
fontSize: 20.sp,
|
||||
color: AppColors.darkGrayTextColor),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(width: 20.h),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(width: 20.h),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -30,18 +30,18 @@ class Data {
|
||||
int? pageNo;
|
||||
int? pageSize;
|
||||
int? total;
|
||||
List<UseItemData>? useRecordList;
|
||||
List<UseItemData>? recordList;
|
||||
|
||||
Data({this.pageNo, this.pageSize, this.total, this.useRecordList});
|
||||
Data({this.pageNo, this.pageSize, this.total, this.recordList});
|
||||
|
||||
Data.fromJson(Map<String, dynamic> json) {
|
||||
pageNo = json['pageNo'];
|
||||
pageSize = json['pageSize'];
|
||||
total = json['total'];
|
||||
if (json['list'] != null) {
|
||||
useRecordList = <UseItemData>[];
|
||||
recordList = <UseItemData>[];
|
||||
json['list'].forEach((v) {
|
||||
useRecordList!.add(UseItemData.fromJson(v));
|
||||
recordList!.add(UseItemData.fromJson(v));
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -51,8 +51,8 @@ class Data {
|
||||
data['pageNo'] = pageNo;
|
||||
data['pageSize'] = pageSize;
|
||||
data['total'] = total;
|
||||
if (useRecordList != null) {
|
||||
data['list'] = useRecordList!.map((v) => v.toJson()).toList();
|
||||
if (recordList != null) {
|
||||
data['list'] = recordList!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
@ -71,6 +71,15 @@ class UseItemData {
|
||||
String? createdAt;
|
||||
String? updatedAt;
|
||||
String? useDate;
|
||||
String? orderNumber;
|
||||
int? recordType;
|
||||
int? smsCount;
|
||||
int? emailCount;
|
||||
int? cloudauthCount;
|
||||
int? vipLockCount;
|
||||
int? vipYear;
|
||||
String? amount;
|
||||
String? buyDate;
|
||||
|
||||
UseItemData(
|
||||
{this.id,
|
||||
@ -83,7 +92,17 @@ class UseItemData {
|
||||
this.lockName,
|
||||
this.consCount,
|
||||
this.createdAt,
|
||||
this.updatedAt});
|
||||
this.updatedAt,
|
||||
this.useDate,
|
||||
this.orderNumber,
|
||||
this.recordType,
|
||||
this.smsCount,
|
||||
this.emailCount,
|
||||
this.cloudauthCount,
|
||||
this.vipLockCount,
|
||||
this.vipYear,
|
||||
this.amount,
|
||||
this.buyDate});
|
||||
|
||||
UseItemData.fromJson(Map<String, dynamic> json) {
|
||||
id = json['id'];
|
||||
@ -98,6 +117,15 @@ class UseItemData {
|
||||
createdAt = json['created_at'];
|
||||
updatedAt = json['updated_at'];
|
||||
useDate = json['useDate'];
|
||||
orderNumber = json['order_number'];
|
||||
recordType = json['record_type'];
|
||||
smsCount = json['sms_count'];
|
||||
emailCount = json['email_count'];
|
||||
cloudauthCount = json['cloudauth_count'];
|
||||
vipLockCount = json['vip_lock_count'];
|
||||
vipYear = json['vip_year'];
|
||||
amount = json['amount'];
|
||||
buyDate = json['buyDate'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
@ -114,6 +142,15 @@ class UseItemData {
|
||||
data['created_at'] = createdAt;
|
||||
data['updated_at'] = updatedAt;
|
||||
data['useDate'] = useDate;
|
||||
data['order_number'] = orderNumber;
|
||||
data['record_type'] = recordType;
|
||||
data['sms_count'] = smsCount;
|
||||
data['email_count'] = emailCount;
|
||||
data['cloudauth_count'] = cloudauthCount;
|
||||
data['vip_lock_count'] = vipLockCount;
|
||||
data['vip_year'] = vipYear;
|
||||
data['amount'] = amount;
|
||||
data['buyDate'] = buyDate;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,12 +1,9 @@
|
||||
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_arg.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/network/api_repository.dart';
|
||||
import 'package:star_lock/tools/baseGetXController.dart';
|
||||
import '../../../network/api_repository.dart';
|
||||
|
||||
class ValueAddedServicesRecordLogic extends BaseGetXController {
|
||||
ValueAddedServicesRecordLogic();
|
||||
@ -25,6 +22,7 @@ class ValueAddedServicesRecordLogic extends BaseGetXController {
|
||||
return;
|
||||
}
|
||||
type = data['type'];
|
||||
loadBuyRecordList(false);
|
||||
}
|
||||
|
||||
//请求购买记录列表
|
||||
@ -32,16 +30,21 @@ class ValueAddedServicesRecordLogic extends BaseGetXController {
|
||||
if (!load) {
|
||||
buyPageNo = 1;
|
||||
}
|
||||
final AdvancedFunctionRecordEntity entity =
|
||||
await ApiRepository.to.getBuyRecordList(
|
||||
final UseRecordListEntity entity = await ApiRepository.to.getBuyRecordList(
|
||||
type: type,
|
||||
recordType: 10,
|
||||
pageNo: buyPageNo,
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
state.buyRecordList.value = entity.data!.recordList!;
|
||||
if (load) {
|
||||
state.buyRecordList.addAll(entity.data!.recordList!);
|
||||
} else {
|
||||
state.buyRecordList.value = entity.data!.recordList!;
|
||||
}
|
||||
state.buyRecordList.refresh();
|
||||
}
|
||||
|
||||
loadUseRecordList(false);
|
||||
}
|
||||
|
||||
//请求使用记录列表
|
||||
@ -54,27 +57,34 @@ class ValueAddedServicesRecordLogic extends BaseGetXController {
|
||||
pageNo: buyPageNo,
|
||||
);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
state.useRecordList.value = entity.data!.useRecordList!;
|
||||
if (load) {
|
||||
state.useRecordList.addAll(entity.data!.recordList!);
|
||||
} else {
|
||||
state.useRecordList.value = entity.data!.recordList!;
|
||||
}
|
||||
state.useRecordList.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
String getBuyRecordListTitle(RecordItem itemData) {
|
||||
void getBuyAndUserInfoStr(UseItemData itemData) {
|
||||
if (itemData.type == UseRecordListArg.sms['type']) {
|
||||
return '${itemData.smsCount}条';
|
||||
state.buyCountStr.value = '${itemData.smsCount}条';
|
||||
state.useCountStr.value =
|
||||
'${itemData.receiverAccount ?? ""} ${itemData.consCount}条';
|
||||
state.buyAmountStr.value = '¥${itemData.amount}';
|
||||
} else if (itemData.type == UseRecordListArg.email['type']) {
|
||||
return '${itemData.emailCount}封';
|
||||
state.buyCountStr.value = '${itemData.emailCount}封';
|
||||
state.useCountStr.value =
|
||||
'${itemData.receiverAccount ?? ""} ${itemData.consCount}封';
|
||||
state.buyAmountStr.value = '¥${itemData.amount}';
|
||||
} else if (itemData.type == UseRecordListArg.cloudauth['type']) {
|
||||
return '实名认证/${itemData.cloudauthCount}次';
|
||||
state.buyCountStr.value = '实名认证/${itemData.cloudauthCount}次';
|
||||
state.useCountStr.value =
|
||||
'${itemData.lockName ?? ""} ${itemData.realName ?? ""}';
|
||||
state.buyAmountStr.value = '¥${itemData.amount}';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
@override
|
||||
void onReady() {
|
||||
super.onReady();
|
||||
|
||||
loadBuyRecordList(false);
|
||||
loadUseRecordList(false);
|
||||
state.buyCountStr.refresh();
|
||||
state.useCountStr.refresh();
|
||||
state.buyAmountStr.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@ import 'package:easy_refresh/easy_refresh.dart';
|
||||
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';
|
||||
@ -19,85 +18,84 @@ class ValueAddedServicesRecordPage extends StatefulWidget {
|
||||
|
||||
class _ValueAddedServicesRecordPageState
|
||||
extends State<ValueAddedServicesRecordPage> {
|
||||
final ValueAddedServicesRecordLogic logic =
|
||||
Get.put(ValueAddedServicesRecordLogic());
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GetBuilder<ValueAddedServicesRecordLogic>(
|
||||
init: ValueAddedServicesRecordLogic(),
|
||||
builder: (ValueAddedServicesRecordLogic logic) {
|
||||
return Scaffold(
|
||||
backgroundColor: AppColors.mainBackgroundColor,
|
||||
appBar: TitleAppBar(
|
||||
barTitle: '记录'.tr,
|
||||
haveBack: true,
|
||||
backgroundColor: AppColors.mainColor),
|
||||
body: DefaultTabController(
|
||||
length: 2,
|
||||
child: Column(
|
||||
children: [
|
||||
TabBar(
|
||||
tabs: [tabTextItem('购买记录'.tr), tabTextItem('使用记录'.tr)],
|
||||
indicatorColor: AppColors.mainColor,
|
||||
indicatorSize: TabBarIndicatorSize.label,
|
||||
labelColor: AppColors.mainColor,
|
||||
unselectedLabelColor: AppColors.darkGrayTextColor,
|
||||
),
|
||||
Expanded(
|
||||
child: Obx(() => TabBarView(children: [
|
||||
_PurchaseRecords(
|
||||
buyRecordList: logic.state.buyRecordList.value,
|
||||
),
|
||||
_UseRecordsTable(
|
||||
useRecordList: logic.state.useRecordList.value,
|
||||
),
|
||||
])),
|
||||
),
|
||||
],
|
||||
),
|
||||
return Scaffold(
|
||||
backgroundColor: AppColors.mainBackgroundColor,
|
||||
appBar: TitleAppBar(
|
||||
barTitle: '记录'.tr,
|
||||
haveBack: true,
|
||||
backgroundColor: AppColors.mainColor,
|
||||
),
|
||||
body: DefaultTabController(
|
||||
length: 2,
|
||||
child: Column(
|
||||
children: [
|
||||
TabBar(
|
||||
tabs: [tabTextItem('购买记录'.tr), tabTextItem('使用记录'.tr)],
|
||||
indicatorColor: AppColors.mainColor,
|
||||
indicatorSize: TabBarIndicatorSize.label,
|
||||
labelColor: AppColors.mainColor,
|
||||
unselectedLabelColor: AppColors.darkGrayTextColor,
|
||||
),
|
||||
);
|
||||
});
|
||||
Expanded(
|
||||
child: TabBarView(
|
||||
children: [
|
||||
_PurchaseRecords(
|
||||
buyRecordList: logic.state.buyRecordList, logic: logic),
|
||||
_UseRecordsTable(
|
||||
useRecordList: logic.state.useRecordList, logic: logic),
|
||||
],
|
||||
)),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Widget tabTextItem(String tabText) {
|
||||
return Container(
|
||||
margin: EdgeInsets.symmetric(vertical: 16.h),
|
||||
child: Text(
|
||||
tabText,
|
||||
style: TextStyle(fontSize: 24.sp),
|
||||
),
|
||||
);
|
||||
Widget tabTextItem(String tabText) {
|
||||
return Container(
|
||||
margin: EdgeInsets.symmetric(vertical: 16.h),
|
||||
child: Text(
|
||||
tabText,
|
||||
style: TextStyle(fontSize: 24.sp),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 购买记录
|
||||
class _PurchaseRecords extends StatelessWidget {
|
||||
const _PurchaseRecords({required this.buyRecordList});
|
||||
final List buyRecordList;
|
||||
const _PurchaseRecords({required this.buyRecordList, required this.logic});
|
||||
final List<UseItemData> buyRecordList;
|
||||
final ValueAddedServicesRecordLogic logic;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GetBuilder<ValueAddedServicesRecordLogic>(
|
||||
builder: (ValueAddedServicesRecordLogic logic) {
|
||||
return EasyRefresh(
|
||||
return EasyRefresh(
|
||||
onRefresh: () async {
|
||||
logic.loadBuyRecordList(false);
|
||||
},
|
||||
onLoad: () async {
|
||||
logic.loadBuyRecordList(true);
|
||||
},
|
||||
child: buyRecordList.isNotEmpty
|
||||
? ListView.builder(
|
||||
itemCount: buyRecordList.length,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
return _recordKeyItem(buyRecordList[index], logic);
|
||||
})
|
||||
: NoData(),
|
||||
);
|
||||
});
|
||||
child: Obx(
|
||||
() => buyRecordList.isNotEmpty
|
||||
? ListView.builder(
|
||||
itemCount: buyRecordList.length,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
logic.getBuyAndUserInfoStr(buyRecordList[index]);
|
||||
return _recordKeyItem(buyRecordList[index], logic);
|
||||
})
|
||||
: NoData(),
|
||||
));
|
||||
}
|
||||
|
||||
Widget _recordKeyItem(
|
||||
RecordItem itemData, ValueAddedServicesRecordLogic logic) {
|
||||
UseItemData itemData, ValueAddedServicesRecordLogic logic) {
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
margin: EdgeInsets.symmetric(horizontal: 20.w, vertical: 10.h),
|
||||
@ -115,7 +113,7 @@ class _PurchaseRecords extends StatelessWidget {
|
||||
fontWeight: FontWeight.bold),
|
||||
),
|
||||
Expanded(child: Container()),
|
||||
Text('¥${itemData.amount}',
|
||||
Text(logic.state.buyAmountStr.value,
|
||||
style: TextStyle(
|
||||
fontSize: 24.sp,
|
||||
color: AppColors.blackColor,
|
||||
@ -123,7 +121,7 @@ class _PurchaseRecords extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
SizedBox(height: 8.h),
|
||||
Text(logic.getBuyRecordListTitle(itemData),
|
||||
Text(logic.state.buyCountStr.value,
|
||||
style: TextStyle(
|
||||
fontSize: 22.sp, color: AppColors.darkGrayTextColor)),
|
||||
],
|
||||
@ -134,32 +132,33 @@ class _PurchaseRecords extends StatelessWidget {
|
||||
|
||||
// 使用记录
|
||||
class _UseRecordsTable extends StatelessWidget {
|
||||
const _UseRecordsTable({required this.useRecordList});
|
||||
final List useRecordList;
|
||||
const _UseRecordsTable({required this.useRecordList, required this.logic});
|
||||
final List<UseItemData> useRecordList;
|
||||
final ValueAddedServicesRecordLogic logic;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GetBuilder<ValueAddedServicesRecordLogic>(
|
||||
builder: (ValueAddedServicesRecordLogic logic) {
|
||||
return EasyRefresh(
|
||||
return EasyRefresh(
|
||||
onRefresh: () async {
|
||||
logic.loadUseRecordList(false);
|
||||
},
|
||||
onLoad: () async {
|
||||
logic.loadUseRecordList(true);
|
||||
},
|
||||
child: useRecordList.isNotEmpty
|
||||
? ListView.builder(
|
||||
itemCount: useRecordList.length,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
return _recordKeyItem(useRecordList[index]);
|
||||
})
|
||||
: NoData(),
|
||||
);
|
||||
});
|
||||
child: Obx(
|
||||
() => useRecordList.isNotEmpty
|
||||
? ListView.builder(
|
||||
itemCount: useRecordList.length,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
logic.getBuyAndUserInfoStr(useRecordList[index]);
|
||||
return _recordKeyItem(useRecordList[index], logic);
|
||||
})
|
||||
: NoData(),
|
||||
));
|
||||
}
|
||||
|
||||
Widget _recordKeyItem(UseItemData itemData) {
|
||||
Widget _recordKeyItem(
|
||||
UseItemData itemData, ValueAddedServicesRecordLogic logic) {
|
||||
return Container(
|
||||
color: Colors.white,
|
||||
margin: EdgeInsets.symmetric(horizontal: 20.w, vertical: 10.h),
|
||||
@ -170,7 +169,7 @@ class _UseRecordsTable extends StatelessWidget {
|
||||
Row(
|
||||
children: <Widget>[
|
||||
Text(
|
||||
'${itemData.lockName ?? ""} ${itemData.realName ?? ""}',
|
||||
logic.state.useCountStr.value,
|
||||
style: TextStyle(
|
||||
fontSize: 24.sp,
|
||||
color: AppColors.blackColor,
|
||||
|
||||
@ -1,7 +1,12 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart';
|
||||
|
||||
class ValueAddedServicesRecordState {
|
||||
int index = 0;
|
||||
var buyRecordList = [].obs; //购买记录列表
|
||||
var useRecordList = [].obs; //使用记录列表
|
||||
RxList<UseItemData> buyRecordList = <UseItemData>[].obs; //购买记录列表
|
||||
RxList<UseItemData> useRecordList = <UseItemData>[].obs; //使用记录列表
|
||||
RxString buyCountStr = ''.obs;
|
||||
RxString useCountStr = ''.obs;
|
||||
RxString receiverUserStr = ''.obs;
|
||||
RxString buyAmountStr = ''.obs;
|
||||
}
|
||||
|
||||
@ -36,10 +36,8 @@ import 'package:star_lock/mine/mineSet/lockUserManage/lockUserManageList/keyList
|
||||
import 'package:star_lock/mine/mineSet/mineSet/userSettingInfoEntity.dart';
|
||||
import 'package:star_lock/mine/mineSet/mineSet/weChatQRCodeEntity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/advancedFeaturesWeb/advancedFeaturesWeb_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/advancedFunctionRecord/advancedFunctionRecord_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesHighFunction/valueAddedServicesHighFunction_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRealName/face_authentication_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/buy_record_list_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesRecord/use_record_list_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesAddSMSTemplate/newSMSTemplate_entity.dart';
|
||||
import 'package:star_lock/mine/valueAddedServices/valueAddedServicesSMSTemplate/valueAddedServicesListSMSTemplate/customSMSTemplateList_entity.dart';
|
||||
@ -1001,8 +999,7 @@ class ApiRepository {
|
||||
required int endTime,
|
||||
required int remoteUnlockSwitch,
|
||||
required int keyRight,
|
||||
required bool isShowNetworkErrorMsg
|
||||
}) async {
|
||||
required bool isShowNetworkErrorMsg}) async {
|
||||
final res = await apiProvider.batchSendKey(
|
||||
lockIds,
|
||||
createUser,
|
||||
@ -1017,8 +1014,7 @@ class ApiRepository {
|
||||
endTime,
|
||||
remoteUnlockSwitch,
|
||||
keyRight,
|
||||
isShowNetworkErrorMsg
|
||||
);
|
||||
isShowNetworkErrorMsg);
|
||||
return KeyDetailEntity.fromJson(res.body);
|
||||
}
|
||||
|
||||
@ -2114,7 +2110,7 @@ class ApiRepository {
|
||||
}
|
||||
|
||||
// 获取购买记录
|
||||
Future<AdvancedFunctionRecordEntity> getBuyRecordList({
|
||||
Future<UseRecordListEntity> getBuyRecordList({
|
||||
required String type,
|
||||
required int pageNo,
|
||||
required int recordType,
|
||||
@ -2122,7 +2118,7 @@ class ApiRepository {
|
||||
}) async {
|
||||
final res =
|
||||
await apiProvider.getBuyRecordList(type, recordType, pageNo, pageSize);
|
||||
return AdvancedFunctionRecordEntity.fromJson(res.body);
|
||||
return UseRecordListEntity.fromJson(res.body);
|
||||
}
|
||||
|
||||
// 获取使用记录
|
||||
@ -2148,11 +2144,11 @@ class ApiRepository {
|
||||
}
|
||||
|
||||
// 检测实名认证是否支持开启
|
||||
Future<AdvancedFunctionRecordEntity> keyCheckFace({
|
||||
Future<ValueAddedServicesHighFunctionEntity> keyCheckFace({
|
||||
required int lockId,
|
||||
}) async {
|
||||
final res = await apiProvider.keyCheckFace(lockId);
|
||||
return AdvancedFunctionRecordEntity.fromJson(res.body);
|
||||
return ValueAddedServicesHighFunctionEntity.fromJson(res.body);
|
||||
}
|
||||
|
||||
// 获取人脸认证certifyId
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user