page.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. import React from 'react';
  2. import { Link } from 'react-router-dom';
  3. import './index.less';
  4. import Page from '@src/containers/Page';
  5. import Tabs from '../../../components/Tabs';
  6. import Icon from '../../../components/Icon';
  7. import Switch from '../../../components/Switch';
  8. import AnswerList from '../../../components/AnswerList';
  9. import AnswerButton from '../../../components/AnswerButton';
  10. import OtherAnswer from '../../../components/OtherAnswer';
  11. export default class extends Page {
  12. constructor(props) {
  13. super(props);
  14. this.state = { hideAnalysis: true };
  15. }
  16. renderView() {
  17. return (
  18. <div className="layout">
  19. <div className="layout-header">
  20. <div className="left">
  21. <div className="no">No.36</div>
  22. <div className="title">OG18 - Easy (21-40) </div>
  23. </div>
  24. <div className="center">
  25. ID:PREP 07-124
  26. <Icon name="more" />
  27. </div>
  28. <div className="right">
  29. <span className="b">
  30. 用时:<span className="s">1</span>m<span className="s">39</span>s
  31. </span>
  32. <span className="b">
  33. 全站:<span className="s">1</span>m<span className="s">39</span>s
  34. </span>
  35. <span className="b">
  36. <span className="s">80</span>%
  37. </span>
  38. <Icon name="question" />
  39. <Icon name="star" />
  40. </div>
  41. </div>
  42. <div className="layout-body">{this.renderBody()}</div>
  43. <div className="layout-footer">
  44. <div className="left">
  45. <Icon name="sceen-full" />
  46. </div>
  47. <div className="center">
  48. <AnswerButton className="item">笔记</AnswerButton>
  49. <AnswerButton className="item">提问</AnswerButton>
  50. <AnswerButton className="item">纠错</AnswerButton>
  51. </div>
  52. <div className="right">
  53. <Icon name="prev" />
  54. <Icon name="next" />
  55. </div>
  56. </div>
  57. </div>
  58. );
  59. }
  60. renderBody() {
  61. const { question = { content: {} } } = this.state;
  62. const { typeset = 'one' } = question.content;
  63. const { hideAnalysis } = this.state;
  64. const show = typeset === 'one' ? true : !hideAnalysis;
  65. return (
  66. <div className="layout-content">
  67. <div className={`${typeset}`}>
  68. {this.renderContent()}
  69. {this.renderAnswer()}
  70. </div>
  71. {this.renderAnalysis()}
  72. {typeset === 'two' && (
  73. <div className="fixed-analysis" onClick={() => this.setState({ hideAnalysis: !hideAnalysis })}>
  74. {show ? '查看解析>' : '收起解析>'}
  75. </div>
  76. )}
  77. </div>
  78. );
  79. }
  80. renderAnalysis() {
  81. const { question = { content: {} } } = this.state;
  82. const { typeset = 'one' } = question.content;
  83. const { hideAnalysis } = this.state;
  84. const show = typeset === 'one' ? true : !hideAnalysis;
  85. return (
  86. <div className={`block block-analysis ${typeset}-analysis ${!show ? 'hide' : ''}`}>
  87. <Tabs
  88. type="division"
  89. active="1"
  90. tabs={[
  91. { key: '1', name: '官方解析', path: '/' },
  92. { key: '2', name: '千行解析', path: '/' },
  93. { key: '3', name: '题源联想', path: '/' },
  94. { key: '4', name: '相关回答', path: '/' },
  95. ]}
  96. />
  97. {this.renderText()}
  98. </div>
  99. );
  100. }
  101. renderText() {
  102. return (
  103. <div className="detail">
  104. <div className="detail-block answer-block" />
  105. <div className="detail-block text-block">
  106. “Offering support services to spouses caring for their other halves may reduce martial stress and prevent
  107. divorce at older ages,” she said. “But it’s also important to recognize that the pressure to divorce may be
  108. health-related and that sick ex-wives may need additional care and services to prevent worsening health and
  109. increased health costs.”
  110. </div>
  111. </div>
  112. );
  113. }
  114. renderOtherAnswer() {
  115. const { otherAnswer = [1, 2, 3, 4, 5] } = this.state;
  116. return (
  117. <div className="other">
  118. {otherAnswer.map(() => {
  119. return <OtherAnswer />;
  120. })}
  121. </div>
  122. );
  123. }
  124. renderAnswer() {
  125. const { question = { content: {} } } = this.state;
  126. const { typeset = 'one' } = question.content;
  127. return <div className="block block-answer">{typeset === 'two' ? <Switch>显示答案</Switch> : ''}</div>;
  128. }
  129. renderContent() {
  130. const { question = { content: {} } } = this.state;
  131. const { typeset = 'one' } = question.content;
  132. return (
  133. <div className="block block-content">
  134. {typeset === 'one' ? <Switch>显示答案</Switch> : ''}
  135. <AnswerList
  136. selected={1}
  137. answer={2}
  138. show
  139. list={[
  140. { text: ' They can become increasingly vulnerable to serious illness.' },
  141. { text: ' They can become increasingly vulnerable to serious illness.' },
  142. { text: ' They can become increasingly vulnerable to serious illness.' },
  143. { text: ' They can become increasingly vulnerable to serious illness.' },
  144. ]}
  145. />
  146. </div>
  147. );
  148. }
  149. renderAsk() {
  150. return (
  151. <div className="modal ask">
  152. <div className="mask" />
  153. <div className="body">
  154. <div className="title">提问</div>
  155. <div className="desc">
  156. <div className="select">我想对进行提问</div>
  157. <div className="label">有疑问的具体内容是:</div>
  158. <textarea className="textarea" placeholder="请复制粘贴有疑问的内容。" />
  159. <div className="label">针对以上内容的问题是:</div>
  160. <textarea className="textarea" placeholder="提问频率高的问题会被优先回答哦。" />
  161. </div>
  162. <div className="bottom">
  163. <AnswerButton theme="cancel" size="lager">
  164. 取消
  165. </AnswerButton>
  166. <AnswerButton size="lager">提交</AnswerButton>
  167. </div>
  168. </div>
  169. </div>
  170. );
  171. }
  172. renderAskOk() {
  173. return (
  174. <div className="modal ask-ok">
  175. <div className="mask" />
  176. <div className="body">
  177. <div className="title">提问</div>
  178. <div className="content">
  179. <div className="left">
  180. <div className="text">已提交成功!</div>
  181. <div className="text">感谢您的耐心反馈,我们会尽快核实并以站内信的方式告知结果。</div>
  182. <div className="text">您也可以关注公众号及时获取结果。</div>
  183. </div>
  184. <div className="right">
  185. <div className="text">扫码关注公众号</div>
  186. <div className="text">千行GMAT</div>
  187. </div>
  188. </div>
  189. <div className="confirm">
  190. <AnswerButton size="lager" theme="confirm">
  191. 好的,知道了
  192. </AnswerButton>
  193. </div>
  194. </div>
  195. </div>
  196. );
  197. }
  198. renderAskFail() {
  199. return (
  200. <div className="modal ask-ok">
  201. <div className="mask" />
  202. <div className="body">
  203. <div className="title">提问</div>
  204. <div className="content">
  205. <div className="left">
  206. <div className="text">提问功能正在维护中。</div>
  207. <div className="text">可先查阅“相关问答” 或 成为学员享受极速 答疑特权。</div>
  208. <Link to="/">了解更多></Link>
  209. </div>
  210. <div className="right">
  211. <div className="text">扫码关注公众号</div>
  212. <div className="text">千行GMAT</div>
  213. </div>
  214. </div>
  215. <div className="confirm">
  216. <AnswerButton size="lager" theme="confirm">
  217. 好的,知道了
  218. </AnswerButton>
  219. </div>
  220. </div>
  221. </div>
  222. );
  223. }
  224. renderError() {
  225. return (
  226. <div className="modal error">
  227. <div className="mask" />
  228. <div className="body">
  229. <div className="title">纠错</div>
  230. <div className="desc">
  231. <div className="select">我想对进行提问</div>
  232. <div className="label">有疑问的具体内容是:</div>
  233. <textarea className="textarea" placeholder="请复制粘贴有疑问的内容。" />
  234. <div className="label">针对以上内容的问题是:</div>
  235. <textarea className="textarea" placeholder="提问频率高的问题会被优先回答哦。" />
  236. </div>
  237. <div className="bottom">
  238. <AnswerButton theme="cancel" size="lager">
  239. 取消
  240. </AnswerButton>
  241. <AnswerButton size="lager">提交</AnswerButton>
  242. </div>
  243. </div>
  244. </div>
  245. );
  246. }
  247. renderErrorOk() {
  248. return (
  249. <div className="modal error-ok">
  250. <div className="mask" />
  251. <div className="body">
  252. <div className="title">纠错</div>
  253. <div className="desc">
  254. <div className="select">我想对进行提问</div>
  255. <div className="label">有疑问的具体内容是:</div>
  256. <textarea className="textarea" placeholder="请复制粘贴有疑问的内容。" />
  257. <div className="label">针对以上内容的问题是:</div>
  258. <textarea className="textarea" placeholder="提问频率高的问题会被优先回答哦。" />
  259. </div>
  260. <div className="bottom">
  261. <AnswerButton theme="cancel" size="lager">
  262. 取消
  263. </AnswerButton>
  264. <AnswerButton size="lager">提交</AnswerButton>
  265. </div>
  266. </div>
  267. </div>
  268. );
  269. }
  270. renderNote() {
  271. const { note = ['题目', '官方解析'] } = this.state;
  272. return (
  273. <div className="modal note">
  274. <div className="mask" />
  275. <div className="body">
  276. <div className="title">笔记</div>
  277. <div className="content">
  278. <div className="tabs">
  279. {note.map(item => {
  280. return (
  281. <div className="tab">
  282. <div className="text">{item}</div>
  283. <div className="date">2019.05.13 15:30</div>
  284. </div>
  285. );
  286. })}
  287. </div>
  288. <div className="input">
  289. <textarea className="textarea" placeholder="记下笔记,方便以后复习" />
  290. <div className="bottom">
  291. <AnswerButton theme="cancel" size="lager">
  292. 取消
  293. </AnswerButton>
  294. <AnswerButton size="lager">编辑</AnswerButton>
  295. <AnswerButton size="lager">保存</AnswerButton>
  296. </div>
  297. </div>
  298. </div>
  299. </div>
  300. </div>
  301. );
  302. }
  303. }