page.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import React from 'react';
  2. import './index.less';
  3. import Page from '@src/containers/Page';
  4. import { getMap } from '@src/services/Tools';
  5. import Money from '../../../components/Money';
  6. import Button from '../../../components/Button';
  7. import Tag from '../../../components/Tag';
  8. // import Avatar from '../../../components/Avatar';
  9. import { Course } from '../../../stores/course';
  10. import { Order } from '../../../stores/order';
  11. import { ServiceKey, ServiceParamMap } from '../../../../Constant';
  12. export default class extends Page {
  13. init() { }
  14. initData() {
  15. const { id } = this.params;
  16. Course.getPackage(id).then(result => {
  17. result.originPrice = result.courses.reduce((x, y) => x + y, 0);
  18. this.setState({ data: result });
  19. });
  20. }
  21. buy() {
  22. Order.speedPay({ productType: 'course_package', productId: this.params.id });
  23. }
  24. renderView() {
  25. const { data = {} } = this.state;
  26. return (
  27. <div>
  28. <div className="title">{data.title}</div>
  29. <div className="tags">{data.isNovice > 0 && <Tag size="small">适合新手</Tag>}</div>
  30. <div className="detail-title">授课老师</div>
  31. <div className="name">
  32. {/* <Avatar name="scan1" /> */}
  33. {(data.courses || []).map(row => {
  34. return <span>{row.teacher}</span>;
  35. })}
  36. </div>
  37. <div className="detail-title">课程介绍</div>
  38. <div className="desc">{data.description}</div>
  39. <div className="detail-title">包含课程</div>
  40. <div className="detail-tags">
  41. {(data.courses || []).map(row => {
  42. return (
  43. <Tag theme="border">
  44. {row.title}({row.noNumber}课时)
  45. </Tag>
  46. );
  47. })}
  48. </div>
  49. <div className="detail-title">配套服务</div>
  50. <div className="detail-tags">
  51. <Tag theme="border">预习作业</Tag>
  52. <Tag theme="border">课后答疑</Tag>
  53. </div>
  54. <div className="detail-title">赠送服务</div>
  55. <div className="detail-tags">
  56. {data.gift &&
  57. ServiceKey.map(row => {
  58. if (!data.gift[row.value]) return null;
  59. const list = ServiceParamMap[row.value];
  60. if (list) {
  61. const map = getMap(list, 'value', 'label');
  62. return (
  63. <Tag theme="border">
  64. {row.label}×{map[data.gift[row.value]]}
  65. </Tag>
  66. );
  67. }
  68. return (
  69. <Tag theme="border">
  70. {row.label}×{data.gift[row.value]}
  71. </Tag>
  72. );
  73. })}
  74. </div>
  75. <div className="fixed">
  76. <div className="fee">
  77. <div className="o-m">
  78. 原价: <Money value={data.originPrice} disabled />
  79. </div>
  80. <div className="t-m">
  81. 套餐价: <Money value={data.price} size="lager" />
  82. </div>
  83. </div>
  84. <Button
  85. width={110}
  86. className="f-r"
  87. radius
  88. onClick={() => {
  89. this.buy();
  90. }}
  91. >
  92. 立即购买
  93. </Button>
  94. </div>
  95. </div>
  96. );
  97. }
  98. }