首页 > 其他分享 >在elementUI-admin中使用printjs进行打印功能的处理

在elementUI-admin中使用printjs进行打印功能的处理

时间:2023-06-05 10:14:14浏览次数:30  
标签:printjs args elementUI admin 打印 js dataObj print properties

1.需要加入依赖

npm install print-js --save-dev

2.通过数据的处理打印表格(推荐)

在utils文件夹下创建print.js文件

import printJS from "print-js"; /**  *  * @param {  *      title:"", // 表名  *      serial:false, // 是否需要序号  *      data:[], // 要打印的数据  *      fields:[], // 需要打印的字段  *      properties:[ //可不传,不穿的话是默认打印出来表单中的所有信息  *          {  *              field:"字段名(对应fields)",  *              displayName:"打印时展示的中文表头名字",  *              columnSize:"定义列宽,用百分比来表示大小,可不传"  *          }  *      ],  * } args  *    */ function printJson(args = {}) {     let data = [];     for(const dataItem of args.data){         let dataObj = {}         let no = 0;         if (args.serial) {// 如果需要序列号则是列表index+1             dataObj.serial = no + 1         }         for(const element of args.fields){             if(typeof(dataItem[element.columItemName])==="boolean"){                 dataItem?dataObj[element.columItemName]="是":dataObj[element.columItemName]="否"//将布尔类型转换成字符串,方便直观的看到             }else{                 dataObj[element.columItemName] = dataItem[element.columItemName]             }         }         data.push(dataObj)     }     let properties = args.properties||[];     if(properties.length===0){//如果没传properties,就是默认所有表中信息         for(const prope of args.fields){             let propeObj = {}             propeObj["field"]=prope.columItemName             propeObj["displayName"]=prope.columItemLable             properties.push(propeObj)         }     }     if (args.serial) {         properties.unshift({             field: "serial",             displayName: "序号",         })     }     printJS({        printable: data,        properties: properties || [],        header: args.title || "",        // 样式设置        type: 'json',  // 打印的格式          gridStyle: 'border-bottom: 1px solid #000;text-align:center;padding:5px 0;', // 表格样式          gridHeaderStyle: 'border-bottom: 1px solid #000;border-top: 1px solid #000;text-align:center;padding:5px 0;',//表头样式        repeatTableHeader: false     }); }   export default {     printJson }

然后在有需要使用的地方引入print.js,下面是全局引入到main.js中

// 引入Print.js
import print from "@/utils/print";

// 放入vue原型中
Vue.prototype.printJson = print.printJson

最后在需要使用的页面中使用

<script>

......

methods: {
 billPrintClick(){//打印相关
  this.printJson({
      title: this.templateName.slice(0, -2), // 打印出来的标题
   data: this.dataTable, // 需要打印的数据
   serial: true, // 是否需要打印序列号
   fields: this.tableColumList, // 需要打印的字段

      })
    },

}

......

</script>

3.直接打印网页的表格

<template>
<div class="resident-right">
// 需要打印的html片段设置一个id
<main id="printMain">
<div class="avatar">
// 打印时需要忽略的片段设置id
<div id="no-print">
<el-button type="primary" @click="printFun">打印</el-button>
</div>
</div>
</main>
</div>
</template>

<script>

import printJS from "print-js";

export default {

methods: {

printFun() {

printJS({

printable: "printMain", // 设置需要打印片段id

type: "html",

targetStyles: ["*"], // 需要保留的样式,*代表所有

ignoreElements: ["no-print"], // 需要忽略的元素,id集合 });

},

}

};

</script>

参考链接:https://blog.csdn.net/weixin_41931561/article/details/117987685

 

标签:printjs,args,elementUI,admin,打印,js,dataObj,print,properties
From: https://www.cnblogs.com/luzanzan/p/17457084.html

相关文章

  • fastadmin 修改弹窗大小
    一、编辑/添加按钮的弹窗首先需要找到对应控制器生成的js文件,一般就在public下①、在初始化表格参数配置上方加入$(".btn-edit").data("area",["1000px","80%"]);//编辑$(".btn-add").data("area",["60%","80%"]);//添加 ②、在为表格绑定事......
  • 基于Admin.NET框架的前端的一些改进和代码生成处理(2)
    在上篇随笔《基于Admin.NET框架的前端的一些改进和代码生成处理(1)》中大致介绍了一些关于对Admin.NET框架的前端的改造工作,主要目的就是希望能够增加前端代码的简洁性和可读性,以及利用代码生成工具来快速生成相关的代码,从而减少开发过程中的繁琐问题。本篇随笔继续探讨一下,对其中一......
  • 基于Admin.NET框架的前端的一些改进和代码生成处理(1)
    Admin.NET是一套基于Furion/.NET6实现的通用管理平台,模块插件式开发,框架包含了常规的权限管理、字典等管理模块,以及一些Vue3的Demo案例,框架前后端分离。后端基于基于Furion/.NET6实现,底层集成SqlSugar;前端则是采用Vue-Next-Admin的前端框架,整体是一套非常不错的框架。本人比较喜......
  • elementUI中<el-select>下拉框选项过多的页面优化方案——多列选择
    效果展示(多列可以配置)  一、icon下拉框的多列选择:  二、常规、通用下拉框的多列选择:【注】第二种常规、通用下拉框的多列选择,是在第一种的前端代码上删除几行代码就行(把icon显示标签删去),所以下面着重介绍第一种icon下拉框的多列选择。思路  不使用下拉框标签<el-option>......
  • 靳宇灵 | FastAdmin多语言配置
    在FastAdmin中可以在任何位置(控制器、视图、JS)使用__('语言标识');调用语言包,如果语言标识不存在,则直接输出该语言标识。使用方法FastAdmin中的__函数和ThinkPHP中的lang函数在传参上有些许区别比如__('Mynameis%s',"FastAdmin");将会返回MynameisFastAdmin而如果采用Thin......
  • vue+elementUI 合并行3
    1、返回数据为一维数组getData(){that.tableData=res.data.data.list;}2、合并函数挂在vue底层:Vue.prototype.$spanMethodFunc=function(list,props,row,col)写在method内:spanMethodFunc(list,props,row,col){if(col>=props.length||!props[co......
  • fastadmin隐藏搜索按钮
     设置showSearch:false即可 ......
  • fastadmin隐藏右上角的搜索按钮及其导出等
     想要隐藏这些按钮,有两种方式一、直接html文件里修改data-show-export="false"data-show-toggle="false"data-show-columns="false"data-search="false"data-common-Search="false" 二、在bootstarpTable初始化的时候设定//初始化表格......
  • vue+elementui 合并行
    1,数据格式是二维的如:o:{id:123,prams:{name:aaa,age:11}}的对象第一步:先获取返回的数据为indexInfoList,遍历转化为一维数组 that.indexInfoList.forEach(ele => {if(ele.prams.length>=1){ele.prams.map((related,index)=>{......
  • vue-element-admin安装依赖报错问题
    vue-element-admin安装依赖的时候报以下错误npmERR!codeENOENTnpmERR!syscallspawngitnpmERR!pathgitnpmERR!errno-4058npmERR!enoentAnunknowngiterroroccurrednpmERR!enoentThisisrelatedtonpmnotbeingabletofindafilenpmERR!enoentnpmE......