From abf7ed9fd6a48d79483d78e09989366d2a2a6fc8 Mon Sep 17 00:00:00 2001 From: hyh123a Date: Mon, 18 Apr 2022 16:09:50 +0800 Subject: [PATCH] modfify the ticket agent page --- .../components/MyEMS/Ticket/TicketAgent.js | 118 ++++++++++++++++-- 1 file changed, 110 insertions(+), 8 deletions(-) diff --git a/myems-web/src/components/MyEMS/Ticket/TicketAgent.js b/myems-web/src/components/MyEMS/Ticket/TicketAgent.js index 1109cd75..472f3f7d 100644 --- a/myems-web/src/components/MyEMS/Ticket/TicketAgent.js +++ b/myems-web/src/components/MyEMS/Ticket/TicketAgent.js @@ -17,7 +17,13 @@ import { UncontrolledDropdown, Spinner, CustomInput, - Button + Button, + Modal, + ModalHeader, + ModalBody, + ModalFooter, + InputGroup, + InputGroupText } from 'reactstrap'; import Cascader from 'rc-cascader'; import loadable from '@loadable/component'; @@ -58,6 +64,9 @@ const TicketAggent = ({ setRedirect, setRedirectUrl, t }) => { const [ticketList, setTicketList] = useState([]); const [ticketApplicationfields, setTicketApplicationfields] = useState({}); + const [applyModalIsShown, setApplyModalIsShown] = useState(false); + const [ticketApplicationPayload, setTicketApplicationPayload] = useState({}); + const [selectedSpaceName, setSelectedSpaceName] = useState(undefined); const [cascaderOptions, setCascaderOptions] = useState(undefined); const [equipmentList, setEquipmentList] = useState([]); @@ -234,8 +243,8 @@ const TicketAggent = ({ setRedirect, setRedirectUrl, t }) => { setSelectedTicketType(target.value); }; - let applyTicket = () => { - console.log("You apply the ticket!!", selectedTicketType); + let searchTicket = () => { + console.log('You search the ticket!!', selectedTicketType); let isResponseOK = false; fetch(APIBaseURL + '/ticket/apply/' + selectedTicketType, { @@ -263,22 +272,84 @@ const TicketAggent = ({ setRedirect, setRedirectUrl, t }) => { .catch(err => { console.log(err); }); - }; - + setApplyModalIsShown(true); + }; + + // Submit + let submitApplication = target => { + hiddenModal(); + console.log('You submit the ticket.'); + let temp = { + transition_id: ticketApplicationfields.transition_id, + workflow_id: ticketApplicationfields.workflow_id + }; + setTicketApplicationPayload({ ...ticketApplicationPayload, ...temp }); + console.log('submit----', ticketApplicationPayload); + + let isResponseOK = false; + fetch(APIBaseURL + '/ticket/apply/' + selectedTicketType, { + method: 'POST', + headers: { + 'Content-type': 'application/json' + }, + body: JSON.stringify(ticketApplicationPayload) + }) + .then(response => { + console.log(response); + if (response.ok) { + isResponseOK = true; + } + return response.json(); + }) + .then(json => { + if (isResponseOK) { + console.log('Submit /ticket/apply', json); + } else { + toast.error(json.description); + } + }) + .catch(err => { + console.log(err); + }); + }; + + let hiddenModal = () => { + setApplyModalIsShown(false); + }; + + let onFieldChange = (index, { target }) => { + let temp = {}; + // console.log('onFieldChange', e.value); + temp[index] = target.value; + setTicketApplicationPayload({ ...ticketApplicationPayload, ...temp }); + }; + useEffect(() => { console.log('selectedTicketType', selectedTicketType); }, [selectedTicketType]); useEffect(() => { console.log('ticketApplicationfields', ticketApplicationfields); + let temp = { + transition_id: ticketApplicationfields.transition_id, + workflow_id: ticketApplicationfields.workflow_id + }; + setTicketApplicationPayload({ ...ticketApplicationPayload, ...temp }); }, [ticketApplicationfields]); + useEffect(() => { + console.log('applyModalIsShown', applyModalIsShown); + }, [applyModalIsShown]); + + useEffect(() => { + console.log('ticketApplicationPayload', ticketApplicationPayload); + }, [ticketApplicationPayload]); return (
{t('Ticket')} - {t('My Application')} + {t('My Aggent')}
@@ -305,15 +376,46 @@ const TicketAggent = ({ setRedirect, setRedirectUrl, t }) => { icon="external-link-alt" transform="shrink-3 down-2" color="falcon-default" - onClick={applyTicket} + onClick={searchTicket} > - {t('Apply')} + {t('Search')} + + {t('Ticket Application')} + + {ticketApplicationfields.fields && + ticketApplicationfields.fields.map((field, index) => { + if (field.field_type === 'input') { + return ( + + {field.field_name} + + + ); + } else if (field.field_type === 'text_area') { + return ( + + {field.field_name} +