page.js 3.1 KB

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