import 'dart:convert'; import 'dart:math'; import 'package:bbyyy/beans/alipay_result_bean_entity.dart'; import 'package:bbyyy/beans/goods_bean_entity.dart'; import 'package:bbyyy/beans/my_shop_bean_entity.dart'; import 'package:bbyyy/beans/new_order_bean_entity.dart'; import 'package:bbyyy/beans/pay_by_alipay_bean_entity.dart'; import 'package:bbyyy/beans/smart_order_bean_entity.dart'; import 'package:bbyyy/beans/user_balance_entity.dart'; import 'package:bbyyy/https/MyDio.dart'; import 'package:bbyyy/https/my_request.dart'; import 'package:bbyyy/my_tools/const.dart'; import 'package:bbyyy/my_tools/dims.dart'; import 'package:bbyyy/my_tools/easy_loading/easy_loading.dart'; import 'package:bbyyy/my_tools/event_bus.dart'; import 'package:bbyyy/my_tools/my_colors.dart'; import 'package:bbyyy/my_tools/my_cookie.dart'; import 'package:bbyyy/my_tools/my_tools.dart'; import 'package:bbyyy/my_tools/my_views.dart'; import 'package:bbyyy/paegs/chat_page/chat_page.dart'; import 'package:bbyyy/paegs/gang_page/gang_in_page/pay_to_the_helper_page/pay_to_the_helper_page.dart'; import 'package:bbyyy/pay/pay_tools.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:flutter_svg/svg.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:tobias/tobias.dart'; import 'gang_information_page/gang_information_page.dart'; class GangInPage extends StatefulWidget { MyShopBeanDataData data; NewOrderBeanContent order; GangInPage(this.data, this.order); @override _GangInPageState createState() => _GangInPageState(); } class _GangInPageState extends State { int selectedIndex = 0; RefreshController controller = RefreshController(initialRefresh: true); int page = 1; _GangInPageState(); List goods = []; List orders = []; @override void initState() { // TODO: implement initState super.initState(); EventBus().on('payAnOrder', (arg) { controller.requestRefresh(); }); EventBus().on('reNoPayOrder', (arg) { controller.requestRefresh(); }); Future.delayed(Duration.zero, () { if (widget.order != null) { setState(() { selectedIndex = 2; payTheOrder(); }); } }); if (widget.data.ownerUid == MyCookie().getUID()) { selectedIndex = 1; } } @override void dispose() { // TODO: implement dispose super.dispose(); EventBus().off('payAnOrder'); EventBus().off('reNoPayOrder'); } @override Widget build(BuildContext context) { return Scaffold( body: Column( children: [ MyViews().myAppBar(widget.data.shopName, context, [ IconButton( icon: Icon(Icons.more_horiz), onPressed: () { MyTools() .toPage(context, GangInformationPage(widget.data), (then) { if(then=='删除货帮'){ Navigator.pop(context,'删除货帮'); } }); }) ]), Visibility( visible: widget.data.privateShop||widget.data.ownerUid==MyCookie().getUID(), child: Container( height: 40, color: Colors.white, child: Row( children: [ GestureDetector( onTap: () { setState(() { selectedIndex = 0; controller.requestRefresh(); }); }, behavior: HitTestBehavior.translucent, child: Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Column( children: [ Text( '货帮商品', style: TextStyle( color: selectedIndex == 0 ? MyColors.cFF4233 : MyColors.c666666, fontSize: 15), ), Container( height: 10, child: Visibility( child: SvgPicture.asset('images/svg/tab.svg'), visible: selectedIndex == 0, ), ) ], mainAxisAlignment: MainAxisAlignment.end, ), ), ), GestureDetector( onTap: () { setState(() { selectedIndex = 1; controller.requestRefresh(); }); }, behavior: HitTestBehavior.translucent, child: Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Column( children: [ Text( widget.data.ownerUid == MyCookie().getUID() ? '未付订单' : '未收订单', style: TextStyle( color: selectedIndex == 1 ? MyColors.cFF4233 : MyColors.c666666, fontSize: 15), ), Container( height: 10, child: Visibility( child: SvgPicture.asset('images/svg/tab.svg'), visible: selectedIndex == 1, ), ) ], mainAxisAlignment: MainAxisAlignment.end, ), ), ), GestureDetector( onTap: () { setState(() { selectedIndex = 2; controller.requestRefresh(); }); }, behavior: HitTestBehavior.translucent, child: Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Column( children: [ Text( widget.data.ownerUid == MyCookie().getUID() ? '已付订单' : '未付订单', style: TextStyle( color: selectedIndex == 2 ? MyColors.cFF4233 : MyColors.c666666, fontSize: 15), ), Container( height: 10, child: Visibility( child: SvgPicture.asset('images/svg/tab.svg'), visible: selectedIndex == 2, ), ) ], mainAxisAlignment: MainAxisAlignment.end, ), ), ) ], mainAxisAlignment: MainAxisAlignment.spaceAround, ), ), ), body(), SafeArea( top: false, child: Container( padding: EdgeInsets.symmetric(horizontal: 37), color: Colors.white, width: double.infinity, height: 60, child: Row( children: [ Expanded( child: GestureDetector( onTap: () { queryShopMembers(); }, behavior: HitTestBehavior.translucent, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( topLeft: Radius.circular(20), bottomLeft: Radius.circular(20), ), border: Border.all( color: MyColors.cFF4233, width: 1)), height: 40, child: MyViews().myText('联系帮主', MyColors.cFF4233, 14), alignment: Alignment.center), ), ), Expanded( child: GestureDetector( onTap: () { MyTools().toPage( context, PayToTheHelperPage(widget.data), (then) {}); }, behavior: HitTestBehavior.translucent, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.only( topRight: Radius.circular(20), bottomRight: Radius.circular(20), ), color: MyColors.cFF4233), height: 40, child: MyViews().myText('到店付款', Colors.white, 14), alignment: Alignment.center), ), ) ], ), ), ) ], ), ); } body() { if (selectedIndex == 0) { return Expanded( child: SmartRefresher( controller: controller, onRefresh: onRefresh, onLoading: onLoading, enablePullDown: true, enablePullUp: true, child: goods.length == 0 ? noData() : GridView.builder( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, //每行三列 childAspectRatio: 164 / 261, //显示区域宽高相等 mainAxisSpacing: 8, crossAxisSpacing: 8), itemCount: goods.length, padding: EdgeInsets.only(left: 14, right: 14, top: 14, bottom: 65), itemBuilder: (context, index) { return MyViews().getGoodsItem(goods[index], context); }), ), ); } else if (selectedIndex == 1) { return Expanded( child: SmartRefresher( controller: controller, onRefresh: onRefresh, onLoading: onLoading, enablePullDown: true, enablePullUp: true, child: orders.length == 0 ? noData() : ListView.builder( itemBuilder: (c, index) { return Slidable( child: MyViews().getNoPayGoodsItem(orders[index], context,widget.data.ownerUid), actionPane: SlidableDrawerActionPane(), enabled: widget.data.ownerUid == MyCookie().getUID(), actionExtentRatio: 0.25, secondaryActions: [ SlideAction( child: Container( child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(30), color: MyColors.cFF4233, ), height: 60,width: 60, child: SvgPicture.asset('images/svg/del.svg',height: 40,width: 40,), alignment: Alignment.center, ), ), onTap: (){ showSimpleDialog('将删除订单(${orders[index].uid})', context, (){ Navigator.pop(context); deleteOrder(orders[index]); }); }, ) ], ); }, itemCount: orders.length, padding: EdgeInsets.only(left: 10, right: 10, top: 10), ), ), ); } else if (selectedIndex == 2) { return Expanded( child: SmartRefresher( controller: controller, onRefresh: onRefresh, onLoading: onLoading, enablePullDown: true, enablePullUp: true, child: orders.length == 0 ? noData() : ListView.builder( itemBuilder: (c, index) { return MyViews().getNoPayGoodsItem(orders[index], context,widget.data.ownerUid); }, itemCount: orders.length, padding: EdgeInsets.only(left: 10, right: 10, top: 10), ), ), ); } else { return noData(); } } void onRefresh() { page = 1; if (selectedIndex == 0) { queryProducts(); } else if (selectedIndex == 1) { unreceivedOrder(); } else { unpaidOrder(); } } void onLoading() { page++; if (selectedIndex == 0) { queryProducts(); } else if (selectedIndex == 1) { unreceivedOrder(); } else { unpaidOrder(); } } //查询商品 void queryProducts() { MyDio().query({ "key": "commodity", "filters": { "conditions": ["shop_uid == ${widget.data.shopUid}","on_sale == true"] }, "dims": commodityDims, "paging": [page, 20] }, (response, hasError) { if (!hasError) { GoodsBeanEntity entity = GoodsBeanEntity().fromJson(json.decode(response.data.toString())); if (page == 1) { goods.clear(); } goods.addAll(entity.data.data); } setState(() { endRe(controller); }); }, (error) { setState(() { endRe(controller); }); }); } //查询未收订单 void unreceivedOrder() { var conditions = []; if (widget.data.ownerUid == MyCookie().getUID()) { conditions.add('state == $orderStateUnpaid'); conditions.add('shop_uid == ${widget.data.shopUid}'); } else { conditions.add('state == $orderStateUnpaid'); conditions.add('shop_uid == ${widget.data.shopUid}'); conditions.add('seller_uid == ${MyCookie().getUID()}'); } MyDio().query({ "key": "order", "filters": {"conditions": conditions}, "dims": orderDims, "paging": [page, 20], "order_by": ["create_time,DESC"] }, (response, hasError) { if (!hasError) { SmartOrderBeanEntity entity = SmartOrderBeanEntity() .fromJson(json.decode(response.data.toString())); if (page == 1) { orders.clear(); } orders.addAll(entity.data.data); setState(() {}); } endRe(controller); }, (error) {}); } //查询未付订单 void unpaidOrder() { var conditions = []; if (widget.data.ownerUid == MyCookie().getUID()) { conditions.add('state == $orderStatePaid'); conditions.add('shop_uid == ${widget.data.shopUid}'); } else { conditions.add('state == $orderStateUnpaid'); conditions.add('shop_uid == ${widget.data.shopUid}'); conditions.add('buyer_name LIKE ${MyCookie().getName()}'); } MyDio().query({ "key": "order", "filters": {"conditions": conditions}, "dims": orderDims, "paging": [page, 20], "order_by": ["create_time,DESC"] }, (response, hasError) { if (!hasError) { SmartOrderBeanEntity entity = SmartOrderBeanEntity() .fromJson(json.decode(response.data.toString())); if (page == 1) { orders.clear(); } orders.addAll(entity.data.data); setState(() {}); } endRe(controller); }, (error) {}); } payTheOrder() { SmartOrderBeanDataData data = SmartOrderBeanDataData(); data.sellerUid = widget.order.sellerUID; data.sellerName = widget.order.sellerName; data.sellerPic = widget.order.sellerPic; data.buyerUid = 0; data.buyerName = widget.order.buyerName; data.buyerPic = ''; data.amount = widget.order.amount; data.uid = widget.order.uID; showPayDialog(data,context,(){ Navigator.pop(context); getUserWalletBalance((re, hE) { if (!hE) { UserBalanceEntity balance = UserBalanceEntity() .fromJson(json.decode(re .data .toString())); if (balance.data >= widget.order.amount) { payOrder( payWayWallet, widget.order.uID, (re, hE) { if (!hE) { showToast('支付成功'); EventBus() .emit('payAnOrder'); } }, (e) {}, context); } else { payOrder( payWayAliPay, widget.order.uID, (re, hE) { if (!hE) { PayByAlipayBeanEntity entity = PayByAlipayBeanEntity() .fromJson( json.decode(re .data .toString())); EventBus().on( 'alipayPaymentCallback', (arg) { EventBus().off( 'alipayPaymentCallback'); EasyLoading.dismiss(); showToast('支付成功'); EventBus().emit( 'reNoPayOrder'); }); print(entity.data); EasyLoading.instance ..contentPadding = EdgeInsets .symmetric( horizontal: 20, vertical: 12) ..alignment = Alignment.center ..contentMargin = EdgeInsets.all(20); EasyLoading.show(); aliPay(entity.data) .then((value) { print( json.encode(value)); AlipayResultBeanEntity e = AlipayResultBeanEntity() .fromJson(json .decode(json .encode( value))); try { int r = int.parse( e.resultStatus); if (r == 9000) { showToast('支付成功'); } else { showToast( aliPayResultStatus( r)); resetOrder( widget.order.uID); } } catch (e) { EasyLoading.dismiss(); } }); // EventBus().emit('payAnOrder'); } }, (e) {}, context); // showToast('积分余额不足'); } } }, (e) {}, context); }); // showDialog( // context: context, // builder: (BuildContext context) { // return Center( // child: Container( // decoration: BoxDecoration( // color: Colors.white, // borderRadius: BorderRadius.all(Radius.circular(8))), // child: Column( // children: [ // Expanded( // child: Center( // child: Padding( // padding: const EdgeInsets.only(left: 15, right: 15), // child: Column( // children: [ // Text( // '确认支付订单(${widget.order.uID})', // style: TextStyle( // color: MyColors.c333333, // fontSize: 16, // fontWeight: FontWeight.normal, // decoration: TextDecoration.none), // ), // Text( // '付款人:${widget.order.buyerName}', // style: TextStyle( // color: MyColors.c333333, // fontSize: 16, // fontWeight: FontWeight.normal, // decoration: TextDecoration.none), // ), // Text( // '收款人:${widget.order.sellerName}', // style: TextStyle( // color: MyColors.c333333, // fontSize: 16, // fontWeight: FontWeight.normal, // decoration: TextDecoration.none), // ), // ], // mainAxisAlignment: MainAxisAlignment.center, // ), // ), // ), // ), // Container( // height: 0.5, // color: MyColors.cE7E7E7, // ), // Row( // children: [ // Expanded( // child: GestureDetector( // onTap: () { // Navigator.pop(context); // }, // behavior: HitTestBehavior.translucent, // child: Container( // alignment: Alignment.center, // height: 55, // child: Text( // '取消', // style: TextStyle( // color: MyColors.c999999, // fontSize: 16, // fontWeight: FontWeight.normal, // decoration: TextDecoration.none), // ), // ), // )), // Container( // width: 0.5, // height: 55, // color: MyColors.cE7E7E7, // ), // Expanded( // child: GestureDetector( // onTap: () async { // Navigator.pop(context); // getUserWalletBalance((re, hE) { // if (!hE) { // UserBalanceEntity balance = UserBalanceEntity() // .fromJson(json.decode(re.data.toString())); // if (balance.data >= widget.order.amount) { // payOrder(payWayWallet, widget.order.uID, // (re, hE) { // if (!hE) { // showToast('支付成功'); // EventBus().emit('payAnOrder'); // } // }, (e) {}, context); // } else { // payOrder(payWayAliPay, widget.order.uID, // (re, hE) { // if (!hE) { // PayByAlipayBeanEntity entity = // PayByAlipayBeanEntity().fromJson( // json.decode(re.data.toString())); // EventBus().on('alipayPaymentCallback', // (arg) { // EventBus().off('alipayPaymentCallback'); // EasyLoading.dismiss(); // showToast('支付成功'); // EventBus().emit('reNoPayOrder'); // }); // print(entity.data); // EasyLoading.instance // ..contentPadding = EdgeInsets.symmetric( // horizontal: 20, vertical: 12) // ..alignment = Alignment.center // ..contentMargin = EdgeInsets.all(20); // EasyLoading.show(); // aliPay(entity.data).then((value) { // print(json.encode(value)); // AlipayResultBeanEntity e = // AlipayResultBeanEntity().fromJson( // json.decode(json.encode(value))); // try { // int r = int.parse(e.resultStatus); // if (r == 9000) { // showToast('支付成功'); // } else { // showToast(aliPayResultStatus(r)); // resetOrder(widget.order.uID); // } // } catch (e) { // EasyLoading.dismiss(); // } // }); // // EventBus().emit('payAnOrder'); // } // }, (e) {}, context); // // showToast('积分余额不足'); // } // } // }, (e) {}, context); // }, // behavior: HitTestBehavior.translucent, // child: Container( // alignment: Alignment.center, // height: 55, // child: Text( // '确定', // style: TextStyle( // color: MyColors.cFF4233, // fontSize: 16, // fontWeight: FontWeight.normal, // decoration: TextDecoration.none), // ), // ), // ), // ), // ], // ) // ], // ), // height: 200, // margin: EdgeInsets.only(left: 48, right: 48), // ), // ); // }, // ); } List member = []; List helper = []; queryShopMembers() { MyDio().query({ "key": "shop_user", "filters": { "conditions": ["shop_uid==${widget.data.shopUid}", "review_state==1"] }, "dims": shopUserDims, "paging": [1, 2000] }, (response, hasError) { if (!hasError) { MyShopBeanEntity entity = MyShopBeanEntity().fromJson(json.decode(response.data.toString())); member = entity.data.data; helper.clear(); member.forEach((element) { if (element.role == shopUserStaff) { helper.add(element); } }); MyShopBeanDataData chatWith; if (helper.length == 0) { chatWith = member[ member.indexWhere((element) => element.role == shopUserOwner)]; } else { chatWith = helper[Random().nextInt(helper.length)]; } MyTools().toPage(context, ChatPage(chatWith, null), (then) {}); } }, (error) {}); } void deleteOrder(SmartOrderBeanDataData order) { MyDio().del({ 'key': 'order', 'ids': [order.id] }, (response, hasError) { if (!hasError) { orders.remove(order); setState(() {}); } }, (error) {}); } }