import React, {Component} from 'react'
import {Tabs, WhiteSpace} from 'antd-mobile'
import './index.scss'


class OutLine extends Component {
    state = {
        stage_info: [
            {
                "stage_name": "预习阶段 机器学习中的数学基础",
                "lesson": [
                    {
                        "is_video": 0,
                        "name": "微积分",
                        "video_id": 1170,
                        "point": [
                            {
                                "name": "微积分的基本概念",
                                "type": 1
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 2,
                        "name": "概率论",
                        "video_id": 1171,
                        "point": [
                            {
                                "name": "概率论简介",
                                "type": 1
                            }
                        ],
                        "class_price": 22.99,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 3,
                        "name": "线性代数",
                        "video_id": 1172,
                        "point": [
                            {
                                "name": "线性代数基础",
                                "type": 1
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 4,
                        "name": "凸优化",
                        "video_id": 1173,
                        "point": [
                            {
                                "name": "凸优化简介",
                                "type": 1
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    }
                ]
            },
            {
                "stage_name": "第一阶段 掌握基本模型 打开ML大门",
                "lesson": [
                    {
                        "is_video": 5,
                        "name": "第1课 回归问题与应用",
                        "video_id": 1118,
                        "point": [
                            {
                                "name": "线性回归",
                                "type": 1
                            },
                            {
                                "name": "logistic回归",
                                "type": 1
                            },
                            {
                                "name": "梯度下降",
                                "type": 1
                            },
                            {
                                "name": "实际工程海量数据下的logistic回归使用",
                                "type": 1
                            },
                            {
                                "name": "分布拟合与回归、用LR分类与概率预测",
                                "type": 2
                            },
                            {
                                "name": "用LR完成Kaggle比赛迈开第一步",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 6,
                        "name": "第2课 决策树与树集成模型",
                        "video_id": 1119,
                        "point": [
                            {
                                "name": "不同类型的分类树模型",
                                "type": 1
                            },
                            {
                                "name": "决策树回归",
                                "type": 1
                            },
                            {
                                "name": "树模型过拟合与优化",
                                "type": 1
                            },
                            {
                                "name": "使用随机森林进行数据分类",
                                "type": 1
                            },
                            {
                                "name": "Bagging",
                                "type": 1
                            },
                            {
                                "name": "随机森林",
                                "type": 1
                            },
                            {
                                "name": "信用卡欺诈检测",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第3课 SVM",
                        "video_id": 1120,
                        "point": [
                            {
                                "name": "线性可分支持向量机、线性支持向量机",
                                "type": 1
                            },
                            {
                                "name": "非线性支持向量机",
                                "type": 1
                            },
                            {
                                "name": "SMO",
                                "type": 1
                            },
                            {
                                "name": "使用SVM进行数据分类",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第4课 最大熵与EM算法(上)",
                        "video_id": 1121,
                        "point": [
                            {
                                "name": "熵、相对熵、信息增益",
                                "type": 1
                            },
                            {
                                "name": "最大熵模型、IIS、GMM",
                                "type": 1
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    }
                ]
            },
            {
                "stage_name": "第二阶段 重中之重 特征工程",
                "lesson": [
                    {
                        "is_video": 1,
                        "name": "第5课 机器学习中的特征工程处理",
                        "video_id": 1122,
                        "point": [
                            {
                                "name": "数据清洗、异常点处理",
                                "type": 1
                            },
                            {
                                "name": "特征抽取、选择与组合策略",
                                "type": 1
                            },
                            {
                                "name": "特征处理与特征选择模板",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第6课 多算法组合与模型最优化",
                        "video_id": 1123,
                        "point": [
                            {
                                "name": "机器学习问题场景分析、算法选择",
                                "type": 1
                            },
                            {
                                "name": "模型构建、模型性能分析与优化策略",
                                "type": 1
                            },
                            {
                                "name": "构建模型组合策略工具与模板",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    }
                ]
            },
            {
                "stage_name": "第三阶段 工业实战 在实战中掌握一切",
                "lesson": [
                    {
                        "is_video": 1,
                        "name": "第7课 sklearn与机器学习实战",
                        "video_id": 1124,
                        "point": [
                            {
                                "name": "sklearn板块介绍",
                                "type": 1
                            },
                            {
                                "name": "sklearn完成数据预处理与特征工程",
                                "type": 1
                            },
                            {
                                "name": "建模流水线搭建",
                                "type": 1
                            },
                            {
                                "name": "经典Titanic案例,商品销量预测案例等",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第8课 高级工具xgboost/lightGBM与建模实战",
                        "video_id": 1125,
                        "point": [
                            {
                                "name": "xgboost使用方法与高级功能",
                                "type": 1
                            },
                            {
                                "name": "lightGBM使用方法与高级功能",
                                "type": 1
                            },
                            {
                                "name": " Titanic与商品销量预测进阶,Kaggle案例实战",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第9课 电商推荐系统",
                        "video_id": 1126,
                        "point": [
                            {
                                "name": "推荐系统与评估",
                                "type": 1
                            },
                            {
                                "name": "基于内容的推荐",
                                "type": 1
                            },
                            {
                                "name": "基于近邻的推荐--协同过滤",
                                "type": 1
                            },
                            {
                                "name": "隐语义模型",
                                "type": 1
                            },
                            {
                                "name": "从头手写搭建协同过滤与隐语义模型推荐",
                                "type": 2
                            },
                            {
                                "name": "基于scikit-surprise的推荐系统",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第10课 聚类",
                        "video_id": 1127,
                        "point": [
                            {
                                "name": "K-means/K-Medoid",
                                "type": 1
                            },
                            {
                                "name": "层次聚类",
                                "type": 1
                            },
                            {
                                "name": "GMM",
                                "type": 1
                            },
                            {
                                "name": "K-means/GMM代码实现和实际应用分析",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第11课 聚类与推荐系统实战",
                        "video_id": 1128,
                        "point": [
                            {
                                "name": "基于用户聚类的推荐系统",
                                "type": 2
                            },
                            {
                                "name": "推荐系统比赛案例(数据、代码)",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    }
                ]
            },
            {
                "stage_name": "第四阶段 高阶知识 深入机器学习",
                "lesson": [
                    {
                        "is_video": 1,
                        "name": "第12课 贝叶斯网络",
                        "video_id": 1129,
                        "point": [
                            {
                                "name": "朴素贝叶斯",
                                "type": 1
                            },
                            {
                                "name": "有向分离",
                                "type": 1
                            },
                            {
                                "name": "马尔科夫模型",
                                "type": 1
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第13课 隐马尔科夫模型HMM",
                        "video_id": 1130,
                        "point": [
                            {
                                "name": "概率计算问题",
                                "type": 1
                            },
                            {
                                "name": "参数学习问题",
                                "type": 1
                            },
                            {
                                "name": "状态预测问题",
                                "type": 1
                            },
                            {
                                "name": "使用HMM进行中文分词",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第14课 主题模型",
                        "video_id": 1131,
                        "point": [
                            {
                                "name": "pLSA",
                                "type": 1
                            },
                            {
                                "name": "共轭先验分布",
                                "type": 1
                            },
                            {
                                "name": "LDA",
                                "type": 1
                            },
                            {
                                "name": "使用LDA进行文档分类",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    }
                ]
            },
            {
                "stage_name": "第五阶段 迈入深度学习 打开DL大门",
                "lesson": [
                    {
                        "is_video": 1,
                        "name": "第15课 神经网络初步",
                        "video_id": 1132,
                        "point": [
                            {
                                "name": "全连接神经网络",
                                "type": 1
                            },
                            {
                                "name": "反向传播算法与权重优化",
                                "type": 1
                            },
                            {
                                "name": "训练注意点",
                                "type": 1
                            },
                            {
                                "name": "通用混合神经网络模板",
                                "type": 1
                            },
                            {
                                "name": "手写神经网络解决非线性切分问题",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第16课 卷积神经网络与计算机视觉",
                        "video_id": 1133,
                        "point": [
                            {
                                "name": "卷积神经网络结构分析",
                                "type": 1
                            },
                            {
                                "name": "过拟合与随机失活",
                                "type": 1
                            },
                            {
                                "name": "卷积神经网络理解",
                                "type": 1
                            },
                            {
                                "name": "典型网络结构详解",
                                "type": 1
                            },
                            {
                                "name": "利用ResNet与inception解决一般图像分类问题套路",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第17课 循环神经网络与自然语言处理",
                        "video_id": 1134,
                        "point": [
                            {
                                "name": "循环神经网络",
                                "type": 1
                            },
                            {
                                "name": "长时依赖问题与长短时记忆网络",
                                "type": 1
                            },
                            {
                                "name": "BPTT算法",
                                "type": 1
                            },
                            {
                                "name": "利用循环神经网络生成文本作诗",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    },
                    {
                        "is_video": 1,
                        "name": "第18课 深度学习实践",
                        "video_id": 1135,
                        "point": [
                            {
                                "name": "Caffe应用要点",
                                "type": 1
                            },
                            {
                                "name": "TensorFlow/Keras简介",
                                "type": 1
                            },
                            {
                                "name": "用神经网络完成图像分类与特征提取",
                                "type": 2
                            },
                            {
                                "name": "用Keras构建文本情感分析模型",
                                "type": 2
                            }
                        ],
                        "class_price": 0,
                        "is_preview": 0,
                        "is_class": 0,
                        "video_auth": 0
                    }
                ]
            }
        ]
    }
    render() {
        const tabs = [
            {title: '介绍'},
            {title: '大纲'}
        ];

        return (
            <div className='course-detail'>
                <WhiteSpace/>
                <Tabs tabs={tabs}>
                    {/*介绍*/}
                    <div className='introduce'>
                        讲师:寒小阳、褚博士、David、林老师、张雨石、李老师
                        课时:线上课每次至少2小时,线下课每次至少4小时
                        时间:随到随学,视频课件代码作考一应俱全,且讲师助教 答疑
                        <img
                            src='https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/4c5ccac604.jpg'
                            alt=""/>
                    </div>
                    {/*大纲*/}
                    <div className='outline'>
                        {
                            this.state.stage_info.map((item, index) => {
                                return (
                                    <div className='stagebox' key={index}>
                                        <h1 className='stage text-overflow-1'>{item.stage_name}</h1>
                                        {
                                            item.lesson.map((item, index) => {
                                                return (
                                                    <ul key={index}>
                                                        <h2 className='classhour text-overflow-1'>{item.name}

                                                            { // 试听
                                                                item.is_video === 0 &&
                                                                <span className='btn-right-10 audition'
                                                                      onClick={this.props.toAudition}>试听</span>
                                                            }
                                                            {  // 未购买未开单集购买:上锁标志,点击提示购买
                                                                item.is_video === 3 &&
                                                                <i className='iconfont iconiconfront-74 icon-right-22'></i>
                                                            }
                                                            {  // 未购买已开单集购买:显示单集价格,点击购买单集
                                                                item.is_video === 2 &&
                                                                <span className='btn-right-10 singleset'
                                                                      onClick={this.props.toSingleset}>¥ {item.class_price}</span>
                                                            }
                                                            {
                                                                // 已购买直播中:正在直播,点击进入直播间
                                                                item.is_video === 4 &&
                                                                <span className='live icon-right-22'>正在直播<i
                                                                    className='iconfont icondanseshixintubiao-23'></i></span>
                                                            }
                                                            {
                                                                // 已购买直播结束已上传视频:正常播放按钮,点击播放课程
                                                                item.is_video === 5 &&
                                                                <i className='iconfont icondanseshixintubiao-23 icon-right-22'></i>
                                                            }
                                                            {
                                                                // 已购买未开课、已购买直播结束:空
                                                            }
                                                        </h2>
                                                        {
                                                            item.point.map((item, index) => {
                                                                const type = (
                                                                    <span>
                                                                            {item.type === 1 &&
                                                                            <span>知识点{index + 1}:</span>
                                                                            } {item.type === 2 &&
                                                                    <span className='red'>实战项目:</span>
                                                                    }
                                                                        </span>
                                                                )

                                                                return (
                                                                    <li className='points text-overflow-1'
                                                                        key={index}>{type}{item.name}</li>
                                                                )

                                                            })
                                                        }
                                                    </ul>
                                                )
                                            })
                                        }
                                    </div>
                                )
                            })
                        }
                    </div>
                </Tabs>
                <WhiteSpace/>
            </div>
        );
    }

}

export default OutLine;