|
|
@ -17,12 +17,14 @@ function ExportBtn(props) { |
|
|
|
|
|
|
|
const { |
|
|
|
children, |
|
|
|
className, |
|
|
|
modalType = "hasImg", // 初始导出弹框显示方式,hasImg显示含图导出,noImg显示无图导出, portrait 导出失败人像 |
|
|
|
totalRecords = 100, // 可导出总数 |
|
|
|
exportUrl = "http://192.168.8.7:3001/mock/2995/api/v1/common/export", // 点击导出请求的接口 |
|
|
|
ajaxType = "post", // 请求导出链接方式 |
|
|
|
postdata = {}, // post 传参数 传参格式: {formData:(pn,page_size),other:{}} |
|
|
|
timeDelay = 300, |
|
|
|
pageName, |
|
|
|
imgno = true // 是否支持有图导出 true 含图和无图导出 false 只有无图导出 |
|
|
|
} = props; |
|
|
|
|
|
|
@ -105,7 +107,32 @@ function ExportBtn(props) { |
|
|
|
|
|
|
|
// [导出当前页,导出全部,导出指定条数]----选项 |
|
|
|
const options = [ |
|
|
|
{ label: "导出全部 (全部导出需等待较长时间,请耐心等候) ", value: "2" } |
|
|
|
{ label: "导出当前页", value: "1" }, |
|
|
|
{ |
|
|
|
label: ( |
|
|
|
<div className='piecewise'> |
|
|
|
<span>导出</span> |
|
|
|
<div className='countInput'> |
|
|
|
<InputNumber |
|
|
|
key="min" |
|
|
|
min={1} |
|
|
|
value={min} |
|
|
|
onChange={(e) => handleChangeNum(e, "min")} |
|
|
|
/> |
|
|
|
~ |
|
|
|
<InputNumber |
|
|
|
key="max" |
|
|
|
min={1} |
|
|
|
value={max} |
|
|
|
onChange={(e) => handleChangeNum(e, "max")} |
|
|
|
/> |
|
|
|
</div> |
|
|
|
<div className='count'>{Math.abs(max - min + 1)}条</div> |
|
|
|
</div> |
|
|
|
), |
|
|
|
value: "3", |
|
|
|
}, |
|
|
|
{ label: "导出全部", value: "2" } |
|
|
|
]; |
|
|
|
|
|
|
|
// 导出确认 |
|
|
@ -134,9 +161,9 @@ function ExportBtn(props) { |
|
|
|
} |
|
|
|
//当前页 |
|
|
|
else if (checkedType == 1) { |
|
|
|
const { pn, length } = postdata.formData |
|
|
|
const { pn, length, page_size } = postdata.formData |
|
|
|
console.log(postdata.formData) |
|
|
|
startExport((pn - 1) * length + 1, pn * length, exportType == "hasImg" ? 1 : 0) |
|
|
|
startExport((pn - 1) * (length || page_size) + 1, pn * (length || page_size) , exportType == "hasImg" ? 1 : 0) |
|
|
|
} |
|
|
|
//全部 |
|
|
|
else { |
|
|
@ -152,8 +179,18 @@ function ExportBtn(props) { |
|
|
|
let url = exportUrl; |
|
|
|
if (imgno) { |
|
|
|
ajax({ url, type: ajaxType, data: { export_type: checkedType, start, end, isimg:exportType == "hasImg" ? 1 : 0, ...formData, ...other } }).then((res) => { |
|
|
|
if (pageName == 'parkingOverview') { |
|
|
|
downloadFile(res.export_url) |
|
|
|
handleCancel() |
|
|
|
setBtnLoading(false); |
|
|
|
return |
|
|
|
} |
|
|
|
if (res.status === 20000) { |
|
|
|
downloadFile(res.data.url) |
|
|
|
if (end - start > 500) { |
|
|
|
message.info('当前导出任务, 已加入导出任务列表') |
|
|
|
} else { |
|
|
|
downloadFile(res.data.url || res.data.export_url) |
|
|
|
} |
|
|
|
handleCancel() |
|
|
|
// 成功 res.data.task_url |
|
|
|
// setInProcess("2"); |
|
|
@ -170,8 +207,18 @@ function ExportBtn(props) { |
|
|
|
}); |
|
|
|
} else { |
|
|
|
ajax({ url, type: ajaxType, data: { export_type: checkedType, start, end, isimg:0, ...formData, ...other } }).then((res) => { |
|
|
|
if (pageName == 'parkingOverview') { |
|
|
|
downloadFile(res.export_url) |
|
|
|
handleCancel() |
|
|
|
setBtnLoading(false); |
|
|
|
return |
|
|
|
} |
|
|
|
if (res.status === 20000) { |
|
|
|
downloadFile(res.data.url || res.data.export_url) |
|
|
|
if (end - start > 500) { |
|
|
|
message.info('当前导出任务, 已加入导出任务列表') |
|
|
|
} else { |
|
|
|
downloadFile(res.data.url || res.data.export_url) |
|
|
|
} |
|
|
|
handleCancel() |
|
|
|
// setInProcess("2"); |
|
|
|
// setProcess(res.data?.task_url) |
|
|
@ -287,7 +334,7 @@ function ExportBtn(props) { |
|
|
|
<div className='titleLine' /> |
|
|
|
</div> |
|
|
|
<div className='export-content'> |
|
|
|
<div className='mode'> |
|
|
|
{/* <div className='mode'> |
|
|
|
{EXPORT_TYPE.map((item) => ( |
|
|
|
<div |
|
|
|
key={item.value} |
|
|
@ -308,7 +355,7 @@ function ExportBtn(props) { |
|
|
|
}px)`, |
|
|
|
}} |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> */} |
|
|
|
<div className='options'> |
|
|
|
<Radio.Group value={checkedType} onChange={onOptionChange}> |
|
|
|
<Space direction="vertical" size={10}> |
|
|
@ -331,13 +378,14 @@ function ExportBtn(props) { |
|
|
|
</Space> |
|
|
|
</Radio.Group> |
|
|
|
</div> |
|
|
|
{/* <div className='alert'> |
|
|
|
<div className='alert'> |
|
|
|
<ExclamationCircleFilled className='alertIcon' /> |
|
|
|
<div className='message'> |
|
|
|
<div>分段导出每次最多支持导出<span style={{color:'#3B97FF'}}> {maxExportNum} </span>条</div> |
|
|
|
<div>本次查询包含<span style={{color:'#3B97FF'}}> {totalRecords} </span>条数据可供导出</div> |
|
|
|
<div>导出文件将加入导出下载列表</div> |
|
|
|
{/* <div>分段导出每次最多支持导出<span style={{color:'#3B97FF'}}> {maxExportNum} </span>条</div> */} |
|
|
|
{/* <div>本次查询包含<span style={{color:'#3B97FF'}}> {totalRecords} </span>条数据可供导出</div> */} |
|
|
|
</div> |
|
|
|
</div> */} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
)} |
|
|
|