page.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import React from 'react';
  2. import './index.less';
  3. import Page from '@src/containers/Page';
  4. import { formatDate, formatMonth, getMap } from '@src/services/Tools';
  5. import { Course } from '../../../stores/course';
  6. import { My } from '../../../stores/my';
  7. import { PrepareStatus, ExperiencePercent } from '../../../../Constant';
  8. const PrepareStatusMap = getMap(PrepareStatus, 'value', 'short');
  9. const ExperiencePercentMap = getMap(ExperiencePercent, 'value', 'label');
  10. export default class extends Page {
  11. initState() {
  12. return {
  13. data: {},
  14. };
  15. }
  16. initData() {
  17. const { id } = this.params;
  18. Course.getExperience(id)
  19. .then(result => {
  20. this.setState({ data: result });
  21. });
  22. Course.experienceView(id);
  23. }
  24. onCollect() {
  25. const { data } = this.state;
  26. const { collect } = this.state;
  27. if (collect === false || !data.collect) {
  28. My.addExperienceCollect(data.id)
  29. .then(() => {
  30. this.setState({ collect: true });
  31. });
  32. } else {
  33. My.delExperienceCollect(data.id)
  34. .then(() => {
  35. this.setState({ collect: false });
  36. });
  37. }
  38. }
  39. renderView() {
  40. const { data = {}, collect } = this.state;
  41. return (
  42. <div>
  43. <div className="center">
  44. <div className="content">
  45. <div className="t-1 t-s-28">{data.title} </div>
  46. <div className="t-6 m-b-2">
  47. <span className="m-r-2">{data.updateTime && formatDate(data.updateTime, 'YYYY-MM-DD HH:mm:ss')}</span>
  48. <span className="m-r-2 m-l-1">阅读 {data.viewNumber || 0}</span>
  49. <span className="m-l-1" onClick={() => this.onCollect()}>
  50. {(collect === false || !data.collect) ? '收藏' : '取消收藏'}
  51. </span>
  52. </div>
  53. <div className="t-1">
  54. <span className="m-r-2">{data.user ? data.user.nickname : data.nickname}</span>
  55. <span className="m-r-2 m-l-1">{PrepareStatusMap[data.prepareStatus]}</span>
  56. <span className="m-r-2 m-l-1">备考:{!!data.experienceDay && formatMonth(data.experienceDay, false)}</span>
  57. <span className="m-r-2 m-l-1">考试时间:{data.experienceTime && formatDate(data.experienceTime, 'YYYY-MM-DD HH:mm:ss')}</span>
  58. <span className="m-r-2 m-l-1">{data.experienceScore}分 /提分 {ExperiencePercentMap[data.experiencePercent]}</span>
  59. {data.link && <a className="m-l-1 t-4" href={data.link} target="_blank">更多信息</a>}
  60. </div>
  61. <div className="detail t-1" dangerouslySetInnerHTML={{ __html: data.content }} />
  62. </div>
  63. </div>
  64. </div>
  65. );
  66. }
  67. }