usos de vue-print-nb
Instalar vue-print-nb
npm install vue- print- nb -- save
Introducido en main.js
import Print from 'vue-print-nb'
Vue. use ( Print)
Usar vue-print-nb
< el- button v- print= "printObj" > 打印< / el- button>
printObj : {
id : 'print' ,
popTitle : '' ,
extraCss : '' ,
... ...
} ,
< div id= "print" > 这块内容将会被打印< / div>
Resolver el problema de la forma del elemento de impresión incompleto
Debido a que es necesario modificar el código fuente, copie los siguientes archivos directamente y colóquelos en el directorio de recursos del proyecto (copie el archivo node_modules/vue-print-nb/print en el proyecto, no necesariamente en el directorio de recursos, donde desee para decirlo, lo siguiente está en main Solo complete la ruta correspondiente al importar en .js)
Introducido en main.js (el vue-print-nb introducido en main.js antes se puede eliminar)
import Print from './assets/print'
Vue. use ( Print)
Busque print.js en la carpeta de impresión en el directorio de activos para modificar el código y agregar el enlace beforeEntryIframe
new Print ( {
ids : id,
vue,
url : binding. value. url,
standard : '' ,
extraHead : binding. value. extraHead,
extraCss : binding. value. extraCss,
previewTitle : binding. value. previewTitle || '打印预览' ,
zIndex : binding. value. zIndex || 20002 ,
previewPrintBtnLabel : binding. value. previewPrintBtnLabel || '打印' ,
popTitle : binding. value. popTitle,
preview : binding. value. preview || false ,
asyncUrl : binding. value. asyncUrl,
beforeEntryIframe ( ) {
binding. value. beforeEntryIframe && binding. value. beforeEntryIframe ( vue)
} ,
previewBeforeOpenCallback ( ) {
binding. value. previewBeforeOpenCallback && binding. value. previewBeforeOpenCallback ( vue)
} ,
previewOpenCallback ( ) {
binding. value. previewOpenCallback && binding. value. previewOpenCallback ( vue)
} ,
openCallback ( ) {
binding. value. openCallback && binding. value. openCallback ( vue)
} ,
closeCallback ( ) {
binding. value. closeCallback && binding. value. closeCallback ( vue)
} ,
beforeOpenCallback ( ) {
binding. value. beforeOpenCallback && binding. value. beforeOpenCallback ( vue)
}
} ) ;
Encuentre el código de modificación de printarea.js debajo de la carpeta de impresión en el directorio de activos y agregue una línea de código para activar la función beforeEntryIframe anterior
getBody ( ) {
let ids = this . settings. ids;
ids = ids. replace ( new RegExp ( "#" , "g" ) , '' ) ;
this . settings. beforeEntryIframe ( ) ;
this . elsdom = this . beforeHanler ( document. getElementById ( ids) ) ;
let ele = this . getFormData ( this . elsdom) ;
let htm = ele. outerHTML;
return '<body>' + htm + '</body>' ;
}
Modifique el objeto printObj en la página usando vue-print-nb (vue-print-nb arriba usa el paso 3)
printObj : {
id : 'print' ,
popTitle : '' ,
extraCss : '' ,
beforeEntryIframe ( ) {
const cells = document. querySelectorAll ( '.cell' )
const tableNode = document. querySelectorAll ( '.el-table__header,.el-table__body' )
for ( let j = 0 ; j < tableNode. length; j++ ) {
const tableItem = tableNode[ j]
tableItem. style. width = '100%'
const child = tableItem. childNodes
for ( let i = 0 ; i < child. length; i++ ) {
const element = child[ i]
if ( element. localName === 'colgroup' ) {
element. innerHTML = ''
}
}
}
for ( let i = 0 ; i < cells. length; i++ ) {
const cell = cells[ i]
cell. style. width = '100%'
cell. removeAttribute ( 'style' )
}
}
} ,
Después de la modificación, ejecute el código para comprobar el efecto de impresión. Cuando una línea no quepa, el texto se ajustará.