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}