提交 88b03011 authored 作者: 钟是志's avatar 钟是志

增加pdf文件预览的函数

上级 d203495f
......@@ -9,6 +9,7 @@ import {
getColumnsDataRealize,
getColumnsSqlKeyRealize,
getWord,
getFileAndShow,
renderContentAll,
renderContentRow, downloadFile,
} from './globalFunction';
......@@ -39,19 +40,30 @@ export function giveSmartFormGlobalProps({
getColumnsDataRealize,
getColumnsSqlKeyRealize,
getWord,
getFileAndShow,
downloadFile,
renderContentAll,
renderContentRow,
remark: {
downloadFile: '下载文件函数.',
'giveFilePostDataInfoForTrue(params, url) ': `将接口参数 二进制文件化 并返回新的接口地址与参数';`,
'getSpanJson(mergeKey, data, eliminateStr)': `列表获取纵向合并数据 ;参数-> mergeKey : 需要合并的表头key data : 列表数据 eliminateStr : 需要忽略合并的数据`,
'getColumns(columns)': `获取ant表头的属性 ;参数->columns : ant的表头`,
'getColumnsDataRealize({data, mergeKey, columns, styles, defect, fileName, ext , eliminateStr})': `下载列表合并的数据;参数-> 前三个必填data, mergeKey, columns`,
'getColumnsSqlKeyRealize({sqlKey, columns, styles, fileName, ext})': `下载列表表头合并的数据;参数->前两个个必填sqlKey, columns`,
'getWord({templatePath,params, title, allValues, listConfig, ext})': `下载文档地址 ;参数->前五个必填 templatePath,params, title, allValues, listConfig`,
'renderContentAll(value, row, index, key, spanData, cloumnNames) ': `ant表头横向、纵向合并 ;参数->所有必填 value, row, index, key, spanData, cloumnNames 实例:render:(value, row, index)=>{return renderContentAll(value, row, index,"inst_name",spanData,cloumnNames)}`,
'renderContentRow(value, row, index, key, spanData, cloumnNames) ': `ant表头纵向合并 ;参数->所有必填 value, row, index, key, spanData, cloumnNames 实例:render:(value, row, index)=>{return renderContentRow(value, row, index,"inst_name",spanData,cloumnNames)}`,
'giveFilePostDataInfoForTrue(params, url) ':
`将接口参数 二进制文件化 并返回新的接口地址与参数';`,
'getSpanJson(mergeKey, data, eliminateStr)':
`列表获取纵向合并数据 ;参数-> mergeKey : 需要合并的表头key data : 列表数据 eliminateStr : 需要忽略合并的数据`,
'getColumns(columns)':
`获取ant表头的属性 ;参数->columns : ant的表头`,
'getColumnsDataRealize({data, mergeKey, columns, styles, defect, fileName, ext , eliminateStr})':
`下载列表合并的数据;参数-> 前三个必填data, mergeKey, columns`,
'getColumnsSqlKeyRealize({sqlKey, columns, styles, fileName, ext})':
`下载列表表头合并的数据;参数->前两个个必填sqlKey, columns`,
'getWord({templatePath,params, title, allValues, listConfig, ext})':
`下载文档地址 ;参数->前五个必填 templatePath,params, title, allValues, listConfig`,
'getFileAndShow({templatePath,params, title, allValues, listConfig, ext})':
`下载一个文件并直接展示出来地址 ;参数->前五个必填 templatePath,params, title, allValues, listConfig`,
'renderContentAll(value, row, index, key, spanData, cloumnNames) ':
`ant表头横向、纵向合并 ;参数->所有必填 value, row, index, key, spanData, cloumnNames 实例:render:(value, row, index)=>{return renderContentAll(value, row, index,"inst_name",spanData,cloumnNames)}`,
'renderContentRow(value, row, index, key, spanData, cloumnNames) ':
`ant表头纵向合并 ;参数->所有必填 value, row, index, key, spanData, cloumnNames 实例:render:(value, row, index)=>{return renderContentRow(value, row, index,"inst_name",spanData,cloumnNames)}`,
},
},
activeJsonConfig: {}, // 27282 双选会报名后管理员修改举办时间 但是单位申请信息么有随着更新
......
import { useState } from 'react';
import { Modal } from 'antd';
import { giveFilePostDataInfoForTrue } from '@/webPublic/one_stop_public/Base16';
import { queryOauthActionPath } from '@/webPublic/one_stop_public/utils/queryConfig';
import { getToken } from '@/webPublic/one_stop_public/utils/token';
......@@ -245,9 +247,9 @@ export function getColumns(columns) {
columnsHeight,
};
}
/**
*
*
* @param {sqlKey,columns,styles,fileName,ext,allValues} param
* 表头和sql数据导出(表头合并表格,数据不合并表格)
* sqlKey : 数据sql编码
......@@ -333,10 +335,10 @@ export function getColumnsSqlKeyRealize({
console.table(err);
}
}
/**
*
* @param {data,columns,styles,defect,fileName,ext,url,eliminateRow,eliminateCol} param
*
* @param {data,columns,styles,defect,fileName,ext,url,eliminateRow,eliminateCol} param
* 表头和数据导出(合并表格)
* data : ant基础数据
* columns : ant表头基础数据
......@@ -347,7 +349,7 @@ export function getColumnsSqlKeyRealize({
* url : 接口地址
* eliminateRow : 列需要忽略合并的数据
* eliminateCol : 行需要忽略合并的数据
*
*
*/
export function getColumnsDataRealize({
data = [],
......@@ -588,6 +590,70 @@ export function getWord({
}
}
/**
* 表头和数据导出(合并表格)
* templatePath : word文档模板地址
* params : word文档的替换参数
* title : 导出文件名
* allValues : sql参数
* listConfig : 导出列表配置
* ext : 导出后缀 目前xecl、dbf,docx,pdf
* 返回值
* */
export function getFileAndShow({
templatePath,
params,
title,
allValues = {},
listConfig = {},
ext = 'docx',
}) {
try {
let getFileData = giveFilePostDataInfoForTrue(
{
templatePath: templatePath,
params: JSON.stringify({
...listConfig,
...setObjectKey(params),
}),
title: `${title}.${ext}`,
allValues: JSON.stringify({ ...allValues }),
},
apiUrl + `/DataColumnApi/exportWord`,
);
let token = getToken();
downloadFileAndShowModal(
getFileData.url,
{
...getFileData.datas,
token: token,
},
title,
ext,
);
} catch (err) {
console.table(err);
}
//可更新的
function setObjectKey(data) {
return (
Object.keys(data)
//.filter((key) => data[key] !== null && data[key] !== undefined)
.reduce(
(acc, key) => ({
...acc,
['${' + key + '}']: data[key] === null ? '' : data[key],
}),
{},
)
);
}
}
// 下载附件FormdataWrapper
function isObject(value) {
return value === Object(value);
......@@ -664,3 +730,57 @@ export function downloadFile(url, params, fileName = '导出文件', ext = 'xlsx
return true;
});
}
export function downloadFileAndShowModal(url, params, fileName = '导出文件', ext = 'xlsx') {
// console.log("downloadFile",url);
fetch(url, {
method: 'POST',
body: FormdataWrapper(params),
headers: {
Authorization: `bearer ${localStorage.getItem('antd-pro-token-onestop')}`,
},
})
.then((res) => {
if (res.status + '' !== '200') {
return res.json();
} else {
return res.blob();
}
})
.then((data) => {
if (data instanceof Blob) {
let url = window.URL.createObjectURL(data);
let filename = fileName + '.' + ext;
Modal.info({
title: filename,
width: 1000,
content: <div>
<embed width='100%'
height='568px'
name='plugin'
id='pdfView'
src={url}
type='application/pdf'
internalinstanceid='3'
title={filename}/>
</div>,
okText: '确定',
onCancel: () => {
window.URL.revokeObjectURL(url);
},
onOk: () => {
window.URL.revokeObjectURL(url);
},
});
} else {
}
})
.catch((err) => {
console.log(err);
})
.finally(() => {
return true;
});
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论