修改群发电子钥匙、锁用户管理、我的-授权管理员模块问题
This commit is contained in:
parent
5de9d05914
commit
36b1729ee1
@ -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"
|
||||
}
|
||||
|
||||
@ -936,5 +936,7 @@
|
||||
"确认": "确认",
|
||||
"移除成功": "移除成功",
|
||||
"转移成功": "转移成功",
|
||||
"该已锁被删除": "该已锁被删除"
|
||||
"该已锁被删除": "该已锁被删除",
|
||||
"授权管理员只能查看和管理自己下发的钥匙、密码等权限": "授权管理员只能查看和管理自己下发的钥匙、密码等权限",
|
||||
"添加授权管理员": "添加授权管理员"
|
||||
}
|
||||
|
||||
@ -901,5 +901,7 @@
|
||||
"确认": "确认",
|
||||
"移除成功": "移除成功",
|
||||
"转移成功": "转移成功",
|
||||
"该已锁被删除": "该已锁被删除"
|
||||
"该已锁被删除": "该已锁被删除",
|
||||
"授权管理员只能查看和管理自己下发的钥匙、密码等权限": "授权管理员只能查看和管理自己下发的钥匙、密码等权限",
|
||||
"添加授权管理员": "添加授权管理员"
|
||||
}
|
||||
|
||||
@ -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),
|
||||
],
|
||||
|
||||
@ -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;//默认为当前时间 结束时间
|
||||
|
||||
@ -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>{};
|
||||
|
||||
@ -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!;
|
||||
|
||||
@ -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);
|
||||
},
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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>{};
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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);
|
||||
},
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
|
||||
class MassSendLockGroupListState {// 1管理员(包括超级管理员跟管理员) 2普通用户
|
||||
MassSendLockGroupListState(){
|
||||
|
||||
@ -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!;
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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);
|
||||
},
|
||||
),
|
||||
|
||||
@ -16,5 +16,5 @@ class MassSendReceiverState {
|
||||
TextEditingController keyNameController = TextEditingController();
|
||||
|
||||
RxString countryCode = '86'.obs;
|
||||
RxString countryName = '中国'.obs;
|
||||
RxString countryName = '中国'.tr.obs;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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),
|
||||
),
|
||||
],
|
||||
|
||||
@ -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>{};
|
||||
|
||||
@ -59,11 +59,6 @@ class LockUserManageListLogic extends BaseGetXController {
|
||||
_getElectronicKeyListRefreshUIAction();
|
||||
}
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
super.onClose();
|
||||
|
||||
@ -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!);
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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!);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user