java自定义图表并实现系统打印功能
功能效果是自定义需要打印图表界面,点击按钮后连接打印机进行打印操作,直接上代码。
前端代码
1. 按钮相关:
<a id="print" class="btn" onclick="printing('row.id')"></i>打印</a>
2. js响应事件
layui.use([ 'element'], function () {
window.printing = function(id) {
$.ajax({
type: "post",
url : prefix + "/getGsDetail",
data : {
id: id,
},
dataType: "json",
async: false,
success: function (result) {
var data=result.companyBasicInfoGs;
//渲染值信息并且打印
setValues(data);
print_("print_");
}
});
}
function getLabel(val,arr = []) {
let obj = arr.find(item => item.dictValue == val)
return obj?obj.dictLabel:''
}
/*数据渲染*/
function setValues(data) {
//渲染企业工商信息
document.getElementById('chName').innerHTML = data.chName;
document.getElementById('uscd').innerHTML = data.uscd;
document.getElementById('enName').innerHTML = data.enName;
//打印指定地div层
function print_(str) {
document.body.innerHTML = document.getElementById(str).innerHTML;
window.print();
location.reload()
//强制刷新
window.history.back();
location.reload();
}
})
注意点:这里引用了layui,外部调用layui方法需要额外引入对应的js,这里用到了element.js,要在static资源目录下添加element.js。
3. 自定义打印界面
<div class="main" id="print_" style="display: none;">
<style>
#tab td {
padding: 7px 5px;
}
</style>
<div class="body">
<div class="title">
<div class="div1">
<div class="divCtn" style="height:20px">
<div style="text-align: center">企业工商凭证</div>
<div class="titleUdeLine"></div>
</div>
</div>
<div class="div2">NO:
<span id="idshow" style="color: red;font-weight: bolder"></span>
</div>
</div>
<table id="tab" border="1" style="width: 100%; border-collapse: collapse;">
<tr class="tempTr2">
<td align="center">企业名称</td>
<td align="center">
<span id="chName" style="color: blue;font-weight: bolder"></span>
</td>
<td align="center">社会统一信用代码</td>
<td align="center">
<span id="uscd" style="color: blue;font-weight: bolder"></span>
</td>
</tr>
<tr class="tempTr2">
<td align="center">英文名称</td>
<td align="center">
<span id="enName" style="color: blue;font-weight: bolder"></span>
</td>
<td align="center">法人名称</td>
<td align="center">
<span id="legalName" style="color: blue;font-weight: bolder"></span>
</td>
</tr>
</table>
</div>
</div>
后端代码
这里只用到了获取详情数据的接口,如下:
@PostMapping("/getGsDetail")
@ResponseBody
public ModelMap getGsDetail(Long id)
{
ModelMap mmap = new ModelMap();
CompanyBasicInfoGs companyBasicInfoGs = companyBasicInfoGsService.selectCompanyBasicInfoGsById(id);
mmap.put("companyBasicInfoGs", companyBasicInfoGs);
return mmap;
}
界面效果:
最后是结果,如下: