diff --git a/mock/api.ts b/mock/api.ts
index ccba190..0f6d907 100644
--- a/mock/api.ts
+++ b/mock/api.ts
@@ -38,7 +38,7 @@ export default {
success: true,
data: mytickets,
},
- 'GET /tickets/info/': {
+ 'GET /tickets/info': {
success: true,
data: ticketInfo,
},
diff --git a/src/pages/TicketDetail/TicketDetail.tsx b/src/pages/TicketDetail/TicketDetail.tsx
index 5cab35b..b0455d9 100644
--- a/src/pages/TicketDetail/TicketDetail.tsx
+++ b/src/pages/TicketDetail/TicketDetail.tsx
@@ -4,15 +4,43 @@ import { getCurrentInstance } from '@tarojs/runtime';
import Taro from '@tarojs/taro';
import pt from '@/plain-text';
import { AtSteps } from 'taro-ui';
+import moment from 'moment';
+import { RequestState } from '@/service';
+import { getTicketInfo } from '@/service/ticketsInfo';
interface StepItemData {
title: string;
}
+export class TicketInfo {
+ id: number;
+ type: 0 | 1;
+ device: string;
+ deviceModel: string;
+ description: string;
+ createdTime: moment.Moment;
+ status: 1 | 2 | 3 | 4 | 5;
+}
+
+export class TicketNote {
+ id: number;
+ op: string;
+ type: 0 | 1 | 2;
+ content: string;
+ createdTime: moment.Moment;
+}
+
+function renderNote(n: TicketNote): JSX.Element {
+ return {n.id};
+}
+
interface TicketDetailState {
id: number;
current: number;
items: Array;
+ ticketInfo: TicketInfo;
+ notes: Array;
+ rs: RequestState;
}
export default class TicketDetail extends Component<{}, TicketDetailState> {
@@ -20,7 +48,11 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
id: 0,
current: 0,
items: [],
+ ticketInfo: new TicketInfo(),
+ notes: [new TicketNote()],
+ rs: new RequestState(),
};
+
componentDidMount(): void {
const navBar = pt.get().navBar;
Taro.setNavigationBarTitle({
@@ -33,16 +65,27 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
id: id,
items: items,
});
+
+ getTicketInfo(this);
}
+
render(): ReactNode {
+ if (this.state.rs.loading) {
+ return Loading;
+ } else if (!this.state.rs.success) {
+ return Request failed;
+ }
+
return (
+ {this.state.ticketInfo.deviceModel}
{}}
/>
TicketDetail: {this.state.id}
+ {this.state.notes.map(item => renderNote(item))}
);
}
diff --git a/src/service/ticketsInfo.ts b/src/service/ticketsInfo.ts
new file mode 100644
index 0000000..dd561c0
--- /dev/null
+++ b/src/service/ticketsInfo.ts
@@ -0,0 +1,65 @@
+import TicketDetail, {
+ TicketInfo,
+ TicketNote,
+} from '@/pages/TicketDetail/TicketDetail';
+import Taro from '@tarojs/taro';
+import moment from 'moment';
+import { getUrl } from '.';
+
+export function getTicketInfo(that: TicketDetail) {
+ Taro.request({
+ url: getUrl('/tickets/info'),
+ method: 'GET',
+ data: {
+ id: that.state.id,
+ },
+ })
+ .then(res => {
+ if (!res.data.success) {
+ that.setState({
+ rs: {
+ loading: false,
+ success: false,
+ },
+ });
+ } else {
+ const data = res.data.data;
+ const ticketDetail: TicketInfo = {
+ id: data.id,
+ type: data.type,
+ device: data.device,
+ deviceModel: data.deviceModel,
+ description: data.description,
+ createdTime: moment(),
+ status: data.status,
+ };
+ const notes: Array = [];
+ data.notes.map(item => {
+ notes.push({
+ id: item.id,
+ op: item.op,
+ type: item.type,
+ content: item.content,
+ createdTime: moment(),
+ });
+ });
+ that.setState({
+ ticketInfo: ticketDetail,
+ notes: notes,
+ rs: {
+ loading: false,
+ success: true,
+ },
+ });
+ }
+ })
+ .catch(reason => {
+ that.setState({
+ rs: {
+ loading: false,
+ success: false,
+ },
+ });
+ console.log(reason);
+ });
+}