vue无需引入第三方, 将web页面内容直接下载为docx
将web页面内容重绘 html ,通过 a 标签直接下载
通过写行内样式,控制docx中的文字图效果
let echHtmlWithIf = '';if (this.chartImg.length) {if (this.exceed10Min) {echHtmlWithIf += `<div v-if="exceed10Min" id="chartId">` +this.chartImg.map(item => `<img src="${item.src}" width="550"/>`)+ `</div>`;} else {echHtmlWithIf += ` <p v-else class="ml20" style="margin-left: 20px;">报告生成中,预计 ` + this.Dshowtime + `分钟后生成。</p>`;}} else {echHtmlWithIf = "暂无相关数据"}let img0 = false, img2 = false, img4 = falselet img0html = `<img src="${this.img64[0]}" width="550" />`,img2html = `<img src="${this.img64[1]}" width="550" />`,img4html = `<img src="${this.img64[2]}" width="550" />`this.nullImgs.forEach(e => {if (e == 0) {img0 = true} else if (e == 2) {img2 = true} else if (e == 4) {img4 = true}});if (img0) {img0html = `<img src="${this.errorImgurl}" width="200">`}if (img2) {img2html = `<img src="${this.errorImgurl}" width="200">`}if (img4) {img4html = `<img src="${this.errorImgurl}" width="200">`}const html = `
<html><body><div id="pcContract"><p style="text-align: center;font-size: 24px; font-weight: bold; line-height: 60px;">关于${this.alarm.monitorPoint.name}限高架发生碰撞报警的报告</p><p class="ar-contit" style="font-size: 20px; font-weight: bold; line-height: 60px;">一、告警通知</p><div class="ar-context ml20" style="text-indent: 2em;margin: 10px 0;">${this.alarm.remark}</div><div class="ar-context ml20" style="text-indent: 2em;margin: 10px 0;"> 经核实,以上告警为:${this.remarkText} ,碰撞程度为:${this.resultText}。</div><p style="font-size: 20px; font-weight: bold; line-height: 60px;">二、监测数据</p><p style="font-size: 18px; font-weight: bold; line-height: 60px;margin-bottom: 40px;">2.1视频监测图片:</p><div><div style="text-align: center;margin-bottom: 20px;">${img0html}<p>碰撞前</p></div><div style="text-align: center;margin-bottom: 20px;">${img2html}<p>碰撞中</p></div><div style="text-align: center;margin-bottom: 20px;">${img4html}<p>碰撞后</p></div></div><p style="font-size: 18px; font-weight: bold; line-height: 60px; margin-bottom: 40px;">2.2 加速度监测曲线:</p><div>${echHtmlWithIf}</div><p class="dateP" style="text-align: right; line-height: 60px;">${this.alarmDate}</p></div></body>
</html>
`;this.html = html// 导出const blob = new Blob([html], {type: 'application/msword',});const link = document.createElement('a');link.download = `关于${this.alarm.monitorPoint.name}限高架发生碰撞报警的报告.docx`;link.href = URL.createObjectURL(blob);link.click();