From b84c448d5efb4b9bc03cae649de03e156af67b5d Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Wed, 22 May 2024 15:17:25 +0800 Subject: [PATCH] =?UTF-8?q?1=EF=BC=8C=E6=96=B0=E5=A2=9E=E6=88=91=E7=9A=84?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE--=E6=8E=88=E6=9D=83=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E5=85=B3=E8=81=94=E9=94=81=E5=88=97=E8=A1=A8=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=202=EF=BC=8C=E8=8E=B7=E5=8F=96=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E4=B8=8B=E9=94=81=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/appRouters.dart | 6 ++ .../administratorAssociationLock_logic.dart | 47 ++++++++ .../administratorAssociationLock_page.dart | 102 ++++++++++++++++++ .../administratorAssociationLock_state.dart | 15 +++ .../administratorDetails_page.dart | 9 +- lib/network/api.dart | 3 +- lib/network/api_provider.dart | 19 ++-- lib/network/api_repository.dart | 7 ++ 8 files changed, 197 insertions(+), 11 deletions(-) create mode 100644 lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_logic.dart create mode 100644 lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_page.dart create mode 100644 lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_state.dart diff --git a/lib/appRouters.dart b/lib/appRouters.dart index 20730494..d2d4e3c3 100755 --- a/lib/appRouters.dart +++ b/lib/appRouters.dart @@ -42,6 +42,7 @@ import 'package:star_lock/mine/about/webviewShow_page.dart'; import 'package:star_lock/mine/mine/safeVerify/safeVerify_page.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoEmail/mineBindPhoneOrEmail_page.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoViewSafetyProblem/minePersonInfoViewSafetyProblem_page.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_page.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorChangeDate/adminDetailChangeDate_page.dart'; import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart'; import 'package:star_lock/mine/mineSet/lockGroup/lockGroupList/lockGroupList_page.dart'; @@ -448,6 +449,8 @@ abstract class Routers { static const advancedFeaturesWebPage = '/advancedFeaturesWebPage'; // 高级功能 static const advancedFunctionRecordPage = '/advancedFunctionRecordPage'; //高级功能购买记录 + static const String administratorAssociationLockPage = + '/administratorAssociationLockPage'; //我的设置-授权管理员-关联锁 } abstract class AppRouters { @@ -1070,5 +1073,8 @@ abstract class AppRouters { GetPage( name: Routers.advancedFunctionRecordPage, page: (() => const AdvancedFunctionRecordPage())), + GetPage( + name: Routers.administratorAssociationLockPage, + page: () => const AdministratorAssociationLockPage()), ]; } diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_logic.dart b/lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_logic.dart new file mode 100644 index 00000000..09e42583 --- /dev/null +++ b/lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_logic.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_easyloading/flutter_easyloading.dart'; +import 'package:get/get.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_state.dart'; +import 'package:star_lock/network/api_repository.dart'; +import 'package:star_lock/tools/baseGetXController.dart'; +import 'package:star_lock/tools/custom_bottom_sheet.dart'; + +class AdministratorAssociationLockLogic extends BaseGetXController { + AdministratorAssociationLockState state = AdministratorAssociationLockState(); + + //获取授权管理员下锁列表 + Future administratorOwnLockListRequest() async { + var entity = await ApiRepository.to.administratorOwnLockList( + uid: state.itemData.value.uid ?? 0, + ); + if (entity.errorCode!.codeIsSuccessful) { + EasyLoading.showToast('修改成功', duration: 2000.milliseconds); + } + } + + Future openModalBottomSheet() async { + final List textList = ['添加'.tr, '删除'.tr]; + + showModalBottomSheet( + context: Get.context!, + shape: RoundedRectangleBorder( + borderRadius: BorderRadiusDirectional.circular(10)), + builder: (BuildContext context) { + return AlertBottomWidget( + topTitle: '', + items: textList, + chooseCallback: (int value) { + final int index = value; + if (index == 0) { + } else {} + }); + }); + } + + @override + void onReady() { + super.onReady(); + + administratorOwnLockListRequest(); + } +} diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_page.dart b/lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_page.dart new file mode 100644 index 00000000..2e624d04 --- /dev/null +++ b/lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_page.dart @@ -0,0 +1,102 @@ +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/massSendLockGroupCell.dart'; +import 'package:star_lock/main/lockDetail/electronicKey/massSendElectronicKey/massSendLockGroupList/massSendLockGroupListEntity.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_logic.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_state.dart'; +import 'package:star_lock/tools/ExpandedListView.dart'; + +import '../../../../../app_settings/app_colors.dart'; +import '../../../../../tools/titleAppBar.dart'; + +class AdministratorAssociationLockPage extends StatefulWidget { + const AdministratorAssociationLockPage({Key? key}) : super(key: key); + + @override + State createState() => + _AdministratorAssociationLockPageState(); +} + +class _AdministratorAssociationLockPageState + extends State { + final AdministratorAssociationLockLogic logic = + Get.put(AdministratorAssociationLockLogic()); + final AdministratorAssociationLockState state = + Get.find().state; + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.mainBackgroundColor, + appBar: TitleAppBar( + barTitle: '锁'.tr, + haveBack: true, + backgroundColor: AppColors.mainColor, + actionsList: [ + IconButton( + icon: Image.asset( + 'images/icon_bar_more.png', + height: 30.h, + width: 10.w, + ), + onPressed: logic.openModalBottomSheet, + ), + ], + ), + body: _buildListView(), + ); + } + + Widget _buildListView() { + return ListView.separated( + itemCount: state.itemLockList.length, + itemBuilder: (BuildContext context, int index) { + final GroupListItem itemData = state.itemLockList[index]; + return _buildLockExpandedList(context, index, itemData); + }, + shrinkWrap: true, + separatorBuilder: (BuildContext context, int index) { + return const Divider( + height: 1, + color: AppColors.greyLineColor, + ); + }); + } + +//设备多层级列表 + Widget _buildLockExpandedList(context, index, GroupListItem itemData) { + List lockItemList = itemData.lockList ?? []; + return ExpandedListTile( + onTap: () { + //是否选中组 + if (itemData.isChecked) { + var selectList = itemData.lockList; + for (LockListItem lockListItem in selectList!) { + lockListItem.isChecked = true; + state.selectLockIdList.value.add(lockListItem.lockId); + } + } else { + var selectList = itemData.lockList; + for (LockListItem lockListItem in selectList!) { + lockListItem.isChecked = false; + state.selectLockIdList.value.remove(lockListItem.lockId); + } + } + setState(() {}); + }, + typeImgList: const [], + groupItem: itemData, + child: massSendLockGroupCell(index, + currentIndex: index, lockListByGroup: lockItemList, isVip: true, + selectLockAction: (int selectIndex, String selectLockId) { + final LockListItem lockItem = lockItemList[selectIndex]; + lockItem.isChecked = !lockItem.isChecked; + if (lockItem.isChecked) { + state.selectLockIdList.value.add(lockItem.lockId); + } + setState(() {}); + }), + ); + } +} diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_state.dart b/lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_state.dart new file mode 100644 index 00000000..e60ce178 --- /dev/null +++ b/lib/mine/mineSet/authorizedAdministrator/administratorAssociationLock/administratorAssociationLock_state.dart @@ -0,0 +1,15 @@ +import 'package:get/get.dart'; +import 'package:star_lock/mine/mineSet/authorizedAdministrator/authorizedAdministrator/authorizedAdminListEntity.dart'; + +class AdministratorAssociationLockState { + AdministratorAssociationLockState() { + final Map map = Get.arguments; + if (map['itemData'] != null) { + itemData.value = map['itemData']; + } + } + + RxList itemLockList = [].obs; + Rx itemData = AuthorizedAdminListItem().obs; + RxList selectLockIdList = [].obs; +} diff --git a/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart b/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart index ad579644..1fa5d48e 100755 --- a/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart +++ b/lib/mine/mineSet/authorizedAdministrator/administratorDetails/administratorDetails_page.dart @@ -88,11 +88,12 @@ class _AdministratorDetailsPageState extends State { CommonItem( leftTitel: TranslationLoader.lanKeys!.lock!.tr, rightTitle: state.itemData.value.lockNum.toString(), - isHaveDirection: false, + isHaveDirection: true, action: () { - // //锁列表页面 - // Navigator.pushNamed(context, Routers.lockItemListPage, - // arguments: {'lockList': state.lockItemList}); + Get.toNamed(Routers.administratorAssociationLockPage, + arguments: { + 'itemData': state.itemData.value, + }); }), Container(height: 10.h), CommonItem( diff --git a/lib/network/api.dart b/lib/network/api.dart index 16d06347..81e7c5c7 100755 --- a/lib/network/api.dart +++ b/lib/network/api.dart @@ -143,6 +143,8 @@ abstract class Api { final String canSendKeyURL = '/keyUser/canSendKey'; //群发钥匙检查 final String batchSendKeyURL = '/key/batchSend'; //批处理群发钥匙 final String addAuthorizedAdminURL = '/authorizedAdmin/add'; //增加授权管理员 + final String administratorOwnLockListURL = + '/authorizedAdmin/ownLockList'; //获取授权管理员下锁列表 final String keyListByUserURL = '/keyUser/listByUse'; //用户拥有的锁 final String authorizedAdminListURL = '/authorizedAdmin/list'; //授权管理员列表 final String authorizedAdminDetailURL = '/authorizedAdmin/detail'; //授权管理员详情 @@ -234,5 +236,4 @@ abstract class Api { final String deleteLockCloudStorageURL = '/lockCloudStorage/delete'; //删除云存 final String getUserNoList = '/key/getUserNoList'; //获取指定锁下所有userNo - } diff --git a/lib/network/api_provider.dart b/lib/network/api_provider.dart index c44115cb..2f15be18 100755 --- a/lib/network/api_provider.dart +++ b/lib/network/api_provider.dart @@ -374,12 +374,15 @@ class ApiProvider extends BaseProvider { })); // 获取锁信息列表 - Future getStarLockListInfo(int pageNo, int pageSize,{bool isUnShowLoading = true}) => post( - getStarLockInfoURL.toUrl, - jsonEncode({ - "pageNo": pageNo, - 'pageSize': pageSize, - }),isUnShowLoading: isUnShowLoading); + Future getStarLockListInfo(int pageNo, int pageSize, + {bool isUnShowLoading = true}) => + post( + getStarLockInfoURL.toUrl, + jsonEncode({ + "pageNo": pageNo, + 'pageSize': pageSize, + }), + isUnShowLoading: isUnShowLoading); // 获取所有锁设置信息 Future getLockSettingInfoData(String lockId) => post( @@ -1499,6 +1502,10 @@ class ApiProvider extends BaseProvider { Future authorizedAdminDetail(int uid) => post(authorizedAdminDetailURL.toUrl, jsonEncode({'uid': uid})); +//获取授权管理员下锁列表 + Future administratorOwnLockList(int uid) => + post(administratorOwnLockListURL.toUrl, jsonEncode({'uid': uid})); + Future deleteAuthorizedAdmin( String uid, String includeUnderlings) => post(deleteAdministratorURL.toUrl, diff --git a/lib/network/api_repository.dart b/lib/network/api_repository.dart index 64818b1f..72bf24f1 100755 --- a/lib/network/api_repository.dart +++ b/lib/network/api_repository.dart @@ -1012,6 +1012,13 @@ class ApiRepository { return AdministratorDetailEntity.fromJson(res.body); } + //获取授权管理员下锁列表 + Future administratorOwnLockList( + {required int uid}) async { + final res = await apiProvider.administratorOwnLockList(uid); + return AuthorizedAdminListEntity.fromJson(res.body); + } + //删除授权管理员 Future deleteAuthorizedAdmin( String uid, String includeUnderlings) async {