page.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. import React from 'react';
  2. import { Carousel } from 'antd';
  3. import './index.less';
  4. import Page from '@src/containers/Page';
  5. import Assets from '@src/components/Assets';
  6. import Button from '../../../components/Button';
  7. import Footer from '../../../components/Footer';
  8. import { CommentFalls, Contact } from '../../../components/Other';
  9. import { Main } from '../../../stores/main';
  10. import { User } from '../../../stores/user';
  11. const courseIconList = ['grammar', 'read', 'logic', 'math'];
  12. export default class extends Page {
  13. constructor(props) {
  14. super(props);
  15. this.state = { courseIndex: 0 };
  16. }
  17. initData() {
  18. Main.getIndex().then(result => {
  19. this.setState(result);
  20. });
  21. }
  22. location(url) {
  23. window.location.href = url;
  24. }
  25. test() {
  26. User.needLogin().then(() => {
  27. linkTo('/my');
  28. });
  29. }
  30. renderView() {
  31. const { prepare = {}, user = {}, course = [], activity = [], evaluation = [], contact = {} } = this.state;
  32. return (
  33. <div>
  34. <div className="block block-1">
  35. <div className="body">
  36. <div className="title">PREPARE THE GMAT LIKE A PRO.</div>
  37. <div className="desc">我们相信每位考生独一无二,但科学的备考方法本质相通;</div>
  38. <div className="desc">我们知道考取高分并非易事,但千行的专业指导让难度下降25%;</div>
  39. <div className="desc">我们清楚GMAT只是留学生涯的起点,但千行努力让您收获更多。</div>
  40. </div>
  41. </div>
  42. <div className="block block-2">
  43. <div className="body">
  44. <div className="title">完善备考信息,赢VIP权限</div>
  45. <div className="desc">知己知彼,百战不殆!</div>
  46. <Button theme="white" className="btn" onClick={() => this.test()}>
  47. 立即填写
  48. </Button>
  49. </div>
  50. </div>
  51. <div className="block block-3">
  52. <div className="bg">
  53. <div className="bg-1" />
  54. <div className="bg-2" />
  55. <div className="bg-3" />
  56. <div className="bg-4" />
  57. </div>
  58. <div className="fixed">
  59. <div className="body">
  60. <div className="step step-1">
  61. <div className="m-title">备考攻略</div>
  62. <div className="list">
  63. <div className="item m-r-2">
  64. <div className="title">
  65. 自学指南<span className="sub">Self-guided</span>
  66. </div>
  67. <div className="btn">
  68. <Button
  69. className="btn-shadow"
  70. size="lager"
  71. onClick={() => {
  72. this.location(prepare.first);
  73. }}
  74. >
  75. 从零开始
  76. </Button>
  77. <Button
  78. className="btn-shadow"
  79. theme="white"
  80. size="lager"
  81. onClick={() => {
  82. this.location(prepare.continue);
  83. }}
  84. >
  85. 继续学习
  86. </Button>
  87. </div>
  88. </div>
  89. <div className="item m-l-2">
  90. <div className="title">
  91. 参与课程<span className="sub">With DUKB24</span>
  92. </div>
  93. <div className="btn">
  94. <Button
  95. theme="error"
  96. size="lager"
  97. radius
  98. onClick={() => {
  99. this.location(prepare.classJunior);
  100. }}
  101. >
  102. 从零开始
  103. </Button>
  104. <Button
  105. theme="warn"
  106. size="lager"
  107. radius
  108. onClick={() => {
  109. this.location(prepare.classMiddle);
  110. }}
  111. >
  112. 继续学习
  113. </Button>
  114. </div>
  115. </div>
  116. </div>
  117. </div>
  118. <div className="step step-2">
  119. <div className="m-title">WHY 千行</div>
  120. <div className="list">
  121. <div className="item m-r-1-5">
  122. <div className="title">
  123. <Assets name="planet" />
  124. 内容全⾯<span className="sub">360° Support</span>
  125. </div>
  126. <div className="desc">
  127. 网站涵盖考试介绍、方法引导、技巧点拨、练习、课程、机经、模考、心经分享等,从入门到出分,一应俱全,满足各阶段考生的备考需求。
  128. </div>
  129. </div>
  130. <div className="item m-r-1-5 m-l-1-5">
  131. <div className="title">
  132. <Assets name="expert" />
  133. 指导专业<span className="sub">We are Pro.</span>
  134. </div>
  135. <div className="desc">专注GMAT备考8年 出分周期高于行业平均水平26% 学员均分高于行业18%</div>
  136. </div>
  137. <div className="item m-l-1-5">
  138. <div className="title">
  139. <Assets name="userfriendly" />
  140. ⼈⼈会⽤<span className="sub">User-frriendly</span>
  141. </div>
  142. <div className="desc">
  143. 除提供有用的数据信息外,网站多处设置信息导,提供必要的解释和原理说明,从源头规避误区,协助考生做出更加明智的决策,提高备考效率。
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. <div className="step step-3">
  149. <div className="list">
  150. <div className="item m-r-1-5">
  151. <div className="title" style={{ color: '#4292F0' }}>
  152. {user.numberOffline}
  153. </div>
  154. <div className="desc">注册用户</div>
  155. <Assets className="foot-1" name="foot1" />
  156. </div>
  157. <div className="item m-r-1-5 m-l-1-5">
  158. <div className="title" style={{ color: '#FFB676' }}>
  159. {user.number700}
  160. </div>
  161. <div className="desc">700+分学员</div>
  162. <Assets className="foot-2" name="foot2" />
  163. </div>
  164. <div className="item m-l-1-5">
  165. <div className="title" style={{ color: '#F36565' }}>
  166. {user.numberScore}
  167. </div>
  168. <div className="desc">学员均分</div>
  169. <Assets className="foot-3" name="foot1" />
  170. </div>
  171. </div>
  172. </div>
  173. <div className="step step-4">
  174. <div className="m-title">
  175. 千⾏课程<span className="sub">Waste Less, Learn More</span>
  176. </div>
  177. <div className="box">
  178. <div className="detail">
  179. {course[this.state.courseIndex] && (
  180. <a href={course[this.state.courseIndex].link} target="_blank">
  181. <Assets src={course[this.state.courseIndex].image} />
  182. </a>
  183. )}
  184. </div>
  185. <div className="list">
  186. {course.map((row, index) => {
  187. if (index >= 4) return null;
  188. return (
  189. <div
  190. className={`tab ${this.state.courseIndex === index ? 'active' : ''}`}
  191. onMouseEnter={() => this.setState({ courseIndex: index })}
  192. >
  193. <Assets name={courseIconList[index]} />
  194. {row.title}
  195. <div className={`place place-${index + 1}`}>
  196. <span className="right-arrow" />
  197. </div>
  198. <i className="left-arrow" />
  199. </div>
  200. );
  201. })}
  202. </div>
  203. </div>
  204. </div>
  205. <div className="step step-5">
  206. <div className="m-title">独家服务</div>
  207. <div className="list">
  208. <div className="item m-r-1-5" style={{ height: 210 }}>
  209. <Assets className="sun" name="sun_blue" />
  210. <div className="title" style={{ color: '#4292F0' }}>
  211. 千⾏CAT模考<span className="sub">></span>
  212. </div>
  213. <div className="desc">采⽤CAT出题机制、排名制算分⽅法</div>
  214. <div className="desc">独家题源,排除重题⼲扰</div>
  215. <div className="desc">模考报告提供具体考点分析,明确提升 ⽅向</div>
  216. </div>
  217. <div className="item m-r-1-5 m-l-1-5" style={{ height: 250 }}>
  218. <Assets className="sun" name="sun_red" />
  219. <div className="title" style={{ color: '#FFB676' }}>
  220. 机经服务<span className="sub">></span>
  221. </div>
  222. <div className="desc">⾼效整理:梳理逻辑结构,⽆“反吞 噬”⻛险</div>
  223. <div className="desc">轻松获取:⾃动更新⾄邮箱代替⼿动 领取</div>
  224. <div className="desc">随时查阅:⼿机查看、在线浏览、在 线做题</div>
  225. </div>
  226. <div className="item m-l-1-5" style={{ height: 185 }}>
  227. <Assets className="sun" name="sun_yello" />
  228. <div className="title" style={{ color: '#F36565' }}>
  229. VIP服务<span className="sub">></span>
  230. </div>
  231. <div className="desc">⾃由组卷,练你想练</div>
  232. <div className="desc">独家解析,专业报告</div>
  233. <div className="desc">提问特权,1VS1答疑</div>
  234. </div>
  235. </div>
  236. </div>
  237. </div>
  238. </div>
  239. </div>
  240. <Carousel autoplay>
  241. {activity.map(row => {
  242. return (
  243. <div
  244. className="block block-4"
  245. style={{ backgroundImage: row.image }}
  246. onClick={() => {
  247. this.location(row.link);
  248. }}
  249. />
  250. );
  251. })}
  252. </Carousel>
  253. <CommentFalls list={evaluation} />
  254. <div className="block block-6">
  255. <div className="body">
  256. <div className="m-title">发展历程</div>
  257. <div className="step-list">
  258. <div className="step">
  259. <div className="title">
  260. <Assets name="dot1" />
  261. 2012
  262. </div>
  263. <div className="desc">“OG12语法千行”首次与大家见面,下载量过万,成为当年最热门的备考资料。</div>
  264. </div>
  265. <div className="step">
  266. <div className="title">
  267. <Assets name="dot2" />
  268. 2015
  269. </div>
  270. <div className="desc">
  271. 正式成立“广州多少教育咨询有限公司”,致力于帮助GMAT考生花更少的时间,取得更高的成绩,"Waste Less, Learn
  272. More." 同时发行“PREP0708语法千行”、“GMAT数学千行”。
  273. </div>
  274. </div>
  275. <div className="step">
  276. <div className="title">
  277. <Assets name="dot3" />
  278. 2019
  279. </div>
  280. <div className="desc">
  281. 发行“千行GMAT长难句”; 每4位GMAT考生中有3位使用“千行资料”; “千行”网站上线,我们希望为您做得更多。
  282. </div>
  283. </div>
  284. </div>
  285. </div>
  286. </div>
  287. <Contact data={contact} />
  288. <Footer />
  289. </div>
  290. );
  291. }
  292. }