Ecshop&小京东订单自动打印功能
  • 分类:资源分享
  • 发表:2016-06-29
  • 围观(17,601)
  • 评论(0)

小京东和Ecshop的架构一样的,所以可以类推开发。

Ecshop订单检查用到的是Ajax,模式是,在后台页面中定期执行一个JS函数,函数通过Ajax检查上一个Session时间值之后是否有新的订单产生,则返回一个JSON,JS中另一个函数根据JSON的返回值判断是否弹出提示框。

1、修改PHP程序部分

打开supplier/index.php,打开elseif ($_REQUEST['act'] == 'check_order')语句,

在这个ellseif语句框中,找到$arr['new_paid'] = $db->getOne($sql);语句,在下面新增:

if ($arr['new_orders']>0){
$sql = 'SELECT order_id, order_sn,consignee, mobile, goods_amount,add_time,froms,address FROM ' . $ecs->table('order_info').

" WHERE add_time >= '$_SESSION[last_check]'" . $where_suppId;
$new_list = $db->getAll($sql);
}

foreach ($new_list AS $key => $value)
{
$new_list[$key]["add_time"] = local_date('Y-m-d H:i:s', $key['add_time']);
$sql = "SELECT goods_name, goods_sn, goods_number, goods_price From " . $ecs->table('order_goods'). " WHERE order_id = " . $new_list[$key]["order_id"];
$new_list[$key]["goods_list"] = $db->getAll($sql);
}
$arr['new_list'] = $new_list;

意思是:如果存在新定单,则调取订单数据,保存在Ajax返回的数组里。并以JSON形式返回。

2、修改JS部分

JS代码在supplier/js/common.js中,如果是Ecshop系统,则应该修改admin/js/common.js文件。

找到function checkOrderResponse(result) 函数,在Message.show();语句下方加上

order_print(result.new_orders, result.new_list);

意思是:以上的代码为,获取Ajax,如果有新订单,则弹出提示框,在下面新增了Order_print函数,用于打印订单。

之后在下面新增几个函数,代码如下:

/*
* 打印订单
*/
function order_print(orders, date){
var print_box="";
print_box = print_box + "<div id='order_print' style='width:270px;'>";
for(var i=0;i<date.length;i++){
print_box = print_box + "<img src='/images/print_logo.png' style='float:left; margin-right:5px;'> <p style='font-size:18px;line-height:30px;'>订单打印</p>";
print_box = print_box + "<div style='width:270px; clear:both;height:1px;'></div>";
print_box = print_box +"<div style='border-top:3px double #000;margin:0px;padding:0px;height:1px;' ></div>";
print_box = print_box + re_goods_list(date[i].goods_list);
print_box = print_box +"<div style='border-top:3px double #000;margin:0px;padding:0px;height:1px;' ></div>";
print_box = print_box +"<p style='line-height:20px; font-size:12px;'>订单号:" +date[i].order_sn +"<br />";
print_box = print_box +"联系人:" +date[i].consignee +"<br />";
print_box = print_box +"手机号:" +date[i].mobile +"<br />";
print_box = print_box +"地 址:" +date[i].address +"<br />";
print_box = print_box +"来 源:" +date[i].froms +"<br />";
print_box = print_box +"下单时间:" +date[i].add_time +"</p>";
print_box = print_box +"<div style='border-top:1px solid #000;margin:0px;padding:0px;height:1px;' ></div>";
print_box = print_box +"<p style='text-align:right; width:270px;'>金额:" +date[i].goods_amount +"</p>";
print_box = print_box +"<p style='text-align:center;line-height:20px; font-size:12px;width:270px;margin-bottom:15px;'><img src='/images/print_ewm.png' width=150 style='margin:0px 35px;'><br>扫描二维码下载同步城市客户端</p>";
}
print_box = print_box +"</div>";
alert(print_box);
document.getElementById('pring_box').innerHTML = print_box;
prn1_preview('同步城市网订单打印','order_print');
}
/**/
function re_goods_list(date){
var goods_list = "";
goods_list = "<table width='270' border='0' cellspacing='1' cellpadding='0'>";
goods_list = goods_list + "<tr><th width='189' style='font-size:12px;'>名称</th><th style='font-size:12px;'>数量</th><th style='font-size:12px;'>价格</th></tr>";
for(var i=0;i<date.length;i++){
goods_list = goods_list + "<tr><td><div style='font-size:12px;width:180px; height:27px; line-height:27px;overflow:hide;white-space:nowrap; overflow:hidden;'>" +date[i].goods_name +"</div></td><td style='font-size:12px; text-align:center;'>" +date[i].goods_number +"</td><td style='font-size:12px; text-align:center;'>" +date[i].goods_price +"</td></tr>";
}
goods_list = goods_list + "</table>";
return goods_list;
}
//控件打印
function prn1_preview(printt,pringbox) {
CreateOneFormPage(printt,pringbox);
LODOP.PRINT(); //直接打印
};
function CreateOneFormPage(printt,pringbox){
LODOP=getLodop();
LODOP.PRINT_INIT(printt);
LODOP.SET_PRINT_PAGESIZE(3,720,45,10); //设定纸张
LODOP.ADD_PRINT_HTM(0,0,430,600,document.getElementById(pringbox).innerHTML);
};

3、修改HTML文件了。

在页面底部加上

<script language="javascript" src="/cab/LodopFuncs.js"></script>
<object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0>
<embed id="LODOP_EM" type="application/x-print-lodop" width=0 height=0></embed>
</object>
<div id="pring_box" style="width:270px;"></div>

这个标签。

可以放在Page_foot.htm中。

在页面JS中添加

onload = function()
{
// 开始检查订单
startCheckOrder();
}

注意,这段JS不是所有页面都有,但是有的页面是有的,不要重复了,,,

4、引入LODOP插件。

从LODOP官网下载插件,放在/cab/目录下。

这样就行了。

这个尺寸是270PX,按照80MM热敏纸设计的。其实,结合管理后台还可以设置更多内容,比如小票顶上的LOGO,广告信息,打印纸尺寸等等。

 

Top