1,新增我的设置--授权管理员关联锁列表页面

2,获取授权管理员下锁列表接口对接
This commit is contained in:
Daisy 2024-05-22 15:17:25 +08:00
parent e8fa6b5856
commit b84c448d5e
8 changed files with 197 additions and 11 deletions

View File

@ -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()),
];
}

View File

@ -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<void> administratorOwnLockListRequest() async {
var entity = await ApiRepository.to.administratorOwnLockList(
uid: state.itemData.value.uid ?? 0,
);
if (entity.errorCode!.codeIsSuccessful) {
EasyLoading.showToast('修改成功', duration: 2000.milliseconds);
}
}
Future<void> openModalBottomSheet() async {
final List<String> textList = <String>['添加'.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();
}
}

View File

@ -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<AdministratorAssociationLockPage> createState() =>
_AdministratorAssociationLockPageState();
}
class _AdministratorAssociationLockPageState
extends State<AdministratorAssociationLockPage> {
final AdministratorAssociationLockLogic logic =
Get.put(AdministratorAssociationLockLogic());
final AdministratorAssociationLockState state =
Get.find<AdministratorAssociationLockLogic>().state;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
barTitle: ''.tr,
haveBack: true,
backgroundColor: AppColors.mainColor,
actionsList: <Widget>[
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(() {});
}),
);
}
}

View File

@ -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<AuthorizedAdminListItem> itemData = AuthorizedAdminListItem().obs;
RxList selectLockIdList = [].obs;
}

View File

@ -88,11 +88,12 @@ class _AdministratorDetailsPageState extends State<AdministratorDetailsPage> {
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: <String, AuthorizedAdminListItem>{
'itemData': state.itemData.value,
});
}),
Container(height: 10.h),
CommonItem(

View File

@ -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
}

View File

@ -374,12 +374,15 @@ class ApiProvider extends BaseProvider {
}));
//
Future<Response> getStarLockListInfo(int pageNo, int pageSize,{bool isUnShowLoading = true}) => post(
getStarLockInfoURL.toUrl,
jsonEncode({
"pageNo": pageNo,
'pageSize': pageSize,
}),isUnShowLoading: isUnShowLoading);
Future<Response> getStarLockListInfo(int pageNo, int pageSize,
{bool isUnShowLoading = true}) =>
post(
getStarLockInfoURL.toUrl,
jsonEncode({
"pageNo": pageNo,
'pageSize': pageSize,
}),
isUnShowLoading: isUnShowLoading);
//
Future<Response> getLockSettingInfoData(String lockId) => post(
@ -1499,6 +1502,10 @@ class ApiProvider extends BaseProvider {
Future<Response> authorizedAdminDetail(int uid) =>
post(authorizedAdminDetailURL.toUrl, jsonEncode({'uid': uid}));
//
Future<Response> administratorOwnLockList(int uid) =>
post(administratorOwnLockListURL.toUrl, jsonEncode({'uid': uid}));
Future<Response> deleteAuthorizedAdmin(
String uid, String includeUnderlings) =>
post(deleteAdministratorURL.toUrl,

View File

@ -1012,6 +1012,13 @@ class ApiRepository {
return AdministratorDetailEntity.fromJson(res.body);
}
//
Future<AuthorizedAdminListEntity> administratorOwnLockList(
{required int uid}) async {
final res = await apiProvider.administratorOwnLockList(uid);
return AuthorizedAdminListEntity.fromJson(res.body);
}
//
Future<AuthorizedAdminListEntity> deleteAuthorizedAdmin(
String uid, String includeUnderlings) async {