179 lines
6.2 KiB
Dart
179 lines
6.2 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 _buildView(BuildContext context) {
|
|
return <Widget>[
|
|
_condition(context),
|
|
_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 _condition(BuildContext context) {
|
|
return const Center();
|
|
}
|
|
|
|
// 主视图
|
|
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(
|
|
Text(
|
|
WalletType.values
|
|
.fromCode(v.walletTypeUniqueCode)
|
|
?.title ??
|
|
"未知",
|
|
textAlign: TextAlign.center,
|
|
).center(),
|
|
),
|
|
],
|
|
),
|
|
)
|
|
.toList(),
|
|
));
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final theme = FTheme.of(context);
|
|
final height = context.height;
|
|
return GetBuilder<CardActiveController>(
|
|
init: CardActiveController(),
|
|
id: "card_active",
|
|
builder: (_) {
|
|
return FScaffold(
|
|
header: FHeader.nested(
|
|
title: Text("开卡管理"),
|
|
prefixActions: [
|
|
FHeaderAction.back(onPress: Get.back),
|
|
],
|
|
style: theme.headerStyle.nestedStyle.copyWith(
|
|
titleTextStyle: theme.typography.lg,
|
|
actionStyle: theme.headerStyle.nestedStyle.actionStyle.copyWith(
|
|
size: theme.typography.xl2.fontSize,
|
|
),
|
|
),
|
|
).height(height * 0.1),
|
|
content: _buildView(context),
|
|
);
|
|
},
|
|
);
|
|
}
|
|
}
|