import React from 'react'; import './index.less'; import { Tabs } from 'antd-mobile'; import Page from '@src/containers/Page'; import Assets from '@src/components/Assets'; import { formatDate, getMap } from '@src/services/Tools'; import Money from '../../../components/Money'; import Button from '../../../components/Button'; import Tag from '../../../components/Tag'; import { Course } from '../../../stores/course'; import { Order } from '../../../stores/order'; import { DataType } from '../../../../Constant'; import { FAQItem, CommentItem } from '../../../components/Item'; const DataTypeMap = getMap(DataType, 'value', 'label'); export default class extends Page { initState() { return { tab: 'content' }; } initData() { const { id } = this.params; Course.getData(id).then(data => { this.setState({ data }); }); } buy() { Order.speedPay({ productType: 'data', productId: this.params.id }) .then((result) => { linkTo(`/pay/${result.id}`); }); } renderText() { const { tab, data } = this.state; let content; switch (tab) { case 'content': case 'authorContent': case 'methodContent': content = <div dangerouslySetInnerHTML={{ __html: data[tab] }} />; break; case 'faq': content = ( <div> {(data.faqs || []).map(row => ( <FAQItem data={row} /> ))} </div> ); break; case 'comment': content = ( <div> {(data.comments || []).map(row => ( <CommentItem data={row} /> ))} </div> ); break; default: break; } return content; } renderView() { const { data = {}, tab } = this.state; return ( <div> <div className="detail"> <Assets className="info-img" name="d_b" src={data.cover} /> <div className="info"> <div className="title">{data.title}</div> <div className="tags"> {data.isOriginal > 0 && <Tag size="small">原创</Tag>} {data.isNovice > 0 && <Tag size="small">适合新手</Tag>} </div> <div className="data">页数: {data.pages}页</div> <div className="data">格式: {DataTypeMap[data.dataType]}</div> <div className="data">{formatDate(data.updateTime, 'YYYY-MM-DD HH:mm')} 更新</div> <Money value={data.price} size="lager" theme="sell" /> </div> </div> <div className="desc" dangerouslySetInnerHTML={{ __html: data.description }} /> <Tabs page={tab} tabs={[ { title: '资料介绍', key: 'content' }, { title: '作者介绍', key: 'authorContent' }, { title: '获取方式', key: 'methodContent' }, { title: 'FAQs', key: 'faq' }, { title: '用户评价', key: 'comment' }, ]} onChange={value => { this.setState({ tab: value.key }); }} /> {this.renderText()} <div className="fixed"> <div className="fee"> 总额: <Money value={data.price} size="lager" /> </div> <Button width={110} className="f-r" radius onClick={() => { this.buy(); }} > 立即购买 </Button> </div> </div> ); } }