import React from 'react'; import './index.less'; import Page from '@src/containers/Page'; import Assets from '@src/components/Assets'; import { getMap, formatDate } from '@src/services/Tools'; import Footer from '../../../components/Footer'; import { Contact } from '../../../components/Other'; import Tabs from '../../../components/Tabs'; import Button from '../../../components/Button'; import { User } from '../../../stores/user'; import { Course } from '../../../stores/course'; import { Order } from '../../../stores/order'; import { Main } from '../../../stores/main'; export default class extends Page { initState() { return { tab: '1', }; } init() { Main.dataStruct().then(result => { const dataStructSelect = result.map(row => { return { title: `${row.titleZh}${row.titleEn}`, key: row.id, }; }); const dataStructMap = getMap(dataStructSelect, 'key'); this.setState({ dataStructSelect, dataStructMap }); }); Main.getBase() .then(result => { this.setState({ base: result }); }); } initData() { const { id } = this.params; Course.getData(id) .then(result => { this.setState({ data: result }); }); Course.dataView(id); Main.listFaq({ page: 1, size: 100, channel: 'course_data' }).then(result => { this.faqs = result.list; this.setState({ faqs: result.list }); }); Main.listComment({ page: 1, size: 100, channel: 'course_data' }).then(result => { this.comments = result.list; this.setState({ comments: result.list }); }); } onChangeTab(tab) { this.setState({ tab }); } buy() { const { data } = this.props; User.needLogin().then(() => { Order.speedPay({ productType: 'data', productId: data.id }) .then(result => { User.needPay(result) .then(() => { linkTo('/my/tools?tab=data'); }); }); }); } add() { const { data } = this.props; User.needLogin().then(() => { Order.addCheckout({ productType: 'data', productId: data.id }) .then(() => { this.setState({ add: true }); }); }); } renderView() { const { base = {}, data = {}, dataStructMap = {} } = this.state; return ( <div> <div className="top content t-8"> 千行课堂 > 全部资料 > {data.parentStructId > 0 ? `${(dataStructMap[data.parentStructId] || {}).title} >` : ''} {(dataStructMap[data.structId] || {}).title} > {data.title} > <span className="t-1">资料详情</span> </div> {this.renderDetail()} <Contact data={base.contact} /> <Footer /> </div> ); } renderDetail() { const { tab, data = {}, add } = this.state; return [ <div className="center"> <div className="content"> <div className="item-detail"> <div className="left"> <Assets name="" src={data.cover} /> <div className="tag-list"> {data.isNovice > 0 && <div className="tag">新手</div>} {data.isOriginal > 0 && <div className="tag">原创</div>} </div> </div> <div style={{ width: 760 }} className="right"> <div className="t-1 t-s-20">{data.title}</div> <div className="t-7 m-b-2" dangerouslySetInnerHTML={{ __html: data.content }} /> <div className=""> <div className="d-i-b t-1">最近更新:</div> <div className="d-i-b t-8">{data.latestTime && formatDate(data.latestTime, 'YYYY-MM-DD HH:mm:ss')}</div> </div> <div className=""> <div className="d-i-b t-1">页数:</div> <div className="d-i-b t-8">{data.pages}页</div> </div> <div className=""> <div className="d-i-b t-1">格式:</div> <div className="d-i-b t-8">{data.dataType === 'paper' ? '纸质' : 'PDF'}</div> </div> <div className="m-b-1"> <div style={{ marginTop: 12 }} className="d-i-b t-1 t-s-16 v-a-t"> 价格: </div> <div className="d-i-b t-7 t-s-28 f-w-b"> ¥ {data.price}</div> </div> <div className="action"> {!data.have && <Button className="m-r-1" radius size="lager" onClick={() => { if (data.dataType === 'paper') { openLink(data.link); } else { this.buy(); } }}> 立即购买 </Button>} {!data.have && <Button className="m-r-1" theme="default" disabled={data.add || add} radius size="lager" onClick={() => this.add()}> <Assets name="add" /> </Button>} {!data.have && <Button theme="default" radius size="lager" onClick={() => openLink(data.resource)}> 预览 </Button>} {data.have && <Button className="f-r" theme="default" radius size="lager" onClick={() => openLink(data.resource)}> 查看资料 </Button>} </div> {data.have && <Assets className="buyed" width={75} height={75} name="Purchased" />} </div> </div> </div> </div>, <div className="bottom"> <div className="content"> <Tabs type="full" border active={tab} tabs={[ { title: '资料介绍', key: '1' }, { title: '作者介绍', key: '2' }, { title: '获取方式', key: '3' }, { title: 'FAQs', key: '4' }, { title: '学员评价', key: '5' }, ]} /> {this[`renderTab${tab}`]()} </div> </div>, ]; } renderTab1() { return <div />; } renderTab2() { return <div />; } renderTab3() { return <div />; } renderTab4() { return <div />; } renderTab5() { return <div />; } }