初始化

This commit is contained in:
谢宇宁
2026-09-15 15:44:13 +07:00
commit a23ba685e9
1065 changed files with 101122 additions and 0 deletions
@@ -0,0 +1,364 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:hgdj/assets_tool/app_colors.dart';
import 'package:hgdj/assets_tool/images.dart';
import 'package:hgdj/extension/extensions.dart';
import 'package:hgdj/hj_model/mine/exchange/bill_item_model.dart';
import 'package:hgdj/hj_utils/date_time_util.dart';
import 'package:hgdj/hj_utils/screen.dart';
import 'package:hgdj/tools_base/toast.dart';
import '../withdraw_details_model.dart';
class GoldRecordItem extends StatelessWidget {
final BillItemModel model;
const GoldRecordItem(this.model, {super.key});
@override
Widget build(BuildContext context) {
return Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
12.sizeBoxH,
Text(
model.tranType ?? '',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Colors.white,
fontSize: 14,
fontWeight: FontWeight.w400),
),
4.sizeBoxH,
Text(
model.desc ?? '',
style: TextStyle(
color: Colors.white.withValues(alpha: .5),
fontSize: 12,
fontWeight: FontWeight.w400),
),
4.sizeBoxH,
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
model.createdAt.utcToYMDHMS(),
style: TextStyle(
color: Colors.white.withValues(alpha: .5),
fontSize: 12,
fontWeight: FontWeight.w400),
),
Text(
'${model.realCount}${model.unit}',
style: const TextStyle(
color: Color(0xffF68804),
fontSize: 14,
fontWeight: FontWeight.w400),
),
],
),
12.sizeBoxH,
1.line,
],
),
),
],
);
}
}
//充值记录
class RechargeRecordItem extends StatelessWidget {
final ListBean model;
const RechargeRecordItem(this.model, {super.key});
@override
Widget build(BuildContext context) {
return Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
"${model.productName ?? ""}",
style: TextStyle(
color: Colors.white,
fontSize: 14,
fontWeight: FontWeight.w500,
),
),
2.sizeBoxH,
InkWell(
enableFeedback: false,
onTap: () {
///复制到剪切板
Clipboard.setData(ClipboardData(text: model.orderId ?? ''));
showToast('复制成功');
},
child: Row(
children: [
Flexible(
child: Text(
'账单编号' + ': ${model.orderId}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 14,
color: Color(0xE5FFFFFF),
fontWeight: FontWeight.w500),
),
),
2.sizeBoxW,
Image.asset(
'icon_copy.png'.mineImgPath,
width: 24,
),
],
),
),
2.sizeBoxH,
Text(
"状态: ${getStatus(model.status ?? 0)}",
style: TextStyle(
color: Color(0xffF68804),
fontSize: 12,
),
),
2.sizeBoxH,
Text(
model.createdAt?.utcToYMD() ?? "",
style: TextStyle(fontSize: 12, color: Color(0xff525252)),
),
12.sizeBoxH,
0.5.line,
],
),
);
}
///支付状态
String getStatus(int status) {
switch (status) {
case 1:
return "进行中";
case 2:
return "购买失败";
case 3:
return "购买成功";
}
return "未知";
}
Color getStatusColor(int status) {
var statusStr = Color(0xffffd382);
switch (status) {
case 2:
statusStr = Color(0xffFF1060);
break;
case 3:
statusStr = Color(0xff28C445);
break;
}
return statusStr;
}
}
class InComeRecordItem extends StatelessWidget {
final IncomeModel model;
const InComeRecordItem(this.model, {super.key});
@override
Widget build(BuildContext context) {
return Container(
child: Column(children: [
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"${model.tranType}",
style: const TextStyle(
color: Color(0xFFEFEFEF),
fontWeight: FontWeight.w500,
fontSize: 14.0),
),
Container(
margin: EdgeInsets.symmetric(vertical: 4),
child: Text(
model.desc ?? "",
style: TextStyle(fontSize: 12, color: Colors.white60),
),
),
Text(
DateTimeUtil.utc2iso(model.createdAt ?? ''),
style: const TextStyle(
color: Color(0xFF525252),
fontWeight: FontWeight.w400,
fontSize: 12.0),
),
12.sizeBoxH,
],
),
),
12.sizeBoxW,
Text(
model.tranTypeInt == 111
? "+${model.actualAmount}"
: "+${model.actualAmount}金币",
style: const TextStyle(
color: const Color(0xFFF68804),
fontWeight: FontWeight.w400,
fontSize: 12.0),
textAlign: TextAlign.left)
],
),
0.5.line,
]));
}
}
//提现明细cell
class WithdrawalRecordItem extends StatefulWidget {
final ListBean model;
const WithdrawalRecordItem(this.model, {super.key});
@override
State<WithdrawalRecordItem> createState() => _WithdrawalRecordItemState();
}
class _WithdrawalRecordItemState extends State<WithdrawalRecordItem> {
ListBean get model => widget.model;
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 4),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
12.sizeBoxH,
Text(
'${(model.money ?? 0) ~/ 100}',
style: TextStyle(
fontSize: 14,
color: AppColors.actionRed,
fontWeight: FontWeight.w500),
),
6.sizeBoxH,
Row(
children: [
Expanded(
child: Text(
'账单编号' + ': ${model.id}',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 14,
color: Color(0xE5FFFFFF),
fontWeight: FontWeight.w500),
),
),
InkWell(
enableFeedback: false,
onTap: () {
///复制到剪切板
Clipboard.setData(ClipboardData(text: model.id ?? ''));
showToast('复制成功');
},
child: Image.asset(
'mine_copy.png'.mineImgPath,
width: 24,
),
)
],
),
8.sizeBoxH,
Text(
'${getPayType(model.payType ?? "")}${getStatus(model.status ?? 0)}',
style: TextStyle(fontSize: 12, color: getStatusColor()),
),
6.sizeBoxH,
Row(
children: [
Text(
DateTimeUtil.utc2iso(model.createdAt ?? ''),
style: TextStyle(fontSize: 12, color: Color(0x8CFFFFFF)),
),
Spacer(),
if (model.status != 5 && model.status != 1) ...[
InkWell(
enableFeedback: false,
onTap: () => setState(() {
model.showReason = !model.showReason;
}),
child: Text(
'查看原因',
style: TextStyle(fontSize: 12, color: AppColors.actionRed),
),
)
],
],
),
if (model.showReason) ...[
12.sizeBoxH,
Text(
'${model.statusDesc}',
style: TextStyle(fontSize: 12, color: Colors.white),
),
],
12.sizeBoxH,
0.5.line,
],
),
);
}
String getPayType(String payType) {
if (payType.endsWith("alipay")) {
return "支付宝";
} else if (payType.endsWith("usdt")) {
return "USDT";
} else {
return "银行卡";
}
}
///支付状态
String getStatus(int status) {
switch (status) {
case 1:
return '提现审核中';
case 2:
return '审核通过,转账中';
case 3:
return '提现已拒绝';
case 4:
return '未知错误';
case 5:
return '提现成功';
case 6:
return '提现失败';
}
return '';
}
///支付状态
Color getStatusColor() {
if (model.status == 5) {
return Color(0xff0360FC);
} else {
return Color(0x8CFFFFFF);
}
}
}