page.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import React from 'react';
  2. import './index.less';
  3. import { Tabs } from 'antd-mobile';
  4. import Page from '@src/containers/Page';
  5. import { formatDate } from '@src/services/Tools';
  6. import Button from '../../../components/Button';
  7. import { Textbook } from '../../../stores/textbook';
  8. import { TextbookSubject } from '../../../../Constant';
  9. const TextbookSubjectTabs = TextbookSubject.map(row => {
  10. return {
  11. title: row.label,
  12. key: row.value,
  13. };
  14. });
  15. export default class extends Page {
  16. initState() {
  17. return {
  18. tab: TextbookSubjectTabs[0],
  19. day: 0,
  20. };
  21. }
  22. initData() {
  23. Textbook.getInfo()
  24. .then(result => {
  25. result.day = parseInt((new Date().getTime() - new Date(result.latest.startDate).getTime()) / 86400000, 10);
  26. result.hasService = true;
  27. this.setState(result);
  28. });
  29. this.refreshTab(this.state.tab);
  30. }
  31. refreshTab(tab) {
  32. this.setState({ tab });
  33. Textbook.allHistory(tab.key).then(result => {
  34. this.setState({ list: result });
  35. });
  36. }
  37. renderView() {
  38. const { latest = {}, hasService, tab, day } = this.state;
  39. return (
  40. <div>
  41. <div className="tip">最近换库时间:{latest.startDate ? formatDate(latest.startDate, 'YYYY-MM-DD') : ''},已换库{day}天。</div>
  42. <Tabs page={tab.key} tabs={TextbookSubjectTabs} onChange={(v) => {
  43. linkTo('/textbook/detail');
  44. this.refreshTab(v);
  45. }} />
  46. <div>{hasService ? this.renderList() : this.renderEmpty()}</div>
  47. <div className="fixed">
  48. <Button block disabled={!hasService} size="lager" onClick={() => {
  49. linkTo('/textbook/detail');
  50. }}>
  51. 查阅机经
  52. </Button>
  53. </div>
  54. </div>
  55. );
  56. }
  57. renderList() {
  58. const { list = [] } = this.state;
  59. return (
  60. <div className="list">
  61. <div className="log-title">更新日志</div>
  62. {list.map(row => {
  63. return <div className="item">
  64. <div className="title">
  65. 版本{row.version}<span className="date">{formatDate(row.createTime)}</span>
  66. </div>
  67. <div className="desc" dangerouslySetInnerHTML={{ __html: row.content }} />
  68. </div>;
  69. })}
  70. </div>
  71. );
  72. }
  73. renderEmpty() {
  74. const { unUseRecord } = this.state;
  75. if (unUseRecord) {
  76. return <div className="empty">
  77. <div className="text">
  78. 还未开通本月机经。 <br />
  79. 您可至千行网站「我的-工具」查看往期机经。
  80. </div>
  81. <Button block width={120} radius onClick={() => {
  82. linkTo(`/open/${unUseRecord.id}`);
  83. }}>
  84. 去开通
  85. </Button>
  86. </div>;
  87. }
  88. return (
  89. <div className="empty">
  90. <div className="text">
  91. 还未购买本月机经。 <br />
  92. 您可至千行网站「我的-工具」查看往期机经。
  93. </div>
  94. <Button block width={120} radius onClick={() => {
  95. linkTo('/product/service/textbook');
  96. }}>
  97. 去购买
  98. </Button>
  99. </div>
  100. );
  101. }
  102. }