123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import React, { PureComponent } from 'react';
- import PropTypes from 'prop-types';
- import moment from 'moment';
- import classnames from 'classnames';
- import queryString from 'query-string';
- import { Popover, Modal, Table, Menu, Icon, Badge } from 'antd';
- import AnimTableBody from '../../../components/Animation/AnimTableBody';
- import { statuses, Codes } from '../../../utils/config'
- import styles from './table.less';
- const confirm = Modal.confirm;
- export default class TableList extends PureComponent {
- static propTypes = {
- location: PropTypes.object,
- onChange: PropTypes.func.isRequired,
- onDeleteItem: PropTypes.func.isRequired,
- onPlayVideo: PropTypes.func.isRequired,
- };
- handleDeleteItem = (record) => {
- const { onDeleteItem } = this.props;
- confirm({
- title: `您确定要${record.status === Codes.CODE_NORMAL ? '删除' : '恢复'}该视频?`,
- onOk () {
- onDeleteItem(record.id);
- },
- })
- }
- render() {
- const { curStatus, onPlayVideo, location, pagination, ...tableProps } = this.props;
- const columns = [{
- title: '视频编号',
- dataIndex: 'code',
- key: 'code',
- },{
- title: '视频名称',
- dataIndex: 'name',
- key: 'name',
- },{
- title: '视频大小(B)',
- dataIndex: 'size',
- key: 'size',
- },{
- title: '状态',
- dataIndex: 'status',
- key: 'status',
- render: (text, record) => {
- const statusMap = {[Codes.CODE_NORMAL]: 'success', [Codes.CODE_DELETE]: 'error'};
- return (<Badge status={statusMap[record.status]} text={statuses[record.status]} />);
- },
- filters: Object.keys(statuses).map(key => ({ text: statuses[key], value: key })),
- filterMultiple: false,
- filteredValue: [curStatus],
- },{
- title: '添加时间',
- dataIndex: 'gmtCreated',
- key: 'gmtCreated',
- render: (text, record) => (
- <div>{moment(text).format('YYYY-MM-DD')}</div>
- )
- },{
- title: '操作',
- dataIndex: 'operation',
- key: 'operation',
- render: (text, record) => (
- <div>
- <a onClick={() => onPlayVideo(record)}>播放</a>
- <span className={styles.splitLine} />
- <a onClick={() => this.handleDeleteItem(record)}>{record.status === Codes.CODE_NORMAL ? '删除' : '恢复'}</a>
- </div>
- )
- }];
- // 数据table列表表头的筛选按钮点击重置后status值为空,此时删除该参数
- columns.map(item => {
- item.dataIndex === 'status' && !curStatus ? delete item.filteredValue : null;
- });
- tableProps.pagination = !!pagination && { ...pagination, showSizeChanger: true, showQuickJumper: true, showTotal: total => `共 ${total} 条`};
- const getBodyWrapperProps = {
- page: location.query.page,
- current: tableProps.pagination.current,
- };
- const getBodyWrapper = (body) => (<AnimTableBody {...getBodyWrapperProps} body={body} />);
- return (
- <Table
- simple
- bordered
- { ...tableProps }
- columns={columns}
- className={classnames({ [styles.table]: true, [styles.motion]: true })}
- rowKey={record => record.id}
- getBodyWrapper={getBodyWrapper}
- />
- );
- }
- }
|