page.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. import React from 'react';
  2. import './index.less';
  3. import Page from '@src/containers/Page';
  4. import Assets from '@src/components/Assets';
  5. import Footer from '../../../components/Footer';
  6. import { CommentFalls, AnswerCarousel, Consultation, Contact } from '../../../components/Other';
  7. import Tabs from '../../../components/Tabs';
  8. import Filter from '../../../components/Filter';
  9. import { SingleItem, PackageItem } from '../../../components/Item';
  10. export default class extends Page {
  11. initState() {
  12. return {
  13. list: [{}, {}],
  14. tab: '1',
  15. tab1Filter: { one: '1', two: '1' },
  16. tab2Filter: { one: '1' },
  17. };
  18. }
  19. onChangeTab(tab) {
  20. this.setState({ tab });
  21. }
  22. onFilter(type, key, value) {
  23. this.state[type][key] = value;
  24. this.setState(this.state);
  25. }
  26. renderView() {
  27. const { tab } = this.state;
  28. return (
  29. <div>
  30. <div className="top content">
  31. <Tabs type="text" active={'1'} tabs={[{ title: '在线课程', key: '1' }, { title: '1v1私教', key: '2' }]} />
  32. <div className="f-r">
  33. <span className="t-2 m-r-1">优惠活动:2门9折,3门88折,4门及以上85折。</span>
  34. <Assets name="cart" />
  35. <span className="t-2">( 1 )</span>
  36. </div>
  37. </div>
  38. <div className="center">
  39. <div className="content">
  40. <Tabs
  41. type="division"
  42. theme="theme"
  43. size="small"
  44. space={2.5}
  45. width={100}
  46. border
  47. active={tab}
  48. tabs={[{ title: '单项购买', key: '1' }, { title: '套餐购买', key: '2' }]}
  49. onChange={key => this.onChangeTab(key)}
  50. />
  51. {this[`renderTab${tab}`]()}
  52. </div>
  53. </div>
  54. <Consultation />
  55. <CommentFalls />
  56. <AnswerCarousel
  57. list={[
  58. {
  59. question: '如果视频课程到期了却没有听完,没听的课程可以退款么',
  60. answer: '不可以的,视频课程为虚拟商品,购买成功后不接受退换。',
  61. },
  62. {
  63. question: '学习过程中可以申请停课么?',
  64. answer: '每个商品均有1次申请停课的机会,最长停课30天,停课时间不计入使用有效期内。',
  65. },
  66. {
  67. question: '我需要一个整体的GMAT备考计划,报课程的话可以提供么?',
  68. answer:
  69. '报语文全科“系统授课”的同学会赠送价值900元课前辅导,老师语音一对一与同学交流沟通,为同学提供针对性建议和详细的备考计划。',
  70. },
  71. {
  72. question: '如果视频课程到期了却没有听完,没听的课程可以退款么',
  73. answer: '不可以的,视频课程为虚拟商品,购买成功后不接受退换。',
  74. },
  75. ]}
  76. />
  77. <Contact />
  78. <Footer />
  79. </div>
  80. );
  81. }
  82. renderTab1() {
  83. const { tab1Filter, list = [] } = this.state;
  84. return [
  85. <Filter
  86. filter={tab1Filter}
  87. list={[
  88. {
  89. key: 'one',
  90. children: [
  91. { key: '1', title: '全部' },
  92. { key: '2', title: '长难句' },
  93. { key: '3', title: '语文Verbal' },
  94. { key: '4', title: '数学Quant' },
  95. ],
  96. },
  97. {
  98. key: 'two',
  99. children: [
  100. { key: '1', title: '全部' },
  101. { key: '2', title: '语法SC' },
  102. { key: '3', title: '阅读RC' },
  103. { key: '4', title: '逻辑RC' },
  104. ],
  105. },
  106. ]}
  107. onFilter={(key, value) => this.onFilter('tab1Filter', key, value)}
  108. />,
  109. <div className="tab-1-list">
  110. {list.map(() => {
  111. return <SingleItem />;
  112. })}
  113. </div>,
  114. ];
  115. }
  116. renderTab2() {
  117. const { tab2Filter, list = [] } = this.state;
  118. return [
  119. <Filter
  120. filter={tab2Filter}
  121. list={[
  122. {
  123. key: 'one',
  124. children: [
  125. { key: '1', title: '全部' },
  126. { key: '2', title: '语文Verbal' },
  127. { key: '3', title: '数学Quant' },
  128. ],
  129. },
  130. ]}
  131. onFilter={(key, value) => this.onFilter('tab2Filter', key, value)}
  132. />,
  133. <div className="tab-2-list">
  134. {list.map(() => {
  135. return <PackageItem />;
  136. })}
  137. </div>,
  138. ];
  139. }
  140. }