print.js 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import printJS from "print-js";
  2. /**
  3. *
  4. * @param {
  5. * title:"", // 表名
  6. * serial:false, // 是否需要序号
  7. * data:[], // 要打印的数据
  8. * fields:[], // 需要打印的字段
  9. * properties:[
  10. * {
  11. * field:"字段名(对应fields)",
  12. * displayName:"打印时展⽰的中⽂表头名字",
  13. * columnSize:"定义列宽,⽤百分⽐来表⽰⼤⼩,可不传"
  14. * }
  15. * ],
  16. * } args
  17. *
  18. */
  19. function printJson(args = {}) {
  20. let data = [];
  21. for (let di = 0; di < args.data.length; di++) {
  22. var obj = {}
  23. // 如果需要序列号则是列表index+1
  24. if (args.serial) {
  25. obj.serial = di + 1
  26. }
  27. // 遍历需要打印的字段与列表字段⼀⼀对应,形成键值对
  28. for (let fi = 0; fi < args.fields.length; fi++) {
  29. obj[args.fields[fi]] = args.data[di][args.fields[fi]]
  30. }
  31. data.push(obj)
  32. }
  33. let properties = args.properties;
  34. if (args.serial) {
  35. properties.unshift({
  36. field: "serial",
  37. displayName: "序号",
  38. })
  39. }
  40. printJS({
  41. printable: data,
  42. properties: properties || [],
  43. header: args.title || "",
  44. // 样式设置
  45. type: 'json', // 打印的格式
  46. headerStyle:'display:flex; .list_title{ width: 940px;border-bottom: 1px solid;display: flex;margin: 30px auto;}',
  47. gridStyle: 'border: 1px solid #000;text-align:center;padding:5px 0;', // 表格样式
  48. gridHeaderStyle: 'border: 1px solid #000;text-align:center;padding:5px 0;',//表头样式
  49. });
  50. }
  51. export default {
  52. printJson
  53. }