在线打印
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

105 rivejä
2.6 KiB

  1. /**
  2. * 通过模板和模板数据生成打印内容
  3. * @param temp 打印模板
  4. * @param data 模板数据
  5. */
  6. export const tempToPrint = (temp, data) => {
  7. let printContent = temp.map(item => {
  8. var reg = /({[^{]*})/g
  9. let value = item.value.replace(reg, data[item.name] || '')
  10. return {
  11. top: item.top,
  12. left: item.left,
  13. width: item.width,
  14. height: item.height,
  15. value: value
  16. }
  17. })
  18. return printContent
  19. }
  20. /**
  21. * braid-tabel类型的模板转换成html
  22. * @param columns 表格列配置信息
  23. * @param data 表格数据
  24. */
  25. export const tableTempTohtml = (columns, data, style) => {
  26. // 表格全局样式
  27. let styleStr = 'text-align:' + style.Alignment + ';'
  28. styleStr += 'font-size:' + style.FontSize + 'pt;'
  29. styleStr += 'color:' + style.FontColor + ';'
  30. let html = '<style> table td,table th {word-break: break-all;box-sizing:border-box;border:1px solid ' + style.BorderColor + '}</style>'
  31. html += '<table border=1 width=\'100%\' cellspacing=\'0\' frame="box" cellpadding=\'2\' style=\'border-collapse:collapse;' + styleStr + '\' bordercolor=\'' + style.BorderColor + '\'>'
  32. // 解析表头
  33. html += '<thead><tr>'
  34. columns.forEach(column => {
  35. if (column.name === '_seq') { // 序号列
  36. html += '<th width="30">'
  37. } else {
  38. html += '<th>'
  39. }
  40. html += column.title
  41. html += '</th>'
  42. })
  43. html += '</tr></thead>'
  44. html += '<tbody>'
  45. // 解析内容
  46. if (Array.isArray(data)) {
  47. data.forEach((item, idx) => {
  48. html += '<tr>'
  49. columns.forEach(column => {
  50. if (column.name === '_seq') {
  51. html += '<td>'
  52. html += (idx + 1)
  53. } else {
  54. html += '<td>'
  55. html += item[column.name]
  56. }
  57. html += '</td>'
  58. })
  59. html += '</tr>'
  60. })
  61. }
  62. html += '</tbody>'
  63. html += '</table>'
  64. return html
  65. }
  66. /**
  67. * braid-image类型的模板转换成html
  68. * @param value 图片相对地址
  69. */
  70. export const imageTempTohtml = (value) => {
  71. let html = '<img style=\'width:100%\' src=\'' + value + '\'/>'
  72. return html
  73. }
  74. /**
  75. * 将字符串模板中{}内的内容替换成指定值
  76. * @param str 表格列配置信息
  77. * @param value 表格数据
  78. */
  79. export const strTempToValue = (str, value) => {
  80. let reg = /({[^}^{]*})/g
  81. return str.replace(reg, value || '')
  82. }
  83. export const htmlTempTohtml = (val, style) => {
  84. // 表格全局样式
  85. let styleStr = 'text-align:' + style.Alignment + ';'
  86. styleStr += 'font-size:' + style.FontSize + 'pt;'
  87. styleStr += 'color:' + style.FontColor + ';'
  88. let html = '<span style=\'' + styleStr + '\'>'
  89. html += val
  90. html += '</span>'
  91. // console.log(html)
  92. return html
  93. }