修改群发电子钥匙问题
This commit is contained in:
parent
6bfa8cdb08
commit
7d93f2fbc4
@ -185,20 +185,21 @@ class _VolumeAuthorizationLockPageState
|
||||
? TranslationLoader.lanKeys!.pleaseSelect!.tr
|
||||
: state.lockIdList.length.toString(),
|
||||
isHaveDirection: true,
|
||||
action: () {
|
||||
Navigator.pushNamed(context, Routers.massSendLockGroupListPage,
|
||||
arguments: <String, String>{'keyLimits': '1'})
|
||||
.then((Object? value) {
|
||||
//得到选中的锁ID列表
|
||||
if (value is Map<String, dynamic> &&
|
||||
value['selectLockIdList'] is List) {
|
||||
state.lockIdList.clear();
|
||||
value['selectLockIdList'].forEach((element) {
|
||||
state.lockIdList.add(element);
|
||||
action: () async {
|
||||
final result = await Get.toNamed(Routers.massSendLockGroupListPage,
|
||||
arguments: <String, Object>{
|
||||
'keyLimits': '1',
|
||||
'lockIdList': state.lockIdList.value
|
||||
});
|
||||
setState(() {});
|
||||
}
|
||||
});
|
||||
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(() {});
|
||||
}
|
||||
}),
|
||||
Container(height: 10.h),
|
||||
CommonItem(
|
||||
|
||||
@ -55,11 +55,11 @@ class GroupListItem {
|
||||
int? groupType; //组类型 0未分组 1非未分组
|
||||
String? keyGroupName;
|
||||
List<LockListItem>? lockList;
|
||||
bool _isChecked = false;
|
||||
bool get isChecked => _isChecked ?? false;
|
||||
bool isChecked = false;
|
||||
// bool get isChecked => _isChecked ?? false;
|
||||
bool isVip = false;
|
||||
|
||||
set isChecked(bool value) => _isChecked = value;
|
||||
// set isChecked(bool value) => _isChecked = value;
|
||||
|
||||
GroupListItem(
|
||||
{this.lockNum,
|
||||
|
||||
@ -1,3 +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';
|
||||
@ -14,6 +15,39 @@ class MassSendLockGroupListLogic extends BaseGetXController {
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
if (entity.data != null) {
|
||||
state.lockGroupList.value = entity.data!.groupList!;
|
||||
|
||||
// 实现如果传入的selectLockIdList不为空,就state.lockGroupList.value里面的每个item的isSelected为true
|
||||
if (state.selectLockIdList.isNotEmpty) {
|
||||
for (int i = 0; i < state.lockGroupList.length; i++) {
|
||||
final GroupListItem groupItem = state.lockGroupList[i];
|
||||
for (int j = 0; j < groupItem.lockList!.length; j++) {
|
||||
final LockListItem lockItem = groupItem.lockList![j];
|
||||
if (state.selectLockIdList.contains(lockItem.lockId)) {
|
||||
lockItem.isChecked = true;
|
||||
}else{
|
||||
lockItem.isChecked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 如果state.lockGroupList里面的每个item的isSelected为true则state.lockGroupList的isSelected为true
|
||||
for (int i = 0; i < state.lockGroupList.length; i++) {
|
||||
final GroupListItem groupItem = state.lockGroupList[i];
|
||||
if (groupItem.lockList != null && groupItem.lockList!.isNotEmpty) {
|
||||
bool isAllChecked = true;
|
||||
for (int j = 0; j < groupItem.lockList!.length; j++) {
|
||||
final LockListItem lockItem = groupItem.lockList![j];
|
||||
// AppLog.log('111lockItem.lockId:${lockItem.lockId} lockItem.isChecked:${lockItem.isChecked}');
|
||||
if (!lockItem.isChecked) {
|
||||
isAllChecked = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
groupItem.isChecked = isAllChecked;
|
||||
}
|
||||
}
|
||||
|
||||
state.lockGroupList.refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
@ -11,6 +12,8 @@ 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);
|
||||
|
||||
@ -21,10 +24,8 @@ class MassSendLockGroupListPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
|
||||
final MassSendLockGroupListLogic logic =
|
||||
Get.put(MassSendLockGroupListLogic());
|
||||
final MassSendLockGroupListState state =
|
||||
Get.find<MassSendLockGroupListLogic>().state;
|
||||
final MassSendLockGroupListLogic logic = Get.put(MassSendLockGroupListLogic());
|
||||
final MassSendLockGroupListState state = Get.find<MassSendLockGroupListLogic>().state;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@ -54,9 +55,9 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
|
||||
body: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
children: <Widget>[
|
||||
Obx(() => Visibility(
|
||||
visible: state.isVip.value ? false : true,
|
||||
visible: !state.isVip.value,
|
||||
child: ShowCupertinoAlertView()
|
||||
.topTipsAdvancedFeatures('开通高级功能后才可以对锁进行管理'.tr))),
|
||||
SizedBox(
|
||||
@ -76,14 +77,13 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
|
||||
child: Obx(
|
||||
() => _buildListView(context, state.lockGroupList.value))),
|
||||
Obx(() => Visibility(
|
||||
visible: state.isVip.value ? true : false,
|
||||
visible: state.isVip.value,
|
||||
child: SubmitBtn(
|
||||
btnName: '确定'.tr,
|
||||
onClick: () {
|
||||
final Map<String, dynamic> resultMap = {};
|
||||
resultMap['selectLockIdList'] =
|
||||
state.selectLockIdList.value;
|
||||
Navigator.pop(context, resultMap);
|
||||
Map<String, dynamic> resultMap = {};
|
||||
resultMap['selectLockIdList'] = state.selectLockIdList.value;
|
||||
Get.back(result: resultMap);
|
||||
},
|
||||
),
|
||||
)),
|
||||
@ -102,7 +102,7 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
|
||||
return _buildLockExpandedList(context, index, itemData);
|
||||
},
|
||||
shrinkWrap: true,
|
||||
separatorBuilder: (BuildContext context, index) {
|
||||
separatorBuilder: (BuildContext context, int index) {
|
||||
return const Divider(
|
||||
height: 1,
|
||||
color: AppColors.greyLineColor,
|
||||
@ -112,20 +112,20 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
|
||||
|
||||
//设备多层级列表
|
||||
Widget _buildLockExpandedList(context, index, GroupListItem itemData) {
|
||||
List lockItemList = itemData.lockList ?? [];
|
||||
final List lockItemList = itemData.lockList ?? [];
|
||||
itemData.isVip = state.isVip.value;
|
||||
return ExpandedListTile(
|
||||
onTap: () {
|
||||
//是否选中组
|
||||
if (itemData.isChecked) {
|
||||
var selectList = itemData.lockList;
|
||||
for (LockListItem lockListItem in selectList!) {
|
||||
final List<LockListItem>? selectList = itemData.lockList;
|
||||
for (final LockListItem lockListItem in selectList!) {
|
||||
lockListItem.isChecked = true;
|
||||
state.selectLockIdList.value.add(lockListItem.lockId);
|
||||
state.selectLockIdList.value.add(lockListItem.lockId??0);
|
||||
}
|
||||
} else {
|
||||
var selectList = itemData.lockList;
|
||||
for (LockListItem lockListItem in selectList!) {
|
||||
final List<LockListItem>? selectList = itemData.lockList;
|
||||
for (final LockListItem lockListItem in selectList!) {
|
||||
lockListItem.isChecked = false;
|
||||
state.selectLockIdList.value.remove(lockListItem.lockId);
|
||||
}
|
||||
@ -133,17 +133,30 @@ class _MassSendLockGroupListPageState extends State<MassSendLockGroupListPage> {
|
||||
setState(() {});
|
||||
},
|
||||
isShowBtn: true,
|
||||
isCheck: itemData.isChecked,
|
||||
typeImgList: const [],
|
||||
groupItem: itemData,
|
||||
child: massSendLockGroupCell(index,
|
||||
currentIndex: index,
|
||||
lockListByGroup: lockItemList,
|
||||
isVip: state.isVip.value,
|
||||
isShowBtn: true, selectLockAction: (selectIndex, selectLockId) {
|
||||
LockListItem lockItem = lockItemList[selectIndex];
|
||||
isShowBtn: true, selectLockAction: (int selectIndex, String selectLockId) {
|
||||
final LockListItem lockItem = lockItemList[selectIndex];
|
||||
lockItem.isChecked = !lockItem.isChecked;
|
||||
if (lockItem.isChecked) {
|
||||
state.selectLockIdList.value.add(lockItem.lockId);
|
||||
state.selectLockIdList.value.add(lockItem.lockId??0);
|
||||
// 实现lockItemList里面的所有数据都选中的话 itemData.isChecked设置选中
|
||||
bool isAllChecked = true;
|
||||
for (final LockListItem lockListItem in lockItemList) {
|
||||
if (!lockListItem.isChecked) {
|
||||
isAllChecked = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
itemData.isChecked = isAllChecked;
|
||||
}else{
|
||||
state.selectLockIdList.value.remove(lockItem.lockId);
|
||||
itemData.isChecked = false;
|
||||
}
|
||||
setState(() {});
|
||||
}),
|
||||
|
||||
@ -1,15 +1,20 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
|
||||
class MassSendLockGroupListState {
|
||||
var lockGroupList = [].obs;
|
||||
var selectLockIdList = [].obs;
|
||||
var isVip = false.obs;
|
||||
|
||||
var keyLimits = '';// 1管理员(包括超级管理员跟管理员) 2普通用户
|
||||
class MassSendLockGroupListState {// 1管理员(包括超级管理员跟管理员) 2普通用户
|
||||
MassSendLockGroupListState(){
|
||||
Map map = Get.arguments;
|
||||
if(map["keyLimits"] != null){
|
||||
final Map map = Get.arguments;
|
||||
if(map['keyLimits'] != null){
|
||||
keyLimits = map['keyLimits'];
|
||||
}
|
||||
if(map['lockIdList'] != null){
|
||||
var list = map['lockIdList'];
|
||||
selectLockIdList.value.addAll(list);
|
||||
}
|
||||
}
|
||||
RxList lockGroupList = [].obs;
|
||||
RxList<int> selectLockIdList = <int>[].obs;
|
||||
RxBool isVip = false.obs;
|
||||
|
||||
String keyLimits = '';
|
||||
}
|
||||
|
||||
@ -3,13 +3,18 @@ import 'dart:core';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:star_lock/app_settings/app_colors.dart';
|
||||
import 'package:star_lock/app_settings/app_settings.dart';
|
||||
import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart';
|
||||
|
||||
class ExpandedListTile extends StatefulWidget {
|
||||
const ExpandedListTile(
|
||||
{required this.isShowBtn, required this.groupItem, required this.typeImgList, Key? key,
|
||||
this.child,
|
||||
this.onTap})
|
||||
{required this.isShowBtn,
|
||||
required this.groupItem,
|
||||
required this.typeImgList,
|
||||
this.isCheck = false,
|
||||
this.child,
|
||||
this.onTap,
|
||||
Key? key})
|
||||
: super(key: key);
|
||||
|
||||
final Widget? child;
|
||||
@ -17,7 +22,7 @@ class ExpandedListTile extends StatefulWidget {
|
||||
final Function()? onTap;
|
||||
final GroupListItem groupItem;
|
||||
final bool isShowBtn;
|
||||
|
||||
final bool isCheck;
|
||||
@override
|
||||
_ExpandedListTileState createState() => _ExpandedListTileState();
|
||||
}
|
||||
@ -27,6 +32,18 @@ class _ExpandedListTileState extends State<ExpandedListTile> {
|
||||
final Duration _animationDuration = const Duration(milliseconds: 200);
|
||||
bool _isCheck = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_isCheck = widget.isCheck; // Initialize _isCheck with the value from the widget
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(ExpandedListTile oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
_isCheck = widget.isCheck; // Initialize _isCheck with the value from the widget
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user