93 lines
2.7 KiB
TypeScript
93 lines
2.7 KiB
TypeScript
![]() |
import React, { useEffect, useState } from 'react';
|
||
|
import { Button, Card, Col, Empty, Modal, Row } from 'antd';
|
||
|
import { getRoomId } from '@/utils/session';
|
||
|
import { getReportList } from './service';
|
||
|
|
||
|
const ReportPrint: React.FC<{}> = () => {
|
||
|
//存储list
|
||
|
const [reportPrintList, setReportPrintList] = useState<any>();
|
||
|
|
||
|
useEffect(() => {
|
||
|
//初始化遍历
|
||
|
getReportList(getRoomId()).then((res) => {
|
||
|
let list = res.data;
|
||
|
let arr = Object.keys(list);
|
||
|
let report: any[] = [];
|
||
|
if (arr.length == 0) {
|
||
|
let e = <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />;
|
||
|
report.push(e);
|
||
|
} else {
|
||
|
for (const key in list) {
|
||
|
let e = (
|
||
|
<div>
|
||
|
<Card title={key} style={{ marginBottom: 8 }}>
|
||
|
<Row>
|
||
|
{list[key]?.map((item: any, index: any) => (
|
||
|
<Col span={6}>
|
||
|
<Button
|
||
|
type="text"
|
||
|
key={item.id}
|
||
|
onClick={() => onClickLink(item.url)}
|
||
|
style={{ color: '#b30000', background: 'rgba(0, 0, 0, 0)' }}
|
||
|
>
|
||
|
{index + 1}、{item.dicName}
|
||
|
</Button>
|
||
|
</Col>
|
||
|
))}
|
||
|
</Row>
|
||
|
</Card>
|
||
|
</div>
|
||
|
);
|
||
|
report.push(e);
|
||
|
}
|
||
|
}
|
||
|
setReportPrintList(report);
|
||
|
});
|
||
|
}, []);
|
||
|
|
||
|
useEffect(() => {
|
||
|
window.addEventListener('message', receiveMessage, false); // 监听message事件,用于接收从子页面返回的参数
|
||
|
return () => window.removeEventListener('message', receiveMessage);
|
||
|
}, []);
|
||
|
|
||
|
//点击按钮后的弹窗遮罩
|
||
|
const editLoading = () => {
|
||
|
Modal.info({
|
||
|
title: `文档编辑器打开中,请在弹出窗口打印报表`,
|
||
|
okText: <></>,
|
||
|
okButtonProps: { hidden: true },
|
||
|
cancelButtonProps: { hidden: true },
|
||
|
centered: true,
|
||
|
});
|
||
|
};
|
||
|
|
||
|
//接收子页面返回参数方法
|
||
|
const receiveMessage = async (event: any) => {
|
||
|
if (event !== undefined && event?.data) {
|
||
|
/*文件保存状态*/
|
||
|
if (event?.data != null && event?.data != undefined) {
|
||
|
let FileMsg = event?.data;
|
||
|
if (
|
||
|
FileMsg?.type == 'FROM_NTKO_CLOSE' &&
|
||
|
FileMsg?.text == window.ntkoBrowser.thisNTKOGUID
|
||
|
) {
|
||
|
Modal.destroyAll();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
const onClickLink = (url: string) => {
|
||
|
editLoading();
|
||
|
window.ntkoBrowser.openWindow('/Weboffice4Path.html?path=' + encodeURIComponent(url))
|
||
|
};
|
||
|
|
||
|
return (
|
||
|
<Card bordered={false}>
|
||
|
{reportPrintList}
|
||
|
</Card>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
export default ReportPrint;
|