page.js 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. import React from 'react';
  2. import './index.less';
  3. import Assets from '@src/components/Assets';
  4. import Page from '@src/containers/Page';
  5. import { getMap } from '@src/services/Tools';
  6. import Button from '../../../components/Button';
  7. import { SingleItem } from '../../../components/Item';
  8. import Footer from '../../../components/Footer';
  9. import { Contact } from '../../../components/Other';
  10. import { Main } from '../../../stores/main';
  11. import { Course } from '../../../stores/course';
  12. import { ServiceKey, ServiceParamMap } from '../../../../Constant';
  13. const serviceIconMap = {
  14. textbook: 'mokao',
  15. vip: 'VIP_1',
  16. qx_cat: 'jijing',
  17. };
  18. export default class extends Page {
  19. constructor(props) {
  20. props.size = 10;
  21. super(props);
  22. }
  23. init() {
  24. Main.getBase()
  25. .then(result => {
  26. this.setState({ base: result });
  27. });
  28. }
  29. initData() {
  30. const { id } = this.params;
  31. Course.getPackage(id)
  32. .then(result => {
  33. this.setState({ data: result });
  34. });
  35. }
  36. renderView() {
  37. const { data = {}, base = {} } = this.state;
  38. return (
  39. <div>
  40. <div className="top content t-8">
  41. 千行课堂 > 全部套餐 > {data.title} > <span className="t-1">套餐详情</span>
  42. </div>
  43. <div className="center content">
  44. <div className="t-1 t-s-20 m-b-2">
  45. {data.title}
  46. <div className="action f-r">
  47. <Button className="m-r-1" radius size="lager" onClick={() => this.buy()}>
  48. 立即购买
  49. </Button>
  50. <Button theme="default" radius size="lager" onClick={() => this.add()}>
  51. <Assets name="add" />
  52. </Button>
  53. </div>
  54. </div>
  55. <div className="t-7 t-s-18 f-w-b m-b-1">套餐价: ¥ {data.price}</div>
  56. <div className="t-1 t-s-16 desc">{data.description}</div>
  57. <div className="main-title">包含课程</div>
  58. <div className="list">
  59. {(data.courses || []).map(item => {
  60. return <SingleItem noAction data={item} />;
  61. })}
  62. </div>
  63. <div className="main-title">配套服务</div>
  64. <div className="list">
  65. <div className="other-item d-i-b">
  66. <Assets name="" />
  67. </div>
  68. <div className="other-item d-i-b">
  69. <Assets name="" />
  70. </div>
  71. </div>
  72. <div className="main-title">赠送服务</div>
  73. <div className="list">
  74. {data.gift &&
  75. ServiceKey.map(row => {
  76. if (!data.gift[row.value]) return null;
  77. const list = ServiceParamMap[row.value];
  78. const map = getMap(list || [], 'value', 'label');
  79. return <div className="service-item d-i-b">
  80. <Assets name={serviceIconMap[row.value]} />
  81. <div className="t t-13 t-s-20 f-w-b">{row.label}</div>
  82. <div className="t-13">{list ? map[data.gift[row.value]] : data.gift[row.value]}</div>
  83. </div>;
  84. })}
  85. </div>
  86. </div>
  87. <Contact data={base.contact} />
  88. <Footer />
  89. </div>
  90. );
  91. }
  92. }