page.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. import React from 'react';
  2. import './index.less';
  3. import { Switch } from 'antd';
  4. import Page from '@src/containers/Page';
  5. import UserAction from '../../../components/UserAction';
  6. import Tabs from '../../../components/Tabs';
  7. import Filter from '../../../components/Filter';
  8. import Icon from '../../../components/Icon';
  9. import { DataItem } from '../../../components/Item';
  10. import UserTable from '../../../components/UserTable';
  11. const columns = [
  12. {
  13. key: '',
  14. title: '更新时间',
  15. },
  16. {
  17. key: '',
  18. title: '位置',
  19. },
  20. {
  21. key: '',
  22. title: '原内容',
  23. },
  24. {
  25. key: '',
  26. title: '更改为',
  27. },
  28. {
  29. key: '',
  30. title: '更新至',
  31. },
  32. ];
  33. export default class extends Page {
  34. initState() {
  35. return {
  36. tab: '2',
  37. filterMap: { one: '1', two: '1' },
  38. sortMap: {},
  39. list: [],
  40. type: [
  41. { title: '长难句', key: '1', open: true, children: [{ key: '1', title: 'OG19 语法千行' }] },
  42. { title: '语文 Verbal', key: '2', open: true, children: [{ key: '1', title: 'OG19 语法千行' }] },
  43. { title: '数学 Quant', key: '3', open: true, children: [{ key: '1', title: 'OG19 语法千行' }] },
  44. ],
  45. };
  46. }
  47. initData() {}
  48. onChangeTab(tab) {
  49. this.setState({ tab });
  50. }
  51. onFilter(value) {
  52. this.search(value, false);
  53. this.initData();
  54. }
  55. onChangePage(page) {
  56. this.search({ page }, false);
  57. this.initData();
  58. }
  59. onOpen(index) {
  60. const { type } = this.state;
  61. type[index].open = !type[index].open;
  62. this.setState({ type });
  63. }
  64. renderView() {
  65. const { tab } = this.state;
  66. return (
  67. <div>
  68. <div className="top content t-8">
  69. 千行课堂 > 全部课程 > OG20综合刷题 > 课时3 > <span className="t-1">资料列表</span>
  70. <div className="f-r">我的资料</div>
  71. </div>
  72. <div className="center content">
  73. <Tabs
  74. type="division"
  75. theme="theme"
  76. size="small"
  77. space={2.5}
  78. width={100}
  79. border
  80. active={tab}
  81. tabs={[{ title: '全部资料', key: '1' }, { title: '更新日志', key: '2' }]}
  82. onChange={key => this.onChangeTab(key)}
  83. />
  84. {this[`renderTab${tab}`]()}
  85. </div>
  86. </div>
  87. );
  88. }
  89. renderTab1() {
  90. const { list = [], sortMap, filterMap } = this.state;
  91. return [
  92. <Filter
  93. filter={filterMap}
  94. list={[
  95. {
  96. key: 'one',
  97. children: [
  98. { key: '1', title: '全部' },
  99. { key: '2', title: '长难句' },
  100. { key: '3', title: '语文Verbal' },
  101. { key: '4', title: '数学Quant' },
  102. ],
  103. },
  104. {
  105. key: 'two',
  106. children: [
  107. { key: '1', title: '全部' },
  108. { key: '2', title: '语法SC' },
  109. { key: '3', title: '阅读RC' },
  110. { key: '4', title: '逻辑RC' },
  111. ],
  112. },
  113. ]}
  114. onFilter={(key, value) => this.onFilter(key, value)}
  115. />,
  116. <UserAction
  117. search
  118. defaultSearch={filterMap.keyword}
  119. sortList={[
  120. { label: '更新时间', key: 'ask_time', fixed: true },
  121. { label: '销量', key: 'create_time', fixed: true },
  122. ]}
  123. sortMap={sortMap}
  124. onSort={value => this.onSort(value)}
  125. />,
  126. <div className="data-list">
  127. {list.map(item => {
  128. return <DataItem data={item} />;
  129. })}
  130. </div>,
  131. ];
  132. }
  133. renderTab2() {
  134. const { type = [], list = [], filterMap } = this.state;
  135. return [
  136. <div className="update-search">
  137. <UserAction search defaultSearch={filterMap.keyword} />
  138. </div>,
  139. <div className="update-log">
  140. <div className="left">
  141. {type.map((item, index) => {
  142. return (
  143. <div className="block">
  144. <div className="title" onClick={() => this.onOpen(index)}>
  145. {item.title}
  146. <div className="f-r">
  147. {item.open ? <Icon name="arrow-up" noHover /> : <Icon name="arrow-down" noHover />}
  148. </div>
  149. </div>
  150. <div className={`list ${item.open ? 'open' : ''}`}>
  151. {item.children.map(child => {
  152. return <div className="item">{child.title}</div>;
  153. })}
  154. </div>
  155. </div>
  156. );
  157. })}
  158. </div>
  159. <div className="right">
  160. {list.map(item => {
  161. return (
  162. <div className="item">
  163. <div className="m-b-5">
  164. <span className="t-1 t-s-18 f-w-b">{item.title}</span>
  165. <div className="f-r">
  166. <span className="m-r-5">邮箱订阅</span>
  167. <Switch />
  168. <span className="m-l-5 t-4">纠错</span>
  169. </div>
  170. </div>
  171. <UserTable size="small" columns={columns} />
  172. </div>
  173. );
  174. })}
  175. </div>
  176. </div>,
  177. ];
  178. }
  179. }