page.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  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 UserLayout from '../../../layouts/User';
  6. import UserTable from '../../../components/UserTable';
  7. import UserAction from '../../../components/UserAction';
  8. import menu from '../index';
  9. import Tabs from '../../../components/Tabs';
  10. const columns = [
  11. {
  12. key: 'title',
  13. title: '笔记对象',
  14. width: 140,
  15. render(text, row) {
  16. return row.group ? (
  17. <div className="group">
  18. <Link to="">{text}</Link>
  19. </div>
  20. ) : (
  21. <div className="sub">{text}</div>
  22. );
  23. },
  24. },
  25. {
  26. key: 'date',
  27. title: '更新时间',
  28. width: 100,
  29. render(text, row) {
  30. return row.group ? (
  31. <div className="group">
  32. <Link to="">{text}</Link>
  33. </div>
  34. ) : (
  35. <div className="sub">
  36. <div className="date">{text.split(' ')[0]}</div>
  37. <div className="date">{text.split(' ')[1]}</div>
  38. </div>
  39. );
  40. },
  41. },
  42. {
  43. key: 'content',
  44. title: '内容',
  45. width: 540,
  46. render(text, row) {
  47. return row.group ? (
  48. <div className="group">
  49. <Link to="">{text}</Link>
  50. </div>
  51. ) : (
  52. <div className="sub">{text}</div>
  53. );
  54. },
  55. },
  56. ];
  57. export default class extends Page {
  58. initState() {
  59. return {
  60. filterMap: {},
  61. sortMap: {},
  62. data: [
  63. {
  64. group: true,
  65. title: '语法',
  66. date: ' OG18 #678',
  67. content: '「图形」None of the attempts to specify the causes of crime explains why most of the p',
  68. list: [
  69. {
  70. title: '题目',
  71. date: '2019-07-23 15:20:21',
  72. content:
  73. '从比较对象和句子结构我们能把DE排除掉,D选项中fat和livestock不是比较对象,E选项中and 后面的句子太凌乱is of a kind ….is…结构出现了重大问题,',
  74. },
  75. {
  76. title: '官方解析',
  77. date: '2019-07-23 15:20:21',
  78. content:
  79. '从比较对象和句子结构我们能把DE排除掉,D选项中fat和livestock不是比较对象,E选项中and 后面的句子太凌乱is of a kind ….is…结构出现了重大问题,从比较对象和句子结构我们能把DE排除掉,D选项中fat和livestock不是比较对象,E选项中and 后面的句子太凌乱is of a kind ….is…结构出现了重大问题,从比较对象和句子结构我们能把DE排除掉,D选项中fat和livestock不是比较对象,E选项中and 后面的句子太凌乱is of a kind ….is…结构出现了重大问题,从比较对象和句子结构我们能把DE排除掉,D选项中fat和livestock不是比较对象,E选项中and 后面的句子太凌乱is of a kind ….is…结构出现了重大问题,从比较对象和句子结构我们能把DE排除掉,D选项中fat和livestock不是比较对象,E选项中and 后面的句子太凌乱is of a kind ….is…结构出现了重大问题,从比较对象和句子结构我们能把DE排除掉,D选项中fat和livestock不是比较对象,E选项中and 后面的句子太凌乱is of a kind ….is…结构出现了重大问题,',
  80. },
  81. ],
  82. },
  83. {
  84. group: true,
  85. title: '语法',
  86. date: ' OG18 #678',
  87. content: '「图形」None of the attempts to specify the causes of crime explains why most of the p',
  88. list: [
  89. {
  90. title: '题目',
  91. date: '2019-07-23 15:20:21',
  92. content:
  93. '从比较对象和句子结构我们能把DE排除掉,D选项中fat和livestock不是比较对象,E选项中and 后面的句子太凌乱is of a kind ….is…结构出现了重大问题,',
  94. },
  95. {
  96. title: '官方解析',
  97. date: '2019-07-23 15:20:21',
  98. content:
  99. '从比较对象和句子结构我们能把DE排除掉,D选项中fat和livestock不是比较对象,E选项中and 后面的句子太凌乱is of a kind ….is…结构出现了重大问题,',
  100. },
  101. ],
  102. },
  103. ],
  104. selectList: [],
  105. allChecked: false,
  106. tab: '1',
  107. page: 1,
  108. total: 1,
  109. };
  110. }
  111. onTabChange(tab) {
  112. this.setState({ tab });
  113. }
  114. onFilter(value) {
  115. this.setState({ filterMap: value });
  116. }
  117. onSort(value) {
  118. this.setState({ sortMap: value });
  119. }
  120. onDataChange(page) {
  121. this.setState({ page, allChecked: false, selectList: [] });
  122. }
  123. onAll(checked) {
  124. if (checked) {
  125. const { data = [] } = this.state;
  126. const list = [];
  127. data.forEach(item => {
  128. list.push(item.key);
  129. });
  130. this.setState({ selectList: list, allChecked: true });
  131. } else {
  132. this.setState({ selectList: [], allChecked: false });
  133. }
  134. }
  135. onAction() {}
  136. onSelect(selectList) {
  137. this.setState({ selectList });
  138. }
  139. renderView() {
  140. const { config } = this.props;
  141. return <UserLayout active={config.key} menu={menu} center={this.renderTable()} />;
  142. }
  143. renderTable() {
  144. const { tab, filterMap = {}, sortMap = {}, selectList = [], data = [], allChecked } = this.state;
  145. return (
  146. <div className="table-layout">
  147. <Tabs
  148. border
  149. type="division"
  150. theme="theme"
  151. size="small"
  152. space={2.5}
  153. width={100}
  154. active={tab}
  155. tabs={[{ key: '1', title: '练习' }, { key: '2', title: '模考' }]}
  156. onChange={key => this.onTabChange(key)}
  157. />
  158. <UserAction
  159. search
  160. selectList={[
  161. {
  162. label: '123',
  163. children: [
  164. {
  165. key: 'one',
  166. default: '1',
  167. select: [{ title: '123', key: '1' }, { title: '123', key: '2' }, { title: '123', key: '2' }],
  168. },
  169. {
  170. key: 'two',
  171. be: 'one',
  172. placeholder: '全部',
  173. selectMap: [{ title: '123', key: '1' }, { title: '123', key: '2' }, { title: '123', key: '2' }],
  174. },
  175. ],
  176. },
  177. ]}
  178. filterMap={filterMap}
  179. onFilter={value => this.onFilter(value)}
  180. />
  181. <UserAction
  182. allCheckbox
  183. allChecked={allChecked}
  184. help
  185. btnList={[{ title: '删除', key: 'remove' }, { title: '导出', key: 'export', tag: 'vip' }]}
  186. sortList={[{ right: true, label: '更新时间', key: '1' }]}
  187. sortMap={sortMap}
  188. onSort={value => this.onSort(value)}
  189. onAll={checked => this.onAll(checked)}
  190. onAction={key => this.onAction(key)}
  191. />
  192. {data.map((item, index) => {
  193. return (
  194. <div className="group">
  195. <UserTable
  196. theme="dark"
  197. border={false}
  198. size="small"
  199. select
  200. selectList={selectList}
  201. columns={columns}
  202. data={[item]}
  203. header={false}
  204. />
  205. <UserTable
  206. border={false}
  207. size="small"
  208. select
  209. even="default"
  210. selectList={selectList}
  211. columns={columns}
  212. data={item.list}
  213. header={index === 0}
  214. />
  215. </div>
  216. );
  217. })}
  218. </div>
  219. );
  220. }
  221. }