登录增加协议确认勾选 实名认证添加说明 修改订单model

master
章文轩 4 years ago
parent 9d084c2919
commit 666138270c

@ -54,16 +54,16 @@ class UserAPI {
String get platformDetail => '/v2/app/user/income/reward_month_income'; String get platformDetail => '/v2/app/user/income/reward_month_income';
/// ///
String get notRceivedDetail => '/v2/app/user/income/nr/detail'; String get notReceivedDetail => '/v2/app/user/income/nr/detail';
/// ///
String get rceivedDetail => '/v2/app/user/income/detail'; String get receivedDetail => '/v2/app/user/income/detail';
/// ///
String get groupNotRceivedDetail => '/v2/app/user/income/team/nr/detail'; String get groupNotReceivedDetail => '/v2/app/user/income/team/nr/detail';
/// ///
String get groupRceivedDetail => '/v2/app/user/income/team/detail'; String get groupReceivedDetail => '/v2/app/user/income/team/detail';
/// ///
String get myGroup => '/v2/app/user/team'; String get myGroup => '/v2/app/user/team';

@ -7,6 +7,7 @@
* ==================================================== * ====================================================
*/ */
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -20,6 +21,7 @@ import 'package:recook/pages/login/wechat_bind_page.dart';
import 'package:recook/pages/welcome/privacy_page_v2.dart'; import 'package:recook/pages/welcome/privacy_page_v2.dart';
import 'package:recook/third_party/wechat/wechat_utils.dart'; import 'package:recook/third_party/wechat/wechat_utils.dart';
import 'package:recook/utils/custom_route.dart'; import 'package:recook/utils/custom_route.dart';
import 'package:recook/widgets/alert.dart';
import 'package:recook/widgets/progress/sc_dialog.dart'; import 'package:recook/widgets/progress/sc_dialog.dart';
import 'package:recook/widgets/toast.dart'; import 'package:recook/widgets/toast.dart';
@ -34,6 +36,8 @@ class _LoginPageState extends BaseStoreState<LoginPage> {
BuildContext _context; BuildContext _context;
bool _weChatLoginLoading = false; bool _weChatLoginLoading = false;
bool _hasInstallWeChat = false; bool _hasInstallWeChat = false;
bool _chooseAgreement = false;
@override @override
initState() { initState() {
super.initState(); super.initState();
@ -132,17 +136,38 @@ class _LoginPageState extends BaseStoreState<LoginPage> {
/// ///
_buildWeChatLogin(), _buildWeChatLogin(),
GestureDetector(
onTap: () {
_chooseAgreement = !_chooseAgreement;
setState(() {});
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Container(
width: 50.w,
height: 50.w,
padding: EdgeInsets.only(top: 10.w, right: 5.w),
child: !_chooseAgreement
? Icon(CupertinoIcons.square,
size: 20, color: Colors.red)
: Icon(CupertinoIcons.checkmark_square,
size: 20, color: Colors.red)),
RichText( RichText(
text: TextSpan( text: TextSpan(
text: "登录代表您已阅读并同意", text: "您已阅读并同意",
style: style: TextStyle(
TextStyle(color: Colors.grey[500], fontSize: 14 * 2.sp), color: Colors.grey[500], fontSize: 14 * 2.sp),
children: [ children: [
new TextSpan( new TextSpan(
text: '《用户协议和隐私政策》', text: '《用户协议和隐私政策》',
style: new TextStyle(color: Colors.red), style: new TextStyle(color: Colors.red),
recognizer: _recognizer(context)), recognizer: _recognizer(context)),
])), ])),
],
),
),
/// ///
Container( Container(
@ -166,6 +191,7 @@ class _LoginPageState extends BaseStoreState<LoginPage> {
), ),
child: MaterialButton( child: MaterialButton(
onPressed: () { onPressed: () {
if (_chooseAgreement) {
DPrint.printf("微信登录"); DPrint.printf("微信登录");
WeChatUtils.wxLogin((WXLoginResult result) { WeChatUtils.wxLogin((WXLoginResult result) {
if (result.errCode == -2) { if (result.errCode == -2) {
@ -180,6 +206,22 @@ class _LoginPageState extends BaseStoreState<LoginPage> {
} }
} }
}); });
} else {
Alert.show(
context,
NormalContentDialog(
type: NormalTextDialogType.remind,
title: null,
content: Text(
'请您先阅读并同意《用户协议和隐私政策》',
style: TextStyle(color: Colors.black),
),
items: ["确认"],
listener: (index) {
Alert.dismiss(context);
},
));
}
}, },
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,

@ -9,6 +9,8 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -16,6 +18,9 @@ import 'package:recook/base/base_store_state.dart';
import 'package:recook/constants/header.dart'; import 'package:recook/constants/header.dart';
import 'package:recook/daos/user_dao.dart'; import 'package:recook/daos/user_dao.dart';
import 'package:recook/manager/user_manager.dart'; import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/welcome/privacy_page_v2.dart';
import 'package:recook/utils/custom_route.dart';
import 'package:recook/widgets/alert.dart';
import 'package:recook/widgets/custom_app_bar.dart'; import 'package:recook/widgets/custom_app_bar.dart';
import 'package:recook/widgets/progress/sc_dialog.dart'; import 'package:recook/widgets/progress/sc_dialog.dart';
import 'package:recook/widgets/text_button.dart' as TButton; import 'package:recook/widgets/text_button.dart' as TButton;
@ -34,6 +39,7 @@ class _PhoneLoginPageState extends BaseStoreState<PhoneLoginPage> {
FocusNode _phoneNode; FocusNode _phoneNode;
FocusNode _smsCodeNode; FocusNode _smsCodeNode;
bool _chooseAgreement = false;
Timer _timer; Timer _timer;
String _countDownStr = "获取验证码"; String _countDownStr = "获取验证码";
int _countDownNum = 59; int _countDownNum = 59;
@ -46,7 +52,7 @@ class _PhoneLoginPageState extends BaseStoreState<PhoneLoginPage> {
super.initState(); super.initState();
if (AppConfig.debug) { if (AppConfig.debug) {
_smsCodeController = TextEditingController(text: "0520"); _smsCodeController = TextEditingController(text: "0716");
_phoneController = TextEditingController(text: "18906611076"); _phoneController = TextEditingController(text: "18906611076");
_loginEnable = true; _loginEnable = true;
_getCodeEnable = true; _getCodeEnable = true;
@ -88,7 +94,7 @@ class _PhoneLoginPageState extends BaseStoreState<PhoneLoginPage> {
}, },
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Container( Container(
height: rSize(20), height: rSize(20),
@ -102,13 +108,60 @@ class _PhoneLoginPageState extends BaseStoreState<PhoneLoginPage> {
_phoneText(), _phoneText(),
_smsCode(), _smsCode(),
_bottomOperation(), _bottomOperation(),
_loginButton(context) _loginButton(context),
40.hb,
GestureDetector(
onTap: () {
_chooseAgreement = !_chooseAgreement;
setState(() {});
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Container(
width: 50.w,
height: 50.w,
padding: EdgeInsets.only(top: 10.w, right: 5.w),
child: !_chooseAgreement
? Icon(CupertinoIcons.square,
size: 20, color: Colors.red)
: Icon(CupertinoIcons.checkmark_square,
size: 20, color: Colors.red)),
RichText(
text: TextSpan(
text: "您已阅读并同意",
style: TextStyle(
color: Colors.grey[500], fontSize: 14 * 2.sp),
children: [
new TextSpan(
text: '《用户协议和隐私政策》',
style: new TextStyle(color: Colors.red),
recognizer: _recognizer(context)),
])),
],
),
),
], ],
), ),
), ),
)); ));
} }
_recognizer(context) {
final TapGestureRecognizer recognizer = new TapGestureRecognizer();
recognizer.onTap = () {
// print("点击协议了");
// AppRouter.push(
// context,
// RouteName.WEB_VIEW_PAGE,
// arguments: WebViewPage.setArguments(
// url: WebApi.privacy, title: "用户使用协议", hideBar: true),
// );
CRoute.push(context, PrivacyPageV2());
};
return recognizer;
}
Container _phoneText() { Container _phoneText() {
return Container( return Container(
margin: margin:
@ -212,6 +265,7 @@ class _PhoneLoginPageState extends BaseStoreState<PhoneLoginPage> {
highlightTextColor: Colors.grey[400], highlightTextColor: Colors.grey[400],
border: Border(left: BorderSide(color: Colors.grey[500])), border: Border(left: BorderSide(color: Colors.grey[500])),
onTap: () { onTap: () {
if (_chooseAgreement) {
if (!TextUtils.verifyPhone(_phoneController.text)) { if (!TextUtils.verifyPhone(_phoneController.text)) {
showError("手机号码格式不正确!"); showError("手机号码格式不正确!");
return; return;
@ -223,6 +277,22 @@ class _PhoneLoginPageState extends BaseStoreState<PhoneLoginPage> {
}); });
GSDialog.of(context).showLoadingDialog(context, "正在发送.."); GSDialog.of(context).showLoadingDialog(context, "正在发送..");
_getSmsCode(context); _getSmsCode(context);
} else {
Alert.show(
context,
NormalContentDialog(
type: NormalTextDialogType.remind,
title: null,
content: Text(
'请您先阅读并同意《用户协议和隐私政策》',
style: TextStyle(color: Colors.black),
),
items: ["确认"],
listener: (index) {
Alert.dismiss(context);
},
));
}
}, },
), ),
], ],
@ -270,8 +340,25 @@ class _PhoneLoginPageState extends BaseStoreState<PhoneLoginPage> {
radius: BorderRadius.all(Radius.circular(5)), radius: BorderRadius.all(Radius.circular(5)),
backgroundColor: Theme.of(context).primaryColor, backgroundColor: Theme.of(context).primaryColor,
onTap: () { onTap: () {
if (_chooseAgreement) {
GSDialog.of(context).showLoadingDialog(context, "正在登录..."); GSDialog.of(context).showLoadingDialog(context, "正在登录...");
_phoneLogin(context); _phoneLogin(context);
} else {
Alert.show(
context,
NormalContentDialog(
type: NormalTextDialogType.remind,
title: null,
content: Text(
'请您先阅读并同意《用户协议和隐私政策》',
style: TextStyle(color: Colors.black),
),
items: ["确认"],
listener: (index) {
Alert.dismiss(context);
},
));
}
}, },
); );
} }

@ -32,15 +32,26 @@ import 'package:recook/widgets/mvp_list_view/mvp_list_view_contact.dart';
enum OrderPositionType { enum OrderPositionType {
onlineOrder, // 线 onlineOrder, // 线
storeOrder, // storeOrder, //
} }
enum OrderListType { all, unpaid, undelivered, receipt , afterSale ,} enum OrderListType {
all,
unpaid,
undelivered,
receipt,
afterSale,
}
class OrderListPage extends StatefulWidget { class OrderListPage extends StatefulWidget {
final OrderListType type; final OrderListType type;
final OrderPositionType positionType; final OrderPositionType positionType;
final OrderListController controller; final OrderListController controller;
const OrderListPage({Key key, this.type, this.positionType=OrderPositionType.onlineOrder, this.controller}) : super(key: key); const OrderListPage(
{Key key,
this.type,
this.positionType = OrderPositionType.onlineOrder,
this.controller})
: super(key: key);
@override @override
State<StatefulWidget> createState() { State<StatefulWidget> createState() {
@ -69,8 +80,8 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
@override @override
void initState() { void initState() {
super.initState(); super.initState();
widget.controller.refresh = (){ widget.controller.refresh = () {
if (mounted && _controller!=null) { if (mounted && _controller != null) {
_controller.requestRefresh(); _controller.requestRefresh();
} }
}; };
@ -87,6 +98,7 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
pageSize: 10, pageSize: 10,
itemClickListener: (index) { itemClickListener: (index) {
OrderModel orderModel = _controller.getData()[index]; OrderModel orderModel = _controller.getData()[index];
AppRouter.push(globalContext, RouteName.ORDER_DETAIL, AppRouter.push(globalContext, RouteName.ORDER_DETAIL,
arguments: OrderDetailPage.setArguments(orderModel.id)) arguments: OrderDetailPage.setArguments(orderModel.id))
.then(((result) { .then(((result) {
@ -110,18 +122,21 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
goToPay: (OrderModel order, {callback}) { goToPay: (OrderModel order, {callback}) {
_goToPay(order); _goToPay(order);
}, },
delete: (OrderModel order, {callback}){ delete: (OrderModel order, {callback}) {
_deleteOrder(order); _deleteOrder(order);
}, },
confirm: (OrderModel order, {callback}){ confirm: (OrderModel order, {callback}) {
_confirmReceiptClick(order); _confirmReceiptClick(order);
}, },
applyRefund: (OrderModel order, {callback}) {}, applyRefund: (OrderModel order, {callback}) {},
evaluation: (OrderModel order, {callback}) { evaluation: (OrderModel order, {callback}) {
List<EvaluationGoodsModel> goodsList = []; List<EvaluationGoodsModel> goodsList = [];
order.goodsList.forEach((goods){ order.goodsList.forEach((goods) {
if (goods.assType == 0) { if (goods.assType == 0) {
goodsList.add(EvaluationGoodsModel(id: goods.goodsId, mainPhotoUrl: goods.mainPhotoUrl, goodsName: goods.goodsName)); goodsList.add(EvaluationGoodsModel(
id: goods.goodsId,
mainPhotoUrl: goods.mainPhotoUrl,
goodsName: goods.goodsName));
} }
}); });
// order.brands.forEach((brand) { // order.brands.forEach((brand) {
@ -132,22 +147,24 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
// }); // });
push(RouteName.ORDER_EVALUATION, push(RouteName.ORDER_EVALUATION,
arguments: arguments: PublishEvaluationPage.setArguments(
PublishEvaluationPage.setArguments(orderId: order.id, goodsList: goodsList)); orderId: order.id, goodsList: goodsList));
}, },
); );
}, },
refreshCallback: () { refreshCallback: () {
_presenter.getOrderList(UserManager.instance.user.info.id, 0, widget.type, widget.positionType); _presenter.getOrderList(UserManager.instance.user.info.id, 0,
widget.type, widget.positionType);
}, },
loadMoreCallback: (page) { loadMoreCallback: (page) {
_presenter.getOrderList(UserManager.instance.user.info.id, page, widget.type, widget.positionType); _presenter.getOrderList(UserManager.instance.user.info.id, page,
widget.type, widget.positionType);
}, },
noDataView: noDataView("没有订单数据哦~"), noDataView: noDataView("没有订单数据哦~"),
); );
} }
_deleteOrder(OrderModel order){ _deleteOrder(OrderModel order) {
Alert.show( Alert.show(
globalContext, globalContext,
NormalTextDialog( NormalTextDialog(
@ -161,6 +178,7 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
}, },
)); ));
} }
_cancelOrder(OrderModel order) { _cancelOrder(OrderModel order) {
Alert.show( Alert.show(
globalContext, globalContext,
@ -171,14 +189,17 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
Alert.dismiss(globalContext); Alert.dismiss(globalContext);
if (index == 0) return; if (index == 0) return;
GSDialog.of(context).showLoadingDialog(globalContext, ""); GSDialog.of(context).showLoadingDialog(globalContext, "");
_presenter.cancelOrder(UserManager.instance.user.info.id, order.id, order: order); _presenter.cancelOrder(UserManager.instance.user.info.id, order.id,
order: order);
}, },
)); ));
} }
_goToPay(OrderModel order) async { _goToPay(OrderModel order) async {
Data data = Data(order.id, order.userId, order.actualTotalAmount, order.status, order.createdAt); Data data = Data(order.id, order.userId, order.actualTotalAmount,
order.status, order.createdAt);
OrderPrepayModel model = OrderPrepayModel("SUCCESS", data, ""); OrderPrepayModel model = OrderPrepayModel("SUCCESS", data, "");
AppRouter.push(globalContext, RouteName.ORDER_PREPAY_PAGE, AppRouter.push(globalContext, RouteName.ORDER_PREPAY_PAGE,
arguments: OrderPrepayPage.setArguments(model)); arguments: OrderPrepayPage.setArguments(model));
// Future.delayed(Duration(seconds: 1), () // Future.delayed(Duration(seconds: 1), ()
@ -187,26 +208,33 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
// }); // });
} }
_confirmReceiptClick(OrderModel orderModel){ _confirmReceiptClick(OrderModel orderModel) {
_confirmModel = null; _confirmModel = null;
Alert.show( Alert.show(
context, context,
NormalContentDialog( NormalContentDialog(
title: "确认收货", title: "确认收货",
content: Text("确认收货后无法发起售后申请,请确认您的商品无误。继续确认?", style: TextStyle(color: Colors.black,),), content: Text(
"确认收货后无法发起售后申请,请确认您的商品无误。继续确认?",
style: TextStyle(
color: Colors.black,
),
),
items: ["取消", "确认收货"], items: ["取消", "确认收货"],
listener: (int index){// Alert.dismiss(context); listener: (int index) {
if (index == 0) {// // Alert.dismiss(context);
if (index == 0) {
//
Alert.dismiss(context); Alert.dismiss(context);
}else{ } else {
Alert.dismiss(context); Alert.dismiss(context);
GSDialog.of(globalContext).showLoadingDialog(context, ""); GSDialog.of(globalContext).showLoadingDialog(context, "");
_presenter.confirmReceipt(UserManager.instance.user.info.id, orderModel.id); _presenter.confirmReceipt(
UserManager.instance.user.info.id, orderModel.id);
_confirmModel = orderModel; _confirmModel = orderModel;
} }
}, },
) ));
);
} }
@override @override
@ -254,12 +282,12 @@ class _OrderListPageState extends BaseStoreState<OrderListPage>
applyInvoiceSuccess() {} applyInvoiceSuccess() {}
@override @override
confirmReceiptSuccess(UserRoleUpgradeModel model){ confirmReceiptSuccess(UserRoleUpgradeModel model) {
GSDialog.of(context).dismiss(globalContext); GSDialog.of(context).dismiss(globalContext);
GSDialog.of(globalContext).showSuccess(globalContext, "确认成功").then((value) { GSDialog.of(globalContext).showSuccess(globalContext, "确认成功").then((value) {
UserLevelTool.showUpgradeWidget(model, globalContext, getStore()); UserLevelTool.showUpgradeWidget(model, globalContext, getStore());
}); });
_presenter.getOrderList(UserManager.instance.user.info.id, 0, widget.type, widget.positionType); _presenter.getOrderList(
UserManager.instance.user.info.id, 0, widget.type, widget.positionType);
} }
} }

@ -66,7 +66,8 @@ class _AddReviewPageState extends State<AddReviewPage> {
children: [ children: [
FadeInImage.assetNetwork( FadeInImage.assetNetwork(
placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG, placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG,
image: Api.getImgUrl(widget.model.mainPhotoUrl), image: Api.getImgUrl(
widget.model.myOrderGoodsDea.mainPhotoUrl),
height: rSize(56), height: rSize(56),
width: rSize(56), width: rSize(56),
), ),
@ -77,7 +78,7 @@ class _AddReviewPageState extends State<AddReviewPage> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( Text(
widget.model.goodsName, widget.model.myOrderGoodsDea.goodsName,
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
softWrap: false, softWrap: false,
@ -89,7 +90,7 @@ class _AddReviewPageState extends State<AddReviewPage> {
), ),
SizedBox(height: rSize(6)), SizedBox(height: rSize(6)),
Text( Text(
'型号规格 ${widget.model.skuName}', '型号规格 ${widget.model.myOrderGoodsDea.skuName}',
style: TextStyle( style: TextStyle(
color: Color(0xFF666666), color: Color(0xFF666666),
fontSize: rSP(13), fontSize: rSP(13),
@ -254,7 +255,7 @@ class _AddReviewPageState extends State<AddReviewPage> {
Future addComment(String comment, {List<Map<String, dynamic>> images}) async { Future addComment(String comment, {List<Map<String, dynamic>> images}) async {
Map params = { Map params = {
'userId': UserManager.instance.user.info.id, 'userId': UserManager.instance.user.info.id,
'goodsDetailId': widget.model.goodsDetailId, 'goodsDetailId': widget.model.myOrderGoodsDea.goodsDetailId,
'content': comment, 'content': comment,
}; };
if (images != null) params.putIfAbsent('images', () => images); if (images != null) params.putIfAbsent('images', () => images);

@ -1,4 +1,31 @@
class OrderReviewListModel { class OrderReviewListModel {
MyOrderGoodsDea myOrderGoodsDea;
int passEvaluation;
int compliance;
OrderReviewListModel(
{this.myOrderGoodsDea, this.passEvaluation, this.compliance});
OrderReviewListModel.fromJson(Map<String, dynamic> json) {
myOrderGoodsDea = json['my_order_goods_dea'] != null
? new MyOrderGoodsDea.fromJson(json['my_order_goods_dea'])
: null;
passEvaluation = json['pass_evaluation'];
compliance = json['compliance'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.myOrderGoodsDea != null) {
data['my_order_goods_dea'] = this.myOrderGoodsDea.toJson();
}
data['pass_evaluation'] = this.passEvaluation;
data['compliance'] = this.compliance;
return data;
}
}
class MyOrderGoodsDea {
int goodsDetailId; int goodsDetailId;
int orderId; int orderId;
int parentId; int parentId;
@ -49,7 +76,7 @@ class OrderReviewListModel {
String bomaoNo; String bomaoNo;
int evaluatedId; int evaluatedId;
OrderReviewListModel( MyOrderGoodsDea(
{this.goodsDetailId, {this.goodsDetailId,
this.orderId, this.orderId,
this.parentId, this.parentId,
@ -100,7 +127,7 @@ class OrderReviewListModel {
this.bomaoNo, this.bomaoNo,
this.evaluatedId}); this.evaluatedId});
OrderReviewListModel.fromJson(Map<String, dynamic> json) { MyOrderGoodsDea.fromJson(Map<String, dynamic> json) {
goodsDetailId = json['goodsDetailId']; goodsDetailId = json['goodsDetailId'];
orderId = json['orderId']; orderId = json['orderId'];
parentId = json['parentId']; parentId = json['parentId'];

@ -23,7 +23,7 @@ class _ReviewDetailPageState extends State<ReviewDetailPage> {
void initState() { void initState() {
super.initState(); super.initState();
HttpManager.post(OrderApi.checkReview, { HttpManager.post(OrderApi.checkReview, {
"id": widget.reviewModel.evaluatedId, "id": widget.reviewModel.myOrderGoodsDea.evaluatedId,
}).then((data) { }).then((data) {
setState(() { setState(() {
_model = ReviewResultModel.fromJson(data.data['data']); _model = ReviewResultModel.fromJson(data.data['data']);
@ -69,7 +69,8 @@ class _ReviewDetailPageState extends State<ReviewDetailPage> {
children: [ children: [
FadeInImage.assetNetwork( FadeInImage.assetNetwork(
placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG, placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG,
image: Api.getImgUrl(widget.reviewModel.mainPhotoUrl), image: Api.getImgUrl(
widget.reviewModel.myOrderGoodsDea.mainPhotoUrl),
height: rSize(56), height: rSize(56),
width: rSize(56), width: rSize(56),
), ),
@ -80,7 +81,7 @@ class _ReviewDetailPageState extends State<ReviewDetailPage> {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( Text(
widget.reviewModel.goodsName, widget.reviewModel.myOrderGoodsDea.goodsName,
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
softWrap: false, softWrap: false,
@ -92,7 +93,7 @@ class _ReviewDetailPageState extends State<ReviewDetailPage> {
), ),
SizedBox(height: rSize(6)), SizedBox(height: rSize(6)),
Text( Text(
'型号规格 ${widget.reviewModel.skuName}', '型号规格 ${widget.reviewModel.myOrderGoodsDea.skuName}',
style: TextStyle( style: TextStyle(
color: Color(0xFF666666), color: Color(0xFF666666),
fontSize: rSP(13), fontSize: rSP(13),

@ -34,7 +34,7 @@ class ReviewCard extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
FadeInImage.assetNetwork( FadeInImage.assetNetwork(
image: Api.getImgUrl(model.mainPhotoUrl), image: Api.getImgUrl(model.myOrderGoodsDea.mainPhotoUrl),
placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG, placeholder: R.ASSETS_PLACEHOLDER_NEW_1X1_A_PNG,
height: rSize(80), height: rSize(80),
width: rSize(80), width: rSize(80),
@ -47,7 +47,7 @@ class ReviewCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
Text( Text(
model.goodsName, model.myOrderGoodsDea.goodsName,
maxLines: 1, maxLines: 1,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
softWrap: false, softWrap: false,
@ -59,7 +59,7 @@ class ReviewCard extends StatelessWidget {
), ),
SizedBox(height: rSize(6)), SizedBox(height: rSize(6)),
Text( Text(
'型号规格 ${model.skuName}', '型号规格 ${model.myOrderGoodsDea.skuName}',
style: TextStyle( style: TextStyle(
color: Color(0xFF666666), color: Color(0xFF666666),
fontSize: rSP(13), fontSize: rSP(13),
@ -77,7 +77,7 @@ class ReviewCard extends StatelessWidget {
), ),
TextSpan( TextSpan(
text: text:
'¥ ${model.goodsAmount.toStringAsFixed(0)}', '¥ ${model.myOrderGoodsDea.goodsAmount.toStringAsFixed(0)}',
style: TextStyle( style: TextStyle(
color: Color(0xFF333333), color: Color(0xFF333333),
), ),
@ -98,7 +98,7 @@ class ReviewCard extends StatelessWidget {
text: '购买数量 ', text: '购买数量 ',
), ),
TextSpan( TextSpan(
text: '${model.quantity}', text: '${model.myOrderGoodsDea.quantity}',
style: TextStyle( style: TextStyle(
color: Color(0xFF333333), color: Color(0xFF333333),
), ),
@ -131,7 +131,7 @@ class ReviewCard extends StatelessWidget {
CRoute.push( CRoute.push(
context, context,
AddReviewPage( AddReviewPage(
goodsDetailId: model.goodsDetailId, goodsDetailId: model.myOrderGoodsDea.goodsDetailId,
model: model, model: model,
), ),
).then((value) { ).then((value) {

@ -7,6 +7,7 @@ import 'package:recook/manager/http_manager.dart';
import 'package:recook/manager/user_manager.dart'; import 'package:recook/manager/user_manager.dart';
import 'package:recook/pages/user/mvp/user_presenter_impl.dart'; import 'package:recook/pages/user/mvp/user_presenter_impl.dart';
import 'package:recook/pages/user/user_verify_result.dart'; import 'package:recook/pages/user/user_verify_result.dart';
import 'package:recook/widgets/alert.dart';
import 'package:recook/widgets/custom_app_bar.dart'; import 'package:recook/widgets/custom_app_bar.dart';
import 'package:recook/widgets/custom_image_button.dart'; import 'package:recook/widgets/custom_image_button.dart';
@ -88,7 +89,12 @@ class _VerifyPageState extends BaseStoreState<VerifyPage> {
), ),
), ),
_idcardWidget(), _idcardWidget(),
_saveButton(context) _saveButton(context),
Container(
padding: EdgeInsets.only(top: 20.w),
alignment: Alignment.center,
child: _verifyReseason(),
)
], ],
), ),
), ),
@ -196,6 +202,51 @@ class _VerifyPageState extends BaseStoreState<VerifyPage> {
); );
} }
_verifyReseason() {
return MaterialButton(
padding: EdgeInsets.all(4.rw),
minWidth: 0,
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
Container(
padding: EdgeInsets.only(top: 2.w),
child: Icon(
Icons.help_outline,
size: 20.rw,
color: Color(0xFFD5101A),
),
),
10.wb,
Text(
"为什么要实名认证",
style: TextStyle(
color: Colors.grey.shade500,
fontSize: 15,
fontWeight: FontWeight.w300),
),
],
),
onPressed: () {
Alert.show(
context,
NormalContentDialog(
type: NormalTextDialogType.remind,
title: null,
content: Text(
'根据海关规定,购买跨境商品需要办理清关手续,请您配合进行实名认证,以确保购买的商品顺利通过海关检查。(瑞库客承诺用户上传的身份信息将仅用于办理跨境商品的清关手续,不作他途使用,并对身份信息加密)实名认证的规则:购买跨境商品需填写瑞库客账号注册人的真实姓名及身份证号码。',
style: TextStyle(color: Colors.black),
),
items: ["我知道了"],
listener: (index) {
Alert.dismiss(context);
},
));
},
);
}
bool _canSubmit() { bool _canSubmit() {
if (!TextUtils.isEmpty(_nameEditController.text) && if (!TextUtils.isEmpty(_nameEditController.text) &&
(!TextUtils.isEmpty(_idCardController.text) && (!TextUtils.isEmpty(_idCardController.text) &&

@ -30,6 +30,8 @@ class _Styles {
color: Colors.red, fontSize: 15 * 2.sp, fontWeight: FontWeight.w500); color: Colors.red, fontSize: 15 * 2.sp, fontWeight: FontWeight.w500);
static final TextStyle disableTextStyle = TextStyle( static final TextStyle disableTextStyle = TextStyle(
color: Colors.grey, fontSize: 15 * 2.sp, fontWeight: FontWeight.w500); color: Colors.grey, fontSize: 15 * 2.sp, fontWeight: FontWeight.w500);
static final TextStyle remindTextStyle = TextStyle(
color: Colors.red, fontSize: 15 * 2.sp, fontWeight: FontWeight.bold);
} }
class Alert { class Alert {
@ -47,7 +49,7 @@ class Alert {
} }
} }
enum NormalTextDialogType { normal, delete } enum NormalTextDialogType { normal, delete, remind }
/// ///
class NormalTextDialog extends Dialog { class NormalTextDialog extends Dialog {
@ -267,7 +269,9 @@ class NormalContentDialog extends Dialog {
: () { : () {
this.listener(index); this.listener(index);
}, },
style: _Styles.normalTextStyle, style: this.type != NormalTextDialogType.remind
? _Styles.normalTextStyle
: _Styles.remindTextStyle,
disableStyle: _Styles.disableTextStyle), disableStyle: _Styles.disableTextStyle),
)); ));
}).toList(); }).toList();

Loading…
Cancel
Save