import { useParams } from 'react-router-dom'
import { useEffect, useState } from 'react'
import { Row, Col, Space, Button, Table, Input, Typography, Modal, Tag, App } from 'antd'
import {
FileOutlined
} from '@ant-design/icons'
import { usingStorage } from '@/hooks/usingStorage'
import useReservationStore from '@/stores/Reservation'
import { useTranslation } from 'react-i18next'
import BackBtn from '@/components/BackBtn'
const { Title, Paragraph } = Typography
const { TextArea } = Input
function Detail() {
const { t } = useTranslation()
const confirmationListColumns = [
{
title: 'Notes & Changes',
dataIndex: 'PCI_Changetext',
},
{
title: t('group:ResSendingDate'),
dataIndex: 'PCI_SendDate',
},
{
title: t('group:ConfirmationDetails'),
render: detailTextRender
},
{
title: t('group:Attachments'),
render: attachmentRender
},
{
title: t('group:ConfirmationDate'),
dataIndex: 'PCI_ConfirmDate',
},
{
title: '',
render: confirmRender
},
];
function detailTextRender(text, confirm) {
const formattedText = confirm.PCI_ConfirmText;//.replace(/\;/g, '\n——————————————————————\n');
return (
{formattedText}
);
}
function attachmentRender(text, confirm) {
return (
<>
{confirm.attachmentList.map(attch => {
return (
}>{attch.file_name}
)}
)}
>
);
}
function confirmRender(text, confirm) {
return (
);
}
const [isModalOpen, setIsModalOpen] = useState(false);
const [confirmLoading, setConfirmLoading] = useState(false);
const [confirmText, setConfirmText] = useState('');
const [newConfirmText, setNewConfirmText] = useState('');
const [dataLoading, setDataLoading] = useState(false);
const { notification } = App.useApp();
const { reservationId } = useParams();
const { travelAgencyId, loginToken } = usingStorage()
const [getReservationDetail, reservationDetail, confirmationList, selectConfirmation, submitConfirmation] =
useReservationStore((state) =>
[state.getReservationDetail, state.reservationDetail, state.confirmationList, state.selectConfirmation, state.submitConfirmation])
const officeWebViewerUrl =
'https://view.officeapps.live.com/op/embed.aspx?wdPrint=1&wdHideGridlines=0&wdHideComments=1&wdEmbedCode=0&src=';
// 测试文档:https://www.chinahighlights.com/public/reservationW220420009.doc
const reservationUrl =
`https://p9axztuwd7x8a7.mycht.cn/service-fileServer/DownloadPlanDoc?GRI_SN=${reservationId}&VEI_SN=${travelAgencyId}&token=${loginToken}&FileType=1`;
const nameCardUrl =
`https://p9axztuwd7x8a7.mycht.cn/service-fileServer/DownloadPlanDoc?GRI_SN=${reservationId}&VEI_SN=${travelAgencyId}&token=${loginToken}&FileType=2`;
const reservationPreviewUrl = officeWebViewerUrl + encodeURIComponent(reservationUrl);
const nameCardPreviewUrl = officeWebViewerUrl + encodeURIComponent(nameCardUrl);
const showConfirmModal = (confirm) => {
setIsModalOpen(true);
const formattedText = confirm.PCI_ConfirmText;//.replace(/\;/g, '\n——————————————————————\n');
setConfirmText(formattedText);
selectConfirmation(confirm);
};
const handleOk = () => {
setConfirmLoading(true);
submitConfirmation(confirmText + '\n——————————————————————\n' +newConfirmText)
.finally(() => {
setNewConfirmText('');
setIsModalOpen(false);
setConfirmLoading(false);
});
};
const handleCancel = () => {
setIsModalOpen(false);
};
useEffect(() => {
setDataLoading(true);
getReservationDetail(reservationId)
.catch(ex => {
notification.error({
message: `Notification`,
description: ex.message,
placement: 'top',
duration: 4,
});
})
.finally(() => {
setDataLoading(false);
});
}, [reservationId]);
return (
<>
{t('group:ConfirmationDetails')}
{confirmText}
{t('group:RefNo')}: {reservationDetail.referenceNumber}; {t('group:ArrivalDate')}: {reservationDetail.arrivalDate};
>
);
}
export default Detail;