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