page.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  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. window.location.href = url;
  27. }
  28. test() {
  29. User.needLogin().then(() => {
  30. linkTo('/my');
  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 step-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. 继续学习
  116. </Button>
  117. </div>
  118. </div>
  119. </div>
  120. </div>
  121. <div className="step step-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年 出分周期高于行业平均水平26% 学员均分高于行业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-frriendly</span>
  144. </div>
  145. <div className="desc">
  146. 除提供有用的数据信息外,网站多处设置信息导,提供必要的解释和原理说明,从源头规避误区,协助考生做出更加明智的决策,提高备考效率。
  147. </div>
  148. </div>
  149. </div>
  150. </div>
  151. <div className="step step-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 step-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[this.state.courseIndex] && (
  183. <a href={course[this.state.courseIndex].link} target="_blank">
  184. <Assets src={course[this.state.courseIndex].image} />
  185. </a>
  186. )}
  187. </div>
  188. <div className="list">
  189. {course.map((row, index) => {
  190. if (index >= 4) return null;
  191. return (
  192. <div
  193. className={`tab ${this.state.courseIndex === index ? 'active' : ''}`}
  194. onMouseEnter={() => this.setState({ courseIndex: index })}
  195. >
  196. <Assets name={courseIconList[index]} />
  197. {row.title}
  198. <div className={`place place-${index + 1}`}>
  199. <span className="right-arrow" />
  200. </div>
  201. <i className="left-arrow" />
  202. </div>
  203. );
  204. })}
  205. </div>
  206. </div>
  207. </div>
  208. <div className="step step-5">
  209. <div className="m-title">独家服务</div>
  210. <div className="list">
  211. <div className="item m-r-1-5" style={{ height: 210 }}>
  212. <Assets className="sun" name="sun_blue" />
  213. <div className="title" style={{ color: '#4292F0' }}>
  214. 千⾏CAT模考<span className="sub">></span>
  215. </div>
  216. <div className="desc">采⽤CAT出题机制、排名制算分⽅法</div>
  217. <div className="desc">独家题源,排除重题⼲扰</div>
  218. <div className="desc">模考报告提供具体考点分析,明确提升 ⽅向</div>
  219. </div>
  220. <div className="item m-r-1-5 m-l-1-5" style={{ height: 250 }}>
  221. <Assets className="sun" name="sun_red" />
  222. <div className="title" style={{ color: '#FFB676' }}>
  223. 机经服务<span className="sub">></span>
  224. </div>
  225. <div className="desc">⾼效整理:梳理逻辑结构,⽆“反吞 噬”⻛险</div>
  226. <div className="desc">轻松获取:⾃动更新⾄邮箱代替⼿动 领取</div>
  227. <div className="desc">随时查阅:⼿机查看、在线浏览、在 线做题</div>
  228. </div>
  229. <div className="item m-l-1-5" style={{ height: 185 }}>
  230. <Assets className="sun" name="sun_yello" />
  231. <div className="title" style={{ color: '#F36565' }}>
  232. VIP服务<span className="sub">></span>
  233. </div>
  234. <div className="desc">⾃由组卷,练你想练</div>
  235. <div className="desc">独家解析,专业报告</div>
  236. <div className="desc">提问特权,1VS1答疑</div>
  237. </div>
  238. </div>
  239. </div>
  240. </div>
  241. </div>
  242. </div>
  243. <Carousel autoplay>
  244. {activity.map(row => {
  245. return (
  246. <div
  247. className="block block-4"
  248. style={{ backgroundImage: row.image }}
  249. onClick={() => {
  250. this.location(row.link);
  251. }}
  252. />
  253. );
  254. })}
  255. </Carousel>
  256. <CommentFalls list={evaluation} />
  257. <div className="block block-6">
  258. <div className="body">
  259. <div className="m-title">发展历程</div>
  260. <div className="step-list">
  261. <div className="step">
  262. <div className="title">
  263. <Assets name="dot1" />
  264. 2012
  265. </div>
  266. <div className="desc">“OG12语法千行”首次与大家见面,下载量过万,成为当年最热门的备考资料。</div>
  267. </div>
  268. <div className="step">
  269. <div className="title">
  270. <Assets name="dot2" />
  271. 2015
  272. </div>
  273. <div className="desc">
  274. 正式成立“广州多少教育咨询有限公司”,致力于帮助GMAT考生花更少的时间,取得更高的成绩,"Waste Less, Learn
  275. More." 同时发行“PREP0708语法千行”、“GMAT数学千行”。
  276. </div>
  277. </div>
  278. <div className="step">
  279. <div className="title">
  280. <Assets name="dot3" />
  281. 2019
  282. </div>
  283. <div className="desc">
  284. 发行“千行GMAT长难句”; 每4位GMAT考生中有3位使用“千行资料”; “千行”网站上线,我们希望为您做得更多。
  285. </div>
  286. </div>
  287. </div>
  288. </div>
  289. </div>
  290. <Contact data={base.contact} />
  291. <Footer />
  292. </div>
  293. );
  294. }
  295. }