共计 2424 个字符,预计需要花费 7 分钟才能阅读完成。
html
<elTable
:columns="columns"
:download="true"
:dataContent="dataContent"
:detail="false"
@goDetail="goDetail"
@download="download"
@tname="tname"
/>
<a-modal
:visible="showModel1"
title="附件预览"
width="900px"
wrapClassName="modalyl"
maskClosable="true"
@cancel="close1"
>
<div id="center-file" class="center-file" style="margin: auto"></div>
</a-modal>
<a-modal
:visible="showModel2"
title="附件预览"
width="1200px"
wrapClassName="modalyl"
@cancel="close2"
>
<div class="table-html-wrap" v-html="tableHtml"></div>
</a-modal>
子组件 html
<div class="elTable">
<a-table
v-if="
defaultExpandAllRows
? dataContent && dataContent.content && dataContent.content.length > 0
: true
":columns="columns":data-source="dataContent.content":defaultExpandAllRows="defaultExpandAllRows":scroll="{y: '100%'}"
bordered
:pagination="
dataContent && dataContent.content && dataContent.content.length > 10
? pagination
: false
":rowClassName="tableRowClassName":rowKey="
(record, index) => {return record.pc;}
":customRow="customRowClick"@change="handleTableChange"
>
<a slot="templateName" slot-scope="text, record" @click="tname(record)">{{record.templateName}}</a>
</a-table>
tname(item: any) {this.$emit('tname', item);
}
js
import XLSX from 'xlsx';
import {defaultOptions, renderAsync} from 'docx-preview';
columns: any = [
{
title: '模版名称',
dataIndex: 'templateName',
key: 'templateName',
scopedSlots: {customRender: 'templateName'},
ellipsis: true,
}]
async tname(item: any) {
let option = qs.stringify({templateId: item['id'],
});
if (item.objectName.indexOf('docx') !== -1) {
let option = qs.stringify({templateId: item['id'],
});
this.showModel1 = true;
let res: any = await api.downLoadTemplate(option);
document.getElementById('center-file').innerHTML = '';
let blob = new Blob([res], {type: 'application/docx'});
renderAsync(blob, document.getElementById('center-file'), null, {
className: 'docx', // 默认和文档款式类的类名 / 前缀
inWrapper: false, // 启用围绕文档内容渲染包装器
ignoreWidth: false, // 禁止页面渲染宽度
ignoreHeight: false, // 禁止页面渲染高度
ignoreFonts: false, // 禁止字体渲染
breakPages: true, // 在分页符上启用分页
ignoreLastRenderedPageBreak: true, // 禁用 lastRenderedPageBreak 元素的分页
experimental: false, // 启用试验性功能(制表符进行计算)trimXmlDeclaration: false, // 如果为真,xml 申明将在解析之前从 xml 文档中删除
debug: false, // 启用额定的日志记录
});
} else if (item.objectName.indexOf('xlsx') !== -1) {
this.showModel2 = true;
let res: any = await api.downLoadTemplate1(option);
this.tableHtml = '';
let workbook = XLSX.read(new Uint8Array(res), {type: 'array'});
var worksheet = workbook.Sheets[workbook.SheetNames[0]];
var innerHTML = XLSX.utils.sheet_to_html(worksheet);
this.tableHtml = innerHTML;
} else {this.$message.error('此附件暂不反对预览,请下载后查看');
}
}
正文完