{"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":"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","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":""}