Skip to content

Commit 3f996e4

Browse files
committed
Merge branch 'leeyeh-master'
2 parents aa86664 + 218b34f commit 3f996e4

File tree

3 files changed

+73
-55
lines changed

3 files changed

+73
-55
lines changed

modules/CustomerServiceTickets.css

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
1-
.ticket {
2-
padding: 10px 0 15px;
1+
.row {
2+
display: flex;
33
border-bottom: 1px solid #eee;
44
}
5-
6-
.ticket:last-child {
5+
.row:last-child {
76
border-bottom: none;
87
}
98

9+
.ticket {
10+
padding: 10px 0 12px;
11+
align-items: center;
12+
}
13+
14+
15+
.ticketSelectCheckbox {
16+
line-height: 0;
17+
}
18+
19+
.ticketContent {
20+
flex: 1;
21+
}
22+
1023
.heading {
1124
display: flex;
1225
margin-bottom: 4px;

modules/CustomerServiceTickets.js

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, {Component} from 'react'
22
import PropTypes from 'prop-types'
33
import _ from 'lodash'
44
import { Link } from 'react-router'
5-
import {Grid, Row, Col, Form, FormGroup, ButtonToolbar, ButtonGroup, Button, DropdownButton, MenuItem, Checkbox, FormControl, Pager} from 'react-bootstrap'
5+
import { Form, FormGroup, ButtonToolbar, ButtonGroup, Button, DropdownButton, MenuItem, Checkbox, FormControl, Pager} from 'react-bootstrap'
66
import qs from 'query-string'
77
import moment from 'moment'
88
import AV from 'leancloud-storage/live-query'
@@ -197,11 +197,9 @@ export default class CustomerServiceTickets extends Component {
197197
const joinedCustomerServices = <span>{customerServices}</span>
198198
const category = depthFirstSearchFind(this.state.categoriesTree, c => c.id == ticket.get('category').objectId)
199199
return (
200-
<Row className={css.ticket} key={ticket.get('nid')}>
201-
<Col md={1}>
202-
<Checkbox onClick={this.handleClickCheckbox.bind(this)} value={ticket.id} checked={this.state.checkedTickets.has(ticket.id)}></Checkbox>
203-
</Col>
204-
<Col md={11}>
200+
<div className={`${css.ticket} ${css.row}`} key={ticket.get('nid')}>
201+
<Checkbox className={css.ticketSelectCheckbox} onClick={this.handleClickCheckbox.bind(this)} value={ticket.id} checked={this.state.checkedTickets.has(ticket.id)}></Checkbox>
202+
<div className={css.ticketContent}>
205203
<div className={css.heading}>
206204
<div className={css.left}>
207205
<Link className={css.title} to={'/tickets/' + ticket.get('nid')}>{ticket.get('title')}</Link>
@@ -236,8 +234,8 @@ export default class CustomerServiceTickets extends Component {
236234
<span className={css.contributors}>{joinedCustomerServices}</span>
237235
</div>
238236
</div>
239-
</Col>
240-
</Row>
237+
</div>
238+
</div>
241239
)
242240
})
243241

@@ -337,30 +335,35 @@ export default class CustomerServiceTickets extends Component {
337335

338336
if (ticketTrs.length === 0) {
339337
ticketTrs.push(
340-
<Row key='0'>
338+
<div className={css.ticket} key='0'>
341339
未查询到相关工单
342-
</Row>
340+
</div>
343341
)
344342
}
343+
344+
let pager
345+
const isFirstPage = filters.page === '0'
346+
const isLastPage = parseInt(filters.size) !== this.state.tickets.length
347+
if (!(isFirstPage && isLastPage)) {
348+
pager = (
349+
<Pager>
350+
<Pager.Item disabled={isFirstPage} previous onClick={() => this.updateFilter({page: (parseInt(filters.page) - 1) + ''})}>&larr; 上一页</Pager.Item>
351+
<Pager.Item disabled={isLastPage} next onClick={() => this.updateFilter({page: (parseInt(filters.page) + 1) + ''})}>下一页 &rarr;</Pager.Item>
352+
</Pager>
353+
)
354+
}
355+
345356
return (
346-
<Grid>
357+
<div>
347358
<DocumentTitle title='客服工单列表 - LeanTicket' />
348-
<Row>
349-
<Col md={1}>
350-
<Checkbox onClick={this.handleClickCheckAll.bind(this)} checked={this.state.isCheckedAll}></Checkbox>
351-
</Col>
352-
<Col>
353-
{this.state.checkedTickets.size && ticketCheckedOperations || ticketAdminFilters}
354-
</Col>
355-
</Row>
359+
<div className={css.row}>
360+
<Checkbox className={css.ticketSelectCheckbox} onClick={this.handleClickCheckAll.bind(this)} checked={this.state.isCheckedAll}></Checkbox>
361+
{this.state.checkedTickets.size && ticketCheckedOperations || ticketAdminFilters}
362+
</div>
356363

357364
{ticketTrs}
358-
359-
<Pager>
360-
<Pager.Item disabled={filters.page === '0'} previous onClick={() => this.updateFilter({page: (parseInt(filters.page) - 1) + ''})}>&larr; 上一页</Pager.Item>
361-
<Pager.Item disabled={parseInt(filters.size) !== this.state.tickets.length} next onClick={() => this.updateFilter({page: (parseInt(filters.page) + 1) + ''})}>下一页 &rarr;</Pager.Item>
362-
</Pager>
363-
</Grid>
365+
{pager}
366+
</div>
364367
)
365368
}
366369

modules/Tickets.js

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -60,34 +60,36 @@ export default class Tickets extends Component {
6060
})
6161
const joinedCustomerServices = <span>{customerServices}</span>
6262
return (
63-
<div className={css.ticket} key={ticket.get('nid')}>
64-
<div className={css.heading}>
65-
<div className={css.left}>
66-
<span className={css.nid}>#{ticket.get('nid')}</span>
67-
<Link className={css.title} to={'/tickets/' + ticket.get('nid')}>{ticket.get('title')}</Link>
68-
<span className={css.category}>{getCategoryPathName(ticket.get('category'), this.state.categoriesTree)}</span>
63+
<div className={`${css.ticket} ${css.row}`} key={ticket.get('nid')}>
64+
<div className={css.ticketContent}>
65+
<div className={css.heading}>
66+
<div className={css.left}>
67+
<span className={css.nid}>#{ticket.get('nid')}</span>
68+
<Link className={css.title} to={'/tickets/' + ticket.get('nid')}>{ticket.get('title')}</Link>
69+
<span className={css.category}>{getCategoryPathName(ticket.get('category'), this.state.categoriesTree)}</span>
70+
</div>
71+
<div className={css.right}>
72+
{ticket.get('replyCount') &&
73+
<Link className={css.commentCounter} title={'reply ' + ticket.get('replyCount')} to={'/tickets/' + ticket.get('nid')}>
74+
<span className={css.commentCounterIcon + ' glyphicon glyphicon-comment'}></span>
75+
{ticket.get('replyCount')}
76+
</Link>
77+
}
78+
</div>
6979
</div>
70-
<div className={css.right}>
71-
{ticket.get('replyCount') &&
72-
<Link className={css.commentCounter} title={'reply ' + ticket.get('replyCount')} to={'/tickets/' + ticket.get('nid')}>
73-
<span className={css.commentCounterIcon + ' glyphicon glyphicon-comment'}></span>
74-
{ticket.get('replyCount')}
75-
</Link>
76-
}
77-
</div>
78-
</div>
7980

80-
<div className={css.meta}>
81-
<div className={css.left}>
82-
<span className={css.status}><TicketStatusLabel status={ticket.get('status')} /></span>
83-
<span className={css.creator}><UserLabel user={ticket.get('author')} /></span> 创建于 {moment(ticket.get('createdAt')).fromNow()}
84-
{moment(ticket.get('createdAt')).fromNow() === moment(ticket.get('updatedAt')).fromNow() ||
85-
<span>,更新于 {moment(ticket.get('updatedAt')).fromNow()}</span>
86-
}
87-
</div>
88-
<div className={css.right}>
89-
<span className={css.assignee}><UserLabel user={ticket.get('assignee')} /></span>
90-
<span className={css.contributors}>{joinedCustomerServices}</span>
81+
<div className={css.meta}>
82+
<div className={css.left}>
83+
<span className={css.status}><TicketStatusLabel status={ticket.get('status')} /></span>
84+
<span className={css.creator}><UserLabel user={ticket.get('author')} /></span> 创建于 {moment(ticket.get('createdAt')).fromNow()}
85+
{moment(ticket.get('createdAt')).fromNow() === moment(ticket.get('updatedAt')).fromNow() ||
86+
<span>,更新于 {moment(ticket.get('updatedAt')).fromNow()}</span>
87+
}
88+
</div>
89+
<div className={css.right}>
90+
<span className={css.assignee}><UserLabel user={ticket.get('assignee')} /></span>
91+
<span className={css.contributors}>{joinedCustomerServices}</span>
92+
</div>
9193
</div>
9294
</div>
9395
</div>

0 commit comments

Comments
 (0)