import 'dart:convert'; import 'package:bbyyy/beans/my_shop_bean_entity.dart'; import 'package:bbyyy/beans/smart_order_bean_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/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: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'; class OrderPage extends StatefulWidget { int index; OrderPage({this.index = 0}); @override _OrderPageState createState() => _OrderPageState(); } class _OrderPageState extends State { int selectedIndex = 0; List orders = []; RefreshController controller = RefreshController(initialRefresh: true); int page = 1; List myShopUIDs = []; @override void initState() { // TODO: implement initState super.initState(); EventBus().on('刷新未付订单', (arg) { controller.requestRefresh(); }); selectedIndex = widget.index; } @override void dispose() { // TODO: implement dispose super.dispose(); EventBus().off('刷新未付订单'); checkUnpaidThirdPartyOrders(); } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: MyColors.cE7E7E7, body: Column( children: [ MyViews().myAppBar('订单', context, []), Container( height: 40, color: Colors.white, child: Row( children: [ GestureDetector( onTap: () { setState(() { selectedIndex = 0; page = 1; 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; page = 1; controller.requestRefresh(); }); }, behavior: HitTestBehavior.translucent, child: Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Column( children: [ Text( '已收', 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; page = 1; controller.requestRefresh(); }); }, behavior: HitTestBehavior.translucent, child: Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Column( children: [ Text( '未付', 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, ), ), ), GestureDetector( onTap: () { setState(() { selectedIndex = 3; page = 1; controller.requestRefresh(); }); }, behavior: HitTestBehavior.translucent, child: Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Column( children: [ Text( '已付', style: TextStyle( color: selectedIndex == 3 ? MyColors.cFF4233 : MyColors.c666666, fontSize: 15), ), Container( height: 10, child: Visibility( child: SvgPicture.asset('images/svg/tab.svg'), visible: selectedIndex == 3, ), ) ], mainAxisAlignment: MainAxisAlignment.end, ), ), ) ], mainAxisAlignment: MainAxisAlignment.spaceAround, ), ), Expanded( child: SmartRefresher( controller: controller, onLoading: onLoading, onRefresh: onRefresh, enablePullUp: true, enablePullDown: true, child: orders.length == 0 ? SingleChildScrollView(child: noData()) : ListView.builder( itemBuilder: (c, index) { return Slidable( child: MyViews().getNoPayGoodsItem( orders[index], context, -1, -1), actionPane: SlidableDrawerActionPane(), enabled: selectedIndex == 0 || (orders[index].type == orderTypeOfflineTransfer && orders[index].buyerUid == MyCookie().getUID()&&selectedIndex!=3) || (orders[index].buyerUid == MyCookie().getUID()&&selectedIndex!=3&&orders[index].type != orderTypeShopOwnerCreated), 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(top: 10), ), ), ), ], ), ); } void onLoading() { page++; checkMyStore(); } void onRefresh() { page = 1; checkMyStore(); } checkingOrder() { var conditions = []; if (selectedIndex == 0) { conditions.add("state == $orderStateUnpaid"); conditions.add('seller_uid == ${MyCookie().getUID()}'); } else if (selectedIndex == 1) { conditions.add("state == $orderStatePaid"); conditions.add('seller_uid == ${MyCookie().getUID()}'); } else if(selectedIndex==2){ conditions.add("state == $orderStateUnpaid"); conditions.add('buyer_uid==0'); conditions.add('buyer_name LIKE ${MyCookie().getName()}'); conditions.add('shop_uid IN $myShopUIDs'); }else if(selectedIndex == 3){ conditions.add("state == $orderStatePaid"); conditions.add('payer_uid==${MyCookie().getUID()}'); } var filters; if (selectedIndex == 2) { filters = { "conditions": conditions, "or": true, "filters": [ { "conditions": [ "state == $orderStateUnpaid", 'buyer_uid==${MyCookie().getUID()}' ] } ] }; } else { filters = {"conditions": conditions}; } MyDio().query({ "key": "order", "filters": filters, "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) {}); } checkMyStore() { var dJson; var conditions1 = [ "role!=$shopUserOwner", "user_uid==${MyCookie().getUID()}", "review_state==1" ]; var conditions2 = [ "role==$shopUserOwner", "user_uid==${MyCookie().getUID()}" ]; conditions1.add('private_shop==true'); dJson = { "key": "shop_user", "filters": { "or": true, "conditions": conditions1, "filters": [ {"conditions": conditions2} ] }, "dims": shopUserDims, "paging": [page, 1000], "order_by": ["shop_name,DESC"] }; MyDio().query(dJson, (response, hasError) { if (!hasError) { MyShopBeanEntity entity = MyShopBeanEntity().fromJson(json.decode(response.data.toString())); entity.data.data.forEach((element) { if(!myShopUIDs.contains(element.shopUid)){ myShopUIDs.add(element.shopUid); } }); if(myShopUIDs.length==0){ endRe(controller); return; } checkingOrder(); } }, (error) {}); } void deleteOrder(SmartOrderBeanDataData order) { MyDio().del({ 'key': 'order', 'ids': [order.id] }, (response, hasError) { if (!hasError) { orders.remove(order); setState(() {}); } }, (error) {}); } }