使用vue-print-nb打印el-table問題總結(jié)
使用vue-print-nb打印el-table問題總結(jié)
css樣式添加媒體查詢 @media print {} 樣式只有在打印的時候才會生效
1、解決單選框復選框打印時選中消失的問題
@media print { // 解決單選框復選框打印時選中消失的問題 ::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)容 在標簽上添加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; }
補充:
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: '配置頁眉標題', // 打印配置頁上方的標題 extraHead: '打印', // 最上方的頭部文字,附加在head標簽上的額外標簽,使用逗號分割 preview: true, // 是否啟動預(yù)覽模式,默認是false previewTitle: '預(yù)覽的標題', // 打印預(yù)覽的標題 previewPrintBtnLabel: '預(yù)覽結(jié)束,開始打印', // 打印預(yù)覽的標題下方的按鈕文本,點擊可進入打印 zIndex: 20002, // 預(yù)覽窗口的z-index,默認是20002,最好比默認值更高 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ū)分確認or取消) clickMounted () { console.log('點擊v-print綁定的按鈕了!') }, // url: 'http://localhost:8080/', // 打印指定的URL,確保同源策略相同 // asyncUrl (reslove) { // setTimeout(() => { // reslove('http://localhost:8080/') // }, 2000) // }, standard: '', extarCss: '' } } } }
五、注意點
Callback函數(shù)中this指向當前print object對象,that返回Vue對象;
不需要頁眉頁腳可以在打印彈窗頁面的更多設(shè)置里面取消選擇;
不設(shè)置popTitle參數(shù)頁眉標題為undifined;
popTitle參數(shù)為空時,頁眉標題默認為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實戰(zhàn)項目總結(jié)
本篇文章是作者通過學習vue+iview+less+echarts制作一個小系統(tǒng)后,做的心得以及遇到的坑的總結(jié),值得大家學習參考。2018-02-02關(guān)于vue中路由的跳轉(zhuǎn)和參數(shù)傳遞,參數(shù)獲取
這篇文章主要介紹了關(guān)于vue中路由的跳轉(zhuǎn)和參數(shù)傳遞,參數(shù)獲取方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03Vue項目中實現(xiàn)ElementUI按需引入過程解析
這篇文章主要介紹了Vue項目中實現(xiàn)ElementUI按需引入,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05vue3緩存頁面keep-alive及路由統(tǒng)一處理詳解
當我們不想每次跳轉(zhuǎn)路由都會重新加載頁面時(重新加載頁面很耗時),就可以考慮使用keep-alive緩存頁面了,這篇文章主要給大家介紹了關(guān)于vue3緩存頁面keep-alive及路由統(tǒng)一處理的相關(guān)資料,需要的朋友可以參考下2021-10-10如何通過Vue自帶服務(wù)器實現(xiàn)Ajax請求跨域(vue-cli)
從A頁面訪問到B頁面,并且要獲取到B頁面上的數(shù)據(jù),而兩個頁面所在的端口、協(xié)議和域名中哪怕有一個不對等,那么這種行為就叫跨域,這篇文章給大家介紹如何通過Vue自帶服務(wù)器實現(xiàn)Ajax請求跨域(vue-cli),感興趣的朋友一起看看吧2023-10-10詳細講解如何創(chuàng)建, 發(fā)布自己的 Vue UI 組件庫
當我們自己開發(fā)了一個 _UI Component_, 需要在多個項目中使用的時候呢? 我們首先想到的可能是直接復制一份過去對嗎?我們?yōu)槭裁床话l(fā)布一個 UI 組件庫給自己用呢?下面小編和大家來一起學習下吧2019-05-05