diff --git a/star_lock/images/main/icon_main_openLockBtn.png b/star_lock/images/main/icon_main_openLockBtn.png index f45ef04a..1f6f1950 100644 Binary files a/star_lock/images/main/icon_main_openLockBtn.png and b/star_lock/images/main/icon_main_openLockBtn.png differ diff --git a/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart b/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart index 88a87153..f274fd24 100644 --- a/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart +++ b/star_lock/lib/main/lockDetail/authorizedAdmin/volumeAuthorizationLock/volumeAuthorizationLock_page.dart @@ -24,6 +24,7 @@ class _VolumeAuthorizationLockPageState extends State { final FlutterContactPicker _contactPicker = FlutterContactPicker(); late Contact _contact; + late List _lockIdList; @override Widget build(BuildContext context) { @@ -32,8 +33,9 @@ class _VolumeAuthorizationLockPageState @override void initState() { - // TODO: implement initState super.initState(); + + _lockIdList = []; } Widget indexChangeWidget() { @@ -74,7 +76,7 @@ class _VolumeAuthorizationLockPageState children: [ Container(height: 10.h), CommonItem( - leftTitel: TranslationLoader.lanKeys!.number!.tr, + leftTitel: TranslationLoader.lanKeys!.accountNumber!.tr, rightTitle: "", isHaveLine: true, isHaveRightWidget: true, @@ -114,9 +116,22 @@ class _VolumeAuthorizationLockPageState children: [ CommonItem( leftTitel: TranslationLoader.lanKeys!.lock!.tr, - rightTitle: TranslationLoader.lanKeys!.pleaseSelet!.tr, + rightTitle: _lockIdList.isEmpty + ? TranslationLoader.lanKeys!.pleaseSelet!.tr + : _lockIdList.length.toString(), isHaveDirection: true, - action: () {}), + action: () { + Navigator.pushNamed(context, Routers.massSendLockGroupPage) + .then((value) { + //得到选中的锁ID列表 + if (value != null) { + value as Map; + _lockIdList = value['selectLockIdList']; + + setState(() {}); + } + }); + }), Container(height: 10.h), CommonItem( leftTitel: TranslationLoader.lanKeys!.remoteUnlockingAllowed!.tr, diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart index 4a9a5a1d..7a10a16d 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendElectronicKey_page.dart @@ -4,6 +4,11 @@ import 'package:flutter_pickers/time_picker/model/date_mode.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:flutter_native_contact_picker/flutter_native_contact_picker.dart'; +import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart'; +import 'package:star_lock/network/api_repository.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:star_lock/tools/toast.dart'; import '../../../../../tools/commonItem.dart'; import '../../../../../tools/submitBtn.dart'; @@ -30,7 +35,12 @@ class _MassSendElectronicKeyPageState extends State { late DateTime _failureDateTime; late bool _isSendSuccess; late bool _isRemote; //是否远程开锁 - List _receiverList = []; + List _receiverList = []; //接受者列表 + List _lockIdList = []; //选中的锁ID列表 + String countryName = '中国'; + String countryCode = '86'; + List weekdaysList = []; + bool _isCreateUser = false; //用户未注册时传1 已注册传0 @override Widget build(BuildContext context) { @@ -94,6 +104,58 @@ class _MassSendElectronicKeyPageState extends State { } } + //群发钥匙检查 + Future MassKeyChecksRequest() async { + String getFailureDateTime = '0'; + if (int.parse(widget.type) != 1) { + getFailureDateTime = _failureDateTime.millisecondsSinceEpoch.toString(); + } + var entity = + await ApiRepository.to.canSendKey(getFailureDateTime, [], _lockIdList); + if (entity.errorCode!.codeIsSuccessful) { + for (int i = 0; i < _receiverList.length; i++) { + LockUserData data = _receiverList[i]; + batchSendElectronicKeyRequest(data.userid ?? ''); + } + } else { + Toast.show(msg: '检查失败'); + } + } + + //批处理群发钥匙 + Future batchSendElectronicKeyRequest(String receiverUserID) async { + String getFailureDateTime = '0'; + String getEffectiveDateTime = '0'; + if (widget.type == '0') { + getFailureDateTime = _failureDateTime.millisecondsSinceEpoch.toString(); + getEffectiveDateTime = + _effectiveDateTime.millisecondsSinceEpoch.toString(); + } + var entity = await ApiRepository.to.batchSendKey( + getFailureDateTime, + [], + _lockIdList, + '1', + _isRemote ? '1' : '2', + receiverUserID, + receiverUserID, + getEffectiveDateTime, + countryCode, + '1', + weekdaysList); + if (entity.errorCode!.codeIsSuccessful) { + print('群发电子钥匙成功'); + _isSendSuccess = true; + setState(() {}); + } else { + Toast.show(msg: '${entity.errorMsg}'); + if (entity.errorCode == 425) { + //用户未注册 + _isCreateUser = true; + } + } + } + // 顶部钥匙信息widget Widget keyInfoWidget() { return Column( @@ -117,12 +179,44 @@ class _MassSendElectronicKeyPageState extends State { } }); }), + CommonItem( + leftTitel: TranslationLoader.lanKeys!.countryAndRegion!.tr, + rightTitle: "", + isHaveLine: true, + isHaveRightWidget: true, + isHaveDirection: true, + rightWidget: Text( + '$countryName +$countryCode', + textAlign: TextAlign.end, + style: + TextStyle(fontSize: 22.sp, color: AppColors.darkGrayTextColor), + ), + action: () async { + var result = await Navigator.pushNamed( + context, Routers.seletCountryRegionPage); + result as Map; + countryCode = result['code']; + countryName = result['countryName']; + setState(() {}); + }, + ), CommonItem( leftTitel: TranslationLoader.lanKeys!.lock!.tr, - rightTitle: TranslationLoader.lanKeys!.pleaseSelet!.tr, + rightTitle: _lockIdList.isEmpty + ? TranslationLoader.lanKeys!.pleaseSelet!.tr + : _lockIdList.length.toString(), isHaveDirection: true, action: () { - Navigator.pushNamed(context, Routers.massSendLockGroupPage); + Navigator.pushNamed(context, Routers.massSendLockGroupPage) + .then((value) { + //得到选中的锁ID列表 + if (value != null) { + value as Map; + _lockIdList = value['selectLockIdList']; + + setState(() {}); + } + }); }), Container(height: 10.h), ], @@ -205,7 +299,7 @@ class _MassSendElectronicKeyPageState extends State { SubmitBtn( btnName: TranslationLoader.lanKeys!.send!.tr, onClick: () { - // Navigator.pushNamed(context, Routers.nearbyLockPage); + MassKeyChecksRequest(); }), ], ); diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart index 1a5c3c6e..b3240f85 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart @@ -1,20 +1,19 @@ 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/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/lockUserList/lockUserListEntity.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; +typedef _CallBack = void Function(int selectIndex, String selectLockId); + class massSendLockGroupCell extends StatelessWidget { final int currentIndex; - // LockListItem itemData; List lockListByGroup; - final VoidCallback selectLockAction; + final _CallBack selectLockAction; massSendLockGroupCell(int index, {Key? key, required this.currentIndex, required this.lockListByGroup, - // required this.itemData, required this.selectLockAction}) : super(key: key); @@ -26,7 +25,7 @@ class massSendLockGroupCell extends StatelessWidget { itemCount: lockListByGroup.length, itemBuilder: (_, itemIndex) { LockListItem itemData = lockListByGroup[itemIndex]; - return _itemBuilder(itemData); + return _itemBuilder(itemData, itemIndex); }, separatorBuilder: (BuildContext context, int index) { return const Divider( @@ -37,7 +36,7 @@ class massSendLockGroupCell extends StatelessWidget { ); } - Widget _itemBuilder(LockListItem itemData) { + Widget _itemBuilder(LockListItem itemData, int itemIndex) { return GestureDetector( child: Container( height: 60.h, @@ -66,7 +65,7 @@ class massSendLockGroupCell extends StatelessWidget { width: 20.w, )), Image.asset( - itemData.isCheck! + itemData.isChecked ? "images/icon_round_selet.png" : "images/icon_round_unSelet.png", width: 30.w, @@ -79,13 +78,7 @@ class massSendLockGroupCell extends StatelessWidget { ), ), onTap: () { - selectLockAction(); - // selectNameIndex = index; - // setState(() { - // if (selectNameIndex == index) { - // isNameSelect = !isNameSelect; - // } - // }); + selectLockAction(itemIndex, itemData.lockId.toString()); }, ); } diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart index 44a24ba3..872e1f91 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart @@ -2,7 +2,7 @@ class MassSendLockGroupListEntity { int? errorCode; String? description; String? errorMsg; - LockListData? data; + GroupListData? data; MassSendLockGroupListEntity( {this.errorCode, this.description, this.errorMsg, this.data}); @@ -11,7 +11,7 @@ class MassSendLockGroupListEntity { errorCode = json['errorCode']; description = json['description']; errorMsg = json['errorMsg']; - data = json['data'] != null ? LockListData.fromJson(json['data']) : null; + data = json['data'] != null ? GroupListData.fromJson(json['data']) : null; } Map toJson() { @@ -26,15 +26,49 @@ class MassSendLockGroupListEntity { } } -class LockListData { - List? lockList; +class GroupListData { + List? groupList; - LockListData({this.lockList}); + GroupListData({this.groupList}); - LockListData.fromJson(Map json) { + GroupListData.fromJson(Map json) { if (json['list'] != null) { - lockList = []; + groupList = []; json['list'].forEach((v) { + groupList!.add(GroupListItem.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = {}; + if (groupList != null) { + data['list'] = groupList!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class GroupListItem { + int? lockNum; + int? keyGroupId; + String? keyGroupName; + List? lockList; + bool _isChecked = false; + bool get isChecked => _isChecked ?? false; + + set isChecked(bool value) => _isChecked = value; + + GroupListItem( + {this.lockNum, this.keyGroupId, this.keyGroupName, this.lockList}); + + GroupListItem.fromJson(Map json) { + lockNum = json['lockNum']; + keyGroupId = json['keyGroupId']; + keyGroupName = json['keyGroupName']; + if (json['lockList'] != null) { + lockList = []; + json['lockList'].forEach((v) { lockList!.add(LockListItem.fromJson(v)); }); } @@ -42,8 +76,11 @@ class LockListData { Map toJson() { final Map data = {}; + data['lockNum'] = lockNum; + data['keyGroupId'] = keyGroupId; + data['keyGroupName'] = keyGroupName; if (lockList != null) { - data['list'] = lockList!.map((v) => v.toJson()).toList(); + data['lockList'] = lockList!.map((v) => v.toJson()).toList(); } return data; } @@ -52,10 +89,12 @@ class LockListData { class LockListItem { int? lockId; String? lockAlias; - bool? isCheck = false; - bool? isRefresh = false; + bool _isChecked = false; + bool get isChecked => _isChecked ?? false; - LockListItem({this.lockId, this.lockAlias, this.isRefresh, this.isCheck}); + set isChecked(bool value) => _isChecked = value; + + LockListItem({this.lockId, this.lockAlias}); LockListItem.fromJson(Map json) { lockId = json['lockId']; diff --git a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart index 5ca6b000..b2cf104b 100644 --- a/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart +++ b/star_lock/lib/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupList_page.dart @@ -4,7 +4,6 @@ import 'package:get/utils.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupCell.dart'; import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; -import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/LockGroupListEntity.dart'; import 'package:star_lock/network/api_repository.dart'; import 'package:star_lock/tools/ExpandedListView.dart'; import 'package:star_lock/tools/baseGetXController.dart'; @@ -21,9 +20,9 @@ class MassSendLockGroupListPage extends StatefulWidget { } class _MassSendLockGroupListPageState extends State { - List lockListByGroup = []; List lockGroupList = []; - List clickIndexList = []; + List selectGroupIdList = []; + List selectLockIdList = []; int clickIndex = -1; @override @@ -72,7 +71,10 @@ class _MassSendLockGroupListPageState extends State { SubmitBtn( btnName: '确定', onClick: () { - Navigator.pop(context); + print('得到lockid为$selectLockIdList '); + Map resultMap = {}; + resultMap['selectLockIdList'] = selectLockIdList; + Navigator.pop(context, resultMap); }, ), SizedBox( @@ -83,12 +85,13 @@ class _MassSendLockGroupListPageState extends State { } //分组列表请求 - Future> mockNetworkDataRequest() async { - LockGroupListEntity entity = await ApiRepository.to.lockGroupList('1'); - List dataList = []; + Future> mockNetworkDataRequest() async { + MassSendLockGroupListEntity entity = + await ApiRepository.to.lockGroupList('1'); + List dataList = []; if (entity.errorCode!.codeIsSuccessful) { if (entity.data != null) { - dataList = entity.data!.itemList!; + dataList = entity.data!.groupList!; } } lockGroupList = dataList; @@ -96,28 +99,11 @@ class _MassSendLockGroupListPageState extends State { return dataList; } - //分组列表请求 - Future> listLockByGroup(String groupId) async { - MassSendLockGroupListEntity entity = - await ApiRepository.to.listLockByGroup('3', groupId); - List dataList = []; - if (entity.errorCode!.codeIsSuccessful) { - if (entity.data != null) { - dataList = entity.data!.lockList!; - } - } - - setState(() { - lockListByGroup = dataList; - }); - return dataList; - } - Widget _buildListView(BuildContext context, List itemList) { return ListView.separated( itemCount: itemList.length, itemBuilder: (context, index) { - LockGroupItem itemData = itemList[index]; + GroupListItem itemData = itemList[index]; return _buildLockExpandedList(context, index, itemData); }, shrinkWrap: true, @@ -130,20 +116,26 @@ class _MassSendLockGroupListPageState extends State { } //设备多层级列表 - Widget _buildLockExpandedList(context, index, LockGroupItem itemData) { + Widget _buildLockExpandedList(context, index, GroupListItem itemData) { + List lockItemList = itemData.lockList ?? []; return ExpandedListTile( onTap: () { - listLockByGroup(itemData.keyGroupId.toString()); - clickIndexList.add(index); + selectGroupIdList.add(index); clickIndex = index; }, - title: itemData.keyGroupName!, - imgName: '', typeImgList: const [], + groupItem: itemData, child: massSendLockGroupCell(index, - currentIndex: index, - lockListByGroup: lockListByGroup, - selectLockAction: () {}), + currentIndex: index, lockListByGroup: lockItemList, + selectLockAction: (selectIndex, selectLockId) { + LockListItem lockItem = lockItemList[selectIndex]; + setState(() { + lockItem.isChecked = !lockItem.isChecked; + if (lockItem.isChecked) { + selectLockIdList.add(lockItem.lockId); + } + }); + }), ); } } diff --git a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_page.dart b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_page.dart index 8221a481..38935c39 100644 --- a/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_page.dart +++ b/star_lock/lib/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/lockSeletGrouping_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/basicInformation/KeyDetailEntity.dart'; import 'package:star_lock/main/lockDetail/lcokSet/basicInformation/lockSeletGrouping/LockGroupListEntity.dart'; import 'package:star_lock/network/api_repository.dart'; @@ -38,10 +39,10 @@ class _LockSeletGroupingPageState extends State { barTitle: TranslationLoader.lanKeys!.selectGroup!.tr, haveBack: true, backgroundColor: AppColors.mainColor), - body: FutureBuilder>( + body: FutureBuilder>( future: mockNetworkDataRequest(), builder: (BuildContext context, - AsyncSnapshot> snapshot) { + AsyncSnapshot> snapshot) { //请求结束 if (snapshot.connectionState == ConnectionState.done) { if (snapshot.hasError) { @@ -49,7 +50,7 @@ class _LockSeletGroupingPageState extends State { return const Text('请求失败'); } else { //请求成功 - final List itemData = snapshot.data!; + final List itemData = snapshot.data!; return Column( children: [ @@ -127,13 +128,14 @@ class _LockSeletGroupingPageState extends State { } //分组列表请求 - Future> mockNetworkDataRequest() async { - LockGroupListEntity entity = await ApiRepository.to.lockGroupList('1'); + Future> mockNetworkDataRequest() async { + MassSendLockGroupListEntity entity = + await ApiRepository.to.lockGroupList('1'); if (entity.errorCode!.codeIsSuccessful) { if (entity.data != null) { - return entity.data!.itemList!; + return entity.data!.groupList!; } else { - List dataList = []; + List dataList = []; return dataList; } } else { diff --git a/star_lock/lib/mine/mineSet/authorityManagement/authorityManagement_page.dart b/star_lock/lib/mine/mineSet/authorityManagement/authorityManagement_page.dart index 62403282..bd4896dd 100644 --- a/star_lock/lib/mine/mineSet/authorityManagement/authorityManagement_page.dart +++ b/star_lock/lib/mine/mineSet/authorityManagement/authorityManagement_page.dart @@ -4,6 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get_utils/get_utils.dart'; import 'package:star_lock/appRouters.dart'; import 'package:star_lock/app_settings/app_colors.dart'; +import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; import 'package:star_lock/tools/ExpandedListView.dart'; import 'package:star_lock/tools/submitBtn.dart'; import 'package:star_lock/translations/trans_lib.dart'; @@ -167,9 +168,10 @@ class _AuthorityManagementPageState extends State Widget _buildDeviceExpandedList(context, index, deviceName) { return ExpandedListTile( onTap: () => print("onTap."), - title: deviceName, - imgName: 'images/icon_lock.png', + // title: deviceName, + // imgName: 'images/icon_lock.png', typeImgList: const [], + groupItem: GroupListItem(), child: ListView.separated( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, @@ -205,9 +207,10 @@ class _AuthorityManagementPageState extends State Widget _buildNameExpandedList(context, index, deviceName) { return ExpandedListTile( onTap: () => print("onTap."), - title: deviceName, - imgName: 'images/controls_user.png', + // title: deviceName, + // imgName: 'images/controls_user.png', typeImgList: const ['images/icon_password.png', 'images/icon_card.png'], + groupItem: GroupListItem(), child: ListView.separated( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, diff --git a/star_lock/lib/network/api_provider.dart b/star_lock/lib/network/api_provider.dart index b7aa027f..df74025c 100644 --- a/star_lock/lib/network/api_provider.dart +++ b/star_lock/lib/network/api_provider.dart @@ -619,7 +619,7 @@ class ApiProvider extends BaseProvider { })); Future canSendKey( - String endDate, String keyGroupIdList, String lockIdList) => + String endDate, List keyGroupIdList, List lockIdList) => post( canSendKeyURL.toUrl, jsonEncode({ @@ -630,21 +630,30 @@ class ApiProvider extends BaseProvider { Future batchSendKey( String endDate, - String keyGroupIdList, - String lockIdList, + List keyGroupIdList, + List lockIdList, String createUser, String isRemoteUnlock, String keyNameForAdmin, String receiverUsername, String startDate, String countryCode, - String usernameType) => + String usernameType, + List weekDays) => post( batchSendKeyURL.toUrl, jsonEncode({ 'endDate': endDate, 'keyGroupIdList': keyGroupIdList, - 'lockIdList': lockIdList + 'lockIdList': lockIdList, + 'createUser': createUser, + 'isRemoteUnlock': isRemoteUnlock, + 'keyNameForAdmin': keyNameForAdmin, + 'receiverUsername': receiverUsername, + 'startDate': startDate, + 'countryCode': countryCode, + 'usernameType': usernameType, + 'weekDays': weekDays, })); } diff --git a/star_lock/lib/network/api_repository.dart b/star_lock/lib/network/api_repository.dart index 58b304ea..98e65693 100644 --- a/star_lock/lib/network/api_repository.dart +++ b/star_lock/lib/network/api_repository.dart @@ -370,9 +370,9 @@ class ApiRepository { } //锁分组列表 - Future lockGroupList(String type) async { + Future lockGroupList(String type) async { final res = await apiProvider.lockGroupList(type); - return LockGroupListEntity.fromJson(res.body); + return MassSendLockGroupListEntity.fromJson(res.body); } //删除电子钥匙 @@ -542,7 +542,7 @@ class ApiRepository { //群发钥匙检查 Future canSendKey( - String endDate, String keyGroupIdList, String lockIdList) async { + String endDate, List keyGroupIdList, List lockIdList) async { final res = await apiProvider.canSendKey(endDate, keyGroupIdList, lockIdList); return KeyDetailEntity.fromJson(res.body); @@ -551,15 +551,16 @@ class ApiRepository { //群发钥匙检查 Future batchSendKey( String endDate, - String keyGroupIdList, - String lockIdList, + List keyGroupIdList, + List lockIdList, String createUser, String isRemoteUnlock, String keyNameForAdmin, String receiverUsername, String startDate, String countryCode, - String usernameType) async { + String usernameType, + List weekDays) async { final res = await apiProvider.batchSendKey( endDate, keyGroupIdList, @@ -570,7 +571,8 @@ class ApiRepository { receiverUsername, startDate, countryCode, - usernameType); + usernameType, + weekDays); return KeyDetailEntity.fromJson(res.body); } diff --git a/star_lock/lib/tools/ExpandedListView.dart b/star_lock/lib/tools/ExpandedListView.dart index fae30663..cee2311a 100644 --- a/star_lock/lib/tools/ExpandedListView.dart +++ b/star_lock/lib/tools/ExpandedListView.dart @@ -1,22 +1,23 @@ +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/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; class ExpandedListTile extends StatefulWidget { const ExpandedListTile( {Key? key, - required this.title, this.child, this.onTap, - required this.typeImgList, - required this.imgName}) + required this.groupItem, + required this.typeImgList}) : super(key: key); - final String title; - final String imgName; final Widget? child; final List typeImgList; final Function()? onTap; + final GroupListItem groupItem; @override _ExpandedListTileState createState() => _ExpandedListTileState(); @@ -78,7 +79,9 @@ class _ExpandedListTileState extends State { //点击左侧是否勾选按钮 setState(() { _isCheck = !_isCheck; + widget.groupItem.isChecked = _isCheck; }); + widget.onTap?.call(); }, )); widgetList.add(GestureDetector( @@ -96,7 +99,7 @@ class _ExpandedListTileState extends State { width: 10.w, ), Text( - widget.title, + widget.groupItem.keyGroupName ?? '', style: TextStyle(color: AppColors.blackColor, fontSize: 22.sp), ), Expanded( @@ -119,7 +122,6 @@ class _ExpandedListTileState extends State { setState(() { _isExpanded = !_isExpanded; }); - widget.onTap?.call(); }, )); return widgetList;