import React, { Component } from 'react'
import { connect } from 'react-redux'
import { Checkbox, NavBar } from 'antd-mobile'
//组件
import ShopCard  from './cardList.js'
import Loading from '@common/Loading'

//css
import './card.scss'
import classnames from 'classnames'

const mockData = [
    {
        title: '三月面试求职班',
        imgUrl: 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/4c5ccac604.jpg',
        content: '涵盖ML主流算法及其应用-文字超过一行换行',
        newprice: '980',
        price: '1280',
        id: '110',
        check: false
    },
    {
        title: '三月面试求职班',
        imgUrl: 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/4c5ccac604.jpg',
        content: '涵盖ML主流算法及其应用-文字超过一行换行',
        newprice: '980',
        price: '1280',
        id: '111',
        check: false
    },
    {
        title: '三月面试求职班',
        imgUrl: 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/4c5ccac604.jpg',
        content: '涵盖ML主流算法及其应用-文字超过一行换行',
        newprice: '980',
        price: '1280',
        id: '112',
        check: false
    }
]

class Cart extends Component {
    constructor(props) {
        super(props)
        this.state = {
            deleteAll: false,
            loading: false,
            checkedNum: 0,
            allPrice: 0,
            cartNmu: 0,
            data: mockData
        }

        this.checkChange = this.checkChange.bind(this);
        this.getCartList = this.getCartList.bind(this);
        this.changeStock = this.changeStock.bind(this);
    }
    //获取购物车列表
    getCartList() {
       
    }
    changeStock() {
        
    }
    //全选
    allChange(e) {
        let checked = e.target.checked
        let newData = this.state.data.map((item, i) => {
            return {
                ...item,
                check: checked
            }
        })
        this.setState({
            data: newData
        })
        this.calc(newData)
    }

    //点击
    checkChange(id, check) {
        let newData = this.state.data.map((item, i) => {
            if (item.id === id) {
                return {
                    ...item,
                    check: check
                }
            } else {
                return item;
            }
        })
        this.setState({
            data: newData
        })
        this.calc(newData)
    }
    //计算总价
    calc(newData) {
        let allPrice = 0;
        let checkedNum = 0;
        let cartNmu = 0;
        newData.forEach((item, i) => {
            if (item.check) {
                i++;
                cartNmu += 1;
                checkedNum = i;
                allPrice += parseFloat(item.newprice);
            }
        })
        this.setState({
            checkedNum,
            allPrice,
            cartNmu
        })
    }
    //购买
    buy() {
       
    }
    deleteAll() {
        
    }
    //装载组件
    componentDidMount() {
        this.getCartList()
    }
    render() {
        return (
            <div className="cart-page" style={{ overflow: 'hidden' }}>
                <NavBar
                    style={{ "height": "44px" }}
                    className="order-tab"
                    mode="light"
                    icon={<i style={{"fontSize": '24px'}} className="iconfont iconiconfront-68"></i>}
                    rightContent={[
                        <i key="0" style={{ "fontSize": '24px' }} className="iconfont iconiconfront-56"></i>
                    ]}
                >
                    购物车
                </NavBar>

                <div className="cart-body">
                    {
                        this.state.loading ?
                            <Loading />
                            :
                            <ShopCard getCartList={this.getCartList} changeStock={this.changeStock} checkChange={this.checkChange}  data={this.state.data}/>

                    }

                    {
                        this.state.deleteAll ?
                            <div className="cart-footer">
                                <div>
                                    <Checkbox onChange={(e) => {
                                        this.allChange(e)
                                    }} />
                                    <div>全选</div>
                                </div>
                                <div></div>
                                <div className={classnames({
                                    'active': this.state.cartNmu > 0
                                })} 
                                onClick={() => {
                                    if (this.state.cartNmu > 0) {
                                        this.delete()
                                    }
                                }}>
                                    删除<span>({this.state.cartNmu})</span>
                                </div>
                            </div>
                            :
                            <div className="cart-footer">
                                <div className="cart-label">
                                    <Checkbox onChange={(e) => {
                                        this.allChange(e)
                                    }} />
                                    <div>全选</div>
                                </div>
                                <div className="all-pirce">
                                    <p>
                                        <span>合计:</span>
                                        <span>¥{this.state.allPrice}</span>
                                    </p>
                                </div>
                                <div className={classnames({
                                    'active': this.state.checkedNum > 0
                                })} onClick={() => {
                                    if (this.state.checkedNum > 0) {
                                        this.buy()
                                    }
                                }}>
                                    去结算<span>({this.state.checkedNum})</span>
                                </div>
                            </div>
                    }
                </div>
                

            </div>
        )
    }
}

export default connect()(Cart)