Commit 5a21b9846e1da3d8a29d27f37b6fbd957135b9d1

Authored by wdn127929
1 parent d9803350

交易记录 && 查询 && 详情&& 退款

/*
Flutter3.x完全开发手册 https://www.flutterschool.cn/
*/
class DiscountOrderInfoModelData {
/*
{
"id": "3",
"status": "5",
"activity_id": null,
"price": "0.01",
"balance": null,
"sellerid": "8",
"openid": "oB-xJ5GoISP77QEx5zvA4F9LU-uc",
"out_trade_no": "202502241617198",
"out_refund_no": null,
"transaction_id": "4200002631202502248048942186",
"refund_id": "50302602342025022488986516546",
"re_out_trade_no": null,
"trade_state": "SUCCESS",
"trade_state_desc": "支付成功",
"out_request_no": null,
"withdraw_id": null,
"refund_cdate": null,
"cdate": "1740385039",
"sellername": "育知烤鸭旗舰店",
"applyment_sub_mchid": "1605686747",
"activity_list": [
"1605686747"
]
}
*/
String? id;
String? status;
String? activityId;
String? price;
String? balance;
String? sellerid;
String? openid;
String? outTradeNo;
String? outRefundNo;
String? transactionId;
String? refundId;
String? reOutTradeNo;
String? tradeState;
String? tradeStateDesc;
String? outRequestNo;
String? withdrawId;
String? refundCdate;
String? cdate;
String? sellername;
String? applymentSubMchid;
List<String?>? activityList;
DiscountOrderInfoModelData({
this.id,
this.status,
this.activityId,
this.price,
this.balance,
this.sellerid,
this.openid,
this.outTradeNo,
this.outRefundNo,
this.transactionId,
this.refundId,
this.reOutTradeNo,
this.tradeState,
this.tradeStateDesc,
this.outRequestNo,
this.withdrawId,
this.refundCdate,
this.cdate,
this.sellername,
this.applymentSubMchid,
this.activityList,
});
DiscountOrderInfoModelData.fromJson(Map<String, dynamic> json) {
id = json['id']?.toString();
status = json['status']?.toString();
activityId = json['activity_id']?.toString();
price = json['price']?.toString();
balance = json['balance']?.toString();
sellerid = json['sellerid']?.toString();
openid = json['openid']?.toString();
outTradeNo = json['out_trade_no']?.toString();
outRefundNo = json['out_refund_no']?.toString();
transactionId = json['transaction_id']?.toString();
refundId = json['refund_id']?.toString();
reOutTradeNo = json['re_out_trade_no']?.toString();
tradeState = json['trade_state']?.toString();
tradeStateDesc = json['trade_state_desc']?.toString();
outRequestNo = json['out_request_no']?.toString();
withdrawId = json['withdraw_id']?.toString();
refundCdate = json['refund_cdate']?.toString();
cdate = json['cdate']?.toString();
sellername = json['sellername']?.toString();
applymentSubMchid = json['applyment_sub_mchid']?.toString();
if (json['activity_list'] != null) {
final v = json['activity_list'];
final arr0 = <String>[];
v.forEach((v) {
arr0.add(v.toString());
});
activityList = arr0;
}
}
Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['id'] = id;
data['status'] = status;
data['activity_id'] = activityId;
data['price'] = price;
data['balance'] = balance;
data['sellerid'] = sellerid;
data['openid'] = openid;
data['out_trade_no'] = outTradeNo;
data['out_refund_no'] = outRefundNo;
data['transaction_id'] = transactionId;
data['refund_id'] = refundId;
data['re_out_trade_no'] = reOutTradeNo;
data['trade_state'] = tradeState;
data['trade_state_desc'] = tradeStateDesc;
data['out_request_no'] = outRequestNo;
data['withdraw_id'] = withdrawId;
data['refund_cdate'] = refundCdate;
data['cdate'] = cdate;
data['sellername'] = sellername;
data['applyment_sub_mchid'] = applymentSubMchid;
if (activityList != null) {
final v = activityList;
final arr0 = [];
v!.forEach((v) {
arr0.add(v);
});
data['activity_list'] = arr0;
}
return data;
}
}
class DiscountOrderInfoModel {
/*
{
"ret": 200,
"data": {
"id": "3",
"status": "5",
"activity_id": null,
"price": "0.01",
"balance": null,
"sellerid": "8",
"openid": "oB-xJ5GoISP77QEx5zvA4F9LU-uc",
"out_trade_no": "202502241617198",
"out_refund_no": null,
"transaction_id": "4200002631202502248048942186",
"refund_id": "50302602342025022488986516546",
"re_out_trade_no": null,
"trade_state": "SUCCESS",
"trade_state_desc": "支付成功",
"out_request_no": null,
"withdraw_id": null,
"refund_cdate": null,
"cdate": "1740385039",
"sellername": "育知烤鸭旗舰店",
"applyment_sub_mchid": "1605686747",
"activity_list": [
"1605686747"
]
},
"msg": ""
}
*/
int? ret;
DiscountOrderInfoModelData? data;
String? msg;
DiscountOrderInfoModel({
this.ret,
this.data,
this.msg,
});
DiscountOrderInfoModel.fromJson(Map< dynamic, dynamic> json) {
ret = json['ret']?.toInt();
data = (json['data'] != null) ? DiscountOrderInfoModelData.fromJson(json['data']) : null;
msg = json['msg']?.toString();
}
Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['ret'] = ret;
if (data != null) {
data['data'] = this.data!.toJson();
}
data['msg'] = msg;
return data;
}
}
... ...
/*
Flutter3.x完全开发手册 https://www.flutterschool.cn/
*/
class DiscountOrderListModelDataList {
/*
{
"id": "3",
"status": "5",
"activity_id": null,
"price": "0.01",
"balance": null,
"sellerid": "8",
"openid": "oB-xJ5GoISP77QEx5zvA4F9LU-uc",
"out_trade_no": "202502241617198",
"out_refund_no": null,
"transaction_id": "4200002631202502248048942186",
"refund_id": "50302602342025022488986516546",
"re_out_trade_no": null,
"trade_state": "SUCCESS",
"trade_state_desc": "支付成功",
"out_request_no": null,
"withdraw_id": null,
"refund_cdate": null,
"cdate": "1740385039"
}
*/
String? id;
String? status;
String? activityId;
String? price;
String? balance;
String? sellerid;
String? openid;
String? outTradeNo;
String? outRefundNo;
String? transactionId;
String? refundId;
String? reOutTradeNo;
String? tradeState;
String? tradeStateDesc;
String? outRequestNo;
String? withdrawId;
String? refundCdate;
String? cdate;
DiscountOrderListModelDataList({
this.id,
this.status,
this.activityId,
this.price,
this.balance,
this.sellerid,
this.openid,
this.outTradeNo,
this.outRefundNo,
this.transactionId,
this.refundId,
this.reOutTradeNo,
this.tradeState,
this.tradeStateDesc,
this.outRequestNo,
this.withdrawId,
this.refundCdate,
this.cdate,
});
DiscountOrderListModelDataList.fromJson(Map<String, dynamic> json) {
id = json['id']?.toString();
status = json['status']?.toString();
activityId = json['activity_id']?.toString();
price = json['price']?.toString();
balance = json['balance']?.toString();
sellerid = json['sellerid']?.toString();
openid = json['openid']?.toString();
outTradeNo = json['out_trade_no']?.toString();
outRefundNo = json['out_refund_no']?.toString();
transactionId = json['transaction_id']?.toString();
refundId = json['refund_id']?.toString();
reOutTradeNo = json['re_out_trade_no']?.toString();
tradeState = json['trade_state']?.toString();
tradeStateDesc = json['trade_state_desc']?.toString();
outRequestNo = json['out_request_no']?.toString();
withdrawId = json['withdraw_id']?.toString();
refundCdate = json['refund_cdate']?.toString();
cdate = json['cdate']?.toString();
}
Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['id'] = id;
data['status'] = status;
data['activity_id'] = activityId;
data['price'] = price;
data['balance'] = balance;
data['sellerid'] = sellerid;
data['openid'] = openid;
data['out_trade_no'] = outTradeNo;
data['out_refund_no'] = outRefundNo;
data['transaction_id'] = transactionId;
data['refund_id'] = refundId;
data['re_out_trade_no'] = reOutTradeNo;
data['trade_state'] = tradeState;
data['trade_state_desc'] = tradeStateDesc;
data['out_request_no'] = outRequestNo;
data['withdraw_id'] = withdrawId;
data['refund_cdate'] = refundCdate;
data['cdate'] = cdate;
return data;
}
}
class DiscountOrderListModelData {
/*
{
"date": "2025年02月24日",
"total": 0.06,
"refund_total": 0.05,
"list": [
{
"id": "3",
"status": "5",
"activity_id": null,
"price": "0.01",
"balance": null,
"sellerid": "8",
"openid": "oB-xJ5GoISP77QEx5zvA4F9LU-uc",
"out_trade_no": "202502241617198",
"out_refund_no": null,
"transaction_id": "4200002631202502248048942186",
"refund_id": "50302602342025022488986516546",
"re_out_trade_no": null,
"trade_state": "SUCCESS",
"trade_state_desc": "支付成功",
"out_request_no": null,
"withdraw_id": null,
"refund_cdate": null,
"cdate": "1740385039"
}
]
}
*/
String? date;
double? total;
double? refundTotal;
List<DiscountOrderListModelDataList?>? list;
DiscountOrderListModelData({
this.date,
this.total,
this.refundTotal,
this.list,
});
DiscountOrderListModelData.fromJson(Map<dynamic, dynamic> json) {
date = json['date']?.toString();
total = json['total']?.toDouble();
refundTotal = json['refund_total']?.toDouble();
if (json['list'] != null) {
final v = json['list'];
final arr0 = <DiscountOrderListModelDataList>[];
v.forEach((v) {
arr0.add(DiscountOrderListModelDataList.fromJson(v));
});
list = arr0;
}
}
Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['date'] = date;
data['total'] = total;
data['refund_total'] = refundTotal;
if (list != null) {
final v = list;
final arr0 = [];
v!.forEach((v) {
arr0.add(v!.toJson());
});
data['list'] = arr0;
}
return data;
}
}
class DiscountOrderListModel {
/*
{
"ret": 200,
"data": [
{
"date": "2025年02月24日",
"total": 0.06,
"refund_total": 0.05,
"list": [
{
"id": "3",
"status": "5",
"activity_id": null,
"price": "0.01",
"balance": null,
"sellerid": "8",
"openid": "oB-xJ5GoISP77QEx5zvA4F9LU-uc",
"out_trade_no": "202502241617198",
"out_refund_no": null,
"transaction_id": "4200002631202502248048942186",
"refund_id": "50302602342025022488986516546",
"re_out_trade_no": null,
"trade_state": "SUCCESS",
"trade_state_desc": "支付成功",
"out_request_no": null,
"withdraw_id": null,
"refund_cdate": null,
"cdate": "1740385039"
}
]
}
],
"msg": ""
}
*/
int? ret;
List<DiscountOrderListModelData?>? data;
String? msg;
DiscountOrderListModel({
this.ret,
this.data,
this.msg,
});
DiscountOrderListModel.fromJson(Map<dynamic, dynamic> json) {
ret = json['ret']?.toInt();
if (json['data'] != null) {
final v = json['data'];
final arr0 = <DiscountOrderListModelData>[];
v.forEach((v) {
arr0.add(DiscountOrderListModelData.fromJson(v));
});
this.data = arr0;
}
msg = json['msg']?.toString();
}
Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['ret'] = ret;
if (this.data != null) {
final v = this.data;
final arr0 = [];
v!.forEach((v) {
arr0.add(v!.toJson());
});
data['data'] = arr0;
}
data['msg'] = msg;
return data;
}
}
... ...
... ... @@ -602,4 +602,19 @@ class HttpUrl {
static const create_pay_qrcode =
"?service=App.Seller.CreatePayQrcode"; // 生成商家收款二维码
static const get_discount_orderlist =
"?service=App.Activity.GetDiscountOrderList"; // 获取交易记录
static const get_discount_order_info =
"?service=App.Activity.GetDiscountOrderInfo"; // 通过支付订单号或退款订单号获取订单
static const discount_pay_refund_apply=
"?service=App.PayOnline.DiscountPayRefundApply"; // 优惠支付订单退款
}
... ...
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import '../../../constant/state.dart';
import '../../../provider/finance_provider.dart';
import '../../../provider/user_model.dart';
import '../../../res/colors.dart';
import '../../../utils/event_bus.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/h_empty_view.dart';
import '../../../widgets/page_exception.dart';
import '../../../widgets/round_button.dart';
/**
... ... @@ -14,7 +22,10 @@ import '../../../widgets/round_button.dart';
*/
class TransactionRecordDetailPage extends StatefulWidget {
const TransactionRecordDetailPage({super.key});
final String? status;
final String? id;
const TransactionRecordDetailPage({super.key, this.status, this.id});
@override
State<TransactionRecordDetailPage> createState() =>
... ... @@ -23,6 +34,57 @@ class TransactionRecordDetailPage extends StatefulWidget {
class _TransactionRecordDetailPageState
extends State<TransactionRecordDetailPage> {
FinanceProvider? financeProvider;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
_getDiscountOrderInfo();
// _getCountCommentLabel(isShowLoading: false);
});
}
_getDiscountOrderInfo({bool isShowLoading = false}) async {
Map<String, String?> params = {
'sellerid': Provider.of<UserModel>(context, listen: false).user!.sellerid,
'pay_id': widget.id
};
await financeProvider!
.getDiscountOrderInfo(context, params, isShowLoading: isShowLoading);
}
_discountPayRefundApply() async {
Map<String, String?> params = {
'id': financeProvider!.discountOrderInfoModelData!.id!
};
dynamic result = await financeProvider!
.discountPayRefundApply(context, params, isShowLoading: true);
if (result is bool) {
if (result) {
//成功,刷新页面,是否给提示,申请退款成功,请等待退款
bus.emit("refresh_discount_order_list");
_getDiscountOrderInfo(isShowLoading: true);
} else {
//失败了
Utils.showToast('发生错误');
}
} else if (result is String) {
DialogUtil.cupertinoAlertDialogOnly(context,
title: '提示',
// isBoldContent: true,
contentColor: MyColours.color_000000,
content: result);
//余额不足
// "available_amount": 33, 可用余额和订单需退款金额比较,可用, 不可用
// DialogUtil.cupertinoAlertDialogOnly();
}
}
Widget _item(String title, String subTitle) {
return Container(
padding: EdgeInsets.symmetric(vertical: w(8), horizontal: w(20)),
... ... @@ -58,46 +120,81 @@ class _TransactionRecordDetailPageState
@override
Widget build(BuildContext context) {
financeProvider = Provider.of<FinanceProvider>(context, listen: true);
return Scaffold(
appBar: SystemAppBar('交易详情'),
body: false
? SingleChildScrollView(
child: Column(
children: [
VEmptyView(80),
Text(
'金额',
textAlign: TextAlign.center,
style: TextStyle(
color: MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(14)),
),
VEmptyView(40),
Text(
'¥290.00',
textAlign: TextAlign.center,
style: TextStyle(
color: MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(32)),
),
VEmptyView(60),
Padding(
padding: EdgeInsets.symmetric(horizontal: w(20)),
child: MyDivider(double.infinity, w(0.5))),
_item('商户简称', '独一处'),
_item('交易状态', '退款中'),
_item('时间', '2022-05-01 18:00'),
_item('收款账户', '原路返回'),
VEmptyView(8),
Padding(
padding: EdgeInsets.symmetric(horizontal: w(20)),
child: MyDivider(double.infinity, w(0.5))),
],
),
)
: Column(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('交易详情'),
// body: false
// ? SingleChildScrollView(
// child: Column(
// children: [
// VEmptyView(80),
// Text(
// '金额',
// textAlign: TextAlign.center,
// style: TextStyle(
// color: MyColours.color_515151,
// fontWeight: FontWeight.bold,
// fontSize: font(14)),
// ),
// VEmptyView(40),
// Text(
// '¥290.00',
// textAlign: TextAlign.center,
// style: TextStyle(
// color: MyColours.color_515151,
// fontWeight: FontWeight.bold,
// fontSize: font(32)),
// ),
// VEmptyView(60),
// Padding(
// padding: EdgeInsets.symmetric(horizontal: w(20)),
// child: MyDivider(double.infinity, w(0.5))),
// _item('商户简称', '独一处'),
// _item('交易状态', '退款中'),
// _item('时间', '2022-05-01 18:00'),
// _item('收款账户', '原路返回'),
// VEmptyView(8),
// Padding(
// padding: EdgeInsets.symmetric(horizontal: w(20)),
// child: MyDivider(double.infinity, w(0.5))),
// ],
// ),
// )
// :
body: Consumer<FinanceProvider>(builder: (context, model, _) {
if (model.pageStateRecordDetail != PageState.Success) {
return Expanded(
child: ExceptionPage(
pageState: model.pageStateRecordHome,
callback: () async {
_getDiscountOrderInfo(isShowLoading: true);
},
emptyMsg: "暂时没有交易详情信息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍候...",
));
} else {
// bool isPay = false;
// if ((model.discountOrderInfoModelData?.refundId != null &&
// model.discountOrderInfoModelData?.status == '2') ||
// model.discountOrderInfoModelData?.status == '4' ||
// model.discountOrderInfoModelData?.status == '5') {
// //这笔数据是退款
// isPay = true;
// }
String couponUse = '无';
if (model.discountOrderInfoModelData!.activityList!.length > 0) {
for (var element
in model.discountOrderInfoModelData!.activityList!) {
couponUse += '¥${element}*1\n';
}
}
if (couponUse.length > 0 && couponUse.endsWith('\n')) {
couponUse = couponUse.substring(0, couponUse.length - 2);
}
return Column(
children: [
Expanded(
child: SingleChildScrollView(
... ... @@ -105,7 +202,7 @@ class _TransactionRecordDetailPageState
children: [
VEmptyView(80),
Text(
'收入金额',
widget.status == '00' ? '支出金额' : '收入金额',
textAlign: TextAlign.center,
style: TextStyle(
color: MyColours.color_515151,
... ... @@ -114,7 +211,7 @@ class _TransactionRecordDetailPageState
),
VEmptyView(40),
Text(
'¥290.00',
'¥${model.discountOrderInfoModelData!.price}',
textAlign: TextAlign.center,
style: TextStyle(
color: MyColours.color_515151,
... ... @@ -125,14 +222,54 @@ class _TransactionRecordDetailPageState
Padding(
padding: EdgeInsets.symmetric(horizontal: w(20)),
child: MyDivider(double.infinity, w(0.5))),
_item('时间', '2022-05-01 18:00'),
_item('收支类型', '收入'),
_item('交易名称', '扫码支付'),
_item('订单金额', '¥350.00'),
_item('优惠券使用', '¥30.00*1\n¥30.00*1\n¥30.00*1'),
_item('变更后余额', '3133.60'),
_item('备注',
'结算总金额290.00元,包含微信支付手续费。结算总金额290.00元,包含微信支付手续费。结算总金额290.00元,包含微信支付手续费。结算总金额290.00元,包含微信支付手续费。结算总金额290.00元,包含微信支付手续费。'),
_item(
'时间',
widget.status == '00'
? model.discountOrderInfoModelData?.refundCdate ==
null
? ''
: model.discountOrderInfoModelData
?.refundId ==
null
? ''
: DateUtil.formatDate(
DateTime.fromMillisecondsSinceEpoch(
int.parse(model
.discountOrderInfoModelData
?.refundCdate ??
'') *
1000),
format: DateFormats.y_mo_d_h_m)
: DateUtil.formatDate(
DateTime.fromMillisecondsSinceEpoch(int.parse(
model.discountOrderInfoModelData?.cdate ?? '') *
1000),
format: DateFormats.y_mo_d_h_m)),
_item('收支类型', widget.status == '00' ? '支出' : '收入'),
_item('交易名称', widget.status == '00' ? '退款' : '扫码支付'),
if (widget.status == '00')
_item(
'交易状态',
model.discountOrderInfoModelData?.status == '4'
? '退款中'
: model.discountOrderInfoModelData?.status ==
'5'
? '退款完成'
: '退款失败'),
_item('订单金额',
'¥${model.discountOrderInfoModelData?.price}'),
_item('优惠券使用', couponUse),
_item('变更后余额',
'${model.discountOrderInfoModelData?.balance ?? '0'}'),
_item(
'备注',
(widget.status == '00' &&
model.discountOrderInfoModelData?.status !=
'4' &&
model.discountOrderInfoModelData?.status !=
'5')
? '失败理由'
: '结算总金额${model.discountOrderInfoModelData?.price}元,包含微信支付手续费。前往微信支付商家助手小程序可查询更多信息。'),
VEmptyView(8),
Padding(
padding: EdgeInsets.symmetric(horizontal: w(20)),
... ... @@ -140,33 +277,38 @@ class _TransactionRecordDetailPageState
],
),
)),
Container(
padding: EdgeInsets.only(
top: w(13), left: w(45), right: w(45), bottom: w(26)),
child: RoundButton(
text: '申请退款',
height: w(43),
radius: r(5),
gradientStart: MyColours.color_438E93,
gradientEnd: MyColours.color_438E93,
borderColor: MyColours.color_438E93,
textColor: MyColours.color_ffffff,
isBold: true,
fontSize: 32,
onPressed: () {
//余额不足
// "available_amount": 33, 可用余额和订单需退款金额比较,可用, 不可用
// DialogUtil.cupertinoAlertDialogOnly();
//余额充足,可申请退款
// DialogUtil.cupertinoAlertDialog();
},
),
)
if (widget.status != '00' &&
model.discountOrderInfoModelData?.status == '2')
Container(
padding: EdgeInsets.only(
top: w(13), left: w(45), right: w(45), bottom: w(26)),
child: RoundButton(
text: '申请退款',
height: w(43),
radius: r(5),
gradientStart: MyColours.color_438E93,
gradientEnd: MyColours.color_438E93,
borderColor: MyColours.color_438E93,
textColor: MyColours.color_ffffff,
isBold: true,
fontSize: 32,
onPressed: () {
//余额充足,可申请退款
DialogUtil.cupertinoAlertDialog(context,
title: '提示',
content: '退款成功后,退款金额将原路返回到顾客账户,请确认是否退款!',
lTitle: '取消退款',
rTitle: '确认退款',
contentColor: MyColours.color_000000,
rCallback: () {
_discountPayRefundApply();
});
},
),
)
],
),
);
);
}
}));
}
}
... ...
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../constant/state.dart';
import '../../../models/discount_order_model.dart';
import '../../../provider/finance_provider.dart';
import '../../../provider/user_model.dart';
import '../../../utils/event_bus.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/page_exception.dart';
/**
* 交易记录列表
... ... @@ -21,160 +29,305 @@ class TransactionRecordHomePage extends StatefulWidget {
class _TransactionRecordHomePageState extends State<TransactionRecordHomePage> {
ScrollController controller = ScrollController();
FinanceProvider? financeProvider;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
_getDiscountOrderList();
// _getCountCommentLabel(isShowLoading: false);
});
bus.on("refresh_discount_order_list", (args) {
// _getReserveDetail(isShowLoading: false);
_getDiscountOrderList(isShowLoading: false);
});
}
@override
void dispose() {
super.dispose();
bus.off("refresh_discount_order_list");
}
_getDiscountOrderList({bool isShowLoading = false}) async {
// String from = fromDate + ' 00:00:00';
// String end = endDate + ' 23:59:59';
// Map<String, String?> params = {
// "uid": Provider.of<UserModel>(context, listen: false).user!.openid,
// "aname": _couponNameEditControl.text.trim(),
// "desc": _couponRequireEditControl.text.trim(),
// "stime": fromDate == '点击选择'
// ? ""
// : '${(DateUtil.getDateMsByTimeStr(from)! / 1000).floor()}',
// "etime": endDate == '点击选择'
// ? ''
// : '${(DateUtil.getDateMsByTimeStr(end)! / 1000).floor()}',
DateTime fromDate = DateTime.now().subtract(Duration(days: 5));
DateTime endDate = DateTime.now();
String from = '${fromDate.year}' +
'-' +
Utils.addZeroNumber(fromDate.month) +
'-' +
Utils.addZeroNumber(fromDate.day) +
' 00:00:00';
String end = '${endDate.year}' +
'-' +
Utils.addZeroNumber(endDate.month) +
'-' +
Utils.addZeroNumber(endDate.day) +
' 23:59:59';
Map<String, String?> params = {
'sellerid': Provider.of<UserModel>(context, listen: false).user!.sellerid,
'stime': '${(DateUtil.getDateMsByTimeStr(from)! / 1000).floor()}',
'etime': '${(DateUtil.getDateMsByTimeStr(end)! / 1000).floor()}',
};
await financeProvider!
.getDiscountOrderList(context, params, isShowLoading: false);
}
Widget _tips() {
return Container(
width: double.infinity,
height: w(40),
color: MyColours.color_4DDBDBDB,
alignment: Alignment.center,
child: Text(
'仅展示近5天的交易信息,如果需要展示更多信息,请使用右上角日期筛选',
style: TextStyle(color: MyColours.color_999999, fontSize: font(10)),
),
);
}
@override
Widget build(BuildContext context) {
financeProvider = Provider.of<FinanceProvider>(context, listen: true);
return Scaffold(
appBar: SystemAppBar('交易记录'),
body: Column(
children: [
Expanded(
child: ListView.builder(
itemCount: 10,
shrinkWrap: true,
controller: controller,
itemBuilder: (context, index) {
return Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Stack(children: [
Container(
width: double.infinity,
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('交易记录'),
body: Consumer<FinanceProvider>(builder: (context, model, _) {
if (model.pageStateRecordHome != PageState.Success) {
return Column(
children: [
Align(
alignment: Alignment.centerRight,
child: InkWell(
onTap: () {
//跳转筛选页面
NavigatorUtil.goTransactionRecordSearchPage(context);
},
child: Container(
padding: EdgeInsets.only(
right: w(20),
left: w(20),
top: w(10),
bottom: w(10)),
child: Image.asset(
Utils.getImgPath('calender'),
width: w(20),
),
)),
),
Expanded(
child: ExceptionPage(
pageState: model.pageStateRecordHome,
callback: () async {
_getDiscountOrderList(isShowLoading: true);
},
emptyMsg: "暂时没有交易记录信息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍候...",
)),
_tips()
],
);
} else {
return Column(
children: [
Expanded(
child: ListView.builder(
itemCount: financeProvider!.discountOrderList.length,
shrinkWrap: true,
controller: controller,
itemBuilder: (context, index) {
DiscountOrderListModelData? listData =
financeProvider!.discountOrderList[index];
return Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Stack(children: [
Container(
width: double.infinity,
alignment: Alignment.center,
// height: w(40),
alignment: Alignment.center,
color: MyColours.color_4DDBDBDB,
padding: EdgeInsets.symmetric(vertical: w(10)),
margin: EdgeInsets.only(
top: index == 0 ? 0 : w(12)),
child: Wrap(
runSpacing: w(5),
crossAxisAlignment: WrapCrossAlignment.center,
children: [
Text(
'2025年2月12日',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(14)),
),
HEmptyView(16),
Padding(
// height: w(40),
color: MyColours.color_4DDBDBDB,
padding: EdgeInsets.only(
right: index == 0 ? w(33) : 0),
child: Text(
'收入580.00,支出290.00',
maxLines: 3,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: font(12)),
),
),
],
)),
if (index == 0)
Positioned(
top: 0,
right: 0,
child: InkWell(
onTap: () {
//跳转筛选页面
NavigatorUtil
.goTransactionRecordSearchPage(
context);
},
child: Container(
padding: EdgeInsets.only(
right: w(20),
left: w(20),
top: w(10),
bottom: w(10)),
child: Image.asset(
Utils.getImgPath('calender'),
width: w(20),
),
)))
]),
ListView.builder(
itemCount: 5,
shrinkWrap: true,
controller: controller,
itemBuilder: (context, index) {
return InkWell(
onTap: () {
NavigatorUtil
.goTransactionRecordDetailPage(
context);
},
child: Container(
height: w(37),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: MyColours.color_E7E7E7,
width: w(0.5)))),
margin: EdgeInsets.only(
left: w(20),
bottom: w(10),
right: w(20)),
padding: EdgeInsets.only(top: w(5)),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
top: index == 0 ? w(10) : w(22),
bottom: w(10)),
child: Wrap(
runSpacing: w(5),
crossAxisAlignment:
WrapCrossAlignment.center,
children: [
Text(
'收入',
listData!.date ?? '',
style: TextStyle(
color: MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(12)),
fontSize: font(14)),
),
HEmptyView(8),
Text(
'扫码支付',
style: TextStyle(
color: MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(12)),
HEmptyView(16),
Padding(
padding: EdgeInsets.only(
right: index == 0 ? w(33) : 0),
child: Text(
'收入${listData.total},支出${listData.refundTotal}',
maxLines: 3,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: font(12)),
),
),
HEmptyView(70),
Text(
'2022-05-01 18:00',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(10)),
),
HEmptyView(8),
Expanded(
child: Text(
'+290.00',
textAlign: TextAlign.right,
style: TextStyle(
color: MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(18)),
)),
],
),
));
})
],
),
);
})),
Container(
width: double.infinity,
height: w(40),
color: MyColours.color_4DDBDBDB,
alignment: Alignment.center,
child: Text(
'仅展示近5天的交易信息,如果需要展示更多信息,请使用右上角日期筛选',
style:
TextStyle(color: MyColours.color_999999, fontSize: font(10)),
),
)
],
),
);
)),
if (index == 0)
Positioned(
top: 0,
right: 0,
child: InkWell(
onTap: () {
//跳转筛选页面
NavigatorUtil
.goTransactionRecordSearchPage(
context);
},
child: Container(
padding: EdgeInsets.only(
right: w(20),
left: w(20),
top: w(10),
bottom: w(10)),
child: Image.asset(
Utils.getImgPath('calender'),
width: w(20),
),
)))
]),
ListView.builder(
itemCount: listData.list?.length,
shrinkWrap: true,
controller: controller,
itemBuilder: (context, index) {
DiscountOrderListModelDataList? subdata =
listData.list?[index];
return InkWell(
onTap: () {
NavigatorUtil
.goTransactionRecordDetailPage(
context,
subdata.status,
subdata.status == '00'
? subdata.refundId
: subdata
.transactionId);
},
child: Container(
height: w(37),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: MyColours
.color_E7E7E7,
width: w(0.5)))),
margin: EdgeInsets.only(
left: w(20),
bottom: w(10),
right: w(20)),
padding: EdgeInsets.only(top: w(5)),
child: Row(
mainAxisAlignment:
MainAxisAlignment
.spaceBetween,
children: [
Text(
subdata!.status != '00'
? '收入'
: '支出',
style: TextStyle(
color: MyColours
.color_515151,
fontWeight:
FontWeight.bold,
fontSize: font(12)),
),
HEmptyView(8),
Text(
subdata.status != '00'
? '扫码支付'
: '用户退款',
style: TextStyle(
color: MyColours
.color_515151,
fontWeight:
FontWeight.bold,
fontSize: font(12)),
),
HEmptyView(70),
Text(
subdata.status != '00'
? DateUtil.formatDate(
DateTime.fromMillisecondsSinceEpoch(
int.parse(subdata
.cdate
.toString()) *
1000),
format: DateFormats
.y_mo_d_h_m)
: subdata.refundCdate ==
null
? ''
: DateUtil.formatDate(
DateTime.fromMillisecondsSinceEpoch(
int.parse(subdata.refundCdate.toString()) *
1000),
format: DateFormats
.y_mo_d_h_m),
style: TextStyle(
color: MyColours
.color_515151,
fontSize: font(10)),
),
HEmptyView(8),
Expanded(
child: Text(
subdata.status != '00'
? '+${subdata.price}'
: '-${subdata.price}',
textAlign: TextAlign.right,
style: TextStyle(
color: MyColours
.color_515151,
fontWeight:
FontWeight.bold,
fontSize: font(18)),
)),
],
),
));
})
],
),
);
})),
_tips(),
],
);
}
}));
}
}
... ...
... ... @@ -3,12 +3,19 @@ import 'package:flutter/material.dart';
import 'package:flutter_picker_plus/picker.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../constant/state.dart';
import '../../../models/discount_order_model.dart';
import '../../../provider/finance_provider.dart';
import '../../../provider/user_model.dart';
import '../../../res/colors.dart';
import '../../../route/navigator_util.dart';
import '../../../utils/dialog_util.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/utils.dart';
import '../../../widgets/h_empty_view.dart';
import '../../../widgets/page_exception.dart';
import '../../../widgets/round_button.dart';
import '../../../widgets/v_empty_view.dart';
... ... @@ -30,6 +37,44 @@ class _TransactionRecordSearchPageState
String fromDate = '选择日期';
String endDate = '选择日期';
ScrollController controller = ScrollController();
FinanceProvider? financeProvider;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
// _getDiscountOrderList();
// _getCountCommentLabel(isShowLoading: false);
});
}
_getDiscountOrderList({bool isShowLoading = false}) async {
List<String> start = fromDate.split('-');
String from = '${start[0]}' +
'-' +
Utils.addZeroNumber(int.parse(start[1])) +
'-' +
Utils.addZeroNumber(int.parse(start[2])) +
' 00:00:00';
List<String> endList = endDate.split('-');
String end = '${endList[0]}' +
'-' +
Utils.addZeroNumber(int.parse(endList[1])) +
'-' +
Utils.addZeroNumber(int.parse(endList[2])) +
' 23:59:59';
Map<String, String?> params = {
'sellerid': Provider.of<UserModel>(context, listen: false).user!.sellerid,
'stime': '${(DateUtil.getDateMsByTimeStr(from)! / 1000).floor()}',
'etime': '${(DateUtil.getDateMsByTimeStr(end)! / 1000).floor()}',
};
await financeProvider!.getDiscountOrderList(context, params,
from: 'search', isShowLoading: isShowLoading);
}
///时间选择
Widget _select(String title, String hintText, GestureTapCallback onTap) {
... ... @@ -74,166 +119,328 @@ class _TransactionRecordSearchPageState
@override
Widget build(BuildContext context) {
financeProvider = Provider.of<FinanceProvider>(context, listen: true);
return Scaffold(
appBar: SystemAppBar('自定义查询'),
key: scaffoldKey,
body: Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: controller,
child: Column(children: [
Container(
width: double.infinity,
height: w(33),
alignment: Alignment.centerLeft,
color: MyColours.color_4DDBDBDB,
padding: EdgeInsets.only(left: w(16)),
child: Text(
'查询时间跨度不超过31天',
style: TextStyle(
color: MyColours.color_999999, fontSize: font(12)),
),
),
_select('开始日期', fromDate, () {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
//弹出时间选择器
// showPickerDateTime(context);
// showDateSelWidget = true;
DialogUtil.showPickerDateTime24(
context,
scaffoldKey,
(value) {
// {'text': picker.adapter.text, 'select': selecteds}
if (value != null) {
setState(() {
print(value);
fromDate = DateUtil.formatDateStr(value,
format: DateFormats.y_mo_d);
});
}
// showDateSelWidget = false;
},
dateTime: fromDate == '选择日期'
? null
: DateUtil.getDateTime(fromDate),
pickerDateTimeType: PickerDateTimeType.kYMD,
onCancel: () {
// showDateSelWidget = false;
// Container(
// width: double.infinity,
// height: w(33),
// alignment: Alignment.centerLeft,
// color: MyColours.color_4DDBDBDB,
// padding: EdgeInsets.only(left: w(16)),
// child: Text(
// '查询时间跨度不超过31天',
// style: TextStyle(
// color: MyColours.color_999999, fontSize: font(12)),
// ),
// ),
_select('开始日期', fromDate, () {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
//弹出时间选择器
// showPickerDateTime(context);
// showDateSelWidget = true;
DialogUtil.showPickerDateTime24(
context,
scaffoldKey,
(value) {
// {'text': picker.adapter.text, 'select': selecteds}
if (value != null) {
setState(() {
print(value);
fromDate = DateUtil.formatDateStr(value,
format: DateFormats.y_mo_d);
});
}),
Container(
height: ScreenUtil().setWidth(1),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_select('结束日期', endDate, () {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
//弹出时间选择器
// showPickerDateTime(context);
// showDateSelWidget = true;
DialogUtil.showPickerDateTime24(
context,
scaffoldKey,
(value) {
// {'text': picker.adapter.text, 'select': selecteds}
if (value != null) {
setState(() {
print(value);
endDate = DateUtil.formatDateStr(value,
format: DateFormats.y_mo_d);
});
}
// showDateSelWidget = false;
},
dateTime: endDate == '选择日期'
? null
: DateUtil.getDateTime(endDate),
pickerDateTimeType: PickerDateTimeType.kYMD,
onCancel: () {
// showDateSelWidget = false;
}
// showDateSelWidget = false;
},
minValue: DateTime(1987, 1, 1),
dateTime:
fromDate == '选择日期' ? null : DateUtil.getDateTime(fromDate),
pickerDateTimeType: PickerDateTimeType.kYMD,
onCancel: () {
// showDateSelWidget = false;
});
}),
Container(
height: ScreenUtil().setWidth(1),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_select('结束日期', endDate, () {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
//弹出时间选择器
// showPickerDateTime(context);
// showDateSelWidget = true;
DialogUtil.showPickerDateTime24(
context,
scaffoldKey,
(value) {
// {'text': picker.adapter.text, 'select': selecteds}
if (value != null) {
setState(() {
print(value);
endDate = DateUtil.formatDateStr(value,
format: DateFormats.y_mo_d);
});
}),
Container(
height: ScreenUtil().setWidth(1),
color: MyColours.color_E7E7E7,
),
// VEmptyView(48),
//结果展示
Column(
children: [
Container(
width: double.infinity,
height: w(40),
alignment: Alignment.center,
color: MyColours.color_4DDBDBDB,
child: Text(
'收入580.00,支出290.00',
style: TextStyle(
color: MyColours.color_999999, fontSize: font(12)),
),
),
ListView.builder(
itemCount: 25,
}
// showDateSelWidget = false;
},
minValue: DateTime(1987, 1, 1),
dateTime:
endDate == '选择日期' ? null : DateUtil.getDateTime(endDate),
pickerDateTimeType: PickerDateTimeType.kYMD,
onCancel: () {
// showDateSelWidget = false;
});
}),
Container(
height: ScreenUtil().setWidth(1),
color: MyColours.color_E7E7E7,
),
Consumer<FinanceProvider>(builder: (context, model, _) {
if (model.pageStateRecordSearch != PageState.Success) {
if (model.pageStateRecordSearch == PageState.Loading) {
return Spacer();
}
return Expanded(
child: ExceptionPage(
pageState: model.pageStateRecordSearch,
callback: () async {
_getDiscountOrderList(isShowLoading: true);
},
emptyMsg: "没有交易记录信息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍候...",
));
} else {
return Expanded(
child: ListView.builder(
itemCount: financeProvider!.discountOrderList.length,
shrinkWrap: true,
controller: controller,
itemBuilder: (context, index) {
DiscountOrderListModelData? listData =
financeProvider!.discountOrderList[index];
return Container(
height: w(37),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: MyColours.color_E7E7E7,
width: w(0.5)))),
margin: EdgeInsets.only(
left: w(20), bottom: w(10), right: w(20)),
padding: EdgeInsets.only(top: w(5)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'收入',
style: TextStyle(
color: MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(12)),
),
HEmptyView(8),
Text(
'扫码支付',
style: TextStyle(
color: MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(12)),
),
HEmptyView(70),
Text(
'2022-05-01 18:00',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(10)),
),
HEmptyView(8),
Expanded(
child: Text(
'+290.00',
textAlign: TextAlign.right,
style: TextStyle(
color: MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(18)),
)),
Container(
width: double.infinity,
alignment: Alignment.center,
// height: w(40),
color: MyColours.color_4DDBDBDB,
padding: EdgeInsets.only(
top: index == 0 ? w(10) : w(22),
bottom: w(10)),
child: Wrap(
runSpacing: w(5),
crossAxisAlignment:
WrapCrossAlignment.center,
children: [
Text(
listData!.date ?? '',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(14)),
),
HEmptyView(16),
Padding(
padding: EdgeInsets.only(
right: index == 0 ? w(33) : 0),
child: Text(
'收入${listData.total},支出${listData.refundTotal}',
maxLines: 3,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_999999,
fontSize: font(12)),
),
),
],
)),
ListView.builder(
itemCount: listData.list?.length,
shrinkWrap: true,
controller: controller,
itemBuilder: (context, index) {
DiscountOrderListModelDataList? subdata =
listData.list?[index];
return InkWell(
onTap: () {
NavigatorUtil
.goTransactionRecordDetailPage(
context,
subdata.status,
subdata.status == '00'
? subdata.refundId
: subdata.transactionId);
},
child: Container(
height: w(37),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
color: MyColours
.color_E7E7E7,
width: w(0.5)))),
margin: EdgeInsets.only(
left: w(20),
bottom: w(10),
right: w(20)),
padding: EdgeInsets.only(top: w(5)),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
subdata!.status != '00'
? '收入'
: '支出',
style: TextStyle(
color:
MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(12)),
),
HEmptyView(8),
Text(
subdata.status != '00'
? '扫码支付'
: '用户退款',
style: TextStyle(
color:
MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(12)),
),
HEmptyView(70),
Text(
subdata.status != '00'
? DateUtil.formatDate(
DateTime.fromMillisecondsSinceEpoch(
int.parse(subdata.cdate.toString()) *
1000),
format: DateFormats
.y_mo_d_h_m)
: subdata.refundCdate ==
null
? ''
: DateUtil.formatDate(
DateTime.fromMillisecondsSinceEpoch(
int.parse(subdata
.refundCdate
.toString()) *
1000),
format: DateFormats
.y_mo_d_h_m),
style: TextStyle(
color:
MyColours.color_515151,
fontSize: font(10)),
),
HEmptyView(8),
Expanded(
child: Text(
subdata.status != '00'
? '+${subdata.price}'
: '-${subdata.price}',
textAlign: TextAlign.right,
style: TextStyle(
color:
MyColours.color_515151,
fontWeight: FontWeight.bold,
fontSize: font(18)),
)),
],
),
));
})
],
),
);
})
],
)
]),
)),
}));
}
}),
// VEmptyView(48),
//结果展示
// Column(
// children: [
// Container(
// width: double.infinity,
// height: w(40),
// alignment: Alignment.center,
// color: MyColours.color_4DDBDBDB,
// child: Text(
// '收入580.00,支出290.00',
// style: TextStyle(
// color: MyColours.color_999999, fontSize: font(12)),
// ),
// ),
// ListView.builder(
// itemCount: 25,
// shrinkWrap: true,
// controller: controller,
// itemBuilder: (context, index) {
// return Container(
// height: w(37),
// decoration: BoxDecoration(
// border: Border(
// bottom: BorderSide(
// color: MyColours.color_E7E7E7,
// width: w(0.5)))),
// margin: EdgeInsets.only(
// left: w(20), bottom: w(10), right: w(20)),
// padding: EdgeInsets.only(top: w(5)),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Text(
// '收入',
// style: TextStyle(
// color: MyColours.color_515151,
// fontWeight: FontWeight.bold,
// fontSize: font(12)),
// ),
// HEmptyView(8),
// Text(
// '扫码支付',
// style: TextStyle(
// color: MyColours.color_515151,
// fontWeight: FontWeight.bold,
// fontSize: font(12)),
// ),
// HEmptyView(70),
// Text(
// '2022-05-01 18:00',
// style: TextStyle(
// color: MyColours.color_515151,
// fontSize: font(10)),
// ),
// HEmptyView(8),
// Expanded(
// child: Text(
// '+290.00',
// textAlign: TextAlign.right,
// style: TextStyle(
// color: MyColours.color_515151,
// fontWeight: FontWeight.bold,
// fontSize: font(18)),
// )),
// ],
// ),
// );
// })
// ],
// )
Container(
width: double.infinity,
padding: EdgeInsets.symmetric(vertical: w(13), horizontal: w(79)),
padding: EdgeInsets.symmetric(vertical: w(13), horizontal: w(20)),
child: Row(
children: [
RoundButton(
... ... @@ -251,6 +458,7 @@ class _TransactionRecordSearchPageState
//导出数据
},
),
HEmptyView(30),
Expanded(
child: RoundButton(
text: '查询交易记录',
... ... @@ -264,6 +472,21 @@ class _TransactionRecordSearchPageState
fontSize: 32,
onPressed: () {
// 查询交易记录
if (fromDate == '选择日期') {
Utils.showToast('请选择开始日期');
return;
}
if (endDate == '选择日期') {
Utils.showToast('请选择结束日期');
return;
}
if (DateUtil.getDateTime(endDate)
.compareTo(DateUtil.getDateTime(fromDate)) <
0) {
Utils.showToast('结束日期不能早于开始日期');
return;
}
_getDiscountOrderList(isShowLoading: true);
},
)),
],
... ...
... ... @@ -5,6 +5,8 @@ import 'package:provider/provider.dart';
import '../constant/constant.dart';
import '../constant/error.dart';
import '../constant/state.dart';
import '../models/discount_order_info_model.dart';
import '../models/discount_order_model.dart';
import '../models/payment_code_model.dart';
import '../net/base_resp.dart';
import '../net/dio_util.dart';
... ... @@ -13,8 +15,13 @@ import '../utils/utils.dart';
class FinanceProvider extends ChangeNotifier {
PageState pageState = PageState.Loading;
PageState pageStateRecordHome = PageState.Loading;
PageState pageStateRecordSearch = PageState.Loading;
PageState pageStateRecordDetail = PageState.Loading;
String paymentCodeUrl = '';
List<DiscountOrderListModelData?> discountOrderList = [];
DiscountOrderInfoModelData? discountOrderInfoModelData;
///客户经理获取所创建活动列表
Future createPayQrcode(BuildContext context, {isShowLoading = true}) async {
... ... @@ -25,7 +32,7 @@ class FinanceProvider extends ChangeNotifier {
};
BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
context, Method.post, HttpUrl.create_pay_qrcode,
data: params, showLoading: false);
data: params, showLoading: isShowLoading );
if (baseResp.code == Constant.status_success) {
if (baseResp.data.isEmpty) {
// if (isShowLoading) {
... ... @@ -69,4 +76,176 @@ class FinanceProvider extends ChangeNotifier {
notifyListeners();
}
}
///获取交易记录列表
Future getDiscountOrderList(BuildContext context, Map<String, String?> params,
{String from = 'home', isShowLoading = true}) async {
PageState pageStateTemp = PageState.Loading;
try {
BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
context, Method.post, HttpUrl.get_discount_orderlist,
data: params, showLoading: isShowLoading );
if (baseResp.code == Constant.status_success) {
if (baseResp.data.isEmpty) {
// if (isShowLoading) {
pageStateTemp = PageState.Empty;
// }
} else {
// if (isShowLoading) {
pageStateTemp = PageState.Success;
// }
}
discountOrderList =
DiscountOrderListModel.fromJson(baseResp.responseData!).data ?? [];
if (discountOrderList.length > 0) {
for (var element in discountOrderList) {
if (element?.list != null) {
List<DiscountOrderListModelDataList?> temp = [];
for (var elementSub in element!.list!) {
temp.add(DiscountOrderListModelDataList.fromJson(
elementSub!.toJson()));
if ((elementSub.refundId != null && elementSub.status == '2') ||
elementSub.status == '4' ||
elementSub.status == '5') {
//这笔数据是退款
elementSub.status = '00';
temp.add(elementSub);
}
}
element.list = temp;
}
}
}
print(discountOrderList);
} else {
if (isShowLoading) {
pageStateTemp = PageState.ConnectivityError;
}
if (baseResp != null) {
Utils.showToast(baseResp.msg ?? "");
}
}
if (from == 'home') {
pageStateRecordHome = pageStateTemp;
} else {
pageStateRecordSearch = pageStateTemp;
}
notifyListeners();
} catch (error) {
print(error.toString());
if (error is MyError) {
if (isShowLoading) {
switch (error.type) {
case 1:
pageStateTemp = PageState.ConnectivityError;
break;
case 2:
pageStateTemp = PageState.ConnectivityTimeOut;
break;
default:
pageStateTemp = PageState.ConnectivityError;
break;
}
}
}
if (from == 'home') {
pageStateRecordHome = pageStateTemp;
} else {
pageStateRecordSearch = pageStateTemp;
}
notifyListeners();
}
}
/// 通过支付订单号或退款订单号获取订单
Future getDiscountOrderInfo(BuildContext context, Map<String, String?> params,
{isShowLoading = true}) async {
try {
BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
context, Method.post, HttpUrl.get_discount_order_info,
data: params, showLoading: false);
if (baseResp.code == Constant.status_success) {
if (baseResp.data.isEmpty) {
// if (isShowLoading) {
pageStateRecordDetail = PageState.Empty;
// }
} else {
// if (isShowLoading) {
pageStateRecordDetail = PageState.Success;
// }
}
discountOrderInfoModelData =
DiscountOrderInfoModel.fromJson(baseResp.responseData!).data;
} else {
if (isShowLoading) {
pageStateRecordDetail = PageState.ConnectivityError;
}
if (baseResp != null) {
Utils.showToast(baseResp.msg ?? "");
}
}
notifyListeners();
} catch (error) {
print(error.toString());
if (error is MyError) {
if (isShowLoading) {
switch (error.type) {
case 1:
pageStateRecordDetail = PageState.ConnectivityError;
break;
case 2:
pageStateRecordDetail = PageState.ConnectivityTimeOut;
break;
default:
pageStateRecordDetail = PageState.ConnectivityError;
break;
}
}
}
notifyListeners();
}
}
/// 优惠支付订单退款
Future discountPayRefundApply(
BuildContext context, Map<String, String?> params,
{isShowLoading = true}) async {
try {
BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
context, Method.post, HttpUrl.discount_pay_refund_apply,
data: params, showLoading: false);
if (baseResp.code == Constant.status_success) {
if (baseResp.data is Map) {
if (baseResp.data.containKeys('code')) {
//错误了
if (baseResp.data['code'] == 'NOT_ENOUGH') {
return '您的账户余额不足,无法支付本次退款,请往账户中充值后,再进行退款操作!';
} else {
return baseResp.data['message'] ?? '未知错误';
}
} else {
//退款成功
return true;
}
}
} else {
if (baseResp != null) {
Utils.showToast(baseResp.msg ?? "");
}
notifyListeners();
return false;
}
} catch (error) {
print(error.toString());
if (error is MyError) {}
notifyListeners();
return false;
}
}
}
... ...
... ... @@ -2388,10 +2388,10 @@ class NavigatorUtil {
///交易详情
static Future<dynamic> goTransactionRecordDetailPage(
BuildContext context, {
BuildContext context,String? status,String? id, {
replace = false,
}) {
return _navigateTo(context, "${Routes.transaction_record_detail_page}",
return _navigateTo(context, "${Routes.transaction_record_detail_page}?status=$status&id=$id",
replace: replace);
}
}
... ...
... ... @@ -4179,7 +4179,8 @@ var transactionRecordSearchPageHandle = new Handler(
var transactionRecordDetailPageHandle = new Handler(
handlerFunc: (BuildContext? context, Map<String, List<Object>> params) {
// String rid = params["rid"].first;
String id = params["id"]!.first as String;
String status= params["status"]!.first as String;
// bool isMine =
// FluroConvertUtils.string2bool(params["isMine"]!.first as String);
// CouponSunModel? couponSunModel;
... ... @@ -4190,5 +4191,5 @@ var transactionRecordDetailPageHandle = new Handler(
// }
return ChangeNotifierProvider<FinanceProvider>(
create: (_) => FinanceProvider(), child: TransactionRecordDetailPage());
create: (_) => FinanceProvider(), child: TransactionRecordDetailPage(status:status,id:id));
});
... ...
... ... @@ -5244,7 +5244,7 @@ class DialogUtil {
HEmptyView(40),
Expanded(
child: Text(
areaName??'',
areaName ?? '',
maxLines: 1,
textAlign: TextAlign.right,
overflow: TextOverflow.ellipsis,
... ... @@ -10491,7 +10491,7 @@ class DialogUtil {
style: TextStyle(
fontWeight:
isBoldContent ? FontWeight.bold : FontWeight.normal,
fontSize: ScreenUtil().setSp(32),
fontSize: ScreenUtil().setSp(30),
color: contentColor)),
actions: [
// CupertinoDialogAction(
... ... @@ -10552,7 +10552,7 @@ class DialogUtil {
style: TextStyle(
fontWeight:
isBoldContent ? FontWeight.bold : FontWeight.normal,
fontSize: ScreenUtil().setSp(32),
fontSize: ScreenUtil().setSp(30),
color: contentColor)),
actions: [
if (showlTitle)
... ...
... ... @@ -318,8 +318,8 @@ dev_dependencies:
# json_model: ^0.0.2
build_runner: ^2.3.3
json_serializable: ^6.6.2
build_runner: ^2.4.14
json_serializable: ^6.9.4
test: ^1.22.0
... ...