Commit baabadcbf606953d6ea759d9f6198b0b50bb9138

Authored by weixin_45529955
1 parent 7704131f

支付返消费金设置页面功能 OK

import 'dart:convert';
import 'package:flutter/material.dart';
class ReturnMoneyModel {
int? ret;
ReturnMoneySunModel? data;
String? msg;
ReturnMoneyModel({this.ret, this.data, this.msg});
ReturnMoneyModel.fromJson(Map<dynamic, dynamic> json) {
ret = json['ret'];
data = json['data'] != null
? new ReturnMoneySunModel.fromJson(json['data'])
: null;
msg = json['msg'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ret'] = this.ret;
if (this.data != null) {
data['data'] = this.data!.toJson();
}
data['msg'] = this.msg;
return data;
}
}
class ReturnMoneySunModel {
String? id;
String? sellerid;
String? isReturn;
ReturnJsonModel? returnJson;
String? isTogether;
TogetherJsonModel? togetherJson;
String? cdate;
ReturnMoneySunModel(
{this.id,
this.sellerid,
this.isReturn,
this.returnJson,
this.isTogether,
this.togetherJson,
this.cdate});
ReturnMoneySunModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
sellerid = json['sellerid'];
isReturn = json['is_return'];
if (json['return_json'] != null && json['return_json'] != '') {
if (json['return_json'] is Map) {
returnJson = new ReturnJsonModel.fromJson(json['return_json']);
} else {
returnJson =
new ReturnJsonModel.fromJson(jsonDecode(json['return_json']));
}
}
isTogether = json['is_together'];
class LadderReturnMoneyModel {
/*
{
"price": "100",
"coupons": [
{
"id": "997",
"name": "免费券15"
if (json['together_json'] != null && json['together_json'] != '') {
if (json['together_json'] is Map) {
togetherJson = new TogetherJsonModel.fromJson(json['together_json']);
} else {
togetherJson =
new TogetherJsonModel.fromJson(jsonDecode(json['together_json']));
}
}
]
}
*/
cdate = json['cdate'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['sellerid'] = this.sellerid;
data['is_return'] = this.isReturn;
data['return_json'] = this.returnJson;
data['is_together'] = this.isTogether;
data['together_json'] = this.togetherJson;
data['cdate'] = this.cdate;
return data;
}
}
class ReturnJsonModel {
String? isRatio;
String? ratioData;
List<LadderData>? ladderData;
String? stime;
String? etime;
ReturnJsonModel(
{this.isRatio, this.ratioData, this.ladderData, this.stime, this.etime});
ReturnJsonModel.fromJson(Map<String, dynamic> json) {
isRatio = json['is_ratio'];
ratioData = json['ratio_data'];
if (json['ladder_data'] != null) {
ladderData = <LadderData>[];
if (json['ladder_data'] is List) {
json['ladder_data'].forEach((v) {
ladderData!.add(new LadderData.fromJson(v));
});
} else {
jsonDecode(json['ladder_data']).forEach((v) {
ladderData!.add(new LadderData.fromJson(v));
});
}
}
stime = json['stime'];
etime = json['etime'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['is_ratio'] = this.isRatio;
data['ratio_data'] = this.ratioData;
if (this.ladderData != null) {
data['ladder_data'] = this.ladderData!.map((v) => v.toJson()).toList();
}
data['stime'] = this.stime;
data['etime'] = this.etime;
return data;
}
}
class LadderData {
String? givePrice;
TextEditingController givePriceC = TextEditingController();
String? backPrice;
TextEditingController givePriceC = TextEditingController();
TextEditingController backPriceC = TextEditingController();
LadderReturnMoneyModel({
this.givePrice,
this.backPrice,
});
LadderReturnMoneyModel.fromJson(Map<String, dynamic> json) {
givePrice = json['give_price']?.toString();
givePriceC.text = givePrice ?? '';
givePrice = json['back_price']?.toString();
LadderData({this.givePrice, this.backPrice});
LadderData.fromJson(Map<String, dynamic> json) {
givePrice = json['give_price'];
backPrice = json['back_price'];
givePriceC.text = givePrice ?? '';
backPriceC.text = backPrice ?? '';
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['give_price'] = this.givePrice;
data['back_price'] = this.backPrice;
return data;
}
}
class TogetherJsonModel {
String? isCoexist;
String? ratioData;
TogetherJsonModel({
this.isCoexist,
this.ratioData,
});
TogetherJsonModel.fromJson(Map<String, dynamic> json) {
isCoexist = json['is_coexist'];
ratioData = json['ratio_data'];
}
Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['give_price'] = givePrice;
data['back_price'] = backPrice;
final Map<String, dynamic> data = new Map<String, dynamic>();
data['is_coexist'] = this.isCoexist;
data['ratio_data'] = this.ratioData;
return data;
}
}
... ...
... ... @@ -39,7 +39,7 @@ class _ReturnMoneyPageState extends State<ReturnMoneyPage> {
ScrollController controller = ScrollController();
bool isBack = false;
bool isRatio = true; //是否按照比例返还 true按照比例/false按照阶梯返还
bool isRatio = false; //是否按照比例返还 true按照比例/false按照阶梯返还
TextEditingController ratioC = TextEditingController(); //比例输入框
FocusNode ratioNode = FocusNode(); //比例输入框
... ... @@ -49,16 +49,66 @@ class _ReturnMoneyPageState extends State<ReturnMoneyPage> {
TextEditingController proportionC = TextEditingController(); //消费金支付占实际消费金额比例
FocusNode proportionNode = FocusNode(); //消费金支付占实际消费金额比例
List<LadderReturnMoneyModel> ladderSelectFree = [];
List<LadderData> ladderSelectFree = [];
bool isCoexist = false; //消费金可与优惠券同时使用
@override
void initState() {
super.initState();
LadderReturnMoneyModel ladderReturnMoneyModel = LadderReturnMoneyModel();
ladderSelectFree.add(ladderReturnMoneyModel);
WidgetsBinding.instance.addPostFrameCallback((_) {});
WidgetsBinding.instance.addPostFrameCallback((_) {
_getConsumeConfig();
});
}
_getConsumeConfig() async {
Map<String, String?> pramas = {
'sellerid':
Provider.of<UserModel>(context, listen: false).user!.sellerid!,
};
await financeProvider!.getConsumeConfig(context, pramas);
if (financeProvider!.returnMoneySunModel != null) {
isBack =
financeProvider!.returnMoneySunModel?.isReturn == '1' ? true : false;
if (financeProvider!.returnMoneySunModel!.returnJson?.stime != null) {
DateTime dateTimes = DateTime.fromMillisecondsSinceEpoch(int.parse(
financeProvider!.returnMoneySunModel!.returnJson!.stime
.toString()) *
1000);
fromDateFull =
DateUtil.formatDate(dateTimes, format: DateFormats.y_mo_d);
}
if (financeProvider!.returnMoneySunModel!.returnJson?.etime != null) {
DateTime dateTimee = DateTime.fromMillisecondsSinceEpoch(int.parse(
financeProvider!.returnMoneySunModel!.returnJson!.etime
.toString()) *
1000);
endDateFull =
DateUtil.formatDate(dateTimee, format: DateFormats.y_mo_d);
}
isRatio = financeProvider!.returnMoneySunModel!.returnJson?.isRatio == '1'
? true
: false;
ratioC.text =
financeProvider!.returnMoneySunModel!.returnJson?.ratioData ?? '';
ladderSelectFree =
financeProvider!.returnMoneySunModel!.returnJson?.ladderData ?? [];
if (ladderSelectFree.length == 0) {
LadderData ladderReturnMoneyModel = LadderData();
ladderSelectFree.add(ladderReturnMoneyModel);
}
isCoexist = financeProvider!.returnMoneySunModel!.isTogether == '1'
? true
: false;
proportionC.text =
financeProvider!.returnMoneySunModel!.togetherJson?.ratioData ?? '';
setState(() {});
}
}
//提交接口
... ... @@ -66,7 +116,6 @@ class _ReturnMoneyPageState extends State<ReturnMoneyPage> {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
Map<String, String?> fullReductionData = {};
if (isBack) {
if (fromDateFull == '选择日期') {
Utils.showToast('请选择活动的开始时间!');
... ... @@ -477,7 +526,7 @@ class _ReturnMoneyPageState extends State<ReturnMoneyPage> {
shrinkWrap: true,
itemCount: ladderSelectFree.length,
itemBuilder: (context, index) {
LadderReturnMoneyModel data = ladderSelectFree[index];
LadderData data = ladderSelectFree[index];
return Container(
padding: EdgeInsets.only(
left: w(40), top: w(8), bottom: w(8), right: w(16)),
... ... @@ -565,7 +614,7 @@ class _ReturnMoneyPageState extends State<ReturnMoneyPage> {
return KeyboardDismissOnTap(
child: Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar('支付返券'),
appBar: SystemAppBar('支付返消费金'),
key: scaffoldKey,
body: Column(children: [
Expanded(
... ... @@ -596,7 +645,7 @@ class _ReturnMoneyPageState extends State<ReturnMoneyPage> {
format:
DateFormats.y_mo_d))) <
0) {
Utils.showToast('满减返券的活动开始时间不能迟于活动结束时间');
Utils.showToast('活动开始时间不能迟于活动结束时间');
return;
}
}
... ... @@ -637,7 +686,7 @@ class _ReturnMoneyPageState extends State<ReturnMoneyPage> {
.compareTo(DateUtil.getDateTime(
fromDateFull)) <
0) {
Utils.showToast('满减返券的活动结束时间不能早于活动开始时间');
Utils.showToast('活动结束时间不能早于活动开始时间');
return;
}
}
... ... @@ -679,8 +728,7 @@ class _ReturnMoneyPageState extends State<ReturnMoneyPage> {
if (!isRatio)
InkWell(
onTap: () {
LadderReturnMoneyModel data =
LadderReturnMoneyModel();
LadderData data = LadderData();
ladderSelectFree.add(data);
setState(() {});
},
... ...
... ... @@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
import 'package:one_key/models/deposit_record_detail_model.dart';
import 'package:one_key/models/deposit_record_model.dart';
import 'package:one_key/models/ladder_coupons_model.dart';
import 'package:one_key/models/ladder_return_money_model.dart';
import 'package:one_key/models/vip_record_detail_model.dart';
import 'package:one_key/models/vip_record_model.dart';
import 'package:one_key/provider/user_model.dart';
... ... @@ -45,6 +46,8 @@ class FinanceProvider extends ChangeNotifier {
PageState pageStateRecordDeposit = PageState.Loading;
ReturnMoneySunModel? returnMoneySunModel;
///客户经理获取所创建活动列表
Future createPayQrcode(BuildContext context, {isShowLoading = true}) async {
try {
... ... @@ -236,7 +239,9 @@ class FinanceProvider extends ChangeNotifier {
context, Method.post, HttpUrl.set_consume_config,
data: params, showLoading: showLoading);
if (baseResp.code == Constant.status_success) {
if (baseResp.data == 0 || baseResp.data == 1) {
if (baseResp.data == 0 ||
baseResp.data == 1 ||
(baseResp.data is Map)) {
if (needToast) {
Utils.showToast('设置成功');
}
... ... @@ -285,6 +290,33 @@ class FinanceProvider extends ChangeNotifier {
}
}
///获取商家消费金规则
Future getConsumeConfig(BuildContext context, Map<String, String?> params,
{isShowLoading = true}) async {
try {
BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
context, Method.post, HttpUrl.get_consume_config,
data: params, showLoading: isShowLoading);
if (baseResp.code == Constant.status_success) {
ReturnMoneySunModel? temp =
ReturnMoneyModel.fromJson(baseResp.responseData!).data;
if (temp != false) {
returnMoneySunModel = temp;
}
} else {
if (baseResp != null) {
Utils.showToast(baseResp.msg ?? "");
}
}
notifyListeners();
} catch (error) {
print(error.toString());
if (error is MyError) {}
notifyListeners();
}
}
///获取商家定金订单列表
Future getReserveDepositOrderList(
BuildContext context, Map<String, String?> params,
... ...