add changeStatus service

main
Dawn_Ocean 2024-03-18 14:40:03 +08:00
parent 3d5cd6c8da
commit 4640f89ea8
4 changed files with 99 additions and 24 deletions

View File

@ -20,6 +20,7 @@ import wechatUser from '@/wechat';
import { addToOreo } from '@/service/addToOreo'; import { addToOreo } from '@/service/addToOreo';
import { pickTicket } from '@/service/pickTicket'; import { pickTicket } from '@/service/pickTicket';
import { retrieve } from '@/service/retrieve'; import { retrieve } from '@/service/retrieve';
import { changeStatus } from '@/service/changeStatus';
const submitInterval = 5000; const submitInterval = 5000;
@ -40,6 +41,8 @@ interface TicketDetailState {
isPickDisable: boolean; isPickDisable: boolean;
isRetrieveLoading: boolean; isRetrieveLoading: boolean;
isRetrieveDisable: boolean; isRetrieveDisable: boolean;
isStatusLoading: boolean;
isStatusDisable: boolean;
} }
export default class TicketDetail extends Component<{}, TicketDetailState> { export default class TicketDetail extends Component<{}, TicketDetailState> {
@ -60,6 +63,8 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
isPickDisable: false, isPickDisable: false,
isRetrieveLoading: false, isRetrieveLoading: false,
isRetrieveDisable: false, isRetrieveDisable: false,
isStatusLoading: false,
isStatusDisable: false,
}; };
componentDidMount(): void { componentDidMount(): void {
@ -176,7 +181,15 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
handleStatusChange(status: number): void { handleStatusChange(status: number): void {
this.setState({ this.setState({
showStatusSheet: false, showStatusSheet: false,
isStatusDisable: true,
}); });
changeStatus(this, status);
setTimeout(() => {
this.setState({
isStatusDisable: false,
});
}, submitInterval);
return;
} }
handleCommentChange(comment: string) { handleCommentChange(comment: string) {
@ -252,8 +265,13 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
className='at-col' className='at-col'
style={{ marginLeft: 10, paddingRight: 5, width: '50%' }} style={{ marginLeft: 10, paddingRight: 5, width: '50%' }}
> >
<AtButton type='primary' onClick={this.onChangeStatus.bind(this)}> <AtButton
{pt.get().ticketDetail.status.button} loading={this.state.isStatusLoading}
disabled={this.state.isStatusDisable}
type='secondary'
onClick={this.onChangeStatus.bind(this)}
>
{pt.get().ticketDetail.addNote}
</AtButton> </AtButton>
</View> </View>
<View <View
@ -288,7 +306,7 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
className='at-col' className='at-col'
style={{ marginRight: 10, paddingLeft: 5, width: '50%' }} style={{ marginRight: 10, paddingLeft: 5, width: '50%' }}
> >
<AtButton type='secondary' onClick={this.onChangeStatus.bind(this)}> <AtButton type='secondary' onClick={this.onAddComment.bind(this)}>
{pt.get().ticketDetail.addNote} {pt.get().ticketDetail.addNote}
</AtButton> </AtButton>
</View> </View>
@ -384,6 +402,12 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
<AtActionSheetItem onClick={this.handleStatusChange.bind(this, 5)}> <AtActionSheetItem onClick={this.handleStatusChange.bind(this, 5)}>
{pt.get().ticketDetail.status.status5} {pt.get().ticketDetail.status.status5}
</AtActionSheetItem> </AtActionSheetItem>
<AtActionSheetItem onClick={this.handleStatusChange.bind(this, 6)}>
{pt.get().ticketDetail.status.status6}
</AtActionSheetItem>
<AtActionSheetItem onClick={this.handleStatusChange.bind(this, 7)}>
{pt.get().ticketDetail.status.status7}
</AtActionSheetItem>
</AtActionSheet> </AtActionSheet>
<DetailFramework <DetailFramework
middleButton={middleButton} middleButton={middleButton}

View File

@ -2,7 +2,7 @@ interface StepItem {
title: string; title: string;
} }
type StatusStr = '1' | '2' | '3' | '4' | '5'; type StatusStr = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7';
export interface TicketDetailText { export interface TicketDetailText {
stepItems: Array<StepItem>; stepItems: Array<StepItem>;
@ -29,6 +29,8 @@ export interface TicketDetailText {
status3: string; status3: string;
status4: string; status4: string;
status5: string; status5: string;
status6: string;
status7: string;
}; };
} }
@ -42,11 +44,14 @@ export const ticketDetailZhCn: TicketDetailText = {
createTicketMessage: '创建了维修', createTicketMessage: '创建了维修',
statusModifyPrefix: '将维修状态更改为:', statusModifyPrefix: '将维修状态更改为:',
statusModifyMessage: new Map<StatusStr, string>([ statusModifyMessage: new Map<StatusStr, string>([
['0', '已创建/交接中'],
['1', '维修中'], ['1', '维修中'],
['2', '2(?)'], ['2', '劝退待取回'],
['3', '3(?)'], ['3', '劝退已取回'],
['4', '维修成功待取回'], ['4', '维修成功待取回'],
['5', '维修成功已取回'], ['5', '维修成功已取回'],
['6', '维修翻车待取回'],
['7', '维修翻车已取回'],
]), ]),
descTitle: '问题描述', descTitle: '问题描述',
infoTitle: '机主信息', infoTitle: '机主信息',
@ -62,12 +67,14 @@ export const ticketDetailZhCn: TicketDetailText = {
button: '改变工单状态', button: '改变工单状态',
title: '请选择要改变成为的状态', title: '请选择要改变成为的状态',
cancel: '取消', cancel: '取消',
status0: '', status0: '已创建/交接中',
status1: '', status1: '维修中',
status2: '', status2: '劝退待取回',
status3: '', status3: '劝退已取回',
status4: '', status4: '维修成功待取回',
status5: '', status5: '维修成功已取回',
status6: '维修翻车待取回',
status7: '维修翻车已取回',
}, },
}; };
@ -81,11 +88,14 @@ export const ticketDetailEnUs: TicketDetailText = {
createTicketMessage: 'Created ticket', createTicketMessage: 'Created ticket',
statusModifyPrefix: 'Modified repair status to: ', statusModifyPrefix: 'Modified repair status to: ',
statusModifyMessage: new Map<StatusStr, string>([ statusModifyMessage: new Map<StatusStr, string>([
['0', 'Created / Handovering'],
['1', 'Repairing'], ['1', 'Repairing'],
['2', '2(?)'], ['2', 'Pending Retrieval (Refused)'],
['3', '3(?)'], ['3', 'Retrieved (Refused)'],
['4', 'Device to be retrieved'], ['4', 'Pending Retrieval (Finished)'],
['5', 'Ticket finished'], ['5', 'Retrieved (Finished)'],
['6', 'Pending Retrieval (Failed)'],
['7', 'Retrieved (Failed)'],
]), ]),
descTitle: 'Description', descTitle: 'Description',
infoTitle: 'Contact', infoTitle: 'Contact',
@ -102,11 +112,13 @@ export const ticketDetailEnUs: TicketDetailText = {
button: 'Modify Status', button: 'Modify Status',
title: 'Please select the status you want to modify to', title: 'Please select the status you want to modify to',
cancel: 'Cancel', cancel: 'Cancel',
status0: '', status0: 'Created / Handovering',
status1: '', status1: 'Repairing',
status2: '', status2: 'Pending Retrieval (Refused)',
status3: '', status3: 'Retrieved (Refused)',
status4: '', status4: 'Pending Retrieval (Finished)',
status5: '', status5: 'Retrieved (Finished)',
status6: 'Pending Retrieval (Failed)',
status7: 'Retrieved (Failed)',
}, },
}; };

View File

@ -32,7 +32,7 @@ export const ticketListEnUs: TicketListText = {
[3, 'Retrieved (Refused)'], [3, 'Retrieved (Refused)'],
[4, 'Pending Retrieval (Finished)'], [4, 'Pending Retrieval (Finished)'],
[5, 'Retrieved (Finished)'], [5, 'Retrieved (Finished)'],
[4, 'Pending Retrieval (Failed)'], [6, 'Pending Retrieval (Failed)'],
[5, 'Retrieved (Failed)'], [7, 'Retrieved (Failed)'],
]), ]),
}; };

View File

@ -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',
});
});
}