video.a8cba64d.chunk.js.map 23.2 KB
Newer Older
wangshuo committed
1
{"version":3,"sources":["common/v-list-base/index.js","components/video/recommendation/index.js","components/video/video-catalog/index.js","components/video/datum-catalog/index.js","components/video/index.js"],"names":["VList","props","react__WEBPACK_IMPORTED_MODULE_0___default","a","createElement","className","onClick","handleClick","bind","id","status","src","img","alt","info","tab","Bottom","_ref","item","react_default","price1","price0","Recommendation","state","num","list","courseId","getRecommendation","http","get","concat","api","home","_this","vCourseId","then","res","data","code","setState","toast_default","msg","history","push","this","_this2","map","Info","course_title","simpledescription","recommendation_Bottom","v_list_base","key","course_id","image_name","PureComponent","VideoCatalog","i","videoCatalog","index","classnames","active","activeIndex","name","duration","video_auth","Component","DatumCatalog","datum","accordion_default","length","Panel","header","dir_name","files","file_id","file_name","defaultProps","alert","modal_default","Video","title","video_catalog","currentVideoSrc","isAuth","course","salePrice","isLoading","initializePlayer","window","HELP_IMPROVE_VIDEOJS","player","videojs","video","controls","preload","bigPlayButton","textTrackDisplay","posterImage","errorDisplay","enableTouchActivity","hasAuth","setPlayerSrc","playVideo","getVideoCatalog","courseID","lessonAvailable","Promise","resolve","playWithAuth","getCoursePrice","text","onPress","type","play","_this$state","_this$state2","_this$state3","lesson","getParam","getDatumCatalog","prevProps","prevState","console","log","dispose","_this3","_this$props","match","location","_this$state4","HeaderBar","arrow","common","ref","el","react_router_dom","to","url","replace","activeClassName","react_router","exact","from","pathname","search","path","render","video_video_catalog","Object","assign","video_datum_catalog","video_recommendation"],"mappings":"qHAkBeA,IAfD,SAACC,GACX,OACIC,EAAAC,EAAAC,cAAA,MAAIC,UAAU,mBAAmBC,QAASL,EAAMM,YAAYC,YAAWP,EAAMQ,KACzEP,EAAAC,EAAAC,cAAA,OAAKC,UAAU,WACXH,EAAAC,EAAAC,cAAA,OAAKC,UAAU,SACVJ,EAAMS,OACPR,EAAAC,EAAAC,cAAA,OAAKO,IAAKV,EAAMW,IAAKC,IAAI,MAE5BZ,EAAMa,MAEVb,EAAMc,mVCLbC,EAAS,SAAAC,GAAY,IAAVC,EAAUD,EAAVC,KACb,OACIC,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,UACXc,EAAAhB,EAAAC,cAAA,QAAMC,UAAU,SAAhB,OAA0Ba,EAAKE,QAC/BD,EAAAhB,EAAAC,cAAA,QAAMC,UAAU,eAAhB,OAAgCa,EAAKG,UA0ElCC,6MAlEXC,MAAQ,CACJC,IAAK,GACLC,KAAM,GACNC,SAAU,QAQdC,kBAAoB,WAChBC,IAAKC,IAAL,GAAAC,OAAYC,IAAIC,KAAhB,6BAAAF,OAAgDG,EAAKhC,MAAMiC,UAA3D,SAAAJ,OAA4EG,EAAKV,MAAMC,MAClFW,KAAK,SAAAC,GACF,IAAMC,EAAOD,EAAIC,KACA,MAAdA,EAAKC,KAEJL,EAAKM,SAAS,CACVd,KAAMY,EAAKA,OAIfG,EAAArC,EAAMW,KAAKuB,EAAKI,UAMhClC,YAAc,SAAAE,GACVwB,EAAKhC,MAAMyC,QAAQC,KAAnB,cAAAb,OAAsCrB,wFArBtCmC,KAAKjB,qDAwBA,IAAAkB,EAAAD,KACL,OACIzB,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,kBACXc,EAAAhB,EAAAC,cAAA,OAAKC,UAAW,SAAhB,4BACAc,EAAAhB,EAAAC,cAAA,UAEQwC,KAAKrB,MAAME,KAAKqB,IAAI,SAAA5B,GAChB,IAAM6B,EACF5B,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,QACXc,EAAAhB,EAAAC,cAAA,KAAGC,UAAU,SAASa,EAAK8B,cAC3B7B,EAAAhB,EAAAC,cAAA,KAAGC,UAAU,OAAOa,EAAK+B,mBACzB9B,EAAAhB,EAAAC,cAAC8C,EAAD,CACIhC,KAAMA,KAKlB,OACIC,EAAAhB,EAAAC,cAAC+C,EAAA,EAAD,CACIC,IAAKlC,EAAKmC,UACVzC,IAAKM,EAAKoC,WACV/C,YAAasC,EAAKtC,YAClBO,KAAMiC,EACNtC,GAAIS,EAAKmC,uBAxDhBE,2CCoBdC,6MAhCXjD,YAAc,SAACkD,GACXxB,EAAKhC,MAAMM,YAAYkD,4EAGlB,IAAAZ,EAAAD,KACL,OACIzB,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,iBACXc,EAAAhB,EAAAC,cAAA,UAEQwC,KAAK3C,MAAMyD,aAAaZ,IAAI,SAAC5B,EAAMyC,GAC/B,OACIxC,EAAAhB,EAAAC,cAAA,MAAIgD,IAAKlC,EAAKT,GACVJ,UAAWuD,IAAW,CAACC,OAAQhB,EAAK5C,MAAM6D,cAAgBH,IAC1DrD,QAASuC,EAAKtC,YAAYC,KAAKqC,EAAMc,IAErCxC,EAAAhB,EAAAC,cAAA,QAAMC,UAAU,SAASa,EAAK6C,MAC9B5C,EAAAhB,EAAAC,cAAA,QAAMC,UAAU,YAAYa,EAAK8C,UACjC7C,EAAAhB,EAAAC,cAAA,KAAGC,UAAWuD,IAAU,WACpB,CAAqB,IAApB1C,EAAK+C,WACA,mBACA,mCAtBnBC,wCCArBC,2LAYO,IACEC,EAASxB,KAAK3C,MAAdmE,MACP,OACIjD,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,iBACXc,EAAAhB,EAAAC,cAAA,KAAGC,UAAU,UAAb,8EACAc,EAAAhB,EAAAC,cAAAiE,EAAAlE,EAAA,KAEQiE,GAASA,EAAME,QAAUF,EAAMtB,IAAI,SAAC5B,EAAMyC,GACtC,OACIxC,EAAAhB,EAAAC,cAAAiE,EAAAlE,EAAWoE,MAAX,CAAiBC,OAAQtD,EAAKuD,SAAUrB,IAAKO,GAErCzC,EAAKwD,MAAM5B,IAAI,SAAA5B,GACX,OACIC,EAAAhB,EAAAC,cAAA,OAAKgD,IAAKlC,EAAKyD,QAAStE,UAAU,aAC7Ba,EAAK0D,yBA1B/BV,cAArBC,EAEKU,aAAe,CAClBT,MAAO,CAAC,CACJK,SAAU,GACVC,MAAO,CAAC,CACJE,UAAW,GACXD,QAAS,OAkCVR,kCChCXW,EAAQC,EAAA5E,EAAM2E,MAGZE,6MAOFzD,MAAQ,CACJ0D,MAAO,GACPvD,SAAU,KACVwD,cAAe,GACfd,MAAO,GACPe,gBAAiB,GACjBrB,YAAa,EACbsB,QAAQ,EACRC,OAAQ,KACRC,UAAW,KACXpD,UAAW,KACXqD,WAAW,KAafC,iBAAmB,WACfC,OAAOC,sBAAuB,EAC9BzD,EAAK0D,OAASC,YAAQ3D,EAAK4D,MAAO,CAC9BC,UAAU,EACVC,QAAS,OACTC,eAAe,EACfC,kBAAkB,EAClBC,aAAa,EACbC,cAAc,IAElBlE,EAAK0D,OAAOS,yBAgBhB7F,YAAc,SAAAoD,GACN1B,EAAKoE,YACLpE,EAAKqE,aAAarE,EAAKV,MAAM2D,cAAcvB,GAAzB,UAClB1B,EAAKsE,aAETtE,EAAKM,SAAS,CACVuB,YAAaH,OAKrB6C,gBAAkB,WACd5E,IAAKC,IAAL,GAAAC,OAAYC,IAAIC,KAAhB,mBAAAF,OAAsCG,EAAKwE,WACtCtE,KAAK,SAAAC,GACF,IAAMC,EAAOD,EAAIC,KACC,MAAdA,EAAKC,KAELL,EAAKM,SACD,SAAAhB,GAAK,MAAK,CACN2D,cAAe7C,EAAKA,KAAL,QACf8C,gBAAiB9C,EAAKA,KAAL,QAAqBd,EAAMuC,aAA3B,SACjBuB,OAAQhD,EAAKA,KAAKgD,OAClB3D,SAAUW,EAAKA,KAAKgD,OAAV,UACVnD,UAAWG,EAAKA,KAAKgD,OAAV,YACXJ,MAAO5C,EAAKA,KAAKgD,OAAV,aACPE,WAAW,IAEf,WACQtD,EAAKyE,kBACDzE,EAAKoE,QAAQpE,EAAKV,MAAMuC,aACxB6C,QAAQC,UAAUzE,KAAK,WACnBF,EAAKuD,mBACLvD,EAAK4E,iBAGT5E,EAAK6E,iBAGThC,EAAM,2BAAQ,GAAI,CAAC,CACfiC,KAAM,KACNC,QAAS,WACL/E,EAAKhC,MAAMyC,QAAQC,KAAK,WAO5CH,EAAArC,EAAMW,KAAKuB,EAAKI,UAKhC6D,aAAe,SAAA3F,GACXsB,EAAK0D,OAAOhF,IAAI,CACZA,MACAsG,KAAM,6BAIdV,UAAY,WACRtE,EAAK0D,OAAOuB,UAoBhBR,gBAAkB,WAAM,IAAAS,EACiBlF,EAAKV,MAC1C,OAAoD,IAFhC4F,EACbjC,cADaiC,EACErD,aACf,cAGXgD,eAAiB,WACblF,IAAKC,IAAL,GAAAC,OAAYC,IAAIC,KAAhB,sBAAAF,OAAyCG,EAAKV,MAAMG,WAC/CS,KAAK,SAAAC,GAAO,IACFC,EAAQD,EAARC,KACW,MAAdA,EAAKC,MACLL,EAAKM,SAAS,CACV+C,UAAWjD,EAAKA,KAAL,kBAM/BwE,aAAe,WAAM,IAAAO,EACoBnF,EAAKV,MAAnC2D,EADUkC,EACVlC,cAAepB,EADLsD,EACKtD,YAElB7B,EAAKoE,WACLpE,EAAKqE,aAAapB,EAAcpB,GAAd,aAI1BuC,QAAU,SAAC1C,GAAU,IAAA0D,EAC4BpF,EAAKV,MAA3C8D,EADUgC,EACVhC,OACHiC,EAFaD,EACFnC,cADEmC,EACavD,aAE9B,OAAKwD,EAAM,SAoBXrF,EAAKM,SAAS,CACV6C,QAAQ,KAEL,GAtBCC,EAAM,aACNpD,EAAKM,SAAS,CACV6C,QAAQ,KAEL,GAEHkC,EAAM,YACNrF,EAAKM,SAAS,CACV6C,QAAQ,KAEL,IAEXnD,EAAKM,SAAS,CACV6C,QAAQ,KAEL,uFA/JfxC,KAAK6D,SAAWc,YAAS,MACzB3E,KAAKL,SAAS,CACVb,SAAUkB,KAAK6D,WAEnB7D,KAAK4D,kBACL5D,KAAK4E,6DAiBUC,EAAWC,GAC1BC,QAAQC,IAAIhF,KAAKiD,sDAKbjD,KAAK+C,QAEL/C,KAAK+C,OAAOkC,oDAqEF,IAAAhF,EAAAD,KACdhB,IAAKC,IAAL,GAAAC,OAAYC,IAAIC,KAAhB,mBAAAF,OAAsCc,KAAK6D,WACtCtE,KAAK,SAAAC,GACF,IAAMC,EAAOD,EAAIC,KACC,MAAdA,EAAKC,KAELO,EAAKN,SAAS,CACV6B,MAAO/B,EAAKA,OAIhBG,EAAArC,EAAMW,KAAKuB,EAAKI,wCA4DvB,IAAAqF,EAAAlF,KAAAmF,EACmBnF,KAAK3C,MAAxB+H,EADAD,EACAC,MAAOC,EADPF,EACOE,SADPC,EAEmDtF,KAAKrB,MAAtD2D,EAFFgD,EAEEhD,cAAepB,EAFjBoE,EAEiBpE,YAAasB,EAF9B8C,EAE8B9C,OAAQE,EAFtC4C,EAEsC5C,UAC3C,OACInE,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,QACXc,EAAAhB,EAAAC,cAAC+H,EAAA,EAAD,CAAWlD,MAAOrC,KAAKrB,MAAM0D,MAAOmD,OAAO,IAC3CjH,EAAAhB,EAAAC,cAACiI,EAAA,EAAD,CAAS9C,UAAW3C,KAAKrB,MAAMgE,WAC3BpE,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,SACXc,EAAAhB,EAAAC,cAAA,SAAOC,UAAW,WAAYiI,IAAK,SAAAC,GAAE,OAAIT,EAAKjC,MAAQ0C,IAClDpH,EAAAhB,EAAAC,cAAA,UAAQO,IAAK,IAAKsG,KAAK,4BAGtB7B,GACGjE,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,gBACXc,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,QAAf,oGACAc,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,QACXc,EAAAhB,EAAAC,cAAA,UAAQ6G,KAAK,SAAS5G,UAAU,kBAAhC,OAAmDiF,EAAnD,6BACAnE,EAAAhB,EAAAC,cAAA,UAAQ6G,KAAK,SACL5G,UAAU,oBADlB,OACuC6E,EAAcZ,QAAUY,EAAcpB,GAAd,YAD/D,gCAQpB3C,EAAAhB,EAAAC,cAAA,OAAKC,UAAU,OACXc,EAAAhB,EAAAC,cAAA,WACIe,EAAAhB,EAAAC,cAACoI,EAAA,EAAD,CAASC,GAAE,GAAA3G,OAAKkG,EAAMU,IAAX,UACFC,SAAO,EACPC,gBAAgB,UAFzB,iBAKJzH,EAAAhB,EAAAC,cAAA,WACIe,EAAAhB,EAAAC,cAACoI,EAAA,EAAD,CAASC,GAAE,GAAA3G,OAAKkG,EAAMU,IAAX,UACFC,SAAO,EACPC,gBAAgB,UAFzB,mBAOZzH,EAAAhB,EAAAC,cAACyI,EAAA,EAAD,KACI1H,EAAAhB,EAAAC,cAACyI,EAAA,EAAD,CAAUC,OAAK,EAACC,KAAM,QAASN,GAAI,CAC/BO,SAAU,cACVC,OAAQhB,EAASgB,UAErB9H,EAAAhB,EAAAC,cAACyI,EAAA,EAAD,CAAOK,KAAI,GAAApH,OAAKkG,EAAMkB,KAAX,UAAyBC,OAAQ,SAAAlJ,GACxC,OAAOkB,EAAAhB,EAAAC,cAACgJ,EAADC,OAAAC,OAAA,CACHxF,YAAagE,EAAKvG,MAAMuC,YACxBvD,YAAauH,EAAKvH,YAClBmD,aAAcoE,EAAKvG,MAAM2D,eACrBjF,OAEZkB,EAAAhB,EAAAC,cAACyI,EAAA,EAAD,CAAOK,KAAI,GAAApH,OAAKkG,EAAMkB,KAAX,UAAyBC,OAAQ,SAAAlJ,GACxC,OAAOkB,EAAAhB,EAAAC,cAACmJ,EAADF,OAAAC,OAAA,GAAkBrJ,EAAlB,CAAyBmE,MAAO0D,EAAKvG,MAAM6C,aAG1DjD,EAAAhB,EAAAC,cAACyI,EAAA,EAAD,CAAOM,OAAQ,SAAAlJ,GACX,OAAO6H,EAAKvG,MAAMW,UAAYf,EAAAhB,EAAAC,cAACoJ,EAADH,OAAAC,OAAA,GAAoBrJ,EAApB,CAA2BiC,UAAW4F,EAAKvG,MAAMW,aACzE,gBA3PNgC,aAmQLc","file":"static/js/video.a8cba64d.chunk.js","sourcesContent":["import React from 'react';\nimport './index.scss'\n\nconst VList = (props) => {\n    return (\n        <li className='v-list-base-item' onClick={props.handleClick.bind(this, props.id)}>\n            <div className=\"content\">\n                <div className=\"cover\">\n                    {props.status}\n                    <img src={props.img} alt=\"\"/>\n                </div>\n                {props.info}\n            </div>\n            {props.tab}\n        </li>\n    );\n};\n\nexport default VList;","import React, { PureComponent } from 'react';\nimport './recommendation.scss'\nimport { http, api } from '@/utils'\nimport { Toast } from \"antd-mobile\";\nimport VList from '@/common/v-list-base';\n\n\n\nconst Bottom = ({item}) => {\n    return (\n        <div className='bottom'>\n            <span className='price'>¥{item.price1}</span>\n            <span className='stale-price'>¥{item.price0}</span>\n        </div>\n    )\n}\n\n\n\nclass Recommendation extends PureComponent {\n    state = {\n        num: 10,\n        list: [],\n        courseId: null\n    }\n\n\n    componentDidMount() {\n        this.getRecommendation()\n    }\n\n    getRecommendation = () => {\n        http.get(`${api.home}/m/play/recommend_course/${this.props.vCourseId}?num=${this.state.num}`)\n            .then(res => {\n                const data = res.data\n                if(data.code === 200){\n\n                    this.setState({\n                        list: data.data\n                    })\n\n                }else {\n                    Toast.info(data.msg)\n                }\n            })\n    }\n\n\n    handleClick = id => {\n        this.props.history.push(`/detail?id=${id}`)\n    }\n\n    render() {\n        return (\n            <div className='recommendation'>\n                <div className={'title'}>相关推荐</div>\n                <ul>\n                    {\n                        this.state.list.map(item => {\n                            const Info = (\n                                <div className=\"info\">\n                                    <p className='title'>{item.course_title}</p>\n                                    <p className='des'>{item.simpledescription}</p>\n                                    <Bottom\n                                        item={item}\n                                    />\n                                </div>\n                            )\n\n                            return (\n                                <VList\n                                    key={item.course_id}\n                                    img={item.image_name}\n                                    handleClick={this.handleClick}\n                                    info={Info}\n                                    id={item.course_id}\n                                />\n                            )\n                        })\n                    }\n                </ul>\n            </div>\n        );\n    }\n}\n\nexport default Recommendation;","import React, { Component } from 'react';\nimport './video-catalog.scss'\nimport classnames from 'classnames'\n\n\nclass VideoCatalog extends Component {\n\n    handleClick = (i) => {\n        this.props.handleClick(i)\n    }\n\n    render() {\n        return (\n            <div className='video-catalog'>\n                <ul>\n                    {\n                        this.props.videoCatalog.map((item, index) => {\n                            return (\n                                <li key={item.id}\n                                    className={classnames({active: this.props.activeIndex === index})}\n                                    onClick={this.handleClick.bind(this, index)}\n                                >\n                                    <span className=\"title\">{item.name}</span>\n                                    <span className='duration'>{item.duration}</span>\n                                    <i className={classnames(`iconfont`,\n                                        [item.video_auth === 0\n                                            ? 'iconiconfront-74'\n                                            : 'iconiconfront-35'],\n                                    )}/>\n                                </li>\n                            )\n                        })\n                    }\n                </ul>\n            </div>\n        );\n    }\n}\n\nexport default VideoCatalog;","import React, { Component } from 'react';\nimport './datum-catalog.scss'\nimport { Accordion } from \"antd-mobile\";\n\n\nclass DatumCatalog extends Component {\n\n    static defaultProps = {\n        datum: [{\n            dir_name: '',\n            files: [{\n                file_name: '',\n                file_id: 0\n            }]\n        }]\n    }\n\n    render() {\n        const {datum} = this.props\n        return (\n            <div className='datum-catalog'>\n                <p className='prompt'>课程资料请到PC端播放页下载</p>\n                <Accordion>\n                    {\n                        datum && datum.length && datum.map((item, index) => {\n                            return (\n                                <Accordion.Panel header={item.dir_name} key={index}>\n                                    {\n                                        item.files.map(item => {\n                                            return (\n                                                <div key={item.file_id} className='file-name'>\n                                                    {item.file_name}\n                                                </div>\n                                            )\n                                        })\n                                    }\n                                </Accordion.Panel>\n                            )\n                        })\n                    }\n                </Accordion>\n            </div>\n        );\n    }\n}\n\nexport default DatumCatalog;","import React, { Component } from 'react';\nimport HeaderBar from '@/common/HeaderBar'\nimport './video.scss'\nimport { NavLink, Route, Redirect, Switch } from 'react-router-dom';\nimport { http, api, getParam } from '@/utils'\nimport Recommendation from './recommendation'\nimport VideoCatalog from './video-catalog'\nimport DatumCatalog from './datum-catalog'\nimport { Toast } from 'antd-mobile';\nimport videojs from 'video.js'\nimport 'video.js/dist/video-js.min.css'\nimport { Modal } from \"antd-mobile\";\nimport { Loading } from '@/common'\n\nlet alert = Modal.alert\n\n\nclass Video extends Component {\n\n    video\n    player\n    courseID\n\n\n    state = {\n        title: '',\n        courseId: null,\n        video_catalog: [],\n        datum: [],\n        currentVideoSrc: '',\n        activeIndex: 0,\n        isAuth: true,\n        course: null,\n        salePrice: null,\n        vCourseId: null,\n        isLoading: true\n    }\n\n\n    componentDidMount() {\n        this.courseID = getParam('id')\n        this.setState({\n            courseId: this.courseID\n        })\n        this.getVideoCatalog()\n        this.getDatumCatalog()\n    }\n\n    initializePlayer = () => {\n        window.HELP_IMPROVE_VIDEOJS = false;\n        this.player = videojs(this.video, {\n            controls: true,\n            preload: 'auto',\n            bigPlayButton: true,\n            textTrackDisplay: false,\n            posterImage: false,\n            errorDisplay: false\n        })\n        this.player.enableTouchActivity()\n\n    }\n\n    componentDidUpdate(prevProps, prevState) {\n        console.log(this.video);\n    }\n\n\n    componentWillUnmount() {\n        if (this.player) {\n\n            this.player.dispose()\n        }\n    }\n\n    handleClick = index => {\n        if (this.hasAuth()) {\n            this.setPlayerSrc(this.state.video_catalog[index]['play_url'])\n            this.playVideo()\n        }\n        this.setState({\n            activeIndex: index\n        })\n    }\n\n\n    getVideoCatalog = () => {\n        http.get(`${api.home}/m/course/play/${this.courseID}`)\n            .then(res => {\n                const data = res.data\n                if (data.code === 200) {\n\n                    this.setState(\n                        state => ({\n                            video_catalog: data.data['lessons'],\n                            currentVideoSrc: data.data['lessons'][state.activeIndex]['play_url'],\n                            course: data.data.course,\n                            courseId: data.data.course['course_id'],\n                            vCourseId: data.data.course['v_course_id'],\n                            title: data.data.course['course_title'],\n                            isLoading: false\n                        }),\n                        () => {\n                            if (this.lessonAvailable()) {\n                                if (this.hasAuth(this.state.activeIndex)) {\n                                    Promise.resolve().then(() => {\n                                        this.initializePlayer()\n                                        this.playWithAuth()\n                                    })\n                                } else {\n                                    this.getCoursePrice();\n                                }\n                            } else {\n                                alert('暂无视频', '', [{\n                                    text: 'OK',\n                                    onPress: () => {\n                                        this.props.history.push('/')\n                                    }\n                                }])\n                            }\n                        }\n                    )\n                } else {\n                    Toast.info(data.msg)\n                }\n            })\n    }\n\n    setPlayerSrc = src => {\n        this.player.src({\n            src,\n            type: 'application/x-mpegURL'\n        })\n    }\n\n    playVideo = () => {\n        this.player.play()\n    }\n\n\n    getDatumCatalog() {\n        http.get(`${api.home}/m/course/data/${this.courseID}`)\n            .then(res => {\n                const data = res.data\n                if (data.code === 200) {\n\n                    this.setState({\n                        datum: data.data\n                    })\n\n                } else {\n                    Toast.info(data.msg)\n                }\n            })\n    }\n\n    lessonAvailable = () => {\n        const {video_catalog, activeIndex} = this.state\n        return video_catalog[activeIndex]['video_size'] !== 0\n    }\n\n    getCoursePrice = () => {\n        http.get(`${api.home}/sys/course/price/${this.state.courseId}`)\n            .then(res => {\n                const {data} = res\n                if (data.code === 200) {\n                    this.setState({\n                        salePrice: data.data['sale_price']\n                    })\n                }\n            })\n    }\n\n    playWithAuth = () => {\n        const {video_catalog, activeIndex} = this.state\n\n        if (this.hasAuth()) {\n            this.setPlayerSrc(video_catalog[activeIndex]['play_url'])\n        }\n    }\n\n    hasAuth = (index) => {\n        const {course, video_catalog, activeIndex} = this.state\n        let lesson = video_catalog[activeIndex]\n        if (!lesson['is_free']) {\n            if (course['is_audition']) {\n                this.setState({\n                    isAuth: true\n                })\n                return true\n            } else {\n                if (lesson['video_auth']) {\n                    this.setState({\n                        isAuth: true\n                    })\n                    return true\n                }\n                this.setState({\n                    isAuth: false\n                })\n                return false\n            }\n\n        }\n        this.setState({\n            isAuth: true\n        })\n        return true\n    }\n\n\n    render() {\n        let {match, location} = this.props\n        const {video_catalog, activeIndex, isAuth, salePrice} = this.state\n        return (\n            <div className='play'>\n                <HeaderBar title={this.state.title} arrow={true}/>\n                <Loading isLoading={this.state.isLoading}>\n                    <div className=\"video\">\n                        <video className={'video-js'} ref={el => this.video = el}>\n                            <source src={'/'} type='application/x-mpegURL'/>\n                        </video>\n                        {\n                            !isAuth && (\n                                <div className=\"purchase-box\">\n                                    <div className='hint'>您尚未购买该课时,请购买后学习。</div>\n                                    <div className='btns'>\n                                        <button type='button' className='purchase-class'>¥{salePrice} 购买课程</button>\n                                        <button type='button'\n                                                className='purchase-episode'>¥{video_catalog.length && video_catalog[activeIndex]['class_price']} 购买单集\n                                        </button>\n                                    </div>\n                                </div>\n                            )\n                        }\n                    </div>\n                    <div className='tab'>\n                        <div>\n                            <NavLink to={`${match.url}/video`}\n                                     replace\n                                     activeClassName='active'\n                            >视频</NavLink>\n                        </div>\n                        <div>\n                            <NavLink to={`${match.url}/datum`}\n                                     replace\n                                     activeClassName='active'\n                            >资料</NavLink>\n                        </div>\n                    </div>\n                </Loading>\n                <Switch>\n                    <Redirect exact from={'/play'} to={{\n                        pathname: '/play/video',\n                        search: location.search\n                    }}/>\n                    <Route path={`${match.path}/video`} render={props => {\n                        return <VideoCatalog\n                            activeIndex={this.state.activeIndex}\n                            handleClick={this.handleClick}\n                            videoCatalog={this.state.video_catalog}\n                            {...props}/>\n                    }}/>\n                    <Route path={`${match.path}/datum`} render={props => {\n                        return <DatumCatalog {...props} datum={this.state.datum}/>\n                    }}/>\n                </Switch>\n                <Route render={props => {\n                    return this.state.vCourseId ? <Recommendation {...props} vCourseId={this.state.vCourseId}/>\n                        : null\n                }}/>\n            </div>\n        );\n    }\n}\n\n\nexport default Video;"],"sourceRoot":""}