修改群发电子钥匙、锁用户管理、我的-授权管理员模块问题

This commit is contained in:
魏少阳 2024-06-18 10:36:41 +08:00
parent 5de9d05914
commit 36b1729ee1
26 changed files with 227 additions and 193 deletions

View File

@ -904,5 +904,7 @@
"确认": "Confirm",
"移除成功": "Remove successfully",
"转移成功": "Transfer success",
"该已锁被删除": "The locked is deleted"
"该已锁被删除": "The locked is deleted",
"授权管理员只能查看和管理自己下发的钥匙、密码等权限": "Authorized administrators can only view and manage the keys, passwords, etc. they issued",
"添加授权管理员": "Add authorized administrator"
}

View File

@ -936,5 +936,7 @@
"确认": "确认",
"移除成功": "移除成功",
"转移成功": "转移成功",
"该已锁被删除": "该已锁被删除"
"该已锁被删除": "该已锁被删除",
"授权管理员只能查看和管理自己下发的钥匙、密码等权限": "授权管理员只能查看和管理自己下发的钥匙、密码等权限",
"添加授权管理员": "添加授权管理员"
}

View File

@ -901,5 +901,7 @@
"确认": "确认",
"移除成功": "移除成功",
"转移成功": "转移成功",
"该已锁被删除": "该已锁被删除"
"该已锁被删除": "该已锁被删除",
"授权管理员只能查看和管理自己下发的钥匙、密码等权限": "授权管理员只能查看和管理自己下发的钥匙、密码等权限",
"添加授权管理员": "添加授权管理员"
}

View File

@ -204,18 +204,21 @@ class _MassSendElectronicKeyPageState extends State<MassSendElectronicKeyPage> {
? TranslationLoader.lanKeys!.pleaseSelect!.tr
: state.lockIdList.length.toString(),
isHaveDirection: true,
action: () {
Navigator.pushNamed(context, Routers.massSendLockGroupListPage,
arguments: <String, String>{
'keyLimits': '2',
}).then((Object? value) {
//ID列表
if (value != null) {
value as Map<String, dynamic>;
state.lockIdList = value['selectLockIdList'];
setState(() {});
}
});
action: () async {
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
arguments: <String, Object>{
'keyLimits': '1',
'lockIdList': state.lockIdList
});
if (result != null && result.isNotEmpty) {
final List selectLockIdList = result['selectLockIdList'];
state.lockIdList.clear();
// state.lockIdList.addAll(state.lockIdList.value);
selectLockIdList.forEach((element) {
state.lockIdList.add(element);
});
setState(() {});
}
}),
Container(height: 10.h),
],

View File

@ -8,7 +8,7 @@ class MassSendElectronicKeyState{
final RxBool isRemoteUnlock = false.obs; //
List receiverList = []; //
List lockIdList = []; //ID列表
List<int> lockIdList = <int>[]; //ID列表
RxString beginTime = ''.obs; //
RxString endTime = ''.obs;//

View File

@ -1,8 +1,4 @@
class LockUserListEntity {
int? errorCode;
String? description;
String? errorMsg;
List<LockUserItemData>? data;
LockUserListEntity(
{this.errorCode, this.description, this.errorMsg, this.data});
@ -18,6 +14,10 @@ class LockUserListEntity {
});
}
}
int? errorCode;
String? description;
String? errorMsg;
List<LockUserItemData>? data;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
@ -32,11 +32,6 @@ class LockUserListEntity {
}
class LockUserItemData {
int? uid;
String? nickname;
String? headUrl;
String? userid;
bool? isCheck = false;
LockUserItemData(
{this.uid, this.nickname, this.headUrl, this.userid, this.isCheck});
@ -47,6 +42,11 @@ class LockUserItemData {
headUrl = json['headUrl'];
userid = json['userid'];
}
int? uid;
String? nickname;
String? headUrl;
String? userid;
bool? isCheck = false;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};

View File

@ -1,3 +1,4 @@
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_entity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_state.dart';
import 'package:star_lock/network/api_repository.dart';
@ -8,7 +9,7 @@ class LockUserListLogic extends BaseGetXController {
//
Future<void> lockUserListRequest() async {
LockUserListEntity entity = await ApiRepository.to.lockUserList(
final LockUserListEntity entity = await ApiRepository.to.lockUserList(
state.pageNo.value.toString(), state.pageSize.value.toString(), '');
if (entity.errorCode!.codeIsSuccessful) {
state.dataList.value = entity.data!;

View File

@ -1,9 +1,11 @@
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/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_entity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_logic.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_state.dart';
import 'package:star_lock/tools/keySearchWidget.dart';
import 'package:star_lock/tools/noData.dart';
import 'package:star_lock/tools/submitBtn.dart';
@ -18,8 +20,8 @@ class LockUserListPage extends StatefulWidget {
}
class _LockUserListPageState extends State<LockUserListPage> {
final logic = Get.put(LockUserListLogic());
final state = Get.find<LockUserListLogic>().state;
final LockUserListLogic logic = Get.put(LockUserListLogic());
final LockUserListState state = Get.find<LockUserListLogic>().state;
@override
void initState() {
@ -48,9 +50,9 @@ class _LockUserListPageState extends State<LockUserListPage> {
),
body: Column(
children: [
SizedBox(
height: 20.h,
),
// SizedBox(
// height: 20.h,
// ),
KeySearchWidget(
editingController: state.searchController,
onSubmittedAction: () {
@ -62,14 +64,14 @@ class _LockUserListPageState extends State<LockUserListPage> {
),
Obx(() => Expanded(
child: state.dataList.isEmpty
? NoData()
? NoData(noDataHeight: 1.sh - 200.h)
: ListView.separated(
itemBuilder: (context, index) {
LockUserItemData indexEntity = state.dataList[index];
itemBuilder: (BuildContext context, int index) {
final LockUserItemData indexEntity = state.dataList[index];
return _electronicKeyItem(indexEntity);
},
itemCount: state.dataList.length,
separatorBuilder: (context, index) {
separatorBuilder: (BuildContext context, int index) {
return const Divider(
height: 1, color: AppColors.greyLineColor);
},
@ -95,7 +97,7 @@ class _LockUserListPageState extends State<LockUserListPage> {
child: SubmitBtn(
btnName: '确定'.tr,
onClick: () {
Map<String, dynamic> resultMap = {};
final Map<String, dynamic> resultMap = {};
resultMap['lockUserList'] = state.selectDataList.value;
Navigator.pop(context, resultMap);
},

View File

@ -1,3 +1,4 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_entity.dart';

View File

@ -1,8 +1,4 @@
class MassSendLockGroupListEntity {
int? errorCode;
String? description;
String? errorMsg;
GroupListData? data;
MassSendLockGroupListEntity(
{this.errorCode, this.description, this.errorMsg, this.data});
@ -13,6 +9,10 @@ class MassSendLockGroupListEntity {
errorMsg = json['errorMsg'];
data = json['data'] != null ? GroupListData.fromJson(json['data']) : null;
}
int? errorCode;
String? description;
String? errorMsg;
GroupListData? data;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
@ -27,7 +27,6 @@ class MassSendLockGroupListEntity {
}
class GroupListData {
List<GroupListItem>? groupList;
GroupListData({this.groupList});
@ -39,6 +38,7 @@ class GroupListData {
});
}
}
List<GroupListItem>? groupList;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
@ -50,14 +50,6 @@ class GroupListData {
}
class GroupListItem {
int? lockNum;
int? keyGroupId;
int? groupType; // 0 1
String? keyGroupName;
List<LockListItem>? lockList;
bool isChecked = false;
// bool get isChecked => _isChecked ?? false;
bool isVip = false;
// set isChecked(bool value) => _isChecked = value;
@ -80,6 +72,14 @@ class GroupListItem {
});
}
}
int? lockNum;
int? keyGroupId;
int? groupType; // 0 1
String? keyGroupName;
List<LockListItem>? lockList;
bool isChecked = false;
// bool get isChecked => _isChecked ?? false;
bool isVip = false;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
@ -95,12 +95,6 @@ class GroupListItem {
}
class LockListItem {
int? lockId;
String? lockAlias;
bool _isChecked = false;
bool get isChecked => _isChecked ?? false;
set isChecked(bool value) => _isChecked = value;
LockListItem({this.lockId, this.lockAlias});
@ -108,6 +102,12 @@ class LockListItem {
lockId = json['lockId'];
lockAlias = json['lockAlias'];
}
int? lockId;
String? lockAlias;
bool _isChecked = false;
bool get isChecked => _isChecked ?? false;
set isChecked(bool value) => _isChecked = value;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};

View File

@ -1,4 +1,4 @@
import 'package:star_lock/app_settings/app_settings.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_state.dart';
import 'package:star_lock/network/api_repository.dart';

View File

@ -12,8 +12,6 @@ import 'package:star_lock/tools/showCupertinoAlertView.dart';
import 'package:star_lock/tools/submitBtn.dart';
import 'package:star_lock/translations/trans_lib.dart';
import '../../../../../app_settings/app_settings.dart';
class MassSendLockGroupListPage extends StatefulWidget {
const MassSendLockGroupListPage({Key? key}) : super(key: key);
@ -81,7 +79,7 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
child: SubmitBtn(
btnName: '确定'.tr,
onClick: () {
Map<String, dynamic> resultMap = {};
final Map<String, dynamic> resultMap = {};
resultMap['selectLockIdList'] = state.selectLockIdList.value;
Get.back(result: resultMap);
},

View File

@ -1,5 +1,5 @@
import 'package:get/get.dart';
import 'package:star_lock/app_settings/app_settings.dart';
class MassSendLockGroupListState {// 1() 2
MassSendLockGroupListState(){

View File

@ -32,16 +32,16 @@ class _MassSendReceiverCellState extends State<MassSendReceiverCell> {
@override
void initState() {
super.initState();
_receiverController =
TextEditingController(text: widget.userData.userid ?? '');
_nickNameController =
TextEditingController(text: widget.userData.nickname ?? '');
_receiverController.addListener(() {
widget.userData.userid = _receiverController.text;
});
_nickNameController.addListener(() {
widget.userData.nickname = _nickNameController.text;
});
// _receiverController =
// TextEditingController(text: widget.userData.userid ?? '');
// _nickNameController =
// TextEditingController(text: widget.userData.nickname ?? '');
// _receiverController.addListener(() {
// widget.userData.userid = _receiverController.text;
// });
// _nickNameController.addListener(() {
// widget.userData.nickname = _nickNameController.text;
// });
}
@override
@ -53,6 +53,17 @@ class _MassSendReceiverCellState extends State<MassSendReceiverCell> {
@override
Widget build(BuildContext context) {
_receiverController =
TextEditingController(text: widget.userData.userid ?? '');
_nickNameController =
TextEditingController(text: widget.userData.nickname ?? '');
_receiverController.addListener(() {
widget.userData.userid = _receiverController.text;
});
_nickNameController.addListener(() {
widget.userData.nickname = _nickNameController.text;
});
return Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
@ -106,13 +117,10 @@ class _MassSendReceiverCellState extends State<MassSendReceiverCell> {
controller: _nickNameController,
isContactPickerEnabled: false,
onSubmitted: (String text) {
final bool isEmail = RegexpTool.isEmail(text);
final bool isPhoneNumber =
RegexpTool.isPhoneNumber(text);
if (text.trim() == '' || isEmail || isPhoneNumber) {
errorTxt.value = '';
} else {
errorTxt.value = '账号格式错误'.tr;
if (text.trim() == '') {
errorTxt.value = '请输入姓名';
} else if (text.length > 50) {
errorTxt.value = '姓名长度不能超过50个字符哦';
}
}),
],
@ -224,7 +232,10 @@ class _MassSendReceiverCellState extends State<MassSendReceiverCell> {
if (selectedContact != null) {
setState(() {
if (selectedContact.phoneNumbers?.isNotEmpty ?? false) {
_receiverController.text = selectedContact.phoneNumbers!.first;
// _receiverController.text = selectedContact.phoneNumbers!.first;
String phoneNumber = selectedContact.phoneNumbers!.first;
phoneNumber = phoneNumber.replaceAll(' ', ''); //
_receiverController.text = phoneNumber;
}
if (selectedContact.fullName?.isNotEmpty ?? false) {
_nickNameController.text = selectedContact.fullName!;

View File

@ -1,3 +1,4 @@
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserList_entity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendReceiver/massSendReceiver_state.dart';

View File

@ -1,3 +1,4 @@
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
@ -73,8 +74,17 @@ class _MassSendReceiverPageState extends State<MassSendReceiverPage> {
return;
}
}
// state.lockUserList
final List<LockUserItemData> tempList = <LockUserItemData>[];
for (final LockUserItemData item in state.lockUserList) {
if (!tempList.any((LockUserItemData e) => e.userid == item.userid)) {
tempList.add(item);
}
}
final Map<String, dynamic> resultMap = <String, dynamic>{};
resultMap['lockUserList'] = state.lockUserList;
resultMap['lockUserList'] = tempList;
Navigator.pop(context, resultMap);
},
),

View File

@ -16,5 +16,5 @@ class MassSendReceiverState {
TextEditingController keyNameController = TextEditingController();
RxString countryCode = '86'.obs;
RxString countryName = '中国'.obs;
RxString countryName = '中国'.tr.obs;
}

View File

@ -52,7 +52,7 @@ class _AddAuthorizedAdministratorPageState
: _permanentAdministrator()));
}
//
//
Widget _permanentAdministrator() {
if (state.isSendSuccess.value == true) {
return sendElectronicKeySucceed();
@ -69,29 +69,32 @@ class _AddAuthorizedAdministratorPageState
? TranslationLoader.lanKeys!.pleaseSelect!.tr
: state.lockIdList.value.length.toString(),
isHaveDirection: true,
action: () {
Navigator.pushNamed(context, Routers.massSendLockGroupListPage,
arguments: <String, String>{'keyLimits': '1'})
.then((Object? value) {
//ID列表
if (value != null) {
value as Map<String, dynamic>;
state.lockIdList.value = value['selectLockIdList'];
setState(() {});
}
});
action: () async {
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
arguments: <String, Object>{
'keyLimits': '1',
'lockIdList': state.lockIdList.value
});
if (result != null && result.isNotEmpty) {
final List selectLockIdList = result['selectLockIdList'];
state.lockIdList.value.clear();
// state.lockIdList.addAll(state.lockIdList.value);
selectLockIdList.forEach((element) {
state.lockIdList.value.add(element);
});
setState(() {});
}
}),
SizedBox(
height: 10.h,
),
CommonItem(
leftTitel: '仅管理自己创建的用户',
leftTitel: '仅管理自己创建的用户'.tr,
rightTitle: '',
isHaveRightWidget: true,
isTipsImg: true,
tipsImgAction: () {
ShowTipView().showSureAlertDialog('授权管理员只能查看和管理自己下发的钥匙、密码等权限');
ShowTipView().showSureAlertDialog('授权管理员只能查看和管理自己下发的钥匙、密码等权限'.tr);
},
rightWidget: SizedBox(
width: 60.w,
@ -124,31 +127,33 @@ class _AddAuthorizedAdministratorPageState
? TranslationLoader.lanKeys!.pleaseSelect!.tr
: state.lockIdList.value.length.toString(),
isHaveDirection: true,
action: () {
Navigator.pushNamed(context, Routers.massSendLockGroupListPage,
arguments: {
action: () async {
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
arguments: <String, Object>{
'keyLimits': '1',
}).then((Object? value) {
//ID列表
if (value != null) {
value as Map<String, dynamic>;
state.lockIdList.value = value['selectLockIdList'];
setState(() {});
}
});
'lockIdList': state.lockIdList.value
});
if (result != null && result.isNotEmpty) {
final List selectLockIdList = result['selectLockIdList'];
state.lockIdList.value.clear();
// state.lockIdList.addAll(state.lockIdList.value);
selectLockIdList.forEach((element) {
state.lockIdList.value.add(element);
});
setState(() {});
}
}),
SizedBox(
height: 10.h,
),
// remoteUnlockingWidget(),
CommonItem(
leftTitel: '仅管理自己创建的用户',
leftTitel: '仅管理自己创建的用户'.tr,
rightTitle: '',
isHaveRightWidget: true,
isTipsImg: true,
tipsImgAction: () {
ShowTipView().showSureAlertDialog('授权管理员只能查看和管理自己下发的钥匙、密码等权限');
ShowTipView().showSureAlertDialog('授权管理员只能查看和管理自己下发的钥匙、密码等权限'.tr);
},
rightWidget: SizedBox(
width: 60.w,
@ -212,8 +217,7 @@ class _AddAuthorizedAdministratorPageState
}
//
Widget getTFWidget(
bool isHaveBtn, String tfStr, TextEditingController editController) {
Widget getTFWidget(bool isHaveBtn, String tfStr, TextEditingController editController) {
return SizedBox(
height: 65.h,
width: 300.w,
@ -311,7 +315,7 @@ class _AddAuthorizedAdministratorPageState
trackColor: CupertinoColors.systemGrey5,
thumbColor: CupertinoColors.white,
value: state.onlyManageYouCreatesUser.value,
onChanged: (value) {
onChanged: (bool value) {
setState(() {
state.onlyManageYouCreatesUser.value =
!state.onlyManageYouCreatesUser.value;
@ -451,7 +455,7 @@ class _AddAuthorizedAdministratorPageState
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'发送成功',
'发送成功'.tr,
style: TextStyle(
fontSize: 26.sp,
color: Colors.black,
@ -514,10 +518,10 @@ class _AddAuthorizedAdministratorPageState
List<Widget> initBottomSheetList() {
final List<Widget> widgetList = <Widget>[];
widgetList.add(buildCenter3('images/icon_wechat.png', '微信好友', 0));
widgetList.add(buildCenter3('images/icon_message.png', '短信', 1));
widgetList.add(buildCenter3('images/icon_email.png', '邮件', 2));
widgetList.add(buildCenter3('images/icon_more.png', '更多', 3));
widgetList.add(buildCenter3('images/icon_wechat.png', '微信好友'.tr, 0));
widgetList.add(buildCenter3('images/icon_message.png', '短信'.tr, 1));
widgetList.add(buildCenter3('images/icon_email.png', '邮件'.tr, 2));
widgetList.add(buildCenter3('images/icon_more.png', '更多'.tr, 3));
return widgetList;
}

View File

@ -14,8 +14,8 @@ class AddAuthorizedAdministratorState {
final FlutterContactPicker contactPicker = FlutterContactPicker();
late Contact contact;
RxString type = ''.obs;
var lockIdList = [].obs;
var weekdaysList = [].obs;
RxList<int> lockIdList = <int>[].obs;
RxList weekdaysList = [].obs;
RxBool isCreateUser = false.obs; //1 0
RxString beginDate = DateTool()

View File

@ -1,5 +1,6 @@
import 'dart:async';
import 'package:get/get.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import '../../../../common/XSConstantMacro/XSConstantMacro.dart';
@ -36,7 +37,7 @@ class AuthorizedAdministratorListLogic extends BaseGetXController {
final AuthorizedAdminListEntity entity = await ApiRepository.to
.deleteAuthorizedAdmin(uid, includeUnderlings.toString());
if (entity.errorCode!.codeIsSuccessful) {
showToast('删除成功', something: () {
showToast('删除成功'.tr, something: () {
pageNo = 1;
mockNetworkDataRequest();
});
@ -56,17 +57,17 @@ class AuthorizedAdministratorListLogic extends BaseGetXController {
useDateStr =
'${startDateStr.toLocal().toString().substring(0, 16)}-${endDateStr.toLocal().toString().substring(0, 16)}';
} else {
useDateStr = '';
useDateStr = ''.tr;
}
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLong) {
//
useDateStr = '永久';
useDateStr = '永久'.tr;
} else if (indexEntity.keyType == XSConstantMacro.keyTypeOnce) {
//
useDateStr = '单次';
useDateStr = '单次'.tr;
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLoop) {
//
useDateStr = '循环';
useDateStr = '循环'.tr;
}
return useDateStr;
}

View File

@ -111,7 +111,7 @@ class _AuthorizedAdministratorListPageState
child: SizedBox(
width: 360.w,
child: SubmitBtn(
btnName: '添加授权管理员',
btnName: '添加授权管理员'.tr,
onClick: () {
Navigator.pushNamed(
context, Routers.addAuthorizedAdministratorPage)
@ -143,7 +143,7 @@ class _AuthorizedAdministratorListPageState
onPressed: (BuildContext context) {
ShowTipView()
.showDeleteAdministratorIsHaveAllDataDialog(
'同时删除其发送的所有钥匙,钥匙删除后不能恢复', (bool isAllData) {
'同时删除其发送的所有钥匙,钥匙删除后不能恢复'.tr, (bool isAllData) {
logic.deleteAdministratorRequest(
authorizedAdminListItem.uid.toString(),
isAllData ? 1 : 0);
@ -151,7 +151,7 @@ class _AuthorizedAdministratorListPageState
},
backgroundColor: Colors.red,
foregroundColor: Colors.white,
label: '删除',
label: '删除'.tr,
padding: EdgeInsets.only(left: 5.w, right: 5.w),
),
],

View File

@ -1,8 +1,4 @@
class KeyListByUserEntity {
int? errorCode;
String? description;
String? errorMsg;
KeyListByUserData? data;
KeyListByUserEntity(
{this.errorCode, this.description, this.errorMsg, this.data});
@ -14,6 +10,10 @@ class KeyListByUserEntity {
data =
json['data'] != null ? KeyListByUserData.fromJson(json['data']) : null;
}
int? errorCode;
String? description;
String? errorMsg;
KeyListByUserData? data;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
@ -28,11 +28,6 @@ class KeyListByUserEntity {
}
class KeyListByUserData {
List<KeyListItem>? keyList;
int? pageNo;
int? pageSize;
int? pages;
int? total;
KeyListByUserData(
{this.keyList, this.pageNo, this.pageSize, this.pages, this.total});
@ -49,6 +44,11 @@ class KeyListByUserData {
pages = json['pages'];
total = json['total'];
}
List<KeyListItem>? keyList;
int? pageNo;
int? pageSize;
int? pages;
int? total;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
@ -64,31 +64,6 @@ class KeyListByUserData {
}
class KeyListItem {
String? clientId;
int? lockOwnerId;
int? lockId;
int? senderUserId;
String? keyName;
int? keyType;
int? startDate;
int? endDate;
List? weekDays;
String? remarks;
int? remoteEnable;
int? isCameraEnable;
int? faceAuthentication;
int? keyRight;
int? userType;
int? keyStatus;
int? groupId;
int? lockUserNo;
int? date;
String? createdAt;
String? updatedAt;
UserInfo? userInfo;
int? keyId;
int? uid;
String? lockAlias;
KeyListItem(
{this.clientId,
@ -150,6 +125,31 @@ class KeyListItem {
uid = json['uid'];
lockAlias = json['lockAlias'];
}
String? clientId;
int? lockOwnerId;
int? lockId;
int? senderUserId;
String? keyName;
int? keyType;
int? startDate;
int? endDate;
List? weekDays;
String? remarks;
int? remoteEnable;
int? isCameraEnable;
int? faceAuthentication;
int? keyRight;
int? userType;
int? keyStatus;
int? groupId;
int? lockUserNo;
int? date;
String? createdAt;
String? updatedAt;
UserInfo? userInfo;
int? keyId;
int? uid;
String? lockAlias;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};
@ -187,8 +187,6 @@ class KeyListItem {
}
class UserInfo {
int? id;
String? accountName;
UserInfo({this.id, this.accountName});
@ -196,6 +194,8 @@ class UserInfo {
id = json['id'];
accountName = json['account_name'];
}
int? id;
String? accountName;
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = <String, dynamic>{};

View File

@ -59,11 +59,6 @@ class LockUserManageListLogic extends BaseGetXController {
_getElectronicKeyListRefreshUIAction();
}
@override
void onInit() {
super.onInit();
}
@override
void onClose() {
super.onClose();

View File

@ -1,3 +1,4 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
@ -234,14 +235,13 @@ class _LockUserManageListPageState extends State<LockUserManageListPage> {
);
}
void showIosTipViewDialog(
BuildContext context, LockUserItemData lockUserData) {
void showIosTipViewDialog(BuildContext context, LockUserItemData lockUserData) {
showDialog(
context: context,
builder: (BuildContext context) {
return ShowIosTipView(
title: "提示",
tipTitle: "删除用户时,会将用户拥有的钥匙一起删除。",
title: '提示',
tipTitle: '删除用户时,会将用户拥有的钥匙一起删除。',
sureClick: () {
Get.back();
logic.deletelockUserRequest(lockUserData.uid!);

View File

@ -13,7 +13,7 @@ class OwnedKeyListLogic extends BaseGetXController {
//
Future<KeyListByUserEntity> mockNetworkDataRequest() async {
KeyListByUserEntity entity = await ApiRepository.to.keyListByUser(pageNo.toString(), pageSize, state.getUidStr.toString());
final KeyListByUserEntity entity = await ApiRepository.to.keyListByUser(pageNo.toString(), pageSize, state.getUidStr.toString());
// if (entity.errorCode!.codeIsSuccessful) {
// }
// if (entity.data != null) {
@ -39,12 +39,12 @@ class OwnedKeyListLogic extends BaseGetXController {
// setAdministrator
Future<void> deleteKeyRequest(int keyId) async {
ElectronicKeyListEntity entity = await ApiRepository.to.deleteElectronicKey(
final ElectronicKeyListEntity entity = await ApiRepository.to.deleteElectronicKey(
keyId:keyId.toString(),
includeUnderlings: 0
);
if (entity.errorCode!.codeIsSuccessful) {
showToast("删除成功", something: () {
showToast('删除成功'.tr, something: () {
pageNo = 1;
mockNetworkDataRequest();
eventBus.fire(LockUserManageListRefreshUI());
@ -72,24 +72,24 @@ class OwnedKeyListLogic extends BaseGetXController {
if (indexEntity.keyType == XSConstantMacro.keyTypeTime) {
//
if (indexEntity.startDate != null && indexEntity.endDate != null) {
DateTime startDateStr =
final DateTime startDateStr =
DateTime.fromMillisecondsSinceEpoch(indexEntity.startDate!);
DateTime endDateStr =
final DateTime endDateStr =
DateTime.fromMillisecondsSinceEpoch(indexEntity.endDate!);
useDateStr =
'${startDateStr.toLocal().toString().substring(0, 16)}-${endDateStr.toLocal().toString().substring(0, 16)}';
} else {
useDateStr = '';
useDateStr = ''.tr;
}
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLong) {
//
useDateStr = '永久';
useDateStr = '永久'.tr;
} else if (indexEntity.keyType == XSConstantMacro.keyTypeOnce) {
//
useDateStr = '单次';
useDateStr = '单次'.tr;
} else if (indexEntity.keyType == XSConstantMacro.keyTypeLoop) {
//
useDateStr = '循环';
useDateStr = '循环'.tr;
}
return useDateStr;
}

View File

@ -1,12 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:get/get.dart';
import 'package:get/get_utils/get_utils.dart';
import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/lockUserManageList/keyListByUserEntity.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/mine/mineSet/lockUserManage/ownedKeyList/ownedKeyList_state.dart';
import 'package:star_lock/tools/noData.dart';
import 'package:star_lock/tools/showIosTipView.dart';
import 'package:star_lock/translations/trans_lib.dart';
@ -24,13 +23,15 @@ class OwnedKeyListPage extends StatefulWidget {
}
class _OwnedKeyListPageState extends State<OwnedKeyListPage> {
final logic = Get.put(OwnedKeyListLogic());
final state = Get.find<OwnedKeyListLogic>().state;
final OwnedKeyListLogic logic = Get.put(OwnedKeyListLogic());
final OwnedKeyListState state = Get.find<OwnedKeyListLogic>().state;
Future<void> getHttpData() async {
logic.mockNetworkDataRequest().then((KeyListByUserEntity value){
if(mounted) setState(() {});
if(mounted) {
setState(() {});
}
});
}
@ -88,8 +89,8 @@ class _OwnedKeyListPageState extends State<OwnedKeyListPage> {
: SlidableAutoCloseBehavior(
child: ListView.builder(
itemCount: state.dataList.length,
itemBuilder: (c, index) {
KeyListItem itemData = state.dataList[index];
itemBuilder: (BuildContext c, int index) {
final KeyListItem itemData = state.dataList[index];
return Slidable(
key:ValueKey(itemData.keyId),
endActionPane: ActionPane(
@ -102,7 +103,7 @@ class _OwnedKeyListPageState extends State<OwnedKeyListPage> {
},
backgroundColor: Colors.red,
foregroundColor: Colors.white,
label: '删除',
label: '删除'.tr,
padding: EdgeInsets.only(left: 5.w, right: 5.w),
),
],
@ -158,7 +159,7 @@ class _OwnedKeyListPageState extends State<OwnedKeyListPage> {
),
Visibility(
visible: isHaveExpired,
child: Text("已过期",
child: Text('已过期'.tr,
style: TextStyle(fontSize: 22.sp, color: Colors.grey)),
),
SizedBox(width: 10.w),
@ -190,8 +191,8 @@ class _OwnedKeyListPageState extends State<OwnedKeyListPage> {
context: Get.context!,
builder: (BuildContext context) {
return ShowIosTipView(
title: "提示",
tipTitle: "删除钥匙会在用户APP连网后生效",
title: '提示'.tr,
tipTitle: '删除钥匙会在用户APP连网后生效'.tr,
sureClick: () {
Get.back();
logic.deleteKeyRequest(lockUserData.keyId!);