Commit a361475050f998e6217f73fe2a2aee50e7a42653

Authored by wdn127929
1 parent 2dac9af2

优惠券----销售价、券用途、使用限制

import 'dart:convert';
import 'package:json_annotation/json_annotation.dart';
import 'package:one_key/models/filter_btn_model.dart';
part 'coupon_model.g.dart';
... ... @@ -76,6 +79,15 @@ class CouponSunModel extends Object {
@JsonKey(name: 'is_open')
bool isOpenBool = false;
@JsonKey(name: 'price')
dynamic price;
@JsonKey(name: 'use')
CouponUse use;
@JsonKey(name: 'exp_date')
ExpDate expDate;
bool isCheck = false;
bool showText = false;
... ... @@ -96,10 +108,68 @@ class CouponSunModel extends Object {
this.isExamine,
this.isType,
this.isOpen,
this.isOpenBool);
this.isOpenBool,
this.price,
this.use,
this.expDate);
factory CouponSunModel.fromJson(Map<String, dynamic> srcJson) =>
_$CouponSunModelFromJson(srcJson);
Map<String, dynamic> toJson() => _$CouponSunModelToJson(this);
}
@JsonSerializable()
class CouponUse extends Object {
@JsonKey(name: 'is_cash')
bool isCash;
@JsonKey(name: 'is_discount')
bool isDiscount;
@JsonKey(name: 'is_dish')
bool isDish;
@JsonKey(name: 'cash')
String cash;
@JsonKey(name: 'discount')
String discount;
@JsonKey(name: 'dish')
String dish;
CouponUse(this.isCash, this.isDiscount, this.isDish, this.cash, this.discount,
this.dish);
factory CouponUse.fromJson(Map<String, dynamic> srcJson) =>
_$CouponUseFromJson(srcJson);
Map<String, dynamic> toJson() => _$CouponUseToJson(this);
}
@JsonSerializable()
class ExpDate extends Object {
@JsonKey(name: 'is_none')
bool isNone;
@JsonKey(name: 'is_week')
bool isWeek;
@JsonKey(name: 'is_birthday')
bool isBirthday;
@JsonKey(name: 'week_show')
String weekShow;
@JsonKey(name: 'week_data')
List<FilterBtnModel> weekData;
ExpDate(
this.isNone, this.isWeek, this.isBirthday, this.weekShow, this.weekData);
factory ExpDate.fromJson(Map<String, dynamic> srcJson) =>
_$ExpDateFromJson(srcJson);
Map<String, dynamic> toJson() => _$ExpDateToJson(this);
}
... ...
... ... @@ -42,7 +42,22 @@ CouponSunModel _$CouponSunModelFromJson(Map<String, dynamic> json) {
json['is_examine'] as String,
json['is_type'] as String,
json['is_open'] as String,
json['status'] == "1" ? true : false,
json['is_open'] == "1" ? true : false,
json['price'] as String,
json['use'] == null
? null
: (json['use'] is String)
? CouponUse.fromJson(jsonDecode(json['use']))
: (json['use'] is Map)
? CouponUse.fromJson(json['use'])
: null,
json['exp_date'] == null
? null
: (json['exp_date'] is String)
? ExpDate.fromJson(jsonDecode(json['exp_date']))
: (json['exp_date'] is Map)
? ExpDate.fromJson(json['exp_date'])
: null,
);
}
... ... @@ -64,5 +79,88 @@ Map<String, dynamic> _$CouponSunModelToJson(CouponSunModel instance) =>
'is_examine': instance.isExamine,
'is_type': instance.isType,
'isOpen': instance.isOpen,
'isOpenBool': instance.isOpenBool
'isOpenBool': instance.isOpenBool,
'price': instance.price,
'use': instance.use,
'exp_date': instance.expDate
};
CouponUse _$CouponUseFromJson(Map<String, dynamic> json) {
bool iscash = false;
if (json['is_cash'] is String) {
iscash = json['is_cash'] == '1' ? true : false;
} else if (json['is_cash'] is bool) {
iscash = json['is_cash'] ? true : false;
}
bool isdiscount = false;
if (json['is_discount'] is String) {
isdiscount = json['is_discount'] == '1' ? true : false;
} else if (json['is_discount'] is bool) {
isdiscount = json['is_discount'] ? true : false;
}
bool isdish = false;
if (json['is_dish'] is String) {
isdish = json['is_dish'] == '1' ? true : false;
} else if (json['is_dish'] is bool) {
isdish = json['is_dish'] ? true : false;
}
return CouponUse(
iscash,
isdiscount,
isdish,
json['cash'] as String,
json['discount'] as String,
json['dish'] as String,
);
}
Map<String, dynamic> _$CouponUseToJson(CouponUse instance) => <String, dynamic>{
'is_cash': instance.isCash,
'is_discount': instance.isDiscount,
'is_dish': instance.isDish,
'cash': instance.cash,
'discount': instance.discount,
'dish': instance.dish,
};
ExpDate _$ExpDateFromJson(Map<String, dynamic> json) {
List<FilterBtnModel> weekdata = [];
if (json['week_data'] != null) {
json['week_data'].forEach((v) {
weekdata.add(new FilterBtnModel.fromJson(v));
});
}
bool isnone = false;
if (json['is_none'] is String) {
isnone = json['is_none'] == '1' ? true : false;
} else if (json['is_none'] is bool) {
isnone = json['is_none'] ? true : false;
}
bool isweek = false;
if (json['is_week'] is String) {
isweek = json['is_week'] == '1' ? true : false;
} else if (json['is_week'] is bool) {
isweek = json['is_week'] ? true : false;
}
bool isbirthday = false;
if (json['is_birthday'] is String) {
isbirthday = json['is_birthday'] == '1' ? true : false;
} else if (json['is_birthday'] is bool) {
isbirthday = json['is_birthday'] ? true : false;
}
return ExpDate(
isnone, isweek, isbirthday, json['week_show'] as String, weekdata);
}
Map<String, dynamic> _$ExpDateToJson(ExpDate instance) => <String, dynamic>{
'is_none': instance.isNone,
'is_week': instance.isWeek,
'is_birthday': instance.isBirthday,
'week_show': instance.weekShow,
'week_data': instance.weekData,
};
... ...
... ... @@ -18,6 +18,7 @@ import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import '../../utils/screen_util.dart';
import '../../widgets/page_exception.dart';
/**
... ... @@ -143,6 +144,38 @@ class _CouponDetailPageState extends State<CouponDetailPage> {
);
}
///输入框
Widget _textShow(String title, String subtitle) {
return Container(
padding: EdgeInsets.only(
left: w(15),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
child: Text(
title,
style: TextStyle(
color: Color.fromRGBO(0, 0, 0, 0.9),
fontSize: ScreenUtil().setSp(32)),
),
),
Spacer(),
Text(
subtitle,
//输入文本的样式
style: TextStyle(
color: Color.fromRGBO(0, 0, 0, 0.4),
fontSize: ScreenUtil().setSp(32),
),
),
],
),
);
}
@override
Widget build(BuildContext context) {
couponProvider = Provider.of<CouponProvider>(context, listen: true);
... ... @@ -196,6 +229,59 @@ class _CouponDetailPageState extends State<CouponDetailPage> {
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
if (couponProvider.couponSunModel.isType == '1' &&
couponProvider.couponSunModel.use != null)
Column(
children: [
_item(
'销售价',
couponProvider.couponSunModel.price ??
''),
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_item(
'券用途',
couponProvider.couponSunModel.use.isCash
? '代金券'
: couponProvider
.couponSunModel.use.isDiscount
? '折扣券'
: couponProvider
.couponSunModel.use.isDish
? '菜品券'
: ''),
VEmptyView(10),
_textShow(
couponProvider.couponSunModel.use.isCash
? '金额:'
: couponProvider
.couponSunModel.use.isDiscount
? '折扣率:'
: couponProvider
.couponSunModel.use.isDish
? '菜品:'
: '',
couponProvider.couponSunModel.use.isCash
? '${couponProvider.couponSunModel.use.cash}元'
: couponProvider
.couponSunModel.use.isDiscount
? '${couponProvider.couponSunModel.use.discount}折'
: couponProvider
.couponSunModel.use.isDish
? couponProvider
.couponSunModel.use.dish
: ''),
VEmptyView(24),
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
],
),
_item('券要求', couponProvider.couponSunModel.desc),
Container(
height: ScreenUtil().setWidth(2),
... ... @@ -215,6 +301,27 @@ class _CouponDetailPageState extends State<CouponDetailPage> {
'有效期至',
Utils.getDateStrFromJiekou(
couponProvider.couponSunModel.etime)),
if (couponProvider.couponSunModel.isType == '1' &&
couponProvider.couponSunModel.expDate != null)
Column(children: [
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_item(
'使用限制',
couponProvider.couponSunModel.expDate.isNone
? '无'
: couponProvider.couponSunModel.expDate
.isBirthday
? '会员生日当天'
: couponProvider.couponSunModel
.expDate.isWeek
? couponProvider.couponSunModel
.expDate.weekShow
: ''),
]),
couponProvider.couponSunModel.isType == '1'
? Column(
crossAxisAlignment:
... ...
import 'dart:convert';
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_picker/flutter_picker.dart';
... ... @@ -195,6 +197,25 @@ class _CouponEidtPageState extends State<CouponEidtPage> {
//创建新券 客户经理创建活动
_createNewCoupon() async {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
if (!widget.isMine) {
if (money && moneyControl.text.trim().length == 0) {
Utils.showToast('请输入代金券金额!');
return;
}
if (discount && discountControl.text.trim().length == 0) {
Utils.showToast('请输入折扣率!');
return;
}
if (dish && dishControl.text.trim().length == 0) {
Utils.showToast('请输入菜品!');
return;
}
if (limitWeek && weekShow == '点击设置可用日期') {
Utils.showToast('请设置可用日期!');
return;
}
}
String from = fromDate + ' 00:00:00';
String end = endDate + ' 23:59:59';
Map<String, String> params = {
... ... @@ -215,6 +236,27 @@ class _CouponEidtPageState extends State<CouponEidtPage> {
if (!widget.isMine) {
params['is_examine'] = swichHexiao ? "1" : "0";
params['uid_list'] = uids;
params['price'] =
_priceControl.text.trim().length == 0 ? '0' : _priceControl.text;
Map use = {
'is_cash': money ? '1' : '0',
'is_discount': discount ? '1' : '0',
'is_dish': dish ? '1' : '0',
'cash': moneyControl.text,
'discount': discountControl.text,
'dish': dishControl.text
};
params['use'] = jsonEncode(use);
Map expDate = {
'is_none': limitNone ? '1' : '0',
'is_week': limitWeek ? '1' : '0',
'is_birthday': limitBirthday ? '1' : '0',
'week_show': weekShow,
'week_data': weekData
};
params['exp_date'] = jsonEncode(expDate);
}
bool isSuccess =
await couponProvider.createCustomerActivity(context, params);
... ... @@ -749,16 +791,15 @@ class _CouponEidtPageState extends State<CouponEidtPage> {
.numberWithOptions()),
if (discount)
_textfieldSelect('折扣率:', '点击输入折扣,如9折',
moneyControl, moneyFocusNode,
discountControl, dishFocusNode,
subtitle: '折',
textInputType: TextInputType
.numberWithOptions()),
if (dish)
_textfieldSelect('菜品:', '点击输入赠送菜品名称',
moneyControl, moneyFocusNode,
textInputType: TextInputType
.numberWithOptions()),
dishControl, dishFocusNode,
textInputType: TextInputType.text),
VEmptyView(48),
Container(
height: ScreenUtil().setWidth(2),
... ...