add pagination in ticketlist

main
Dawn1Ocean 2024-03-25 23:33:23 +08:00
parent 1cf16472d2
commit ff317c1cd2
5 changed files with 39 additions and 29 deletions

View File

@ -1,7 +1,7 @@
{ {
"pageIndex": 1, "pageIndex": 1,
"pageCount": 24, "pageCount": 24,
"size": 10, "size": 8,
"queryType": 0, "queryType": 0,
"data": [ "data": [
{ {
@ -81,32 +81,10 @@
"createdTime": "2024-03-06T09:49:27.043865", "createdTime": "2024-03-06T09:49:27.043865",
"isConfirmed": false "isConfirmed": false
}, },
{
"id": 6837,
"type": 1,
"status": 7,
"device": "EVA",
"deviceModel": "超级笔记本",
"owner": "亦可",
"phone": "18888888881",
"createdTime": "2024-03-16T19:49:27.043865",
"isConfirmed": false
},
{
"id": 6838,
"type": 0,
"status": 2,
"device": "罗技",
"deviceModel": "G304",
"owner": "暮泠",
"phone": "18888888880",
"createdTime": "2024-04-06T19:49:27.043865",
"isConfirmed": false
},
{ {
"id": 6839, "id": 6839,
"type": 0, "type": 0,
"status": 3, "status": 7,
"device": "HAL", "device": "HAL",
"deviceModel": "卡比手办", "deviceModel": "卡比手办",
"owner": "蘑菇云", "owner": "蘑菇云",

View File

@ -9,7 +9,7 @@ export default defineAppConfig({
'pages/user/report/report', 'pages/user/report/report',
'pages/user/member/member', 'pages/user/member/member',
'pages/TicketDetail/TicketDetail', 'pages/TicketDetail/TicketDetail',
'pages/ticketList/ticketList', 'pages/TicketList/TicketList',
], ],
window: { window: {
backgroundTextStyle: 'light', backgroundTextStyle: 'light',

View File

@ -1,9 +1,10 @@
import { Component, ReactNode } from 'react'; import { Component, ReactNode } from 'react';
import { View } from '@tarojs/components'; import { View } from '@tarojs/components';
import { AtList } from 'taro-ui'; import { AtList, AtPagination } from 'taro-ui';
import Taro from '@tarojs/taro'; import Taro from '@tarojs/taro';
import moment from 'moment'; import moment from 'moment';
import pt from '@/plain-text'; import pt from '@/plain-text';
import PageFooter from '@/components/PageFooter/PageFooter';
import { RequestState } from '@/service'; import { RequestState } from '@/service';
import { getTicketList } from '@/service/ticketList'; import { getTicketList } from '@/service/ticketList';
import { TicketListItem } from '@/components/TicketListItem/TicketListItem'; import { TicketListItem } from '@/components/TicketListItem/TicketListItem';
@ -12,12 +13,18 @@ import './TicketList.scss';
interface TicketListState { interface TicketListState {
fixList: Array<TicketListItem>; fixList: Array<TicketListItem>;
rs: RequestState; rs: RequestState;
currentPage: number;
totalPage: number;
pageSize: number;
} }
export default class TicketListPage extends Component<{}, TicketListState> { export default class TicketListPage extends Component<{}, TicketListState> {
state = { state = {
fixList: [new TicketListItem(0, '', '', 1, moment())], fixList: [new TicketListItem(0, '', '', 1, moment())],
rs: new RequestState(), rs: new RequestState(),
currentPage: 1,
totalPage: 1,
pageSize: 8,
}; };
componentDidMount(): void { componentDidMount(): void {
@ -27,6 +34,13 @@ export default class TicketListPage extends Component<{}, TicketListState> {
getTicketList(this); getTicketList(this);
} }
onPageChange(): void {
this.setState({
rs: new RequestState(),
});
getTicketList(this);
}
render(): ReactNode { render(): ReactNode {
if (this.state.rs.loading) { if (this.state.rs.loading) {
return <View>loading</View>; return <View>loading</View>;
@ -37,7 +51,18 @@ export default class TicketListPage extends Component<{}, TicketListState> {
const fixListRenderer = this.state.fixList.map((item) => item.render()); const fixListRenderer = this.state.fixList.map((item) => item.render());
return ( return (
<View> <View>
<AtList>{fixListRenderer}</AtList> <View style={{ marginTop: '40rpx' }}>
<AtList>{fixListRenderer}</AtList>
</View>
<View style={{ marginTop: '40rpx' }}>
<AtPagination
total={this.state.totalPage}
pageSize={this.state.pageSize}
current={this.state.currentPage}
onPageChange={this.onPageChange.bind(this)}
></AtPagination>
</View>
<PageFooter />
</View> </View>
); );
} }

View File

@ -175,7 +175,7 @@ export default class MainPage extends Component<{}, MainPageState> {
ticketListPage() { ticketListPage() {
Taro.navigateTo({ Taro.navigateTo({
url: '/pages/ticketList/ticketList', url: '/pages/TicketList/TicketList',
}); });
} }

View File

@ -12,10 +12,14 @@ export function getTicketList(that: TicketListPage) {
method: 'GET', method: 'GET',
data: { data: {
token: wechatUser.getToken(), token: wechatUser.getToken(),
pageId: that.state.currentPage,
count: that.state.pageSize,
querytype: 0,
}, },
}) })
.then((res) => { .then((res) => {
let former = that.state.rs; let former = that.state.rs;
const data = res.data.data;
if (!res.data.success) { if (!res.data.success) {
that.setState({ that.setState({
rs: former.trans(false), rs: former.trans(false),
@ -24,7 +28,7 @@ export function getTicketList(that: TicketListPage) {
} }
that.setState({ that.setState({
rs: former.trans(true), rs: former.trans(true),
fixList: res.data.data.data.map( fixList: data.data.map(
(item: { (item: {
id: number; id: number;
device: string; device: string;
@ -40,6 +44,9 @@ export function getTicketList(that: TicketListPage) {
moment(item.createdTime), moment(item.createdTime),
), ),
), ),
currentPage: data.pageIndex,
pageSize: data.size,
totalPage: data.pageCount,
}); });
}) })
.catch((reason) => { .catch((reason) => {