From 4640f89ea8c7a10a67c41f6b26c66f9637aabd07 Mon Sep 17 00:00:00 2001 From: Dawn_Ocean <1785590531@qq.com> Date: Mon, 18 Mar 2024 14:40:03 +0800 Subject: [PATCH] add changeStatus service --- src/pages/TicketDetail/TicketDetail.tsx | 30 +++++++++++++-- src/plain-text/TicketDetail.ts | 50 +++++++++++++++---------- src/plain-text/TicketList.ts | 4 +- src/service/changeStatus.ts | 39 +++++++++++++++++++ 4 files changed, 99 insertions(+), 24 deletions(-) create mode 100644 src/service/changeStatus.ts diff --git a/src/pages/TicketDetail/TicketDetail.tsx b/src/pages/TicketDetail/TicketDetail.tsx index a45084e..c1e482e 100644 --- a/src/pages/TicketDetail/TicketDetail.tsx +++ b/src/pages/TicketDetail/TicketDetail.tsx @@ -20,6 +20,7 @@ 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; @@ -40,6 +41,8 @@ interface TicketDetailState { isPickDisable: boolean; isRetrieveLoading: boolean; isRetrieveDisable: boolean; + isStatusLoading: boolean; + isStatusDisable: boolean; } export default class TicketDetail extends Component<{}, TicketDetailState> { @@ -60,6 +63,8 @@ export default class TicketDetail extends Component<{}, TicketDetailState> { isPickDisable: false, isRetrieveLoading: false, isRetrieveDisable: false, + isStatusLoading: false, + isStatusDisable: false, }; componentDidMount(): void { @@ -176,7 +181,15 @@ export default class TicketDetail extends Component<{}, TicketDetailState> { handleStatusChange(status: number): void { this.setState({ showStatusSheet: false, + isStatusDisable: true, }); + changeStatus(this, status); + setTimeout(() => { + this.setState({ + isStatusDisable: false, + }); + }, submitInterval); + return; } handleCommentChange(comment: string) { @@ -252,8 +265,13 @@ export default class TicketDetail extends Component<{}, TicketDetailState> { className='at-col' style={{ marginLeft: 10, paddingRight: 5, width: '50%' }} > - - {pt.get().ticketDetail.status.button} + + {pt.get().ticketDetail.addNote} { className='at-col' style={{ marginRight: 10, paddingLeft: 5, width: '50%' }} > - + {pt.get().ticketDetail.addNote} @@ -384,6 +402,12 @@ export default class TicketDetail extends Component<{}, TicketDetailState> { {pt.get().ticketDetail.status.status5} + + {pt.get().ticketDetail.status.status6} + + + {pt.get().ticketDetail.status.status7} + ; @@ -29,6 +29,8 @@ export interface TicketDetailText { status3: string; status4: string; status5: string; + status6: string; + status7: string; }; } @@ -42,11 +44,14 @@ export const ticketDetailZhCn: TicketDetailText = { createTicketMessage: '创建了维修', statusModifyPrefix: '将维修状态更改为:', statusModifyMessage: new Map([ + ['0', '已创建/交接中'], ['1', '维修中'], - ['2', '2(?)'], - ['3', '3(?)'], + ['2', '劝退待取回'], + ['3', '劝退已取回'], ['4', '维修成功待取回'], ['5', '维修成功已取回'], + ['6', '维修翻车待取回'], + ['7', '维修翻车已取回'], ]), descTitle: '问题描述', infoTitle: '机主信息', @@ -62,12 +67,14 @@ export const ticketDetailZhCn: TicketDetailText = { button: '改变工单状态', title: '请选择要改变成为的状态', cancel: '取消', - status0: '', - status1: '', - status2: '', - status3: '', - status4: '', - status5: '', + status0: '已创建/交接中', + status1: '维修中', + status2: '劝退待取回', + status3: '劝退已取回', + status4: '维修成功待取回', + status5: '维修成功已取回', + status6: '维修翻车待取回', + status7: '维修翻车已取回', }, }; @@ -81,11 +88,14 @@ export const ticketDetailEnUs: TicketDetailText = { createTicketMessage: 'Created ticket', statusModifyPrefix: 'Modified repair status to: ', statusModifyMessage: new Map([ + ['0', 'Created / Handovering'], ['1', 'Repairing'], - ['2', '2(?)'], - ['3', '3(?)'], - ['4', 'Device to be retrieved'], - ['5', 'Ticket finished'], + ['2', 'Pending Retrieval (Refused)'], + ['3', 'Retrieved (Refused)'], + ['4', 'Pending Retrieval (Finished)'], + ['5', 'Retrieved (Finished)'], + ['6', 'Pending Retrieval (Failed)'], + ['7', 'Retrieved (Failed)'], ]), descTitle: 'Description', infoTitle: 'Contact', @@ -102,11 +112,13 @@ export const ticketDetailEnUs: TicketDetailText = { button: 'Modify Status', title: 'Please select the status you want to modify to', cancel: 'Cancel', - status0: '', - status1: '', - status2: '', - status3: '', - status4: '', - status5: '', + status0: 'Created / Handovering', + status1: 'Repairing', + status2: 'Pending Retrieval (Refused)', + status3: 'Retrieved (Refused)', + status4: 'Pending Retrieval (Finished)', + status5: 'Retrieved (Finished)', + status6: 'Pending Retrieval (Failed)', + status7: 'Retrieved (Failed)', }, }; diff --git a/src/plain-text/TicketList.ts b/src/plain-text/TicketList.ts index d9c52d9..64ebde0 100644 --- a/src/plain-text/TicketList.ts +++ b/src/plain-text/TicketList.ts @@ -32,7 +32,7 @@ export const ticketListEnUs: TicketListText = { [3, 'Retrieved (Refused)'], [4, 'Pending Retrieval (Finished)'], [5, 'Retrieved (Finished)'], - [4, 'Pending Retrieval (Failed)'], - [5, 'Retrieved (Failed)'], + [6, 'Pending Retrieval (Failed)'], + [7, 'Retrieved (Failed)'], ]), }; diff --git a/src/service/changeStatus.ts b/src/service/changeStatus.ts new file mode 100644 index 0000000..241506d --- /dev/null +++ b/src/service/changeStatus.ts @@ -0,0 +1,39 @@ +import TicketDetail from '@/pages/TicketDetail/TicketDetail'; +import Taro from '@tarojs/taro'; +import pt from '@/plain-text'; +import { getUrl } from '.'; + +export function changeStatus(that: TicketDetail, status: number) { + that.setState({ + isStatusLoading: true, + }); + Taro.request({ + url: getUrl('/tickets/update'), + method: 'POST', + data: { + token: 'token_test', + id: that.state.id, + status: status, + }, + }) + .then((res) => { + console.log(res.data); + that.setState({ + isStatusLoading: false, + }); + Taro.atMessage({ + message: pt.get().button.submitText.success, + type: 'success', + }); + }) + .catch((err) => { + console.log(err); + that.setState({ + isStatusLoading: false, + }); + Taro.atMessage({ + message: pt.get().button.submitText.error + err.toString(), + type: 'error', + }); + }); +}