|
@@ -55,23 +55,77 @@ class LogItem extends Component {
|
|
|
}
|
|
|
|
|
|
renderExercise() {
|
|
|
- const { data = {} } = this.props;
|
|
|
- const { detail = [] } = data;
|
|
|
const { open } = this.state;
|
|
|
- return <div hidden={!open} className="table">
|
|
|
- <UserTable size="small" columns={this.columns} data={detail} />
|
|
|
- <div className="t-r">
|
|
|
- <Link to="/exercise">继续练习></Link>
|
|
|
+ return (
|
|
|
+ <div hidden={!open} className="table">
|
|
|
+ <UserTable size="small" columns={this.columns} data={[{ title: '123' }]} />
|
|
|
+ <div className="t-r">
|
|
|
+ <Link to="/exercise">继续练习></Link>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>;
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
renderExamination() {
|
|
|
-
|
|
|
+ const { open } = this.state;
|
|
|
+ return (
|
|
|
+ <div hidden={!open} className="table">
|
|
|
+ <div className="title p-l-5 m-b-1 t-1 t-s-18 f-w-b">
|
|
|
+ 千行-CAT01<div className="f-r t-3 t-s-12 f-w-d">2019-05-16 16:21:06</div>
|
|
|
+ </div>
|
|
|
+ <UserTable
|
|
|
+ size="small"
|
|
|
+ columns={[
|
|
|
+ { key: '1', title: '' },
|
|
|
+ { key: '2', title: 'Tobal' },
|
|
|
+ { key: '3', title: 'IR' },
|
|
|
+ { key: '4', title: 'Verbal' },
|
|
|
+ { key: '5', title: 'Quant' },
|
|
|
+ ]}
|
|
|
+ data={[{ title: '123' }]}
|
|
|
+ />
|
|
|
+ <div className="title p-l-5 m-b-1 t-1 t-s-18 f-w-b m-t-2">
|
|
|
+ 净化版GWD-CAT01 <div className="f-r t-3 t-s-12 f-w-d">2019-05-16 16:21:06</div>
|
|
|
+ </div>
|
|
|
+ <UserTable
|
|
|
+ size="small"
|
|
|
+ columns={[
|
|
|
+ { key: '1', title: '' },
|
|
|
+ { key: '2', title: 'Tobal' },
|
|
|
+ { key: '3', title: 'IR' },
|
|
|
+ { key: '4', title: 'Verbal' },
|
|
|
+ { key: '5', title: 'Quant' },
|
|
|
+ ]}
|
|
|
+ data={[{ title: '123' }]}
|
|
|
+ />
|
|
|
+ <div className="t-r">
|
|
|
+ <Link to="/exercise">继续练习></Link>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
renderCourse() {
|
|
|
-
|
|
|
+ const { open } = this.state;
|
|
|
+ return (
|
|
|
+ <div hidden={!open} className="table">
|
|
|
+ <UserTable
|
|
|
+ header={false}
|
|
|
+ size="small"
|
|
|
+ even="odd"
|
|
|
+ columns={[{ key: '1', width: 100 }, { key: '2', width: 310 }, { key: '3', width: 120 }]}
|
|
|
+ data={[
|
|
|
+ { 1: '语法SC', 2: '课时3:代词的指代', 3: '2019-04-27\n 15:14:29' },
|
|
|
+ { 1: '逻辑 RC', 2: '课时3:代词的指代', 3: '2019-04-27\n 15:14:29' },
|
|
|
+ { 1: '阅读CR', 2: '课时3:代词的指代', 3: '2019-04-27\n 15:14:29' },
|
|
|
+ { 1: '逻辑 RC', 2: '课时3:代词的指代', 3: '2019-04-27\n 15:14:29' },
|
|
|
+ ]}
|
|
|
+ />
|
|
|
+ <div className="t-r">
|
|
|
+ <Link to="/exercise">继续练习></Link>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -142,32 +196,35 @@ export default class extends Page {
|
|
|
});
|
|
|
My.getStudyWeek(0).then(latest => {
|
|
|
const diff = latest.time - latest.avgTime;
|
|
|
- const diffPercent = diff > 0 ? formatPercent(latest.time - latest.avgTime, latest.avgTime, true) : formatPercent(latest.avgTime - latest.time, latest.avgTime, true);
|
|
|
+ const diffPercent =
|
|
|
+ diff > 0
|
|
|
+ ? formatPercent(latest.time - latest.avgTime, latest.avgTime, true)
|
|
|
+ : formatPercent(latest.avgTime - latest.time, latest.avgTime, true);
|
|
|
this.setState({ latest, diff, diffPercent });
|
|
|
My.getStudyWeek(1).then(last => {
|
|
|
const diffLast = latest.time - last.time;
|
|
|
- const diffLastPercent = diffLast > 0 ? formatPercent(latest.time - last.time, last.time, true) : formatPercent(last.time - latest.time, last.time, true);
|
|
|
+ const diffLastPercent =
|
|
|
+ diffLast > 0
|
|
|
+ ? formatPercent(latest.time - last.time, last.time, true)
|
|
|
+ : formatPercent(last.time - latest.time, last.time, true);
|
|
|
this.setState({ last, diffLast, diffLastPercent });
|
|
|
});
|
|
|
});
|
|
|
// 获取广告
|
|
|
- Main.getAd('my-self')
|
|
|
- .then(result => {
|
|
|
- this.setState({ ads: result });
|
|
|
- });
|
|
|
+ Main.getAd('my-self').then(result => {
|
|
|
+ this.setState({ ads: result });
|
|
|
+ });
|
|
|
// 获取未读消息
|
|
|
- My.message({ page: 1, size: 2, read: 0 })
|
|
|
- .then(result => {
|
|
|
- this.setState({ messages: result.list });
|
|
|
- });
|
|
|
+ My.message({ page: 1, size: 2, read: 0 }).then(result => {
|
|
|
+ this.setState({ messages: result.list });
|
|
|
+ });
|
|
|
this.refreshDay(this.state.day);
|
|
|
}
|
|
|
|
|
|
readAllMessage() {
|
|
|
- My.readAllMessage()
|
|
|
- .then(() => {
|
|
|
- asyncSMessage('操作成功');
|
|
|
- });
|
|
|
+ My.readAllMessage().then(() => {
|
|
|
+ asyncSMessage('操作成功');
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
refreshDay(value) {
|
|
@@ -177,10 +234,14 @@ export default class extends Page {
|
|
|
time = moment().format('YYYY-MM-DD');
|
|
|
break;
|
|
|
case 'yesterday':
|
|
|
- time = moment().add(-1, 'days').format('YYYY-MM-DD');
|
|
|
+ time = moment()
|
|
|
+ .add(-1, 'days')
|
|
|
+ .format('YYYY-MM-DD');
|
|
|
break;
|
|
|
case 'before':
|
|
|
- time = moment().add(-2, 'days').format('YYYY-MM-DD');
|
|
|
+ time = moment()
|
|
|
+ .add(-2, 'days')
|
|
|
+ .format('YYYY-MM-DD');
|
|
|
break;
|
|
|
default:
|
|
|
time = value.format('YYYY-MM-DD');
|
|
@@ -196,14 +257,38 @@ export default class extends Page {
|
|
|
type: 'exercise',
|
|
|
total: [
|
|
|
{ title: '<span>练习和订正</span>', width: 130 },
|
|
|
- { title: result.exerciseTime ? formatSeconds(result.exerciseTime).replace(/([0-9]+)(m|min|h|hour|s)/g, '<b>$1</b>$2') : '<b>-</b>', width: 90 },
|
|
|
+ {
|
|
|
+ title: result.exerciseTime
|
|
|
+ ? formatSeconds(result.exerciseTime).replace(/([0-9]+)(m|min|h|hour|s)/g, '<b>$1</b>$2')
|
|
|
+ : '<b>-</b>',
|
|
|
+ width: 90,
|
|
|
+ },
|
|
|
{ title: `<b>${result.exerciseQuestion || '-'}</b>题`, width: 80 },
|
|
|
- { title: `超过了<b>${result.exerciseExceed ? formatPercent(result.exerciseExceed.rank, result.exerciseExceed.total) : '-%'}</b>的用户` },
|
|
|
+ {
|
|
|
+ title: `超过了<b>${
|
|
|
+ result.exerciseExceed ? formatPercent(result.exerciseExceed.rank, result.exerciseExceed.total) : '-%'
|
|
|
+ }</b>的用户`,
|
|
|
+ },
|
|
|
],
|
|
|
detail: [
|
|
|
- { title: '做题数', sc: exerciseMap.sc ? exerciseMap.sc.number : '-', cr: exerciseMap.cr ? exerciseMap.cr.number : '-', rc: exerciseMap.rc ? exerciseMap.rc.number : '-' },
|
|
|
- { title: '平均正确率', sc: exerciseMap.sc ? formatPercent(exerciseMap.sc.correct, exerciseMap.sc.number) : '-%', cr: exerciseMap.cr ? formatPercent(exerciseMap.cr.correct, exerciseMap.cr.number) : '-%', rc: exerciseMap.rc ? formatPercent(exerciseMap.rc.correct, exerciseMap.rc.number) : '-%' },
|
|
|
- { title: '平均用时', sc: exerciseMap.sc ? exerciseMap.sc.time / exerciseMap.sc.number : '-', cr: exerciseMap.cr ? exerciseMap.cr.time / exerciseMap.cr.number : '-', rc: exerciseMap.rc ? exerciseMap.rc.time / exerciseMap.rc.number : '-' },
|
|
|
+ {
|
|
|
+ title: '做题数',
|
|
|
+ sc: exerciseMap.sc ? exerciseMap.sc.number : '-',
|
|
|
+ cr: exerciseMap.cr ? exerciseMap.cr.number : '-',
|
|
|
+ rc: exerciseMap.rc ? exerciseMap.rc.number : '-',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '平均正确率',
|
|
|
+ sc: exerciseMap.sc ? formatPercent(exerciseMap.sc.correct, exerciseMap.sc.number) : '-%',
|
|
|
+ cr: exerciseMap.cr ? formatPercent(exerciseMap.cr.correct, exerciseMap.cr.number) : '-%',
|
|
|
+ rc: exerciseMap.rc ? formatPercent(exerciseMap.rc.correct, exerciseMap.rc.number) : '-%',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '平均用时',
|
|
|
+ sc: exerciseMap.sc ? exerciseMap.sc.time / exerciseMap.sc.number : '-',
|
|
|
+ cr: exerciseMap.cr ? exerciseMap.cr.time / exerciseMap.cr.number : '-',
|
|
|
+ rc: exerciseMap.rc ? exerciseMap.rc.time / exerciseMap.rc.number : '-',
|
|
|
+ },
|
|
|
],
|
|
|
});
|
|
|
this.setState({ study });
|
|
@@ -220,7 +305,11 @@ export default class extends Page {
|
|
|
center={[this.renderTop(), this.renderLog(), this.renderTime()]}
|
|
|
right={[this.renderInfo(), this.renderMessage()]}
|
|
|
ads={(this.state.ads || []).map(row => {
|
|
|
- return <a href={row.link} target="_blank"><Assets src={row.image} /></a>;
|
|
|
+ return (
|
|
|
+ <a href={row.link} target="_blank">
|
|
|
+ <Assets src={row.image} />
|
|
|
+ </a>
|
|
|
+ );
|
|
|
})}
|
|
|
/>
|
|
|
);
|
|
@@ -231,14 +320,27 @@ export default class extends Page {
|
|
|
}
|
|
|
|
|
|
renderLog() {
|
|
|
- const { study = [] } = this.state;
|
|
|
- const { latest = {}, diff = 0, diffPercent = 0, diffLast = 0, diffLastPercent = 0, day, time, showCal } = this.state;
|
|
|
+ const { study = [{}, { type: 'examination' }, { type: 'course' }] } = this.state;
|
|
|
+ const {
|
|
|
+ latest = {},
|
|
|
+ diff = 0,
|
|
|
+ diffPercent = 0,
|
|
|
+ diffLast = 0,
|
|
|
+ diffLastPercent = 0,
|
|
|
+ day,
|
|
|
+ time,
|
|
|
+ showCal,
|
|
|
+ } = this.state;
|
|
|
return (
|
|
|
<div className="log-layout">
|
|
|
<div className="header">
|
|
|
<div className="title">学习记录</div>
|
|
|
<div className="right">
|
|
|
- <span dangerouslySetInnerHTML={{ __html: `本周学习时间${formatSeconds(latest.time).replace(/([0-9]+)(m|min|h|hour|s)/g, '<b>$1</b>$2')}` }} />
|
|
|
+ <span
|
|
|
+ dangerouslySetInnerHTML={{
|
|
|
+ __html: `本周学习时间${formatSeconds(latest.time).replace(/([0-9]+)(m|min|h|hour|s)/g, '<b>$1</b>$2')}`,
|
|
|
+ }}
|
|
|
+ />
|
|
|
<span>
|
|
|
同比上周<b>{diffLastPercent}</b>% <Assets name={diffLast > 0 ? 'up' : 'down'} />
|
|
|
</span>
|
|
@@ -254,19 +356,34 @@ export default class extends Page {
|
|
|
width={54}
|
|
|
space={5}
|
|
|
active={day}
|
|
|
- tabs={[{ title: '今天', key: 'today' }, { title: '昨天', key: 'yesterday' }, { title: '前天', key: 'before' }]}
|
|
|
- onChange={(value) => {
|
|
|
+ tabs={[
|
|
|
+ { title: '今天', key: 'today' },
|
|
|
+ { title: '昨天', key: 'yesterday' },
|
|
|
+ { title: '前天', key: 'before' },
|
|
|
+ ]}
|
|
|
+ onChange={value => {
|
|
|
this.refreshDay(value);
|
|
|
}}
|
|
|
/>
|
|
|
<div className="right">
|
|
|
{day === 'other' && formatDate(time, 'YYYY-MM-DD')}
|
|
|
- <Assets className="right" name="calendar" onClick={() => {
|
|
|
- this.setState({ showCal: true });
|
|
|
- }} />
|
|
|
- {showCal && <Calendar className="cal" fullscreen={false} disabledDate={date => date.unix() <= moment.unix()} onSelect={(date) => {
|
|
|
- this.refreshDay(date);
|
|
|
- }} />}
|
|
|
+ <Assets
|
|
|
+ className="right"
|
|
|
+ name="calendar"
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({ showCal: true });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ {showCal && (
|
|
|
+ <Calendar
|
|
|
+ className="cal"
|
|
|
+ fullscreen={false}
|
|
|
+ disabledDate={date => date.unix() <= moment.unix()}
|
|
|
+ onSelect={date => {
|
|
|
+ this.refreshDay(date);
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ )}
|
|
|
</div>
|
|
|
</div>
|
|
|
{study.map((log, index) => {
|
|
@@ -288,7 +405,13 @@ export default class extends Page {
|
|
|
</Tooltip>
|
|
|
</div>
|
|
|
<div className="right">
|
|
|
- 自 {total.createTIme && formatDate(total.createTime, 'YYYY-MM-DD')} ,您已在千行学习<b>{total.days}</b>天,累计<span dangerouslySetInnerHTML={{ __html: formatSeconds(total.time).replace(/([0-9]+)(m|min|h|hour|s)/g, '<b>$1</b>$2') }} />
|
|
|
+ 自 {total.createTIme && formatDate(total.createTime, 'YYYY-MM-DD')} ,您已在千行学习<b>{total.days}</b>
|
|
|
+ 天,累计
|
|
|
+ <span
|
|
|
+ dangerouslySetInnerHTML={{
|
|
|
+ __html: formatSeconds(total.time).replace(/([0-9]+)(m|min|h|hour|s)/g, '<b>$1</b>$2'),
|
|
|
+ }}
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
<div className="body">
|
|
@@ -324,46 +447,81 @@ export default class extends Page {
|
|
|
<div className="info-layout">
|
|
|
<div className="body">
|
|
|
<div className="info">
|
|
|
- <Assets name="sun_blue" src={info.avatar} onClick={() => {
|
|
|
- this.setState({ showEdit: true });
|
|
|
- }} />
|
|
|
- <div className="detail">
|
|
|
- <div className="name" onClick={() => {
|
|
|
+ <Assets
|
|
|
+ name="sun_blue"
|
|
|
+ src={info.avatar}
|
|
|
+ onClick={() => {
|
|
|
this.setState({ showEdit: true });
|
|
|
- }}>{info.nickname} </div>
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ <div className="detail">
|
|
|
+ <div
|
|
|
+ className="name"
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({ showEdit: true });
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ {info.nickname}{' '}
|
|
|
+ </div>
|
|
|
<div className="id">ID: {info.id} </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div className="auth">
|
|
|
<span className="invite">
|
|
|
- <Button radius size="small" onClick={() => {
|
|
|
- this.setState({ showInvite: true });
|
|
|
- }}>
|
|
|
+ <Button
|
|
|
+ radius
|
|
|
+ size="small"
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({ showInvite: true });
|
|
|
+ }}
|
|
|
+ >
|
|
|
邀请
|
|
|
</Button>
|
|
|
</span>
|
|
|
<Assets name="wechat" active={info.bindWechat} />
|
|
|
- <Assets name="phone_1" active={info.bindMobile} onClick={() => {
|
|
|
- this.setState({ showPhone: true });
|
|
|
- }} />
|
|
|
- <Assets name="realname" active={info.bindReal} onClick={() => {
|
|
|
- this.setState({ showReal: true });
|
|
|
- }} />
|
|
|
- <Assets name="email" active={!!info.email} onClick={() => {
|
|
|
- this.setState({ showEmail: true });
|
|
|
- }} />
|
|
|
- <Assets name="information" active={info.bindPrepare} onClick={() => {
|
|
|
- this.setState({ showExamination: true });
|
|
|
- }} />
|
|
|
+ <Assets
|
|
|
+ name="phone_1"
|
|
|
+ active={info.bindMobile}
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({ showPhone: true });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ <Assets
|
|
|
+ name="realname"
|
|
|
+ active={info.bindReal}
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({ showReal: true });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ <Assets
|
|
|
+ name="email"
|
|
|
+ active={!!info.email}
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({ showEmail: true });
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ <Assets
|
|
|
+ name="information"
|
|
|
+ active={info.bindPrepare}
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({ showExamination: true });
|
|
|
+ }}
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
- {<div className="footer">
|
|
|
- <Assets className="m-r-5" name="VIP" />
|
|
|
- {info.vip && <span className="date">{formatDate(info.vip, 'YYYY-MM-DD')}到期</span>}
|
|
|
- <a onClick={() => {
|
|
|
- this.setState({ showVip: true });
|
|
|
- }}>续费</a>
|
|
|
- </div>}
|
|
|
+ {
|
|
|
+ <div className="footer">
|
|
|
+ <Assets className="m-r-5" name="VIP" />
|
|
|
+ {info.vip && <span className="date">{formatDate(info.vip, 'YYYY-MM-DD')}到期</span>}
|
|
|
+ <a
|
|
|
+ onClick={() => {
|
|
|
+ this.setState({ showVip: true });
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 续费
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
+ }
|
|
|
<Examination
|
|
|
show={showExamination}
|
|
|
data={info}
|
|
@@ -387,28 +545,20 @@ export default class extends Page {
|
|
|
show={showEdit}
|
|
|
data={info}
|
|
|
image={this.state.avatarFile}
|
|
|
- onSelectImage={(file) => this.setState({ showEdit: false, showAvatar: true, avatarImage: file })}
|
|
|
+ onSelectImage={file => this.setState({ showEdit: false, showAvatar: true, avatarImage: file })}
|
|
|
onConfirm={() => this.setState({ showEdit: false, avatarFile: null })}
|
|
|
onCancel={() => this.setState({ showEdit: false, avatarFile: null })}
|
|
|
/>
|
|
|
- <RealAuth
|
|
|
- show={showReal}
|
|
|
- data={info}
|
|
|
- onConfirm={() => this.setState({ showReal: false })}
|
|
|
- />
|
|
|
+ <RealAuth show={showReal} data={info} onConfirm={() => this.setState({ showReal: false })} />
|
|
|
<EditAvatar
|
|
|
show={showAvatar}
|
|
|
data={info}
|
|
|
crop={{ width: 200, height: 200 }}
|
|
|
image={this.state.avatarImage}
|
|
|
- onConfirm={(file) => this.setState({ showAvatar: false, showEdit: true, avatarFile: file, avatarImage: null })}
|
|
|
+ onConfirm={file => this.setState({ showAvatar: false, showEdit: true, avatarFile: file, avatarImage: null })}
|
|
|
onCancel={() => this.setState({ showAvatar: false, showEdit: true, avatarImage: null })}
|
|
|
/>
|
|
|
- <InviteModal
|
|
|
- show={showInvite}
|
|
|
- data={info}
|
|
|
- onClose={() => this.setState({ showInvite: false })}
|
|
|
- />
|
|
|
+ <InviteModal show={showInvite} data={info} onClose={() => this.setState({ showInvite: false })} />
|
|
|
<VipRenew
|
|
|
show={showVip}
|
|
|
data={info}
|
|
@@ -423,33 +573,49 @@ export default class extends Page {
|
|
|
renderMessage() {
|
|
|
const { messages = [] } = this.state;
|
|
|
const number = (messages || []).length;
|
|
|
- return (number > 0 &&
|
|
|
- <div className="message-layout">
|
|
|
- <div className="header">
|
|
|
- <Assets name="all" onCancel={() => {
|
|
|
- this.readAllMessage();
|
|
|
- }} />
|
|
|
- 全部已读
|
|
|
- </div>
|
|
|
- <div className="body">
|
|
|
- {(messages || []).map(row => {
|
|
|
- return <div className="item">
|
|
|
- <div className="title dot">老师回答了您的提问</div>
|
|
|
- <div className="date">{formatDate(row.createTime, 'YYYY-MM-DD HH:mm:ss')}</div>
|
|
|
- {row.link && <GIcon name="arrow-right-small" onClick={() => {
|
|
|
- openLink(row.link);
|
|
|
- }} />}
|
|
|
- </div>;
|
|
|
- })}
|
|
|
- </div>
|
|
|
- <div className="footer">
|
|
|
- <Button radius size="small" onClick={() => {
|
|
|
- linkTo('/my/message');
|
|
|
- }}>
|
|
|
- 全部消息
|
|
|
- </Button>
|
|
|
+ return (
|
|
|
+ number > 0 && (
|
|
|
+ <div className="message-layout">
|
|
|
+ <div className="header">
|
|
|
+ <Assets
|
|
|
+ name="all"
|
|
|
+ onCancel={() => {
|
|
|
+ this.readAllMessage();
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ 全部已读
|
|
|
+ </div>
|
|
|
+ <div className="body">
|
|
|
+ {(messages || []).map(row => {
|
|
|
+ return (
|
|
|
+ <div className="item">
|
|
|
+ <div className="title dot">老师回答了您的提问</div>
|
|
|
+ <div className="date">{formatDate(row.createTime, 'YYYY-MM-DD HH:mm:ss')}</div>
|
|
|
+ {row.link && (
|
|
|
+ <GIcon
|
|
|
+ name="arrow-right-small"
|
|
|
+ onClick={() => {
|
|
|
+ openLink(row.link);
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ })}
|
|
|
+ </div>
|
|
|
+ <div className="footer">
|
|
|
+ <Button
|
|
|
+ radius
|
|
|
+ size="small"
|
|
|
+ onClick={() => {
|
|
|
+ linkTo('/my/message');
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 全部消息
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
+ )
|
|
|
);
|
|
|
}
|
|
|
}
|