page.js 13 KB

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