使用场景
增值税一般纳税人,购进和销售时,货物名称要统一,于是需要按照货物名称及型号列出库存表。但是如果购进的发票有很长的清单,数据录入就会异常繁琐。
由于所有的合法的发票,都可以在增值税发票查验平台查询的到,包括所有的清单数据,于是前端使用油猴写几行脚本代码,将页面中的数据发送到后台,后台简单的接收并生成Excel数据。
前端数据读取
前端很好理解,无非就是找到对应的DOM元素,然后得到其值。
里面有一些折磨了好久的地方,比如说,显示发票的弹出框,是一个框架,于是要先找到框架的DOM,然后再在框架里面寻找每个字段对应的DOM。
当然,有的发票有清单(8条以上商品或服务),有的没有,所以也需要判断一下。
于是就这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| ... frame = $("#dialog-body").contents(); frame.find("#printfp").before(init_html); frame.find("#initfpmx").click(function(){ var results = {}; var table, trs; results.invoice_code = frame.find("#fpdm_zp").text().trim(); results.invoice_number = frame.find("#fphm_zp").text().trim(); results.invoice_date = frame.find("#kprq_zp").text().trim(); results.invoice_to = frame.find("#gfmc_zp").text().trim(); results.invoice_from = frame.find("#xfmc_zp").text().trim(); results.invoice_jine = frame.find("#je_zp").text().trim(); results.invoice_shuie = frame.find("#se_zp").text().trim(); results.invoice_heji = frame.find("#jshjxx_zp").text().trim(); $(this).remove(); var has_mx_btn = frame.find("#showmx"); if(has_mx_btn.text() != ""){ btn_html = '<button id="exportpmx" class="blue_button" style="position:relative!important;z-index:100" onmousemove="this.className=\'green_button\';" onmouseout="this.className=\'blue_button\';">导出</button>'; frame.find("#printfpmx").before(btn_html); frame.find("#exportpmx").click(function(){ table = frame.find("#print_areamx>.fppy_table"); results.data = getProductList(table, 3, 1); $(this).remove(); requestServer(JSON.stringify(results)); }); }else{ btn_html = '<button id="exportpmx" class="white_button" style="position:relative!important;z-index:100" onmousemove="this.className=\'green_button\';" onmouseout="this.className=\'white_button\';">导出</button>'; frame.find("#printfp").before(btn_html); frame.find("#exportpmx").click(function(){ $(this).remove(); table = frame.find("#print_area").find(".fppy_table_box"); results.data = getProductList(table, 2); requestServer(JSON.stringify(results)); }); } }); ...
|
因为按钮会导致打印的时候显示按钮,所以按钮一点击,就要把按钮删除。
后台数据处理
后台还是熟悉的php+mysql。
只要油猴把数据发送到了后台,要怎么处理那就是很简单的事儿了。
生成表格
利用layui
做出个前端显示页面,然后就可以导出Excel数据了。
要说起来,layui
还是挺通用的,很多网站都或多或少的用到了,所以很多网站都可以写一些方便的小脚本了。
下一次准备更新一个网页密码登陆助手。