@aliretail/react-materials-components
Version:
168 lines (155 loc) • 5.06 kB
JavaScript
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;