page.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. this.setState(result);
  27. });
  28. this.refreshTab(this.state.tab);
  29. }
  30. refreshTab(tab) {
  31. this.setState({ tab });
  32. Textbook.allHistory(tab.key).then(result => {
  33. this.setState({ list: result });
  34. });
  35. }
  36. renderView() {
  37. const { latest = {}, hasService, tab, day } = this.state;
  38. return (
  39. <div>
  40. <div className="tip">最近换库时间:{latest.startDate ? formatDate(latest.startDate, 'YYYY-MM-DD') : ''},已换库{day}天。</div>
  41. <Tabs page={tab.key} tabs={TextbookSubjectTabs} onChange={(v) => {
  42. linkTo('/textbook/detail');
  43. this.refreshTab(v);
  44. }} />
  45. <div>{hasService ? this.renderList() : this.renderEmpty()}</div>
  46. <div className="fixed">
  47. <Button block disabled={!hasService} size="lager" onClick={() => {
  48. linkTo('/textbook/detail');
  49. }}>
  50. 查阅机经
  51. </Button>
  52. </div>
  53. </div>
  54. );
  55. }
  56. renderList() {
  57. const { list = [] } = this.state;
  58. return (
  59. <div className="list">
  60. <div className="log-title">更新日志</div>
  61. {list.map(row => {
  62. return <div className="item">
  63. <div className="title">
  64. 版本{row.version}<span className="date">{formatDate(row.createTime)}</span>
  65. </div>
  66. <div className="desc" dangerouslySetInnerHTML={{ __html: row.content }} />
  67. </div>;
  68. })}
  69. </div>
  70. );
  71. }
  72. renderEmpty() {
  73. const { unUseRecord } = this.state;
  74. if (unUseRecord) {
  75. return <div className="empty">
  76. <div className="text">
  77. 还未开通本月机经。 <br />
  78. 您可至千行网站「我的-工具」查看往期机经。
  79. </div>
  80. <Button block width={120} radius onClick={() => {
  81. linkTo(`/open/${unUseRecord.id}`);
  82. }}>
  83. 去开通
  84. </Button>
  85. </div>;
  86. }
  87. return (
  88. <div className="empty">
  89. <div className="text">
  90. 还未购买本月机经。 <br />
  91. 您可至千行网站「我的-工具」查看往期机经。
  92. </div>
  93. <Button block width={120} radius onClick={() => {
  94. linkTo('/product/service/textbook');
  95. }}>
  96. 去购买
  97. </Button>
  98. </div>
  99. );
  100. }
  101. }