add ticketList page

main
Dawn1Ocean 2024-03-25 23:04:33 +08:00
parent 079afea2e0
commit 1cf16472d2
7 changed files with 104 additions and 1 deletions

View File

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

View File

@ -0,0 +1,3 @@
export default definePageConfig({
usingComponents: {},
});

View File

@ -0,0 +1,44 @@
import { Component, ReactNode } from 'react';
import { View } from '@tarojs/components';
import { AtList } from 'taro-ui';
import Taro from '@tarojs/taro';
import moment from 'moment';
import pt from '@/plain-text';
import { RequestState } from '@/service';
import { getTicketList } from '@/service/ticketList';
import { TicketListItem } from '@/components/TicketListItem/TicketListItem';
import './TicketList.scss';
interface TicketListState {
fixList: Array<TicketListItem>;
rs: RequestState;
}
export default class TicketListPage extends Component<{}, TicketListState> {
state = {
fixList: [new TicketListItem(0, '', '', 1, moment())],
rs: new RequestState(),
};
componentDidMount(): void {
Taro.setNavigationBarTitle({
title: pt.get().navBar.ticketList,
});
getTicketList(this);
}
render(): ReactNode {
if (this.state.rs.loading) {
return <View>loading</View>;
}
if (!this.state.rs.success) {
return <View>Failed</View>;
}
const fixListRenderer = this.state.fixList.map((item) => item.render());
return (
<View>
<AtList>{fixListRenderer}</AtList>
</View>
);
}
}

View File

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

View File

@ -1,5 +1,6 @@
export interface NavBarTitle {
ticketDetail: string;
ticketList: string;
user: {
myTicket: string;
report: string;
@ -12,6 +13,7 @@ export interface NavBarTitle {
export const navBarTitleZhCn: NavBarTitle = {
ticketDetail: '工单详情',
ticketList: '所有工单',
user: {
myTicket: '我的工单',
report: '意见反馈',
@ -24,6 +26,7 @@ export const navBarTitleZhCn: NavBarTitle = {
export const navBarTitleEnUs: NavBarTitle = {
ticketDetail: 'Ticket Detail',
ticketList: 'All Tickets',
user: {
myTicket: 'My Tickets',
report: 'Report',

View File

@ -0,0 +1,52 @@
import TicketListPage from '@/pages/TicketList/TicketList';
import { TicketListItem } from '@/components/TicketListItem/TicketListItem';
import Taro from '@tarojs/taro';
import moment from 'moment';
import { FixStatus } from '@/common';
import wechatUser from '@/wechat';
import { getUrl } from '.';
export function getTicketList(that: TicketListPage) {
Taro.request({
url: getUrl('/tickets/list'),
method: 'GET',
data: {
token: wechatUser.getToken(),
},
})
.then((res) => {
let former = that.state.rs;
if (!res.data.success) {
that.setState({
rs: former.trans(false),
});
return;
}
that.setState({
rs: former.trans(true),
fixList: res.data.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),
),
),
});
})
.catch((reason) => {
let former = that.state.rs;
that.setState({
rs: former.trans(false),
});
console.log(reason);
});
}