import React, {Component} from 'react' import './index.scss' import {HeaderBar} from '../../common' import OrderList from '@/common/OrderList' import {http} from "@/utils" import {Link} from 'react-router-dom' import {Modal, Toast} from 'antd-mobile' import Loading from '@/common/Loading' import InfiniteScroll from 'react-infinite-scroller' import {debounce} from 'lodash' import {getCourses} from './../detail/actions'; import {connect} from 'react-redux'; const alert = Modal.alert @connect() class MyOrders extends Component { page = 1 constructor(props) { super(props) this.state = { data: [], pageNum: 1, isLoading: true, total: 0, } } componentDidMount() { this.getList(this.page) } getMore = debounce(() => { if (this.state.data.length % 10 === 0) { this.getList(++this.page) } }, 200) // 获取订单 getList = () => { http.get(`${API.home}/m/my/orders/${this.page}/10`,).then((res) => { if (res.data.code === 200) { this.setState({ data: this.state.data.concat(res.data.data), isLoading: false }) } else { Toast.info(res.data.msg, 2); } }) } // 取消订单 cancel = (oid) => { alert('确认取消订单?', '订单取消后,优惠券和抵扣的余额会返回到您的账户。', [ {text: '取消', onPress: () => console.log('cancel')}, { text: '确认', onPress: () => { let data = { order_id: oid } http.post(`${API.home}/m/cancel_order`, data).then((res) => { if (res.data.code === 200) { location.reload(); } else { Toast.info(res.data.msg, 2); } }) } } ]) } toCourseDetail = (id) => { const {dispatch, history} = this.props; // dispatch(getCourses(id, () => { history.push(`/detail?id=${id}`); return false; // })); } render() { return ( <div className='myorders-box'> <HeaderBar title='我的订单' arrow={true} cart={false}></HeaderBar> <Loading isLoading={this.state.isLoading}> { this.state.data && JSON.stringify(this.state.data) !== '[{}]' ? <InfiniteScroll pageStart={0} hasMore={true} loadMore={this.getMore.bind(this)} useWindow={true} > { this.state.data.map((item, index) => { return ( <div className="order-body" key={index}> <OrderInfo item={item}/> { item.course && item.course.length > 0 && item.course.map((item, index) => { const Info = ( <div className="order-info"> <p className='order-title text-overflow-one' onClick={() => this.toCourseDetail(item.course_id)}> {item.course_title} </p> <p className='order-content text-overflow-2'>{item.description}</p> <p className='order-des'> <span className='order-newprice'>¥{item.amount}</span> <span className='order-price'>¥{item.price0}</span> </p> </div> ) return ( <div className="order-wrap" key={index}> <OrderList info={Info} src={item.image_name} isSign={item.is_aist} id={item.course_id} toDetail={this.toCourseDetail} /> { item.course_expire && item.course_expire!='' && <span className='course-expire'>{item.course_expire}</span> } </div> ) }) } <PayInfo item={item} cancel={this.cancel}/> { item.type == 5 && item.is_buy == 0 && item.is_overdue == 0 && <div className={'expand-pay-wk'}> <span className={'expand-pay-time'}>{item.final_end_time}结束付尾款</span> <span>还需支付尾款</span> </div> } { item.type == 5 && item.is_buy == 0 && item.is_overdue == 1 && <div className={'expand-pay-wk'}> <span>支付尾款时间已过</span> </div> } </div> ) }) } </InfiniteScroll> : <div className="cart-tip"> <p className='cart-mess'>您还没有订单哦,快去逛逛吧~</p> <Link to='/classify'>去逛逛</Link> </div> } </Loading> </div> ) } } function OrderInfo(props) { let btn if (props.item.pay_time === '0' && props.item.member_num === 0) { btn = <span className='oid-status'>等待支付</span> } else if (props.item.pdd_info && (props.item.member_num === props.item.pdd_info.length) && props.item.member_num !== 0) { btn = <span className='oid-success'>拼团成功</span> } else { btn = <span className='oid-success'>支付成功</span> } return ( <div className='order-head'> <span className='oid-num'>订单号:{props.item.oid}</span> { props.item.type == 4 && props.item.course.length == 3 && <span>付费试学</span> } {btn} </div> ) } function PayInfo(props) { // type 0普通订单 1团购 2小团 3砍价 4单集购买 5定金课定金 6定金课尾款 let type = '' if (props.item.type == 5) { type = '(定金)' } if (props.item.type == 6) { type = '(尾款)' } return ( <div className='order-btm'> <div className='price-info'> <p> <span className='payable'>应付{type}:</span> <span className='price'>¥{props.item.pay_amount}</span> </p> <p> <span className='payable'>已优惠:</span> <span className='price'>¥{props.item.discount}</span> </p> </div> { props.item.pay_time === '0' && props.item.member_num === 0 && <div className='btm-right'> <button className='cancel' onClick={event => props.cancel(props.item.oid)}>取消订单</button> <Link to={`/payorder?oid=${props.item.oid}`}>去支付</Link> </div> } { props.item.member_num !== 0 && <div className='btm-right'> <div className="group"> { props.item.pdd_info && props.item.pdd_info.length > 0 && props.item.pdd_info.map((item, index) => { return ( <img src={item.user_avatar === '' ? 'https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/tinypng-spreadtrain8/ellipsis.png' : item.user_avatar} key={index} alt=""/> ) }) } </div> </div> } </div> ) } export default MyOrders