From e6ffd7d5d7cabfd73e5414b476d9a12927d1a17c Mon Sep 17 00:00:00 2001
From: Dawn1Ocean <1785590531@qq.com>
Date: Mon, 25 Mar 2024 23:46:23 +0800
Subject: [PATCH] add search bar in ticketlist with service
---
src/pages/TicketList/TicketList.tsx | 30 +++++++++++++---
src/plain-text/TicketList.ts | 3 ++
src/service/ticketList.ts | 53 +++++++++++++++++++++++++++++
3 files changed, 82 insertions(+), 4 deletions(-)
diff --git a/src/pages/TicketList/TicketList.tsx b/src/pages/TicketList/TicketList.tsx
index cb4bd9f..5f172e6 100644
--- a/src/pages/TicketList/TicketList.tsx
+++ b/src/pages/TicketList/TicketList.tsx
@@ -1,12 +1,12 @@
import { Component, ReactNode } from 'react';
import { View } from '@tarojs/components';
-import { AtList, AtPagination } from 'taro-ui';
+import { AtList, AtPagination, AtSearchBar } from 'taro-ui';
import Taro from '@tarojs/taro';
import moment from 'moment';
import pt from '@/plain-text';
import PageFooter from '@/components/PageFooter/PageFooter';
import { RequestState } from '@/service';
-import { getTicketList } from '@/service/ticketList';
+import { getTicketList, searchTicketList } from '@/service/ticketList';
import { TicketListItem } from '@/components/TicketListItem/TicketListItem';
import './TicketList.scss';
@@ -16,6 +16,7 @@ interface TicketListState {
currentPage: number;
totalPage: number;
pageSize: number;
+ search: string;
}
export default class TicketListPage extends Component<{}, TicketListState> {
@@ -25,6 +26,7 @@ export default class TicketListPage extends Component<{}, TicketListState> {
currentPage: 1,
totalPage: 1,
pageSize: 8,
+ search: '',
};
componentDidMount(): void {
@@ -41,6 +43,20 @@ export default class TicketListPage extends Component<{}, TicketListState> {
getTicketList(this);
}
+ onSearchChange(search): void {
+ this.setState({
+ search: search,
+ });
+ return search;
+ }
+
+ onActionClick(): void {
+ this.setState({
+ rs: new RequestState(),
+ });
+ searchTicketList(this);
+ }
+
render(): ReactNode {
if (this.state.rs.loading) {
return loading;
@@ -51,9 +67,15 @@ export default class TicketListPage extends Component<{}, TicketListState> {
const fixListRenderer = this.state.fixList.map((item) => item.render());
return (
-
- {fixListRenderer}
+
+
+ {fixListRenderer}
;
+ search: string;
}
export const ticketListZhCn: TicketListText = {
@@ -19,6 +20,7 @@ export const ticketListZhCn: TicketListText = {
[6, '维修翻车待取回'],
[7, '维修翻车已取回'],
]),
+ search: '搜索',
};
export const ticketListEnUs: TicketListText = {
@@ -35,4 +37,5 @@ export const ticketListEnUs: TicketListText = {
[6, 'Pending Retrieval (Failed)'],
[7, 'Retrieved (Failed)'],
]),
+ search: 'search',
};
diff --git a/src/service/ticketList.ts b/src/service/ticketList.ts
index ff0489e..6a36541 100644
--- a/src/service/ticketList.ts
+++ b/src/service/ticketList.ts
@@ -57,3 +57,56 @@ export function getTicketList(that: TicketListPage) {
console.log(reason);
});
}
+
+export function searchTicketList(that: TicketListPage) {
+ Taro.request({
+ url: getUrl('/tickets/search'),
+ method: 'GET',
+ data: {
+ token: wechatUser.getToken(),
+ pageId: that.state.currentPage,
+ count: that.state.pageSize,
+ value: that.state.search,
+ querytype: 0,
+ },
+ })
+ .then((res) => {
+ let former = that.state.rs;
+ const data = res.data.data;
+ if (!res.data.success) {
+ that.setState({
+ rs: former.trans(false),
+ });
+ return;
+ }
+ that.setState({
+ rs: former.trans(true),
+ fixList: data.data.map(
+ (item: {
+ id: number;
+ device: string;
+ deviceModel: string;
+ status: FixStatus;
+ createdTime: moment.MomentInput;
+ }) =>
+ new TicketListItem(
+ item.id,
+ item.device,
+ item.deviceModel,
+ item.status,
+ moment(item.createdTime),
+ ),
+ ),
+ currentPage: data.pageIndex,
+ pageSize: data.size,
+ totalPage: data.pageCount,
+ });
+ })
+ .catch((reason) => {
+ let former = that.state.rs;
+ that.setState({
+ rs: former.trans(false),
+ });
+ console.log(reason);
+ });
+}