123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- import React from 'react';
- import './index.less';
- import Page from '@src/containers/Page';
- import { Checkbox } from 'antd';
- // import Assets from '@src/components/Assets';
- import { getMap } from '@src/services/Tools';
- import Button from '../../../components/Button';
- import Money from '../../../components/Money';
- import { Order } from '../../../stores/order';
- import { Main } from '../../../stores/main';
- import { ServiceKey, OrderInfoMap } from '../../../../Constant';
- const ServiceKeyMap = getMap(ServiceKey, 'value', 'label');
- export default class extends Page {
- initState() {
- return {};
- }
- initData() {
- const { id } = this.params;
- Order.getOrder(id).then(order => {
- order.packageMap = {};
- (order.packages || []).forEach(row => {
- order.packageMap[row.id] = row;
- });
- order.courseMap = {};
- (order.courses || []).forEach(row => {
- order.courseMap[row.id] = row;
- });
- order.dataMap = {};
- (order.datas || []).forEach(row => {
- order.dataMap[row.id] = row;
- });
- order.checkouts.forEach(checkout => {
- checkout.info = OrderInfoMap[checkout.productType];
- switch (checkout.productType) {
- case 'service':
- checkout.title = ServiceKeyMap[checkout.service];
- checkout.info = checkout.info[checkout.service];
- break;
- case 'data':
- checkout.title = order.dataMap[checkout.productId].title;
- break;
- case 'course_package':
- checkout.title = order.packageMap[checkout.productId].title;
- break;
- case 'course':
- checkout.title = order.courseMap[checkout.productId].title;
- break;
- default:
- }
- });
- const [checkout] = order.checkouts.filter(row => row.parentId === 0);
- this.setState({ order, checkout });
- });
- Main.getContract('course').then(result => {
- this.setState({ contract: result });
- });
- }
- pay() {
- const { id } = this.params;
- Order.wechatJs(id).then(() => { });
- }
- renderView() {
- const { order = {}, contract = {}, checkout = {} } = this.state;
- const { info = {}, productType } = checkout;
- let content = '';
- switch (productType) {
- case 'data':
- content = this.renderData();
- break;
- case 'course_package':
- content = this.renderCoursePackage();
- break;
- case 'course':
- case 'service':
- content = this.renderSingle();
- break;
- default:
- }
- return (
- <div className="detail">
- <div className="title" style={{ marginBottom: 0 }}>
- 商品信息
- </div>
- {content}
- {info.refund_policy && [< div className="title">退款政策</div>,
- <div className="desc">本产品为虚拟产品,购买成功后不支持退款。</div>]}
- {info.copyright_notes && [<div className="title">版权说明</div>,
- <div className="desc">本商品仅限购买者本人使用,不可商用和传播。</div>]}
- {order.productTypes && order.productTypes.indexOf('course') > 0 && <div className="agree">
- <Checkbox checked />
- 我已阅读并同意 <a onClick={() => this.setState({ showContract: true })}>{contract.title}</a>
- </div>}
- <div className="fixed">
- <div className="tip">*若在购买过程中遇到问题,请联系千行小助手协助解决</div>
- <div className="fee">
- 应付: <Money value={order.money} size="lager" />
- </div>
- <Button
- width={110}
- className="f-r"
- radius
- onClick={() => {
- this.pay();
- }}
- >
- 立即购买
- </Button>
- </div>
- </div >
- );
- }
- renderData() {
- const { checkout } = this.state;
- return (
- <div className="info data">
- <div className="info-block">
- {checkout.title} <Money className="f-r" value={checkout.money} />
- </div>
- <div className="info-block">
- 开通有效期 <span className="f-r">{checkout.expireDays ? `${checkout.expireDays}天` : '永久'}</span>
- </div>
- </div>
- );
- }
- renderCoursePackage() {
- const { checkout, order } = this.state;
- return (
- <div className="info course-package">
- <div className="info-block">
- {checkout.title} <Money className="f-r" value={checkout.money} />
- </div>
- <div className="info-block">
- {order.checkouts.map(row => {
- if (row.parentId === 0) return null;
- return <div className="info-item">
- {row.title} <span className="f-r">开通有效期: {checkout.expireDays ? `${checkout.expireDays}天` : '永久'} 使用有效期: {checkout.useExpireDays ? `${checkout.useExpireDays}天` : '永久'}</span>
- </div>;
- })}
- </div>
- </div>
- );
- }
- renderSingle() {
- const { checkout } = this.state;
- console.log(checkout);
- return (
- <div className="info single">
- <div className="info-block">
- {checkout.title} <Money className="f-r" value={checkout.money} />
- </div>
- <div className="info-block">
- 开通有效期 <span className="f-r">{checkout.expireDays ? `${checkout.expireDays}天` : '永久'}</span>
- </div>
- <div className="info-block">
- 使用有效期 <span className="f-r">{checkout.useExpireDays ? `${checkout.useExpireDays}天` : '永久'}</span>
- </div>
- </div>
- );
- }
- }
|