add reminder structure in ticketdetail

dev
Dawn1Ocean 2024-04-05 21:34:13 +08:00
parent 5ce1db7693
commit 7f017a0b47
2 changed files with 106 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import {
AtActionSheet, AtActionSheet,
AtActionSheetItem, AtActionSheetItem,
AtButton, AtButton,
AtCheckbox,
AtFloatLayout, AtFloatLayout,
AtForm, AtForm,
AtMessage, AtMessage,
@ -30,6 +31,7 @@ interface TicketDetailState {
isMember: boolean; isMember: boolean;
showOreoModal: boolean; showOreoModal: boolean;
showCommentLayout: boolean; showCommentLayout: boolean;
showReminderLayout: boolean;
showRetrieveModal: boolean; showRetrieveModal: boolean;
showStatusSheet: boolean; showStatusSheet: boolean;
showPickModal: boolean; showPickModal: boolean;
@ -48,6 +50,10 @@ interface TicketDetailState {
isCommentLoading: boolean; isCommentLoading: boolean;
isCommentDisable: boolean; isCommentDisable: boolean;
isCommentDisable_main: boolean; isCommentDisable_main: boolean;
isReminderLoading: boolean;
isReminderDisable: boolean;
reminderList: Array<number>;
statusToBe: number;
} }
export default class TicketDetail extends Component<{}, TicketDetailState> { export default class TicketDetail extends Component<{}, TicketDetailState> {
@ -56,6 +62,7 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
isMember: false, isMember: false,
showOreoModal: false, showOreoModal: false,
showCommentLayout: false, showCommentLayout: false,
showReminderLayout: false,
showRetrieveModal: false, showRetrieveModal: false,
showStatusSheet: false, showStatusSheet: false,
showPickModal: false, showPickModal: false,
@ -74,6 +81,10 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
isCommentLoading: false, isCommentLoading: false,
isCommentDisable: false, isCommentDisable: false,
isCommentDisable_main: false, isCommentDisable_main: false,
isReminderDisable: false,
isReminderLoading: false,
reminderList: [],
statusToBe: 0,
}; };
componentDidMount(): void { componentDidMount(): void {
@ -128,6 +139,12 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
}); });
} }
handleReminderCancel(): void {
this.setState({
showReminderLayout: false,
});
}
handleRetrieveCancel(): void { handleRetrieveCancel(): void {
this.setState({ this.setState({
showRetrieveModal: false, showRetrieveModal: false,
@ -193,7 +210,14 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
showStatusSheet: false, showStatusSheet: false,
isStatusDisable: true, isStatusDisable: true,
}); });
changeStatus(this, status); if (status == 3 || status == 5 || status == 7) {
this.setState({
showReminderLayout: true,
statusToBe: status,
});
} else {
changeStatus(this, status);
}
setTimeout(() => { setTimeout(() => {
this.setState({ this.setState({
isStatusDisable: false, isStatusDisable: false,
@ -234,6 +258,57 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
}, submitInterval); }, submitInterval);
} }
handleReminderChange(reminderList: Array<number>) {
this.setState({
reminderList: reminderList,
});
return reminderList;
}
onReminderSubmit() {
this.setState({
isReminderDisable: true,
});
if (
this.state.reminderList.includes(1) &&
this.state.reminderList.includes(3)
) {
this.setState({
showReminderLayout: false,
});
changeStatus(this, this.state.statusToBe);
} else {
Taro.atMessage({
message: pt.get().button.submitText.blank,
type: 'error',
});
}
setTimeout(() => {
this.setState({
isReminderDisable: false,
});
}, submitInterval);
}
reminderOption = [
{
value: 0,
label: pt.get().repairPage.checkboxText.none,
},
{
value: 1,
label: pt.get().repairPage.checkboxText.usbDisk,
},
{
value: 2,
label: pt.get().repairPage.checkboxText.mouseOrReceiver,
},
{
value: 3,
label: pt.get().repairPage.checkboxText.powerAdapter,
},
];
render(): ReactNode { render(): ReactNode {
const middleButton = this.state.isMember ? ( const middleButton = this.state.isMember ? (
<View> <View>
@ -402,6 +477,27 @@ export default class TicketDetail extends Component<{}, TicketDetailState> {
</AtButton> </AtButton>
</AtForm> </AtForm>
</AtFloatLayout> </AtFloatLayout>
<AtFloatLayout
isOpened={this.state.showReminderLayout}
title={pt.get().ticketDetail.reminder.title}
onClose={this.handleReminderCancel.bind(this)}
>
<AtForm onSubmit={this.onReminderSubmit.bind(this)}>
<AtCheckbox
options={this.reminderOption}
selectedList={this.state.reminderList}
onChange={this.handleReminderChange.bind(this)}
/>
<AtButton
loading={this.state.isReminderLoading}
formType='submit'
type='primary'
disabled={this.state.isReminderDisable}
>
{pt.get().button.buttonText.submit}
</AtButton>
</AtForm>
</AtFloatLayout>
<AtActionSheet <AtActionSheet
isOpened={this.state.showStatusSheet} isOpened={this.state.showStatusSheet}
cancelText={pt.get().ticketDetail.status.cancel} cancelText={pt.get().ticketDetail.status.cancel}

View File

@ -22,6 +22,9 @@ export interface TicketDetailText {
pick: string; pick: string;
status: string; status: string;
}; };
reminder: {
title: string;
};
comment: { comment: {
title: string; title: string;
placeholder: string; placeholder: string;
@ -72,6 +75,9 @@ export const ticketDetailZhCn: TicketDetailText = {
createTicketMessage: '创建了维修', createTicketMessage: '创建了维修',
statusModifyPrefix: '将维修状态改为:', statusModifyPrefix: '将维修状态改为:',
}, },
reminder: {
title: '注意事项!',
},
status: { status: {
title: '请选择要改变成为的状态', title: '请选择要改变成为的状态',
cancel: '取消', cancel: '取消',
@ -117,6 +123,9 @@ export const ticketDetailEnUs: TicketDetailText = {
createTicketMessage: 'Created ticket', createTicketMessage: 'Created ticket',
statusModifyPrefix: 'Modified repair status to: ', statusModifyPrefix: 'Modified repair status to: ',
}, },
reminder: {
title: 'Reminder',
},
status: { 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',