import { Component, ReactNode } from 'react'; import { View } from '@tarojs/components'; import { getCurrentInstance } from '@tarojs/runtime'; import pt from '@/plain-text'; import { AtActionSheet, AtActionSheetItem, AtButton, AtFloatLayout, AtForm, AtMessage, AtModal, AtTextarea, } from 'taro-ui'; import DetailFramework from '@/components/DetailFramework/DetailFramework'; import PageFooter from '@/components/PageFooter/PageFooter'; import { submitComment } from '@/service/submitComment'; import Taro from '@tarojs/taro'; import wechatUser from '@/wechat'; import { addToOreo } from '@/service/addToOreo'; import { pickTicket } from '@/service/pickTicket'; import { retrieve } from '@/service/retrieve'; import { changeStatus } from '@/service/changeStatus'; const submitInterval = 5000; interface TicketDetailState { id: number; isMember: boolean; showOreoModal: boolean; showCommentModal: boolean; showRetrieveModal: boolean; showStatusSheet: boolean; showPickModal: boolean; comment: string; isLoading: boolean; isDisable: boolean; isOreoLoading: boolean; isOreoDisable: boolean; isPickLoading: boolean; isPickDisable: boolean; isRetrieveLoading: boolean; isRetrieveDisable: boolean; isStatusLoading: boolean; isStatusDisable: boolean; } export default class TicketDetail extends Component<{}, TicketDetailState> { state: Readonly = { id: 0, isMember: false, showOreoModal: false, showCommentModal: false, showRetrieveModal: false, showStatusSheet: false, showPickModal: false, comment: '', isLoading: false, isDisable: false, isOreoLoading: false, isOreoDisable: false, isPickLoading: false, isPickDisable: false, isRetrieveLoading: false, isRetrieveDisable: false, isStatusLoading: false, isStatusDisable: false, }; componentDidMount(): void { const { router } = getCurrentInstance(); const id = router?.params.id as number; this.setState({ id: id, isMember: wechatUser.getAccess(), }); } onAddToOreo(): void { this.setState({ showOreoModal: true, }); } onAddComment(): void { this.setState({ showCommentModal: true, }); } onRetrieved(): void { this.setState({ showRetrieveModal: true, }); } onPick(): void { this.setState({ showPickModal: true, }); } onChangeStatus(): void { this.setState({ showStatusSheet: true, }); } handleOreoCancel(): void { this.setState({ showOreoModal: false, }); } handleCommentCancel(): void { this.setState({ showCommentModal: false, }); } handleRetrieveCancel(): void { this.setState({ showRetrieveModal: false, }); } handleStatusCancel(): void { this.setState({ showStatusSheet: false, }); } handlePickCancel(): void { this.setState({ showPickModal: false, }); } handleOreoConfirm(): void { this.setState({ isOreoDisable: true, showOreoModal: false, }); addToOreo(this); setTimeout(() => { this.setState({ isOreoDisable: false, }); }, submitInterval); return; } handleRetrieveConfirm(): void { this.setState({ isRetrieveDisable: true, showRetrieveModal: false, }); retrieve(this); setTimeout(() => { this.setState({ isRetrieveDisable: false, }); }, submitInterval); return; } handlePickConfirm(): void { this.setState({ isPickDisable: true, showPickModal: false, }); pickTicket(this); setTimeout(() => { this.setState({ isPickDisable: false, }); }, submitInterval); return; } handleStatusChange(status: number): void { this.setState({ showStatusSheet: false, isStatusDisable: true, }); changeStatus(this, status); setTimeout(() => { this.setState({ isStatusDisable: false, }); }, submitInterval); return; } handleCommentChange(comment: string) { this.setState({ comment: comment, }); return comment; } onCommentSubmit() { this.setState({ isDisable: true, }); if (this.state.comment == '') { Taro.atMessage({ message: pt.get().button.submitText.blank, type: 'error', }); setTimeout(() => { this.setState({ isDisable: false, }); }, submitInterval); return; } submitComment(this); setTimeout(() => { this.setState({ isDisable: false, }); }, submitInterval); } render(): ReactNode { const middleButton = this.state.isMember ? ( {pt.get().ticketDetail.pick} {pt.get().ticketDetail.addToOreo} {pt.get().ticketDetail.addNote} {pt.get().ticketDetail.addNote} ) : ( {pt.get().ticketDetail.tookAway} {pt.get().ticketDetail.addNote} ); const isInfoShow = { device: true, createdTime: true, description: true, info: wechatUser.getAccess() ? true : false, current: true, notelist: true, showAllNotes: true, }; return ( {pt.get().button.buttonText.submit} {pt.get().ticketDetail.status.status0} {pt.get().ticketDetail.status.status1} {pt.get().ticketDetail.status.status2} {pt.get().ticketDetail.status.status3} {pt.get().ticketDetail.status.status4} {pt.get().ticketDetail.status.status5} {pt.get().ticketDetail.status.status6} {pt.get().ticketDetail.status.status7} ); } }