1,电子钥匙、密码模块支持搜索功能

This commit is contained in:
Daisy 2023-10-18 16:20:46 +08:00
parent 860300e16a
commit 5b8524bfaa
11 changed files with 69 additions and 279 deletions

View File

@ -17,7 +17,8 @@ class AuthorizedAdminListLogic extends BaseGetXController {
state.pageNum.toString(),
state.pageSize.toString(),
'0',
'0');
'0',
state.searchStr.value);
List<ElectronicKeyListItem> dataList = [];
if (entity.errorCode!.codeIsSuccessful) {
print("电子钥匙列表成功:${entity.data?.itemList}");

View File

@ -25,9 +25,6 @@ class _AuthorizedAdminListPageState extends State<AuthorizedAdminListPage> {
final logic = Get.put(AuthorizedAdminListLogic());
final state = Get.find<AuthorizedAdminListLogic>().state;
// late KeyInfos keyInfo;
// late LockMainEntity lockMainEntity;
@override
void initState() {
super.initState();
@ -45,14 +42,6 @@ class _AuthorizedAdminListPageState extends State<AuthorizedAdminListPage> {
@override
Widget build(BuildContext context) {
// dynamic obj = ModalRoute.of(context)?.settings.arguments;
// if (obj != null && (obj["lockMainEntity"] != null)) {
// lockMainEntity = obj["lockMainEntity"];
// }
// if (obj != null && (obj["keyInfo"] != null)) {
// keyInfo = obj["keyInfo"];
// }
return Scaffold(
backgroundColor: AppColors.mainBackgroundColor,
appBar: TitleAppBar(
@ -88,82 +77,9 @@ class _AuthorizedAdminListPageState extends State<AuthorizedAdminListPage> {
height: 64.h,
)
],
)
/*
FutureBuilder<List<ElectronicKeyListItem>>(
future: mockNetworkDataRequest(),
builder: (BuildContext context,
AsyncSnapshot<List<ElectronicKeyListItem>> snapshot) {
//
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
//
return const Text('请求失败');
} else {
//
final List<ElectronicKeyListItem> itemData = snapshot.data!;
return Column(
children: [
Expanded(child: _buildMainUI(itemData)),
SizedBox(
height: 20.h,
),
AddBottomWhiteBtn(
btnName:
TranslationLoader.lanKeys!.addAuthorizedAdmin!.tr,
onClick: () {
Navigator.pushNamed(
context, Routers.authorizedAdminManagePage,
arguments: {
"lockMainEntity": lockMainEntity,
"keyInfo": keyInfo
}).then((val) {
if (val != null) {
mockNetworkDataRequest();
setState(() {});
}
});
},
),
SizedBox(
height: 64.h,
)
],
);
}
} else {
// loading
return Container();
}
}),
*/
);
));
}
// // keyRight=1
// Future<List<ElectronicKeyListItem>> mockNetworkDataRequest() async {
// ElectronicKeyListEntity entity = await ApiRepository.to.electronicKeyList(
// '0',
// keyInfo.keyId.toString(),
// '',
// keyInfo.lockId.toString(),
// '',
// '1',
// '20',
// '0',
// '1');
// if (entity.errorCode!.codeIsSuccessful) {
// print("电子钥匙列表成功:${entity.data?.itemList}");
// }
// if (entity.data != null) {
// return entity.data!.itemList;
// } else {
// List<ElectronicKeyListItem> dataList = [];
// return dataList;
// }
// }
Widget _buildMainUI(itemData) {
List<ElectronicKeyListItem> getItemData = itemData;
return getItemData.isEmpty

View File

@ -8,6 +8,7 @@ class AuthorizedAdminListState {
var pageNum = 1.obs; //
final pageSize = 20.obs; //
final itemDataList = <ElectronicKeyListItem>[].obs;
final searchStr = ''.obs;
AuthorizedAdminListState() {
Map map = Get.arguments;

View File

@ -18,7 +18,8 @@ class ElectronicKeyListLogic extends BaseGetXController {
state.pageNum.toString(),
state.pageSize.toString(),
'0',
'0');
'0',
state.searchController.text);
List<ElectronicKeyListItem> dataList = [];
if (entity.errorCode!.codeIsSuccessful) {
print("电子钥匙列表成功:${entity.data?.itemList}");

View File

@ -25,7 +25,6 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
final logic = Get.put(ElectronicKeyListLogic());
final state = Get.find<ElectronicKeyListLogic>().state;
late RefreshController _refreshController;
// late List<ElectronicKeyListItem> itemDataList = [];
@override
void initState() {
@ -92,73 +91,7 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
height: 64.h,
)
],
)
/*
FutureBuilder<List<ElectronicKeyListItem>>(
future: logic.mockNetworkDataRequest(),
builder: (BuildContext context,
AsyncSnapshot<List<ElectronicKeyListItem>> snapshot) {
//
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
//
return const Text('请求失败');
} else {
//
itemDataList = snapshot.data!;
return Column(
children: [
_searchWidget(),
SizedBox(
height: 20.h,
),
Expanded(
child: itemDataList.isEmpty
? const NoData()
: SmartRefresher(
controller: _refreshController,
onRefresh: _refresh,
onLoading: _loadMore,
header: ClassicHeader(
height: 45.h,
releaseText: '松开手刷新',
refreshingText: '刷新中',
completeText: '刷新完成',
failedText: '刷新失败',
idleText: '下拉刷新',
),
child: _buildMainUI(itemDataList),
)),
AddBottomWhiteBtn(
btnName: TranslationLoader.lanKeys!.sendKey!.tr,
onClick: () {
Navigator.pushNamed(
context, Routers.sendElectronicKeyManagePage,
arguments: {
"lockMainEntity": state.lockMainEntity.value,
"keyInfo": state.keyInfo.value
}).then((val) {
if (val != null) {
logic.mockNetworkDataRequest();
setState(() {});
}
});
},
),
SizedBox(
height: 64.h,
)
],
);
}
} else {
// loading
return Container();
}
}),
*/
);
));
}
///
@ -196,7 +129,10 @@ class _ElectronicKeyListPageState extends State<ElectronicKeyListPage> {
maxLines: 1,
// controller: _controller,
autofocus: false,
controller: state.searchController,
onSubmitted: (value) {
logic.mockNetworkDataRequest();
},
decoration: InputDecoration(
//
contentPadding: const EdgeInsets.only(

View File

@ -1,8 +1,10 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart';
import 'package:star_lock/main/lockMian/entity/lockInfoEntity.dart';
class ElectronicKeyListState {
TextEditingController searchController = TextEditingController(); ///
final keyInfo = KeyInfos().obs;
final lockMainEntity = LockMainEntity().obs;
var pageNum = 1.obs; //

View File

@ -8,22 +8,17 @@ class PasswordKeyListLogic extends BaseGetXController {
final PasswordKeyListState state = PasswordKeyListState();
//
Future<List<PasswordKeyListItem>> mockNetworkDataRequest() async {
void mockNetworkDataRequest() async {
PasswordKeyListEntity entity = await ApiRepository.to.passwordKeyList(
'0',
state.keyInfo.value.lockId.toString(),
'0',
state.pageNum.toString(),
state.pageSize.toString());
List<PasswordKeyListItem> dataList = [];
state.pageSize.toString(),
state.searchController.text);
if (entity.errorCode!.codeIsSuccessful) {
print("密码钥匙列表成功:${entity.data?.itemList}");
if (entity.data != null) {
dataList = entity.data!.itemList!;
}
state.itemDataList.value = entity.data!.itemList!;
}
state.itemDataList.value = dataList;
return dataList;
}
//

View File

@ -23,7 +23,6 @@ class PasswordKeyListPage extends StatefulWidget {
class _PasswordKeyListPageState extends State<PasswordKeyListPage> {
final logic = Get.put(PasswordKeyListLogic());
final state = Get.find<PasswordKeyListLogic>().state;
// late List<PasswordKeyListItem> _itemDataList = [];
late RefreshController _refreshController;
@ -92,102 +91,32 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage> {
height: 42.h,
)
],
)
/*
FutureBuilder<List<PasswordKeyListItem>>(
future: logic.mockNetworkDataRequest(),
builder: (BuildContext context,
AsyncSnapshot<List<PasswordKeyListItem>> snapshot) {
//
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.hasError) {
//
return const Text('请求失败');
} else {
//
_itemDataList = snapshot.data!;
return Column(
children: [
_searchWidget(),
SizedBox(
height: 20.h,
),
Expanded(
child: _itemDataList.isEmpty
? const NoData()
: SmartRefresher(
controller: _refreshController,
onRefresh: _refresh,
onLoading: _loadMore,
enablePullUp: true,
enablePullDown: true,
header: ClassicHeader(
height: 45.h,
releaseText: '松开手刷新',
refreshingText: '刷新中',
completeText: '刷新完成',
failedText: '刷新失败',
idleText: '下拉刷新',
),
child: _buildMainUI(_itemDataList),
)),
SizedBox(
height: 20.h,
),
AddBottomWhiteBtn(
btnName: TranslationLoader.lanKeys!.getPassword!.tr,
onClick: () {
Navigator.pushNamed(
context, Routers.passwordKeyManagePage,
arguments: {
"lockMainEntity": state.lockMainEntity.value,
"keyInfo": state.keyInfo.value
}).then((val) {
if (val != null) {
logic.mockNetworkDataRequest();
setState(() {});
}
});
}),
SizedBox(
height: 42.h,
)
],
);
}
} else {
// loading
return Container();
}
}),
*/
);
));
}
///
Future<void> _loadMore() async {
if (state.pageNum.value == 1) {
if (state.itemDataList.length < 10) {
_refreshController.loadComplete();
} else {
state.pageNum.value++;
await logic.mockNetworkDataRequest();
_refreshController.loadComplete();
}
} else {
state.pageNum.value++;
await logic.mockNetworkDataRequest();
_refreshController.loadComplete();
}
}
// ///
// Future<void> _loadMore() async {
// if (state.pageNum.value == 1) {
// if (state.itemDataList.length < 10) {
// _refreshController.loadComplete();
// } else {
// state.pageNum.value++;
// await logic.mockNetworkDataRequest();
// _refreshController.loadComplete();
// }
// } else {
// state.pageNum.value++;
// await logic.mockNetworkDataRequest();
// _refreshController.loadComplete();
// }
// }
///
Future<void> _refresh() async {
state.pageNum.value = 1;
await logic.mockNetworkDataRequest();
_refreshController.refreshCompleted();
}
// ///
// Future<void> _refresh() async {
// state.pageNum.value = 1;
// await logic.mockNetworkDataRequest();
// _refreshController.refreshCompleted();
// }
Widget _searchWidget() {
return Container(
@ -200,7 +129,10 @@ class _PasswordKeyListPageState extends State<PasswordKeyListPage> {
maxLines: 1,
// controller: _controller,
autofocus: false,
controller: state.searchController,
onSubmitted: (value) {
logic.mockNetworkDataRequest();
},
decoration: InputDecoration(
//
contentPadding: const EdgeInsets.only(

View File

@ -1,3 +1,4 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.dart';
import 'package:star_lock/main/lockMian/entity/lockInfoEntity.dart';
@ -8,6 +9,7 @@ class PasswordKeyListState {
var pageNum = 1.obs; //
final pageSize = 20.obs; //
final itemDataList = <PasswordKeyListItem>[].obs;
final TextEditingController searchController = TextEditingController();
PasswordKeyListState() {
Map map = Get.arguments;

View File

@ -102,7 +102,8 @@ class ApiProvider extends BaseProvider {
String pageNo,
String pageSize,
String startDate,
String keyRight) =>
String keyRight,
String searchStr) =>
post(
electronicKeyListURL.toUrl,
jsonEncode({
@ -114,7 +115,8 @@ class ApiProvider extends BaseProvider {
'pageNo': pageNo,
'pageSize': pageSize,
'startDate': startDate,
'keyRight': keyRight
'keyRight': keyRight,
'searchStr': searchStr
}));
Future<Response> sendElectronicKey(
@ -323,12 +325,12 @@ class ApiProvider extends BaseProvider {
post(getWifiServiceIpURL.toUrl, jsonEncode({}));
Future<Response> passwordKeyList(
String keyStatus,
String lockId,
String operatorUid,
String pageNo,
String pageSize,
) =>
String keyStatus,
String lockId,
String operatorUid,
String pageNo,
String pageSize,
String searchStr) =>
post(
passwordKeyListURL.toUrl,
jsonEncode({
@ -336,7 +338,8 @@ class ApiProvider extends BaseProvider {
'lockId': lockId,
'operatorUid': operatorUid,
'pageNo': pageNo,
'pageSize': pageSize
'pageSize': pageSize,
'searchStr': searchStr
}));
Future<Response> resetPasswordKey(String lockId, String operatorUid) => post(
@ -960,7 +963,7 @@ class ApiProvider extends BaseProvider {
// ICCard序号
Future<Response> updateIdCardUserNoLoadData(
String lockId, String cardId, String cardUserNo) =>
String lockId, String cardId, String cardUserNo) =>
post(
updateICCardUserNoURL.toUrl,
jsonEncode(

View File

@ -128,9 +128,10 @@ class ApiRepository {
String pageNo,
String pageSize,
String startDate,
String keyRight) async {
String keyRight,
String searchStr) async {
final res = await apiProvider.electronicKeyList(endDate, keyId, keyStatus,
lockId, operatorUid, pageNo, pageSize, startDate, keyRight);
lockId, operatorUid, pageNo, pageSize, startDate, keyRight, searchStr);
return ElectronicKeyListEntity.fromJson(res.body);
}
@ -301,14 +302,14 @@ class ApiRepository {
//
Future<PasswordKeyListEntity> passwordKeyList(
String keyStatus,
String lockId,
String operatorUid,
String pageNo,
String pageSize,
) async {
String keyStatus,
String lockId,
String operatorUid,
String pageNo,
String pageSize,
String searchStr) async {
final res = await apiProvider.passwordKeyList(
keyStatus, lockId, operatorUid, pageNo, pageSize);
keyStatus, lockId, operatorUid, pageNo, pageSize, searchStr);
return PasswordKeyListEntity.fromJson(res.body);
}