import { View } from '@tarojs/components'; import { AtCard, AtSteps } from 'taro-ui'; import { Component, ReactNode } from 'react'; import Taro from '@tarojs/taro'; import { TicketInfo, TicketNote } from '@/pages/TicketDetail/TicketNote'; import NoteList from '@/components/NoteList/NoteList'; import PageFooter from '@/components/PageFooter/PageFooter'; import pt from '@/plain-text'; import { RequestState } from '@/service'; import { getTicketInfo } from '@/service/ticketsInfo'; import { FixStatus } from '@/common'; const mapStatusStep: Map = new Map([ [1, 0], [2, 1], [3, 2], [4, 2], [5, 3], ]); interface StepItemData { title: string; } interface DetailFrameworkState { current: number; items: Array; ticketInfo: TicketInfo; notes: Array; rs: RequestState; } interface DetailFrameworkProps { middleButton: JSX.Element; id: number; } export default class DetailFramework extends Component< DetailFrameworkProps, DetailFrameworkState > { state = { current: 0, items: [], ticketInfo: new TicketInfo(), notes: [new TicketNote()], rs: new RequestState(), }; componentDidMount(): void { const navBar = pt.get().navBar; Taro.setNavigationBarTitle({ title: navBar.ticketDetail, }); const items = pt.get().ticketDetail.stepItems; this.setState({ items: items, }); getTicketInfo(this, this.props.id); } props: Readonly = { middleButton: , id: 0, }; render(): ReactNode { if (this.state.rs.loading) { return Loading; } else if (!this.state.rs.success) { return Request failed; } const status = this.state.ticketInfo.status; this.setState({ current: mapStatusStep.get(status) || 0, }); return ( {this.state.ticketInfo.device + ' ' + this.state.ticketInfo.deviceModel} {pt.get().common.createdAtText(this.state.ticketInfo.createdTime)} {this.state.ticketInfo.description} {}} /> {this.props.middleButton} ); } }