From 3fd0ebf9c845c2ec0f7b95a3c2ad35233988de9a Mon Sep 17 00:00:00 2001 From: Dawn_Ocean <1785590531@qq.com> Date: Mon, 8 Apr 2024 14:10:26 +0800 Subject: [PATCH] refactor: split comment layout from ticketdetail --- src/pages/TicketDetail/Comment.tsx | 79 +++++++++++++++++++++++++ src/pages/TicketDetail/TicketDetail.tsx | 61 +++---------------- src/service/submitComment.ts | 21 ++----- 3 files changed, 93 insertions(+), 68 deletions(-) create mode 100644 src/pages/TicketDetail/Comment.tsx diff --git a/src/pages/TicketDetail/Comment.tsx b/src/pages/TicketDetail/Comment.tsx new file mode 100644 index 0000000..069b09e --- /dev/null +++ b/src/pages/TicketDetail/Comment.tsx @@ -0,0 +1,79 @@ +import pt from '@/plain-text'; +import { submitComment } from '@/service/submitComment'; +import { View } from '@tarojs/components'; +import Taro from '@tarojs/taro'; +import { Component, ReactNode } from 'react'; +import { AtButton, AtForm, AtTextarea } from 'taro-ui'; + +const submitInterval = 5000; + +export class Comment extends Component { + state = { + isLoading: false, + isDisable: false, + comment: '', + }; + + props = { + setFloatLayout: (_: boolean) => {}, + id: 0, + didMount: false, + }; + + handleCommentChange(comment: string) { + this.setState({ + comment: comment, + }); + return comment; + } + + onCommentSubmit() { + this.setState({ + isDisable: true, + }); + this.props.setFloatLayout(false); + 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 { + return this.props.didMount ? ( + + + + + {pt.get().button.buttonText.submit} + + + ) : ( + + ); + } +} diff --git a/src/pages/TicketDetail/TicketDetail.tsx b/src/pages/TicketDetail/TicketDetail.tsx index e5ed941..a7ad567 100644 --- a/src/pages/TicketDetail/TicketDetail.tsx +++ b/src/pages/TicketDetail/TicketDetail.tsx @@ -11,11 +11,9 @@ import { 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'; @@ -24,6 +22,7 @@ import { retrieve } from '@/service/retrieve'; import { changeStatus } from '@/service/changeStatus'; import { getDisable } from '@/service/getDisable'; import { StatusStr } from './TicketNote'; +import { Comment } from './Comment'; const submitInterval = 5000; @@ -44,7 +43,6 @@ interface TicketDetailState { status: boolean; }; }; - comment: string; isLoading: { oreo: boolean; pick: boolean; @@ -89,7 +87,6 @@ export default class TicketDetail extends Component<{}, TicketDetailState> { status: false, }, }, - comment: '', isLoading: { oreo: false, pick: false, @@ -385,51 +382,16 @@ export default class TicketDetail extends Component<{}, TicketDetailState> { return; } - handleCommentChange(comment: string) { + setFloatLayout(show: boolean) { this.setState({ - comment: comment, - }); - return comment; - } - - onCommentSubmit() { - this.setState({ - isDisable: { - ...this.state.isDisable, - comment: true, - }, show: { ...this.state.show, layout: { ...this.state.show.layout, - comment: false, + comment: show, }, }, }); - if (this.state.comment == '') { - Taro.atMessage({ - message: pt.get().button.submitText.blank, - type: 'error', - }); - setTimeout(() => { - this.setState({ - isDisable: { - ...this.state.isDisable, - comment: false, - }, - }); - }, submitInterval); - return; - } - submitComment(this); - setTimeout(() => { - this.setState({ - isDisable: { - ...this.state.isDisable, - comment: false, - }, - }); - }, submitInterval); } handleReminderChange(reminderList: Array) { @@ -676,18 +638,11 @@ export default class TicketDetail extends Component<{}, TicketDetailState> { title={pt.get().ticketDetail.comment.title} onClose={this.handleCommentCancel.bind(this)} > - - - - {pt.get().button.buttonText.submit} - - + { console.log(res.data); that.setState({ - isLoading: { - ...that.state.isLoading, - comment: false, - }, + isLoading: false, }); Taro.atMessage({ message: pt.get().button.submitText.success, @@ -35,17 +29,14 @@ export function submitComment(that: TicketDetail) { }); setTimeout(() => { Taro.reLaunch({ - url: '/pages/TicketDetail/TicketDetail?id=' + that.state.id, + url: '/pages/TicketDetail/TicketDetail?id=' + that.props.id, }); }, reLaunchInterval); }) .catch((err) => { console.log(err.errMsg); that.setState({ - isLoading: { - ...that.state.isLoading, - comment: false, - }, + isLoading: false, }); Taro.atMessage({ message: pt.get().button.submitText.error + err.errMsg,