效果图:
Aspx页面代码:
<table class="table table-bordered table-striped">
<tbody>
<tr class="even gradeC">
<td >波次单号:</td>
<td>
<input type="text" runat="server" id="txtWaveNo" value="SO1512150540" /></td>
<td >SO订单号:</td>
<td>
<input type="text" runat="server" id="txtSoNo" />
</td>
</tr>
<tr class="odd gradeA">
<td colspan="4"><input type="button" class="btn btn-info" id="btnPrint"
value="比利时小包打印" runat="server" /> <input type="button" class="btn btn-info" id="btnPrint"
value="荷兰小包打印" runat="server" />
<input type="button" class="btn btn-info" id="btnFoShanPrint"
value="佛山小包打印" runat="server" />
<span style="color:red">友情提示:可选择扫描波次或者SO单号进行打印。</span>
</td>
</tr>
</tbody>
</table><div id="main-content">
<div class="tab-content">
<!--发运订单信息-->
<div id="live" class="tab-pane active">
<div class='row-fluid'>
<div class='span12 widget'>
<div class='widget-content summary-list'>
<div class='row-fluid' >
<div class='span12 section '>
<table class='table table-bordered table-striped'>
<tbody id="divErrorMessage" runat="server">
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
JS代码:
荷兰和佛山小包打印:
<input type="hidden" id="hfExpressHtml"/>
<!-- Core Scripts -->
<script src="http://www.orderonline.cn/js/jquery-1.7.2.js"></script>
<script src="assets/js/Lodop.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#btnPrint").click(function () {
if ($("#txtWaveNo").val() == "" && $("#txtSoNo").val() =="") {
alert('波次单号或SO订单号不能全为空,请任意输入一个进行打印。');
}
else {
var searchwhere = $("#txtWaveNo").val() + "_" + $("#txtSoNo").val();
$.ajax({
type: "get",
url: "ExpressPrint.ashx",
data: "getExpressInfo=" + encodeURIComponent(searchwhere),
datatype: "json",
async: false,
success: function (returnData, textstatus, xmlhttprequest) {
LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'));
LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD", 1);
$("#hfExpressHtml").html(returnData);
var html = $("#hfExpressHtml .main_all >div");
// var strStyleCSS = "<!DOCTYPE html> <head>";
var strStyleCSS = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns=\"http://www.w3.org/1999/xhtml\"><head>";
strStyleCSS += "<link href='http://www.orderonline.cn/css/A4.css' type='text/css' rel='stylesheet'></head><body>";
//HTML格式用
// LODOP.SET_PRINT_PAGESIZE(1, "760px", "650px", "A5");
var num = 0; var strFormHtml = "";
for (var i = 0; i < html.length; i++) {
if (num % 2 == 0) {
LODOP.NewPage(); strFormHtml = "";
strFormHtml += strStyleCSS + html[i].outerHTML;
}
else {
strFormHtml += strStyleCSS + html[i].outerHTML;
}
LODOP.ADD_PRINT_HTM(15, 0, 800, 650, strFormHtml + "</body></html>");
// LODOP.ADD_PRINT_HTM(30, 0, 800, 650, strFormHtml + "</body></html>");
num++;
} LODOP.PREVIEW(); strFormHtml = "";
},
error: function (errorinfo) {
alert("快递单打印失败,请重新刷新后打印。");
}
});
}
})
$("#btnFoShanPrint").click(function () {
if ($("#txtWaveNo").val() == "" && $("#txtSoNo").val() == "") {
alert('波次单号或SO订单号不能全为空,请任意输入一个进行打印。');
}
else {
var searchwhere = $("#txtWaveNo").val() + "_" + $("#txtSoNo").val();
$.ajax({
type: "get",
url: "ExpressPrint.ashx",
data: "getExpressInfo=" + encodeURIComponent(searchwhere),
datatype: "json",
async: false,
success: function (returnData, textstatus, xmlhttprequest) {
LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'));
LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD", 1);
$("#hfExpressHtml").html(returnData);
var html = $("#hfExpressHtml .main_all >div");
// var strStyleCSS = "<!DOCTYPE html> <head>";
var strStyleCSS = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns=\"http://www.w3.org/1999/xhtml\"><head>";
strStyleCSS += "<link href='http://www.orderonline.cn/css/A4.css' type='text/css' rel='stylesheet'></head><body>";
//HTML格式用
LODOP.SET_PRINT_PAGESIZE(2, "760px", "650px", "A5");
var num = 0; var strFormHtml = "";
for (var i = 0; i < html.length; i++) {
if (num % 2 == 0) {
LODOP.NewPage(); strFormHtml = "";
strFormHtml += strStyleCSS + html[i].outerHTML;
}
else {
strFormHtml += strStyleCSS + html[i].outerHTML;
}
LODOP.ADD_PRINT_HTM(15, 0, 800, 650, strFormHtml + "</body></html>");
// LODOP.ADD_PRINT_HTM(30, 0, 800, 650, strFormHtml + "</body></html>");
num++;
} LODOP.PREVIEW(); strFormHtml = "";
},
error: function (errorinfo) {
alert("快递单打印失败,请重新刷新后打印。");
}
});
}
})
//清除转向页面
$("#txtWaveNo").val(''); $("#txtSoNo").val(''); $("#hfExpressHtml").html('');
});
</script>
比利时小包打印:
<script type="text/javascript">
$(document).ready(function () {
$("#btnPrint").click(function () {
if ($("#txtWaveNo").val() == "" && $("#txtSoNo").val() == "") {
alert('波次单号或SO订单号不能全为空,请任意输入一个进行打印。');
}
else {
var searchwhere = $("#txtWaveNo").val() + "_" + $("#txtSoNo").val();
$.ajax({
type: "get",
url: "ExpressPrint.ashx",
data: "getBlsExpressInfo=" + encodeURIComponent(searchwhere),
datatype: "json",
async: false,
success: function (returnData, textstatus, xmlhttprequest) {
LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'));
LODOP.SET_SHOW_MODE("HIDE_PAPER_BOARD", 1);
$("#hfExpressHtml").html(returnData);
var html = $("#hfExpressHtml .main_all >div");
// var strStyleCSS = "<!DOCTYPE html> <head>";
var strStyleCSS = "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns=\"http://www.w3.org/1999/xhtml\"><head>";
strStyleCSS += "<link href='http://www.orderonline.cn/css/A4.css' type='text/css' rel='stylesheet'></head><body>";
//HTML格式用
// LODOP.SET_PRINT_PAGESIZE(1, "760px", "650px", "A5");
var num = 0; var strFormHtml = "";
for (var i = 0; i < html.length; i++) {
if (num % 2 == 0) {
LODOP.NewPage(); strFormHtml = "";
strFormHtml += strStyleCSS + html[i].outerHTML;
}
else {
strFormHtml += strStyleCSS + html[i].outerHTML;
}
LODOP.ADD_PRINT_HTM(15, 0, 800, 650, strFormHtml + "</body></html>");
// LODOP.ADD_PRINT_HTM(30, 0, 800, 650, strFormHtml + "</body></html>");
num++;
} LODOP.PREVIEW(); strFormHtml = "";
},
error: function (errorinfo) {
alert("快递单打印失败,请重新刷新后打印。");
}
});
}
//清除转向页面
$("#txtWaveNo").val(''); $("#txtSoNo").val(''); $("#hfExpressHtml").html('');
})
});
</script>
ExpressPrint.ashx 代码:
public class ExpressPrint : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
if (!string.IsNullOrEmpty(context.Request["getExpressInfo"]))
{
string[] strParm = context.Request["getExpressInfo"].Split('_');
StringBuilder sbExpressHtml = new StringBuilder();
var returnHtml = string.Empty;
using (ExpressPrintDataContext db = new ExpressPrintDataContext())
{
var getExpressList = from p in db.DOC_Wave_Details
join pp in db.DOC_Order_Header
on p.OrderNo equals pp.OrderNo
where p.WaveNo.Contains(strParm[0]) && p.OrderNo.Contains(strParm[1])
select new { p.WaveNo, p.OrderNo, pp.SOReference3 };
var expressNo = string.Empty;
returnHtml = @"<link href=""http://www.orderonline.cn/A4.css"" rel=""stylesheet"" type=""text/css"" />";
returnHtml += "<div class=\"wapper\" id=\"A4_print\"><div class=\"main_all\">";
foreach (var item in getExpressList)
{
// expressNo += item.SOReference3 + ',';
string strURL = "http://www.orderonline.cn/printNo.action?print=A4&remak=1&prType=W&hawbNos=" + item.SOReference3;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strURL);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
returnHtml += Regex.Match(retString, @"(?is)<div class=""main p_r"">((?<o><div[^<>]*>)|(?<-o></div>)|(?!</?div>).)+(?(o)(?!))</div>").Groups[0].Value.Trim();
Regex reg = new Regex("<td colspan=\"2\" class=\"bar-con tx-ce \">([\\s\\S]*?)<\\/td>", RegexOptions.IgnoreCase);
MatchCollection mac = reg.Matches(returnHtml);
var code="barbecue?fmt=png&height=40&type=code128&data="+item.SOReference3;
foreach (Match m in mac)
{
string f1 = m.Groups[1].Value.Replace("/[\r\n]/g", "");
returnHtml = returnHtml.Replace(f1, "<div style=\"float:left\"><img style=\"width:260px;height:40px;\" src="+code+"> </div><div style=\"float:right;\"><img src=\"/images/print/th.png\" style=\"width:40px;height:40px;\" /></div>");
}
}
Regex regex = new Regex("/images", RegexOptions.IgnoreCase);
returnHtml = regex.Replace(returnHtml, "http://www.orderonline.cn/images");
Regex regex1 = new Regex("barbecue", RegexOptions.IgnoreCase);
returnHtml = regex1.Replace(returnHtml, "http://www.orderonline.cn/barbecue");
sbExpressHtml.Append(returnHtml+"</div></div>");
}
context.Response.Write(sbExpressHtml.ToString());
}
if (!string.IsNullOrEmpty(context.Request["getBlsExpressInfo"]))
{
string[] strParm = context.Request["getBlsExpressInfo"].Split('_');
StringBuilder sbExpressHtml = new StringBuilder();
var returnHtml = string.Empty;
using (ExpressPrintDataContext db = new ExpressPrintDataContext())
{
//var getExpressList = from p in db.DOC_Wave_Details
// join pp in db.DOC_Order_Header
// on p.OrderNo equals pp.OrderNo
// where p.WaveNo.Contains(strParm[0]) && p.OrderNo.Contains(strParm[1])
// select new { p.WaveNo, p.OrderNo, pp.SOReference3 };
//数据放入ticket
var apiToken = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", "mega", "bpost")));
string url = "http://42.121.252.25/api/lvsparcels?productBarcode=BLVS1592170000004048";
try
{
//配置请求header
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/json; charset=utf-8";
request.Headers.Add(HttpRequestHeader.Authorization, "basic " + apiToken);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
LvsParcelJson getExpressInfo = (LvsParcelJson)JsonConvert.DeserializeObject<LvsParcelJson>(retString);
myStreamReader.Close();
myResponseStream.Close();
}
catch (Exception e)
{
context.Response.Write(e.Message);
}
}
}
context.Response.End();
}
public class LvsParcelJson
{
public int Id { get; set; }
public string OrderNumber { get; set; }
public string ProductBarcode { get; set; }
public string RecipientName { get; set; }
public string RecipientStreet { get; set; }
public string RecipientHouseNumber { get; set; }
public string RecipientBusnumber { get; set; }
public string RecipientZipCode { get; set; }
public string RecipientCity { get; set; }
public string RecipientState { get; set; }
public string RecipientCountry { get; set; }
public string PhoneNumber { get; set; }
public string SenderName { get; set; }
public DateTime CreateTime { get; set; }
public string SenderAddress { get; set; }
public List<Customers> Customs { get; set; }
}
public class Customers
{
public string Sku { get; set; }
public string ChineseContentDescription { get; set; }
public string ItemContent { get; set; }
public int ItemCount { get; set; }
public decimal Value { get; set; }
public string Currency { get; set; }
public decimal Weight { get; set; }
public string SkuInInvoice { get; set; }
}
public bool IsReusable
{
get
{
return false;
}
}
}