221 lines
7.5 KiB
Dart
221 lines
7.5 KiB
Dart
import 'package:data_table_2/data_table_2.dart';
|
|
import 'package:ducafe_ui_core/ducafe_ui_core.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:forui/forui.dart';
|
|
import 'package:get/get.dart';
|
|
|
|
import 'package:pj_supermarket_cloud/common/index.dart';
|
|
|
|
import 'index.dart';
|
|
|
|
class CardActivePage extends GetView<CardActiveController> {
|
|
const CardActivePage({super.key});
|
|
|
|
// 条件
|
|
Widget _buildHeader(double height) {
|
|
final context = Get.context!;
|
|
final theme = FTheme.of(context);
|
|
return <Widget>[
|
|
appBack(
|
|
context,
|
|
height: height,
|
|
onTap: () => Get.offAndToNamed(RouteNames.panel),
|
|
),
|
|
Spacer(),
|
|
FButton(
|
|
prefix: FIcon(
|
|
FAssets.icons.idCard,
|
|
size: theme.typography.base.fontSize,
|
|
),
|
|
label: Text(
|
|
'读卡',
|
|
style: theme.typography.base,
|
|
),
|
|
style: FButtonStyle.secondary,
|
|
onPress: () => controller.doReadCard(),
|
|
),
|
|
SizedBox(width: 20.w),
|
|
FButton(
|
|
prefix: FIcon(
|
|
FAssets.icons.search,
|
|
size: theme.typography.base.fontSize,
|
|
),
|
|
label: Text(
|
|
'搜索',
|
|
style: theme.typography.base.copyWith(
|
|
color: theme.colorScheme.secondary,
|
|
),
|
|
),
|
|
onPress: () => controller.doPage(),
|
|
),
|
|
].toRow();
|
|
}
|
|
|
|
// 主视图
|
|
Widget _buildView() {
|
|
final context = Get.context!;
|
|
return <Widget>[
|
|
_buildTable(context).expanded(),
|
|
Obx(() => appPage(
|
|
context,
|
|
pageNo: controller.currentPage.value,
|
|
pageSize: controller.pageSize.value,
|
|
total: controller.totalPage.value,
|
|
onPageChanged: (page) => controller.doPage(page: page),
|
|
))
|
|
].toColumn();
|
|
}
|
|
|
|
// 主视图
|
|
Widget _buildTable(BuildContext context) {
|
|
final theme = FTheme.of(context);
|
|
return LayoutBuilder(
|
|
builder: (BuildContext context, BoxConstraints constraints) {
|
|
final width = constraints.maxWidth;
|
|
final height = constraints.maxHeight;
|
|
final hdHeight = (height - 50.h) / 10.5;
|
|
final hdWidth = (width - 50.h) / 4.5;
|
|
return Obx(() => DataTable2(
|
|
columnSpacing: 12.w,
|
|
horizontalMargin: 12.w,
|
|
minWidth: hdWidth,
|
|
showBottomBorder: true,
|
|
headingTextStyle: theme.typography.lg,
|
|
dataTextStyle: theme.typography.base,
|
|
dataRowHeight: hdHeight,
|
|
columns: [
|
|
DataColumn2(
|
|
label: Text("编号", textAlign: TextAlign.center),
|
|
headingRowAlignment: MainAxisAlignment.center,
|
|
fixedWidth: 280.w,
|
|
),
|
|
DataColumn2(
|
|
label: Text("开卡部门", textAlign: TextAlign.center),
|
|
headingRowAlignment: MainAxisAlignment.center,
|
|
),
|
|
DataColumn2(
|
|
label: Text("绑定用户昵称", textAlign: TextAlign.center),
|
|
headingRowAlignment: MainAxisAlignment.center,
|
|
),
|
|
DataColumn2(
|
|
label: Text("绑定用户手机号", textAlign: TextAlign.center),
|
|
headingRowAlignment: MainAxisAlignment.center,
|
|
),
|
|
DataColumn2(
|
|
label: Text("饭卡类型", textAlign: TextAlign.center),
|
|
headingRowAlignment: MainAxisAlignment.center,
|
|
),
|
|
DataColumn2(
|
|
label: Text("饭卡卡号", textAlign: TextAlign.center),
|
|
headingRowAlignment: MainAxisAlignment.center,
|
|
),
|
|
DataColumn2(
|
|
label: Text("饭卡状态", textAlign: TextAlign.center),
|
|
headingRowAlignment: MainAxisAlignment.center,
|
|
),
|
|
DataColumn2(
|
|
label: Text("操作", textAlign: TextAlign.center),
|
|
headingRowAlignment: MainAxisAlignment.center,
|
|
),
|
|
],
|
|
rows: controller.tableList
|
|
.map(
|
|
(v) => DataRow(
|
|
cells: [
|
|
DataCell(
|
|
Text(
|
|
v.id ?? "未知",
|
|
textAlign: TextAlign.center,
|
|
).center(),
|
|
),
|
|
DataCell(
|
|
Text(
|
|
v.deptName ?? "未知",
|
|
textAlign: TextAlign.center,
|
|
).center(),
|
|
),
|
|
DataCell(
|
|
Text(
|
|
v.username ?? "",
|
|
textAlign: TextAlign.center,
|
|
).center(),
|
|
),
|
|
DataCell(
|
|
Text(
|
|
v.mobile ?? "",
|
|
textAlign: TextAlign.center,
|
|
).center(),
|
|
),
|
|
DataCell(
|
|
Text(
|
|
WalletType.values
|
|
.fromCode(v.walletTypeUniqueCode)
|
|
?.title ??
|
|
"未知",
|
|
textAlign: TextAlign.center,
|
|
).center(),
|
|
),
|
|
DataCell(
|
|
Text(
|
|
v.cardNumber ?? "",
|
|
textAlign: TextAlign.center,
|
|
).center(),
|
|
),
|
|
DataCell(
|
|
Text(
|
|
v.isActiveHardware == false ? "未激活" : "激活",
|
|
textAlign: TextAlign.center,
|
|
).center(),
|
|
),
|
|
DataCell(
|
|
Visibility(
|
|
visible: v.isActiveHardware == false,
|
|
replacement: FButton(
|
|
style: FButtonStyle.destructive,
|
|
prefix: FIcon(FAssets.icons.refreshCcw),
|
|
label: Text(
|
|
'重新激活',
|
|
style: theme.typography.base.copyWith(
|
|
color: theme.colorScheme.secondary,
|
|
),
|
|
),
|
|
onPress: () => controller.doRefreshAvatar(v),
|
|
),
|
|
child: FButton(
|
|
style: FButtonStyle.secondary,
|
|
prefix: FIcon(FAssets.icons.folderOpenDot),
|
|
label: Text(
|
|
'激活',
|
|
style: theme.typography.base,
|
|
),
|
|
onPress: () => controller.doWriteCard(v),
|
|
),
|
|
).center(),
|
|
),
|
|
],
|
|
),
|
|
)
|
|
.toList(),
|
|
));
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final height = 90;
|
|
return GetBuilder<CardActiveController>(
|
|
init: CardActiveController(),
|
|
id: "card_active",
|
|
builder: (_) {
|
|
return FScaffold(
|
|
header: _buildHeader(height.h)
|
|
.height(height.h)
|
|
.padding(vertical: 30.h, horizontal: 10.w),
|
|
content: _buildView(),
|
|
resizeToAvoidBottomInset: false,
|
|
);
|
|
},
|
|
);
|
|
}
|
|
}
|