UNPKG

@aliretail/react-materials-components

Version:
168 lines (155 loc) 5.06 kB
import _Pagination from "@alifd/next/es/pagination"; import _Table from "@alifd/next/es/table"; import _Message from "@alifd/next/es/message"; import _Progress from "@alifd/next/es/progress"; import _Icon from "@alifd/next/es/icon"; import _Button from "@alifd/next/es/button"; import React, { useCallback, useEffect, useState, forwardRef, useImperativeHandle } from 'react'; import PropTypes from 'prop-types'; import QueryInfo from "./QueryInfo"; import dayjs from 'dayjs'; var classPrefix = 'data-export-history-panel-'; var renderDownload = function renderDownload(record, doExport) { switch (record.status) { case 'fail': { return /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(_Button, { onClick: function onClick() { return doExport(record.exportQuery); }, text: true, type: "primary" }, "\u91CD\u65B0\u5BFC\u51FA"), /*#__PURE__*/React.createElement("span", { className: classPrefix + "status-error" }, /*#__PURE__*/React.createElement(_Icon, { type: "error", size: "small", style: { color: '#FF3333', marginRight: '3px' } }), "\u5BFC\u51FA\u5931\u8D25")); } case 'finish': { return /*#__PURE__*/React.createElement("a", { href: record.downloadUrl, target: "_blank", rel: "noreferrer" }, "\u4E0B\u8F7D"); } default: { return record.finished < 100 ? /*#__PURE__*/React.createElement(_Progress, { percent: record.finished, size: "small" }) : null; } } }; var History = /*#__PURE__*/forwardRef(function (props, ref) { var onFetchHistory = props.onFetchHistory, doExport = props.doExport, translateQuery = props.translateQuery; var pageSize = 10; var _useState = useState(1), currentPage = _useState[0], setCurrentPage = _useState[1]; var _useState2 = useState(0), total = _useState2[0], setTotal = _useState2[1]; var _useState3 = useState([]), list = _useState3[0], setList = _useState3[1]; var _useState4 = useState(true), loading = _useState4[0], setLoading = _useState4[1]; var fetchData = useCallback(function (page) { setLoading(true); onFetchHistory(page, pageSize).then(function (response) { setLoading(false); if (response.success) { setCurrentPage(page); setTotal(response.data.total); setList(response.data.list); } else { _Message.show({ type: 'error', title: response.message }); } }, function () { setLoading(false); _Message.show({ type: 'error', title: '获取列表数据失败' }); }); }, [onFetchHistory]); var totalRender = function totalRender() { return "\u5171" + (total || 0) + "\u6761"; }; var redoExport = useCallback(function (query) { doExport(query); fetchData(currentPage); }, [currentPage, doExport, fetchData]); var downloadCell = useCallback(function (value, index, record) { return renderDownload(record, redoExport); }, [redoExport]); var renderQueryCondition = useCallback(function (exportQuery) { var conditon = translateQuery(exportQuery); return /*#__PURE__*/React.createElement(QueryInfo, { data: conditon }); }, [translateQuery]); var renderCreatedTime = useCallback(function (time) { return dayjs(time).format('YYYY-MM-DD HH:mm:ss'); }, []); var refreshHistory = useCallback(function () { fetchData(currentPage); }, [currentPage, fetchData]); useImperativeHandle(ref, function () { return { refreshHistory: refreshHistory }; }); useEffect(function () { fetchData(1); }, [fetchData]); return /*#__PURE__*/React.createElement("div", { className: classPrefix + "container" }, /*#__PURE__*/React.createElement(_Table, { dataSource: list || [], hasBorder: false, loading: loading, isZebra: true }, /*#__PURE__*/React.createElement(_Table.Column, { title: "\u5BFC\u51FA\u4EBA", dataIndex: "creator" }), /*#__PURE__*/React.createElement(_Table.Column, { title: "\u5BFC\u51FA\u65F6\u95F4", dataIndex: "createdTime", cell: renderCreatedTime }), /*#__PURE__*/React.createElement(_Table.Column, { title: "\u67E5\u8BE2\u6761\u4EF6", dataIndex: "exportQuery", cell: renderQueryCondition }), /*#__PURE__*/React.createElement(_Table.Column, { title: "\u4E0B\u8F7D", cell: downloadCell })), /*#__PURE__*/React.createElement(_Pagination, { className: classPrefix + "pagination", defaultCurrent: 1, current: currentPage, total: total, pageSize: pageSize, onChange: fetchData, totalRender: totalRender })); }); History.propTypes = { doExport: PropTypes.func.isRequired, onFetchHistory: PropTypes.func.isRequired, translateQuery: PropTypes.func.isRequired }; export default History;