使用vue-print-nb打印el-table問題總結(jié)
使用vue-print-nb打印el-table問題總結(jié)
css樣式添加媒體查詢 @media print {} 樣式只有在打印的時候才會生效
1、解決單選框復(fù)選框打印時選中消失的問題
@media print {
// 解決單選框復(fù)選框打印時選中消失的問題
::v-deep .el-radio__input,
::v-deep .el-checkbox__input {
-webkit-print-color-adjust: exact;
-moz-print-color-adjust: exact;
color-adjust: exact;
}
}2、解決表格打印時表格顯示不全的問題
// 解決表格打印時表格顯示不全的問題
::v-deep table {
table-layout: auto !important;
}
::v-deep .el-table__header-wrapper .el-table__header {
width: 99% !important;
}
::v-deep .el-table__body-wrapper .el-table__body {
width: 98% !important;
}
::v-deep #print table {
table-layout: fixed !important;
}
::v-deep .el-table__fixed {
display: none;
}3、解決table 序號打印錯亂問題
::v-deep .el-table .el-table__cell.is-hidden > * {
visibility: visible;
font-size: 12px;
}4、不需要打印的內(nèi)容 在標(biāo)簽上添加class名 noPrint 即可
.noPrint {
display: none;
}
@page {
size: auto;
// margin: 3mm; // 頁邊距
}其他打印樣式
// form 表單打印樣式調(diào)整
::v-deep .el-form-item__label {
padding: 0;
width: 90px !important;
}
::v-deep .el-form-item__content {
margin-left: 90px !important;
}
::v-deep .el-select__caret {
opacity: 0;
}
::v-deep .el-form-item__label {
padding: 0;
width: 90px !important;
}
// 清除input邊框
::v-deep .el-input__inner {
max-width: 180px;
padding: 0px;
border: 0;
}
::v-deep .el-table {
.el-input__inner {
display: none;
}
}
// el-select 多選清除邊距,icon和背景
::v-deep .el-input__icon {
display: none;
}
::v-deep .el-tag {
padding: 0;
border-width: 0;
}
::v-deep .el-tag__close {
display: none;
}補(bǔ)充:
vue-print-nb 打印功能總結(jié)
一、安裝vue-print-nb
1 vue2安裝 npm install vue-print-nb --save
2 vue3 安裝 npm install vue3-print-nb --save
二、引入Vue項目
vue2 引入方式
// 1. 全局掛載
import Print from 'vue-print-nb'
Vue.use(Print)
// or
// 2. 自定義指令
import print from 'vue-print-nb'
directives: {
print
}vue3 引入方式
// 1. 全局掛載
import { createApp } from 'vue'
import App from './App.vue'
import print from 'vue3-print-nb'
const app = createApp(App)
app.use(print)
app.mount('#app')
// or
// 2. 自定義指令
import print from 'vue3-print-nb'
directives: {
print
}三、參數(shù)說明

四、應(yīng)用
template示例
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<h2>Essential Links</h2>
// 局部打印文本以及按鈕
<div id="printArea">Print Area</div>
<button v-print="print">Print!</button>
<ul>
<li>
<a
rel="external nofollow"
target="_blank"
>
Core Docs
</a>
</li>
<li>
<a
rel="external nofollow"
target="_blank"
>
Forum
</a>
</li>
<li>
<a
rel="external nofollow"
target="_blank"
>
Community Chat
</a>
</li>
<li>
<a
rel="external nofollow"
target="_blank"
>
Twitter
</a>
</li>
<br>
<li>
<a
rel="external nofollow"
target="_blank"
>
Docs for This Template
</a>
</li>
</ul>
<h2>Ecosystem</h2>
<ul>
<li>
<a
rel="external nofollow"
target="_blank"
>
vue-router
</a>
</li>
<li>
<a
rel="external nofollow"
target="_blank"
>
vuex
</a>
</li>
<li>
<a
rel="external nofollow"
target="_blank"
>
vue-loader
</a>
</li>
<li>
<a
rel="external nofollow"
target="_blank"
>
awesome-vue
</a>
</li>
</ul>
</div>
</template>script示例:
export default {
name: 'HelloWorld',
data () {
let that = this
return {
msg: 'Welcome to Your Vue.js App',
print: {
id: 'printArea',
popTitle: '配置頁眉標(biāo)題', // 打印配置頁上方的標(biāo)題
extraHead: '打印', // 最上方的頭部文字,附加在head標(biāo)簽上的額外標(biāo)簽,使用逗號分割
preview: true, // 是否啟動預(yù)覽模式,默認(rèn)是false
previewTitle: '預(yù)覽的標(biāo)題', // 打印預(yù)覽的標(biāo)題
previewPrintBtnLabel: '預(yù)覽結(jié)束,開始打印', // 打印預(yù)覽的標(biāo)題下方的按鈕文本,點(diǎn)擊可進(jìn)入打印
zIndex: 20002, // 預(yù)覽窗口的z-index,默認(rèn)是20002,最好比默認(rèn)值更高
previewBeforeOpenCallback () { console.log('正在加載預(yù)覽窗口!'); console.log(that.msg, this) }, // 預(yù)覽窗口打開之前的callback
previewOpenCallback () { console.log('已經(jīng)加載完預(yù)覽窗口,預(yù)覽打開了!') }, // 預(yù)覽窗口打開時的callback
beforeOpenCallback () { console.log('開始打印之前!') }, // 開始打印之前的callback
openCallback () { console.log('執(zhí)行打印了!') }, // 調(diào)用打印時的callback
closeCallback () { console.log('關(guān)閉了打印工具!') }, // 關(guān)閉打印的callback(無法區(qū)分確認(rèn)or取消)
clickMounted () { console.log('點(diǎn)擊v-print綁定的按鈕了!') },
// url: 'http://localhost:8080/', // 打印指定的URL,確保同源策略相同
// asyncUrl (reslove) {
// setTimeout(() => {
// reslove('http://localhost:8080/')
// }, 2000)
// },
standard: '',
extarCss: ''
}
}
}
}五、注意點(diǎn)
Callback函數(shù)中this指向當(dāng)前print object對象,that返回Vue對象;
不需要頁眉頁腳可以在打印彈窗頁面的更多設(shè)置里面取消選擇;
不設(shè)置popTitle參數(shù)頁眉標(biāo)題為undifined;
popTitle參數(shù)為空時,頁眉標(biāo)題默認(rèn)為Document Title。
六、打印樣式設(shè)置
/*
***設(shè)置打印內(nèi)容樣式,不影響頁面原有樣式
***以下內(nèi)容為設(shè)置element table在打印時的樣式,防止打印不全*/
@page {
size: auto;
margin: 3mm;
}
@media print {
html {
background-color: #ffffff;
height: auto;
margin: 0px;
}
body {
border: solid 1px #ffffff;
/* margin: 10mm 15mm 10mm 15mm; */
}
#print table {
table-layout: auto !important;
}
#print .el-table__header-wrapper .el-table__header {
width: 100% !important;
border: solid 1px #f2f2f2;
}
#print .el-table__body-wrapper .el-table__body {
width: 100% !important;
border: solid 1px #f2f2f2;
}
#print #pagetable table {
table-layout: fixed !important;
}
#print .el-table__empty-block {
width: 100% !important;
height: auto !important;
}
#print .el-input-number--small{
width: 100% !important;
}
}七 window.print() 瀏覽器打印功能
js 執(zhí)行 window.print() 就會調(diào)用谷歌瀏覽器的打印功能。
到此這篇關(guān)于使用vue-print-nb打印el-table問題總結(jié)的文章就介紹到這了,更多相關(guān)vue-print-nb打印el-table內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue+iview+less+echarts實(shí)戰(zhàn)項目總結(jié)
本篇文章是作者通過學(xué)習(xí)vue+iview+less+echarts制作一個小系統(tǒng)后,做的心得以及遇到的坑的總結(jié),值得大家學(xué)習(xí)參考。2018-02-02
關(guān)于vue中路由的跳轉(zhuǎn)和參數(shù)傳遞,參數(shù)獲取
這篇文章主要介紹了關(guān)于vue中路由的跳轉(zhuǎn)和參數(shù)傳遞,參數(shù)獲取方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Vue項目中實(shí)現(xiàn)ElementUI按需引入過程解析
這篇文章主要介紹了Vue項目中實(shí)現(xiàn)ElementUI按需引入,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
vue3緩存頁面keep-alive及路由統(tǒng)一處理詳解
當(dāng)我們不想每次跳轉(zhuǎn)路由都會重新加載頁面時(重新加載頁面很耗時),就可以考慮使用keep-alive緩存頁面了,這篇文章主要給大家介紹了關(guān)于vue3緩存頁面keep-alive及路由統(tǒng)一處理的相關(guān)資料,需要的朋友可以參考下2021-10-10
如何通過Vue自帶服務(wù)器實(shí)現(xiàn)Ajax請求跨域(vue-cli)
從A頁面訪問到B頁面,并且要獲取到B頁面上的數(shù)據(jù),而兩個頁面所在的端口、協(xié)議和域名中哪怕有一個不對等,那么這種行為就叫跨域,這篇文章給大家介紹如何通過Vue自帶服務(wù)器實(shí)現(xiàn)Ajax請求跨域(vue-cli),感興趣的朋友一起看看吧2023-10-10
詳細(xì)講解如何創(chuàng)建, 發(fā)布自己的 Vue UI 組件庫
當(dāng)我們自己開發(fā)了一個 _UI Component_, 需要在多個項目中使用的時候呢? 我們首先想到的可能是直接復(fù)制一份過去對嗎?我們?yōu)槭裁床话l(fā)布一個 UI 組件庫給自己用呢?下面小編和大家來一起學(xué)習(xí)下吧2019-05-05

