import React from 'react'; import './index.less'; import Page from '@src/containers/Page'; import { asyncSMessage } from '@src/services/AsyncTools'; import UserLayout from '../../../layouts/User'; import menu from '../index'; import UserTable from '../../../components/UserTable'; import UserAction from '../../../components/UserAction'; import Tabs from '../../../components/Tabs'; import { My } from '../../../stores/my'; import { MessageType } from '../../../../Constant'; import { getMap, formatDate } from '../../../../../src/services/Tools'; const MessageTypeMap = getMap(MessageType, 'value', 'label'); const columns = [ { title: '消息', key: 'title', render: (text, row) => { return <div> {!row.isRead ? <span className='dot'>{text}</span> : text} {row.content && <div className='ws-p'>{row.content}{row.link && <a className='m-l-5' href={row.link} target="_blank">{row.linkTitle || '查看详情'}</a>}{row.linkSecond && <a className='m-l-5' href={row.linkSecond} target="_blank">{row.linkSecondTitle || '查看详情'}</a>}</div>} </div>; }, }, { title: '类型', key: 'type', width: 120 }, { title: '发送时间', key: 'date', width: 180, render: (text) => { return <div className="sub"> <div className="t-2 t-s-12">{text.split(' ')[0]}</div> <div className="t-6 t-s-12">{text.split(' ')[1]}</div> </div>; }, }]; export default class extends Page { constructor(props) { props.size = 15; super(props); } initState() { return { tab: '', filterMap: {}, }; } initData() { const data = Object.assign(this.state, this.state.search); if (data.order) { data.sortMap = { [data.order]: data.direction }; } data.filterMap = this.state.search; data.messageTypeSelect = MessageType.map(row => { row.title = row.label; row.key = row.value; return row; }); data.messageTypeSelect.unshift({ title: '全部消息', key: '', }); this.setState(data); My.message(Object.assign({ read: data.tab === 'unread' ? 0 : null }, this.state.search)).then(result => { result.list = result.list.map(row => { row.type = MessageTypeMap[row.type]; row.date = formatDate(row.createTime, 'YYYY-MM-DD HH:mm:ss'); return row; }); result.page = data.page; this.setState(result); }); } onFilter(value) { this.search(value); } onTabChange(tab) { const data = { tab }; this.refreshQuery(data); } onChangePage(page) { this.search({ page }); } readAllMessage() { My.readAllMessage().then(() => { asyncSMessage('操作成功'); this.refresh(); }); } renderView() { const { config } = this.props; return <UserLayout active={config.key} menu={menu} center={this.renderTable()} />; } renderTable() { const { tab, list, messageTypeSelect, filterMap, page, total } = this.state; return ( <div className="table-layout"> <UserAction left={ <Tabs type="tag" theme="white" size="small" space={5} width={54} active={tab} tabs={[{ key: '', title: '全部' }, { key: 'unread', title: '未读' }]} onChange={key => this.onTabChange(key)} /> } right={<span style={{ cursor: 'pointer' }} onClick={() => { this.readAllMessage(); }}>全部已读</span>} selectList={[ { select: messageTypeSelect, placeholder: '消息类型', key: 'messageType', }, ]} filterMap={filterMap} onFilter={value => this.onFilter(value)} /> <UserTable size="small" columns={columns} data={list} current={page} total={total} pageSize={this.state.search.size} onChange={(value) => { this.onChangePage(value); }} /> </div> ); } }