WYB
2021-04-23 f61def9df2fc06930393e443bb50f002734318aa
工序汇报单打印页面添加以及逻辑编写(50%)
3个文件已修改
10个文件已添加
1877 ■■■■■ 已修改文件
WebTM/App_Data/MssqlReportData.cs 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/App_Data/ReportData.cs 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/Properties/PublishProfiles/LAYUI.pubxml.user 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/WebTM.csproj 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/CreateControl.js 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/GRInstall.js 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/GRUtility.js 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/grf/汇报单.grf 712 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产工序管理/工序汇报单/HBarPlanPrint.html 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产工序管理/工序汇报单/Sc_Add_ProcessReportList.html 177 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产工序管理/工序汇报单/xmlLBM_ProcessReport.aspx 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产工序管理/工序汇报单/xmlLBM_ProcessReport.aspx.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/生产工序管理/工序汇报单/xmlLBM_ProcessReport.aspx.designer.cs 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/App_Data/MssqlReportData.cs
New file
@@ -0,0 +1,235 @@
using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.IO;
using System.IO.Compression;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//class  SqlReportData äº§ç”Ÿæä¾›ç»™æŠ¥è¡¨ç”Ÿæˆéœ€è¦çš„ æˆ– JSON æ•°æ®
public class SqlReportData
{
    //★特别提示★:
    //连接SQL Server数据库的连接串,应该修改为与实际一致。如果是运行Grid++Report本身的例子,应该首先附加例子数据库到
    //SQL Server2000/2005数据库上。
    //public const string SqlConnStr = "Data Source=(local);Initial Catalog=gridreport;Persist Security Info=True;User ID=sa;Password=;";
    //public const string SqlConnStr = "Data Source=10.0.2.9;Initial Catalog=HX_LimsSys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";
    public const string SqlConnStr = "Data Source=.;Initial Catalog=HX_LMESsys;Persist Security Info=True;User ID=HX_USER;Password=lc@841022;";
    //public string sServer;
    //public string sDataBase;
    //public string sUser;
    //public string sPassword;
    //public const string SqlConnStr="";
    //protected void Page_Load(object sender, EventArgs e)
    //{
    //    sServer = Pub_Class.ClsIni.ReadIni("Erp", "Server", Pub_Class.ClsPub.AppPath + @"\" + "HXErp.ini");
    //    sDataBase = Pub_Class.ClsIni.ReadIni("Erp", "DataBase", Pub_Class.ClsPub.AppPath + @"\" + "HXErp.ini");
    //    sUser = Pub_Class.ClsIni.ReadIni("Erp", "UserName", Pub_Class.ClsPub.AppPath + @"\" + "HXErp.ini");
    //    sPassword = Pub_Class.ClsIni.ReadIni("Erp", "PassWord", Pub_Class.ClsPub.AppPath + @"\" + "HXErp.ini");
    //    SqlConnStr = "Data Source=" + sServer +
    //                                ";Initial Catalog=" + sDataBase +
    //                                ";Persist Security Info=True;"+
    //                                "User ID=" + sUser +
    //                                ";Password=" + sPassword + ";";
    //}
    //定义在SQL中表示日期值的包围符号,Access用“#”, è€ŒMS SQl Server用“'”,为了生成两者都可用的查询SQL语句,将其参数化定义出来。这样处理只是为了演示例子方便
    public const char DateSqlBracketChar = '\'';
    //根据查询SQL,产生提供给报表生成需要的 XML æ•°æ®ï¼Œå­—段值为空也产生数据
    public static void FullGenNodeXmlData(System.Web.UI.Page DataPage, string QuerySQL, bool ToCompress)
    {
        SqlConnection ReportConn = new SqlConnection(SqlConnStr);
        SqlCommand ReportDataCommand = new SqlCommand(QuerySQL, ReportConn);
        ReportConn.Open();
        SqlDataReader ReportDataReader = ReportDataCommand.ExecuteReader();
        XMLReportData.GenNodeXmlDataFromReader(DataPage, ReportDataReader, ToCompress ? ResponseDataType.ZipBinary : ResponseDataType.PlainText);
        ReportDataReader.Close();
        ReportConn.Close();
    }
    //获取 Count(*) SQL æŸ¥è¯¢åˆ°çš„æ•°æ®è¡Œæ•°ã€‚参数 QuerySQL æŒ‡å®šèŽ·å–æŠ¥è¡¨æ•°æ®çš„æŸ¥è¯¢SQL
    public static int BatchGetDataCount(string QuerySQL)
    {
        int Total = 0;
        SqlConnection ReportConn = new SqlConnection(SqlConnStr);
        SqlCommand ReportDataCommand = new SqlCommand(QuerySQL, ReportConn);
        ReportConn.Open();
        SqlDataReader ReportDataReader = ReportDataCommand.ExecuteReader();
        if (ReportDataReader.Read())
            Total = ReportDataReader.GetInt32(0);
        ReportDataReader.Close();
        ReportConn.Close();
        return Total;
    }
    //<<protected function
    //根据查询SQL,产生提供给报表生成需要的 XML æˆ– JSON æ•°æ®
    protected static void DoGenDetailData(System.Web.UI.Page DataPage, string QuerySQL, ResponseDataType DataType, bool IsJSON)
    {
        SqlConnection ReportConn = new SqlConnection(SqlConnStr);
        SqlDataAdapter ReportDataAdapter = new SqlDataAdapter(QuerySQL, ReportConn);
        DataSet ReportDataSet = new DataSet();
        ReportConn.Open();
        ReportDataAdapter.Fill(ReportDataSet);
        ReportConn.Close();
        if (IsJSON)
            JSONReportData.GenDataSet(DataPage, ReportDataSet, DataType);
        else
            XMLReportData.GenDataSet(DataPage, ReportDataSet, DataType);
    }
    //>>protected function
    //特别提示:以下函数为兼容以前版本而保留,请勿再用之,无须兼容考虑可删除之
    //<<保留前面版本的函数,兼容以前版本所写程序
    //根据查询SQL,产生提供给报表生成需要的 XML æ•°æ®ï¼Œé‡‡ç”¨ Sql æ•°æ®å¼•擎
    public static void GenNodeXmlData(System.Web.UI.Page DataPage, string QuerySQL, bool ToCompress)
    {
        DoGenDetailData(DataPage, QuerySQL, ToCompress ? ResponseDataType.ZipBinary : ResponseDataType.PlainText, false);
    }
    //根据查询SQL,产生提供给报表生成需要的 XML æ•°æ®ï¼Œé‡‡ç”¨ Sql æ•°æ®å¼•擎, è¿™é‡Œåªäº§ç”ŸæŠ¥è¡¨å‚数数据
    //当报表没有明细时,调用本方法生成数据,查询SQL应该只能查询出一条记录
    public static void GenParameterReportData(System.Web.UI.Page DataPage, string ParameterQuerySQL)
    {
        DoGenDetailData(DataPage, ParameterQuerySQL, ResponseDataType.PlainText, false);
    }
    //根据查询SQL,产生提供给报表生成需要的 XML æ•°æ®ï¼Œé‡‡ç”¨ Sql æ•°æ®å¼•擎, æ ¹æ®RecordsetQuerySQL获取报表明细数据,根据ParameterQuerySQL获取报表参数数据
    public static void GenEntireReportData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL, bool ToCompress)
    {
        SqlConnection ReportConn = new SqlConnection(SqlConnStr);
        DataSet ReportDataSet = new DataSet();
        ReportConn.Open();
        SqlDataAdapter DataAdapter1 = new SqlDataAdapter(RecordsetQuerySQL, ReportConn);
        DataAdapter1.Fill(ReportDataSet, "Detail");
        SqlDataAdapter DataAdapter2 = new SqlDataAdapter(ParameterQuerySQL, ReportConn);
        DataAdapter2.Fill(ReportDataSet, "Master");
        ReportConn.Close();
        XMLReportData.GenDataSet(DataPage, ReportDataSet, ReportDataBase.DefaultDataType);
    }
    //>>保留前面版本的函数,兼容以前版本所写程序
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//class  SqlXMLReportData æ ¹æ®SQL产生报表需要的 XML æ•°æ®ï¼Œé‡‡ç”¨ Sql æ•°æ®å¼•擎
public class SqlXMLReportData : SqlReportData
{
    public static void GenOneRecordset(System.Web.UI.Page DataPage, string QuerySQL)
    {
        SqlReportData.DoGenDetailData(DataPage, QuerySQL, ReportDataBase.DefaultDataType, false);
    }
    public static void GenMultiRecordset(System.Web.UI.Page DataPage, ArrayList QueryList)
    {
        SqlConnection ReportConn = new SqlConnection(SqlConnStr);
        DataSet ReportDataSet = new DataSet();
        ReportConn.Open();
        foreach (ReportQueryItem item in QueryList)
        {
            SqlDataAdapter DataAdapter = new SqlDataAdapter(item.QuerySQL, ReportConn);
            DataAdapter.Fill(ReportDataSet, item.RecordsetName);
        }
        ReportConn.Close();
        XMLReportData.GenDataSet(DataPage, ReportDataSet, ReportDataBase.DefaultDataType);
    }
    //特别提示:以下函数为兼容以前版本而保留,请勿再用之,无须兼容考虑可删除之
    //<<保留前面版本的函数,兼容以前版本所写程序
    //产生报表明细记录数据,数据将被加载到明细网格的记录集中
    public static void GenDetailData(System.Web.UI.Page DataPage, string QuerySQL)
    {
        GenOneRecordset(DataPage, QuerySQL);
    }
    //这里只产生报表参数数据,数据加载到报表参数、非明细网格中的部件框中
    //当报表没有明细时,调用本方法生成数据,查询SQL应该只能查询出一条记录
    public static void GenParameterData(System.Web.UI.Page DataPage, string ParameterQuerySQL)
    {
        GenOneRecordset(DataPage, ParameterQuerySQL);
    }
    //根据RecordsetQuerySQL获取报表明细数据,对应数据加载到报表的明细网格的记录集中
    //根据ParameterQuerySQL获取报表参数数据,对应数据加载到报表参数、非明细网格中的部件框中
    public static void GenEntireData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL, ResponseDataType DataType)
    {
        ArrayList QueryList = new ArrayList();
        QueryList.Add(new ReportQueryItem(RecordsetQuerySQL, "Detail"));
        QueryList.Add(new ReportQueryItem(ParameterQuerySQL, "Master"));
        GenMultiRecordset(DataPage, QueryList);
    }
    public static void GenEntireData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL)
    {
        GenEntireData(DataPage, RecordsetQuerySQL, ParameterQuerySQL, ReportDataBase.DefaultDataType);
    }
    //>>保留前面版本的函数,兼容以前版本所写程序
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//class  SqlJsonReportData æ ¹æ®SQL产生报表需要的 JSON æ•°æ®ï¼Œé‡‡ç”¨ Sql æ•°æ®å¼•擎
public class SqlJsonReportData : SqlReportData
{
    public static void GenOneRecordset(System.Web.UI.Page DataPage, string QuerySQL)
    {
        SqlReportData.DoGenDetailData(DataPage, QuerySQL, ReportDataBase.DefaultDataType, true);
    }
    public static void GenMultiRecordset(System.Web.UI.Page DataPage, ArrayList QueryList)
    {
        SqlConnection ReportConn = new SqlConnection(SqlConnStr);
        DataSet ReportDataSet = new DataSet();
        ReportConn.Open();
        foreach (ReportQueryItem item in QueryList)
        {
            SqlDataAdapter DataAdapter = new SqlDataAdapter(item.QuerySQL, ReportConn);
            DataAdapter.Fill(ReportDataSet, item.RecordsetName);
        }
        ReportConn.Close();
        JSONReportData.GenDataSet(DataPage, ReportDataSet, ReportDataBase.DefaultDataType);
    }
    //特别提示:以下函数为兼容以前版本而保留,请勿再用之,无须兼容考虑可删除之
    //<<保留前面版本的函数,兼容以前版本所写程序
    //产生报表明细记录数据,数据将被加载到明细网格的记录集中
    public static void GenDetailData(System.Web.UI.Page DataPage, string QuerySQL)
    {
        GenOneRecordset(DataPage, QuerySQL);
    }
    //这里只产生报表参数数据,数据将加载到报表参数、非明细网格中的部件框中
    //当报表没有明细时,调用本方法生成数据,查询SQL应该只能查询出一条记录
    public static void GenParameterData(System.Web.UI.Page DataPage, string ParameterQuerySQL)
    {
        GenOneRecordset(DataPage, ParameterQuerySQL);
    }
    //根据RecordsetQuerySQL获取报表明细数据,对应数据加载到报表的明细网格的记录集中
    //根据ParameterQuerySQL获取报表参数数据,对应数据加载到报表参数、非明细网格中的部件框中
    public static void GenEntireData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL, ResponseDataType DataType)
    {
        ArrayList QueryList = new ArrayList();
        QueryList.Add(new ReportQueryItem(RecordsetQuerySQL, "Detail"));
        QueryList.Add(new ReportQueryItem(ParameterQuerySQL, "Master"));
        GenMultiRecordset(DataPage, QueryList);
    }
    public static void GenEntireData(System.Web.UI.Page DataPage, string RecordsetQuerySQL, string ParameterQuerySQL)
    {
        GenEntireData(DataPage, RecordsetQuerySQL, ParameterQuerySQL, ReportDataBase.DefaultDataType);
    }
    //>>保留前面版本的函数,兼容以前版本所写程序
}
WebTM/App_Data/ReportData.cs
New file
@@ -0,0 +1,239 @@
using System;
//using System.Collections;
using System.Text;
using System.Data;
using System.Configuration;
using System.IO;
using System.IO.Compression;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//以下枚举指定报表数据的格式类型
public enum ResponseDataType
{
    PlainText, //报表数据为XML或JSON文本,在调试时可以查看报表数据。数据未经压缩,大数据量报表采用此种方式不合适
    ZipBinary, //报表数据为XML或JSON文本经过压缩得到的二进制数据。此种方式数据量最小(约为原始数据的1/10),但用Ajax方式加载报表数据时不能为此种方式
    ZipBase64, //报表数据为将 ZipBinary æ–¹å¼å¾—到的数据再进行 BASE64 ç¼–码的数据。此种方式适合用Ajax方式加载报表数据
};
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// ReportQueryItem
public class ReportQueryItem
{
    public string QuerySQL;
    public string RecordsetName;
    public ReportQueryItem(string AQuerySQL, string ARecordsetName)
    {
        QuerySQL = AQuerySQL;
        RecordsetName = ARecordsetName;
    }
};
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// ReportDataBase
public class ReportDataBase
{
    //指定报表的默认数据类型,便于统一定义整个报表系统的数据类型
    //在报表开发调试阶段,通常指定为 ResponseDataType.PlainText, ä»¥ä¾¿åœ¨æµè§ˆå™¨ä¸­æŸ¥çœ‹å“åº”的源文件时能看到可读的文本数据
    //在项目部署时,通常指定为 ResponseDataType.ZipBinary æˆ– ResponseDataType.ZipBase64,这样可以极大减少数据量,提供报表响应速度
    public const ResponseDataType DefaultDataType = ResponseDataType.PlainText; //PlainText ZipBinary ZipBase64
    //将报表XML数据文本输出到HTTP请求
    public static void ResponseData(System.Web.UI.Page DataPage, ref string DataText, ResponseDataType DataType)
    {
        //报表XML数据的前后不能附加任何其它数据,否则XML数据将不能成功解析,所以调用ClearContent方法清理网页中前面多余的数据
        DataPage.Response.ClearContent();
        if (ResponseDataType.PlainText == DataType)
        {
            // æŠŠxml对象发送给客户端
            //DataPage.Response.ContentType = "text/xml";
            DataPage.Response.Write(DataText);
        }
        else
        {
            //将string数据转换为byte[],以便进行压缩
            System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding();
            byte[] XmlBytes = converter.GetBytes(DataText);
            //在 HTTP å¤´ä¿¡æ¯ä¸­å†™å…¥æŠ¥è¡¨æ•°æ®åŽ‹ç¼©ä¿¡æ¯
            DataPage.Response.AppendHeader("gr_zip_type", "deflate");                  //指定压缩方法
            DataPage.Response.AppendHeader("gr_zip_size", XmlBytes.Length.ToString()); //指定数据的原始长度
            DataPage.Response.AppendHeader("gr_zip_encode", converter.HeaderName);     //指定数据的编码方式 utf-8 utf-16 ...
            // æŠŠåŽ‹ç¼©åŽçš„xml数据发送给客户端
            if (ResponseDataType.ZipBinary == DataType)
            {
                DeflateStream compressedzipStream = new DeflateStream(DataPage.Response.OutputStream, CompressionMode.Compress, true);
                compressedzipStream.Write(XmlBytes, 0, XmlBytes.Length);
                compressedzipStream.Close();
            }
            else //ResponseDataType.ZipBase64
            {
                MemoryStream memStream = new MemoryStream();
                DeflateStream compressedzipStream = new DeflateStream(memStream, CompressionMode.Compress, true);
                compressedzipStream.Write(XmlBytes, 0, XmlBytes.Length);
                compressedzipStream.Close(); //这句很重要,这样数据才能全部写入 MemoryStream
                // Read bytes from the stream.
                memStream.Seek(0, SeekOrigin.Begin); // Set the position to the beginning of the stream.
                int count = (int)memStream.Length;
                byte[] byteArray = new byte[count];
                count = memStream.Read(byteArray, 0, count);
                string Base64Text = Convert.ToBase64String(byteArray);
                DataPage.Response.Write(Base64Text);
            }
        }
        //报表XML数据的前后不能附加任何其它数据,否则XML数据将不能成功解析,所以调用End方法放弃网页中后面不必要的数据
        DataPage.Response.End();
    }
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//class XMLReportData äº§ç”ŸæŠ¥è¡¨éœ€è¦çš„xml数据
public class XMLReportData
{
    //根据 DataSet äº§ç”Ÿæä¾›ç»™æŠ¥è¡¨éœ€è¦çš„XML数据,参数DataType指定压缩编码数据的形式
    public static void GenDataSet(System.Web.UI.Page DataPage, DataSet ReportDataSet, ResponseDataType DataType)
    {
        string XMLText = ReportDataSet.GetXml();
        ReportDataBase.ResponseData(DataPage, ref XMLText, DataType);
    }
    //根据 DataTable äº§ç”Ÿæä¾›ç»™æŠ¥è¡¨éœ€è¦çš„XML数据,参数DataType指定压缩编码数据的形式
    public static void GenDataTable(System.Web.UI.Page DataPage, DataTable mydt, ResponseDataType DataType)
    {
        DataSet ds = new DataSet();
        ds.Tables.Add(mydt);
        GenDataSet(DataPage, ds, DataType);
    }
    //根据IDataReader, äº§ç”Ÿæä¾›ç»™æŠ¥è¡¨éœ€è¦çš„XML数据,其中的空值字段也会产生XML节点,参数DataType指定压缩编码数据的形式
    public static void GenNodeXmlDataFromReader(System.Web.UI.Page DataPage, IDataReader dr, ResponseDataType DataType)
    {
        string XMLText = "<xml>\n";
        while (dr.Read())
        {
            XMLText += "<row>";
            for (int i = 0; i < dr.FieldCount; ++i)
            {
                string FldName = dr.GetName(i);
                if (FldName == "")
                    FldName = "Fld" + i;
                XMLText += String.Format("<{0}>{1}</{0}>", FldName, HttpUtility.HtmlEncode(dr.GetValue(i).ToString()));
            }
            XMLText += "</row>\n";
        }
        XMLText += "</xml>\n";
        ReportDataBase.ResponseData(DataPage, ref XMLText, DataType);
    }
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//class JSONReportData äº§ç”ŸæŠ¥è¡¨éœ€è¦çš„ JSON æ ¼å¼æ•°æ®
public class JSONReportData
{
    //根据 DataSet äº§ç”Ÿæä¾›ç»™æŠ¥è¡¨éœ€è¦çš„JSON数据,参数DataType指定压缩编码数据的形式
    public static void GenDataSet(System.Web.UI.Page DataPage, DataSet ReportDataSet, ResponseDataType DataType)
    {
        string Out = GenDetailText(ReportDataSet);
        ReportDataBase.ResponseData(DataPage, ref Out, DataType);
    }
    //根据 DataTable äº§ç”Ÿæä¾›ç»™æŠ¥è¡¨éœ€è¦çš„JSON数据,参数DataType指定压缩编码数据的形式
    public static void GenDataTable(System.Web.UI.Page DataPage, DataTable dt, ResponseDataType DataType)
    {
        DataSet ds = new DataSet();
        ds.Tables.Add(dt);
        GenDataSet(DataPage, ds, DataType);
    }
    //根据 DataSet äº§ç”Ÿæä¾›ç»™æŠ¥è¡¨éœ€è¦çš„JSON文本数据
    public static string GenDetailText(DataSet ds)
    {
        StringBuilder sbJSONText = new StringBuilder("{\n");
        foreach (DataTable dt in ds.Tables)
        {
            //"recordset":[
            sbJSONText.Append('"');
            sbJSONText.Append(dt.TableName);
            sbJSONText.Append("\":[\n");
            foreach (DataRow dr in dt.Rows)
            {
                sbJSONText.Append('{');
                for (int i = 0; i < dt.Columns.Count; ++i)
                {
                    if (!dr.IsNull(i))
                    {
                        string Value;
                        if (dt.Columns[i].DataType.IsArray)
                        {
                            Value = Convert.ToBase64String((byte[])dr[i]);
                        }
                        else
                        {
                            Value = dr[i].ToString();
                            PrepareValueText(ref Value);
                        }
                        sbJSONText.AppendFormat("\"{0}\":\"{1}\",", dt.Columns[i].ColumnName, Value);
                    }
                }
                sbJSONText.Remove(sbJSONText.Length - 1, 1); //去掉每笔记录最后一个字段后面的","
                sbJSONText.Append("},\n");
            }
            sbJSONText.Remove(sbJSONText.Length - 2, 1); //去掉最后一条记录后面的","
            sbJSONText.Append("],\n");
        }
        sbJSONText.Remove(sbJSONText.Length - 2, 1); //去掉最后一记录集后面的","
        sbJSONText.Append("}");
        return sbJSONText.ToString();
    }
    //如果数据中包含有JSON规范中的特殊字符(" \ \r \n \t),多特殊字符加 \ ç¼–码
    public static void PrepareValueText(ref string ValueText)
    {
        bool HasSpecialChar = false;
        foreach(char ch in ValueText)
        {
            if (ch == '"' || ch == '\\' || ch == '\r' || ch == '\n' || ch == '\t')
            {
                HasSpecialChar = true;
                break;
            }
        }
        if (HasSpecialChar)
        {
            StringBuilder NewValueText = new StringBuilder();
            foreach (char ch in ValueText)
            {
                if (ch == '"' || ch == '\\' || ch == '\r' || ch == '\n' || ch == '\t')
                {
                    NewValueText.Append( '\\');
                    if (ch == '"' || ch == '\\')
                        NewValueText.Append( ch  );
                    else if (ch == '\r')
                        NewValueText.Append( 'r' );
                    else if (ch == '\n')
                        NewValueText.Append( 'n' );
                    else if (ch == '\t')
                        NewValueText.Append( 't' );
                }
                else
                {
                    NewValueText.Append( ch  );
                }
            }
            ValueText = NewValueText.ToString();
        }
    }
}
WebTM/Properties/PublishProfiles/LAYUI.pubxml.user
@@ -18,10 +18,10 @@
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
    <File Include="bin/WebTM.dll">
      <publishTime>04/22/2021 18:32:43</publishTime>
      <publishTime>04/23/2021 17:24:02</publishTime>
    </File>
    <File Include="bin/WebTM.pdb">
      <publishTime>04/22/2021 18:32:43</publishTime>
      <publishTime>04/23/2021 17:24:02</publishTime>
    </File>
    <File Include="layuiadmin/config.js">
      <publishTime>03/23/2021 16:57:43</publishTime>
@@ -941,6 +941,18 @@
    <File Include="views/component/说明.txt">
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
    <File Include="views/CreateControl.js">
      <publishTime>04/23/2021 17:23:49</publishTime>
    </File>
    <File Include="views/grf/汇报单.grf">
      <publishTime>04/23/2021 17:05:55</publishTime>
    </File>
    <File Include="views/GRInstall.js">
      <publishTime>04/23/2021 17:23:49</publishTime>
    </File>
    <File Include="views/GRUtility.js">
      <publishTime>04/23/2021 17:23:49</publishTime>
    </File>
    <File Include="views/home/console.html">
      <publishTime>04/09/2021 09:06:20</publishTime>
    </File>
@@ -954,7 +966,7 @@
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
    <File Include="views/index.html">
      <publishTime>04/21/2021 09:39:21</publishTime>
      <publishTime>04/22/2021 20:02:50</publishTime>
    </File>
    <File Include="views/senior/echarts/bar.html">
      <publishTime>03/23/2021 16:57:43</publishTime>
@@ -1202,11 +1214,17 @@
    <File Include="views/生产工序管理/委外工序汇报单/Sc_StationOutBillMainList.html">
      <publishTime>03/29/2021 19:54:57</publishTime>
    </File>
    <File Include="views/生产工序管理/工序汇报单/HBarPlanPrint.html">
      <publishTime>04/23/2021 16:56:48</publishTime>
    </File>
    <File Include="views/生产工序管理/工序汇报单/Sc_Add_ProcessReportList.html">
      <publishTime>04/22/2021 19:52:57</publishTime>
      <publishTime>04/23/2021 16:59:42</publishTime>
    </File>
    <File Include="views/生产工序管理/工序汇报单/Sc_ProcessReport_PDA.html">
      <publishTime>04/09/2021 17:56:11</publishTime>
    </File>
    <File Include="views/生产工序管理/工序汇报单/xmlLBM_ProcessReport.aspx">
      <publishTime>04/23/2021 16:41:10</publishTime>
    </File>
    <File Include="views/生产工序管理/工序派工单/Sc_Add_ProcessSendWork.html">
      <publishTime>04/21/2021 16:40:38</publishTime>
@@ -1257,7 +1275,7 @@
      <publishTime>04/09/2021 09:06:20</publishTime>
    </File>
    <File Include="views/车间管理/委外工序接收单/Cj_StationEntrustOutBill.html">
      <publishTime>04/21/2021 09:39:21</publishTime>
      <publishTime>04/22/2021 20:02:50</publishTime>
    </File>
    <File Include="views/车间管理/委外工序接收单/Cj_StationEntrustOutBillList.html">
      <publishTime>04/08/2021 10:57:44</publishTime>
@@ -1272,10 +1290,10 @@
      <publishTime>04/08/2021 10:57:44</publishTime>
    </File>
    <File Include="views/车间管理/工序出站发出单/Cj_StationOutBill.html">
      <publishTime>04/22/2021 17:01:48</publishTime>
      <publishTime>04/22/2021 20:02:50</publishTime>
    </File>
    <File Include="views/车间管理/工序出站发出单/Cj_StationOutBillList.html">
      <publishTime>04/22/2021 17:08:14</publishTime>
      <publishTime>04/22/2021 20:02:50</publishTime>
    </File>
    <File Include="views/车间管理/工序流转/MES_StationInBill.html">
      <publishTime>03/29/2021 20:16:17</publishTime>
@@ -1302,10 +1320,10 @@
      <publishTime>03/23/2021 16:57:43</publishTime>
    </File>
    <File Include="views/车间管理/工序进站接收单/Cj_StationInBill.html">
      <publishTime>04/21/2021 09:39:21</publishTime>
      <publishTime>04/22/2021 20:02:50</publishTime>
    </File>
    <File Include="views/车间管理/工序进站接收单/Cj_StationInBillList.html">
      <publishTime>04/21/2021 09:39:21</publishTime>
      <publishTime>04/22/2021 20:02:51</publishTime>
    </File>
    <File Include="views/车间管理/报表分析/Qk_OutProcessList.html">
      <publishTime>03/23/2021 16:57:43</publishTime>
WebTM/WebTM.csproj
@@ -64,6 +64,8 @@
    <Content Include="layuiadmin\layui\font\iconfont.ttf" />
    <Content Include="layuiadmin\layui\font\iconfont.woff" />
    <None Include="Properties\PublishProfiles\JFTM.pubxml" />
    <Content Include="views\CreateControl.js" />
    <Content Include="views\grf\汇报单.grf" />
    <None Include="Web.Debug.config">
      <DependentUpon>Web.config</DependentUpon>
    </None>
@@ -378,6 +380,8 @@
    <Content Include="views\component\upload\index.html" />
    <Content Include="views\component\util\index.html" />
    <Content Include="views\component\说明.txt" />
    <Content Include="views\GRInstall.js" />
    <Content Include="views\GRUtility.js" />
    <Content Include="views\home\console.html" />
    <Content Include="views\home\homepage1.html" />
    <Content Include="views\home\homepage2.html" />
@@ -442,6 +446,8 @@
    <Content Include="views\基础资料\采购基础资料\Gy_Supplier.html" />
    <Content Include="views\模治具管理\模治具管理\Gy_CheckToolsFileMainList.html" />
    <Content Include="views\模治具管理\模治具管理\Gy_Mould.html" />
    <Content Include="views\生产工序管理\工序汇报单\HBarPlanPrint.html" />
    <Content Include="views\生产工序管理\工序汇报单\xmlLBM_ProcessReport.aspx" />
    <Content Include="views\车间管理\工序出站发出单\Cj_StationOutBill.html" />
    <Content Include="views\车间管理\工序出站发出单\Cj_StationOutBillList.html" />
    <Content Include="views\车间管理\工序进站接收单\Cj_StationInBill.html" />
@@ -547,7 +553,16 @@
    <None Include="Properties\PublishProfiles\Web.pubxml" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="App_Data\MssqlReportData.cs" />
    <Compile Include="App_Data\ReportData.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="views\生产工序管理\工序汇报单\xmlLBM_ProcessReport.aspx.cs">
      <DependentUpon>xmlLBM_ProcessReport.aspx</DependentUpon>
      <SubType>ASPXCodeBehind</SubType>
    </Compile>
    <Compile Include="views\生产工序管理\工序汇报单\xmlLBM_ProcessReport.aspx.designer.cs">
      <DependentUpon>xmlLBM_ProcessReport.aspx</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <Folder Include="views\仓存管理\调拨单核对\" />
WebTM/views/CreateControl.js
New file
@@ -0,0 +1,158 @@
//1、变量 gr_InstallPath ç­‰å·åŽé¢çš„参数是插件安装文件的所在的网站目录,一般从网站的根目
//   å½•开始寻址,插件安装文件一定要存在于指定目录下。
//2、gr_Version ç­‰å·åŽé¢çš„参数是插件安装包的版本号,如果有新版本插件安装包,应上传新版
//   æœ¬æ’件安装文件到网站对应目录,并更新这里的版本号。
//3、更多详细信息请参考帮助中“报表插件(WEB报表)->在服务器部署插件安装包”部分
var gr_InstallPath = "grinstall"; //实际项目中应该写从根目录寻址的目录,如gr_InstallPath="/myapp/report/grinstall";
var gr_Version = "6,0,15,0819";
//以下注册号为本机开发测试注册号,报表访问地址为localhost时可以去掉试用标志
//购买注册后,请用您的注册用户名与注册号替换下面变量中值
var gr_UserName = '锐浪报表插件本机开发测试注册';
var gr_SerialNo = '8PJH495VA61FLI5TG0L4KB2337F1G7AKLD6LNNA9F9T28IKRU6N33P8Z6XX4BUYB5E9NZ6INMD5T8EN47IX63VV7F9BJHB5ZJQQ6MX3J3V12C4XDHU97SXX6X3VA57KCB6';
//报表插件目前只能在32位浏览器中使用
var _gr_platform = window.navigator.platform;
if (_gr_platform.indexOf("64") > 0)
    alert("锐浪Grid++Report报表插件不能运行在64位浏览器中,相关报表与打印功能将无法正常运新,请改用32位浏览器!");
//区分浏览器(IE or not)
var _gr_agent = navigator.userAgent.toLowerCase();
var _gr_isIE = (_gr_agent.indexOf("msie")>0)? true : false;
var gr_CodeBase;
if( _gr_isIE )
    gr_CodeBase = 'codebase="' + gr_InstallPath + '/grbsctl6.cab#Version=' + gr_Version + '"';
else
    gr_CodeBase = '';
//创建报表对象,报表对象是不可见的对象,详细请查看帮助中的 IGridppReport
//Name - æŒ‡å®šæ’件对象的ID,可以用js代码 document.getElementById("%Name%") èŽ·å–æŠ¥è¡¨å¯¹è±¡
//EventParams - æŒ‡å®šæŠ¥è¡¨å¯¹è±¡çš„需要响应的事件,如:"<param name='OnInitialize' value=OnInitialize> <param name='OnProcessBegin' value=OnProcessBegin>"形式,可以指定多个事件
function CreateReport(PluginID, EventParams)
{
    var typeid;
    if( _gr_isIE )
        typeid = 'classid="clsid:396841CC-FC0F-4989-8182-EBA06AA8CA2F" ';
    else
        typeid = 'type="application/x-grplugin6-report" ';
    typeid += gr_CodeBase;
    document.write('<object id="' + PluginID + '" ' + typeid);
    document.write(' width="0" height="0" VIEWASTEXT>');
    if (EventParams != undefined)
        document.write(EventParams);
    document.write('</object>');
    document.write('<script type="text/javascript">');
        document.write(PluginID + '.Register("' + gr_UserName + '", "' + gr_SerialNo + '");');
    document.write('</script>');
}
//用更多的参数创建报表打印显示插件,详细请查看帮助中的 IGRPrintViewer
//PluginID - æ’ä»¶çš„ID,可以通过 var ReportViewer = document.getElementById("%PluginID%"); è¿™æ ·çš„æ–¹å¼èŽ·å–æ’ä»¶å¼•ç”¨å˜é‡
//Width - æ’件的显示宽度,"100%"为整个显示区域宽度,"500"表示500个屏幕像素点
//Height - æ’件的显示高度,"100%"为整个显示区域高度,"500"表示500个屏幕像素点
//ReportURL - èŽ·å–æŠ¥è¡¨æ¨¡æ¿çš„URL
//DataURL - èŽ·å–æŠ¥è¡¨æ•°æ®çš„URL
//AutoRun - æŒ‡å®šæ’件在创建之后是否自动生成并展现报表,值为false或true
//ExParams - æŒ‡å®šæ›´å¤šçš„æ’件属性阐述,形如: "<param name="%ParamName%" value="%Value%">"这样的参数串
function CreatePrintViewerEx2(PluginID, Width, Height, ReportURL, DataURL, AutoRun, ExParams)
{
    var typeid;
    if( _gr_isIE )
        typeid = 'classid="clsid:ABB64AAC-D7E8-4733-B052-1B141C92F3CE" ' + gr_CodeBase;
    else
        typeid = 'type="application/x-grplugin6-printviewer"';
    document.write('<object id="' + PluginID + '" ' + typeid);
    document.write(' width="' + Width + '" height="' + Height + '">');
    document.write('<param name="ReportURL" value="' + ReportURL + '">');
    document.write('<param name="DataURL" value="' + DataURL + '">');
    document.write('<param name="AutoRun" value=' + AutoRun + '>');
    document.write('<param name="SerialNo" value="' + gr_SerialNo + '">');
    document.write('<param name="UserName" value="' + gr_UserName + '">');
    document.write(ExParams);
    document.write('</object>');
}
//用更多的参数创建报表打印显示插件,详细请查看帮助中的 IGRDisplayViewer
//PluginID - æ’ä»¶çš„ID,可以通过 var ReportViewer = document.getElementById("%PluginID%"); è¿™æ ·çš„æ–¹å¼èŽ·å–æ’ä»¶å¼•ç”¨å˜é‡
//Width - æ’件的显示宽度,"100%"为整个显示区域宽度,"500"表示500个屏幕像素点
//Height - æ’件的显示高度,"100%"为整个显示区域高度,"500"表示500个屏幕像素点
//ReportURL - èŽ·å–æŠ¥è¡¨æ¨¡æ¿çš„URL
//DataURL - èŽ·å–æŠ¥è¡¨æ•°æ®çš„URL
//AutoRun - æŒ‡å®šæ’件在创建之后是否自动生成并展现报表,值为false或true
//ExParams - æŒ‡å®šæ›´å¤šçš„æ’件属性阐述,形如: "<param name="%ParamName%" value="%Value%">"这样的参数串
function CreateDisplayViewerEx2(PluginID, Width, Height, ReportURL, DataURL, AutoRun, ExParams)
{
    var typeid;
    if( _gr_isIE )
        typeid = 'classid="clsid:600CD6D9-EBE1-42cb-B8DF-DFB81977122E" ' + gr_CodeBase;
    else
        typeid = 'type="application/x-grplugin6-displayviewer"';
    document.write('<object id="' + PluginID + '" ' + typeid);
    document.write(' width="' + Width + '" height="' + Height + '">');
    document.write('<param name="ReportURL" value="' + ReportURL + '">');
    document.write('<param name="DataURL" value="' + DataURL + '">');
    document.write('<param name="AutoRun" value=' + AutoRun + '>');
    document.write('<param name="SerialNo" value="' + gr_SerialNo + '">');
    document.write('<param name="UserName" value="' + gr_UserName + '">');
    document.write(ExParams);
    document.write('</object>');
}
//以 ReportDesigner ä¸º ID åˆ›å»ºæŠ¥è¡¨è®¾è®¡å™¨æ’ä»¶(Designer),详细请查看帮助中的 IGRDesigner
//Width - æ’件的显示宽度,"100%"为整个显示区域宽度,"500"表示500个屏幕像素点
//Height - æ’件的显示高度,"100%"为整个显示区域高度,"500"表示500个屏幕像素点
//LoadReportURL - è¯»å–报表模板的URL,运行时从此URL读入报表模板数据并加载到设计器插件
//SaveReportURL - ä¿å­˜æŠ¥è¡¨æ¨¡æ¿çš„URL,保存设计后的结果数据,由此URL的服务在WEB服务端将报表模板持久保存
//DataURL - èŽ·å–æŠ¥è¡¨è¿è¡Œæ—¶æ•°æ®çš„URL,在设计器中进入打印视图与查询视图时从此URL获取报表数据
//ExParams - æŒ‡å®šæ›´å¤šçš„æ’件属性阐述,形如: "<param name="%ParamName%" value="%Value%">"这样的参数串
function CreateDesignerEx(Width, Height, LoadReportURL, SaveReportURL, DataURL, ExParams)
{
    var typeid;
    if( _gr_isIE )
        typeid = 'classid="clsid:CE666189-5D7C-42ee-AAA4-E5CB375ED3C7" ' + gr_CodeBase;
    else
        typeid = 'type="application/x-grplugin6-designer"';
    document.write('<object id="ReportDesigner" ' + typeid);
    document.write(' width="' + Width + '" height="' + Height + '">');
    document.write('<param name="LoadReportURL" value="' + LoadReportURL + '">');
    document.write('<param name="SaveReportURL" value="' + SaveReportURL + '">');
    document.write('<param name="DataURL" value="' + DataURL + '">');
    document.write('<param name="SerialNo" value="' + gr_SerialNo + '">');
    document.write('<param name="UserName" value="' + gr_UserName + '">');
    document.write(ExParams);
    document.write('</object>');
}
//以 ReportViewer ä¸º ID åˆ›å»ºæŠ¥è¡¨æ‰“印显示器插件(PrintViewer),参数说明参考 CreatePrintViewerEx2
function CreatePrintViewerEx(Width, Height, ReportURL, DataURL, AutoRun, ExParams)
{
    CreatePrintViewerEx2("ReportViewer", Width, Height, ReportURL, DataURL, AutoRun, ExParams)
}
//以 ReportViewer ä¸º ID åˆ›å»ºæŠ¥è¡¨æŸ¥è¯¢æ˜¾ç¤ºå™¨æ’ä»¶(DisplayViewer),参数说明参考 CreateDisplayViewerEx2
function CreateDisplayViewerEx(Width, Height, ReportURL, DataURL, AutoRun, ExParams)
{
    CreateDisplayViewerEx2("ReportViewer", Width, Height, ReportURL, DataURL, AutoRun, ExParams)
}
//以 ReportViewer ä¸º ID åˆ›å»ºæŠ¥è¡¨æ‰“印显示器插件(PrintViewer),插件大小为100%充满位置区域,插件创建后会自动运行,参数说明参考 CreatePrintViewerEx2
function CreatePrintViewer(ReportURL, DataURL)
{
    CreatePrintViewerEx("100%", "100%", ReportURL, DataURL, true, "");
}
//以 ReportViewer ä¸º ID åˆ›å»ºæŠ¥è¡¨æŸ¥è¯¢æ˜¾ç¤ºå™¨æ’ä»¶(DisplayViewer),插件大小为100%充满位置区域,插件创建后会自动运行,参数说明参考 CreateDisplayViewerEx2
function CreateDisplayViewer(ReportURL, DataURL)
{
    CreateDisplayViewerEx("100%", "100%", ReportURL, DataURL, true, "");
}
//以 ReportDesigner ä¸º ID åˆ›å»ºæŠ¥è¡¨è®¾è®¡å™¨æ’ä»¶(Designer),插件大小为100%充满位置区域,参数说明参考 CreateDesignerEx
function CreateDesigner(LoadReportURL, SaveReportURL, DataURL)
{
    CreateDesignerEx("100%", "100%", LoadReportURL, SaveReportURL, DataURL, "");
}
WebTM/views/GRInstall.js
New file
@@ -0,0 +1,50 @@
//在网页中引用此文件之前,应该先引用CreateControl.js
//document.write("<script type='text/javascript' src='CreateControl.js'></script>");
//插入一个报表对象,用来判断插件是否已经安装,或是否需要安装更新版本
//此函数应该在网页的<head>中调用,具体请看例子 ReportHome.htm ä¸­çš„用法
function Install_InsertReport()
{
    var typeid;
    if( _gr_isIE )
        typeid = 'classid="clsid:396841CC-FC0F-4989-8182-EBA06AA8CA2F" ';
    else
        typeid = 'type="application/x-grplugin6-report" ';
    typeid += gr_CodeBase;
    document.write('<object id="_ReportOK" ' + typeid);
    document.write(' width="0" height="0" VIEWASTEXT>');
    document.write('</object>');
}
//用来判断插件是否已经安装,或是否需要安装更新版本。如果需要安装,则在网页中插入安装相关的文字内容
//如果插件已经安装且也不要更新,则返回 true,反之为 false。
//此函数应该在网页的<body>开始位置处调用,具体请看例子 ReportHome.htm ä¸­çš„用法
function Install_Detect()
{
    var _ReportOK = document.getElementById("_ReportOK");
    if (_ReportOK.Register == undefined) //if ((_ReportOK == null) || (_ReportOK.Register == undefined))
    {
        document.write('<div style="width: 100%; background-color: #fff8dc; text-align: center; vertical-align: middle; line-height: 20pt; padding-bottom: 12px; padding-top: 12px;">');
            document.write('<strong> æ­¤ç½‘站需要安装 é”æµªæŠ¥è¡¨æ’ä»¶ æ‰èƒ½ä¿è¯å…¶æ­£å¸¸è¿è¡Œ<br /></strong>');
        if( _gr_isIE )
            document.write('<strong><span style="color: #ff0000"> å¦‚浏览器的顶部或底部出现提示条,左键点击提示条并运行加载项,按此方式安装最简便</span><br /></strong>');
            document.write('<a href="' + gr_InstallPath + '/grbsctl6.exe"><span style="color: #ff0000"><strong>点击此处下载锐浪报表插件安装包<br /></strong></span></a>');
            document.write('锐浪报表插件安装后,<a href="#" onclick="javascript:document.location.reload();">点击此处</a> é‡æ–°åŠ è½½æ­¤ç½‘ç«™');
        document.write('</div>');
        return false;
    }
    else if ((_ReportOK.Utility.ShouldUpdatePlugin == undefined) || _ReportOK.Utility.ShouldUpdatePlugin(gr_Version) == true)  //检查是否应该下载新版本程序
    {
        document.write('<div style="width: 100%; background-color: #fff8dc; text-align: center; vertical-align: middle; line-height: 20pt; padding-bottom: 12px; padding-top: 12px;">');
            document.write('<strong> æ­¤ç½‘站需要升级安装 é”æµªæŠ¥è¡¨æ’ä»¶ æ‰èƒ½ä¿è¯å…¶æ­£å¸¸è¿è¡Œ<br /></strong>');
            document.write('<a href="' + gr_InstallPath + '/grbsctl6.exe"><span style="color: #ff0000"><strong>点击此处下载锐浪报表插件安装包<br /></strong></span></a>');
            document.write('插件安装时必须关闭网页窗口,点击本网页窗口的关闭按钮进行关闭,安装完成后再重新打开本网页<br />');
            document.write('如安装中出现“不能打开要写入的文件...”的提示时,请将网页窗口关闭,然后点击“重试”按钮继续安装');
        document.write('</div>');
        return false;
    }
    return true;
}
WebTM/views/GRUtility.js
New file
@@ -0,0 +1,109 @@
//由三原色值合成颜色整数值
function ColorFromRGB(red, green, blue)
{
    return red + green*256 + blue*256*256;
}
//获取颜色中的红色值,传入参数为整数表示的RGB值
function ColorGetR(intColor)
{
    return intColor & 255;
}
//获取颜色中的绿色值,传入参数为整数表示的RGB值
function ColorGetG(intColor)
{
    return (intColor>>8) & 255;
}
//获取颜色中的蓝色值,传入参数为整数表示的RGB值
function ColorGetB(intColor)
{
    return (intColor>>16) & 255;
}
//创建 XMLHttpRequest å¯¹è±¡
function CreateXMLHttpRequest()
{
    var xmlhttp;
    if (window.XMLHttpRequest)
        xmlhttp = new XMLHttpRequest(); // code for IE7+, Firefox, Chrome, Opera, Safari
    else
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5
    return xmlhttp;
}
//按异步方式请求报表数据,在响应事件中将数据加载进报表,然后执行后续任务函数
function AjaxReportRun(Report, DataUrl, RunFun)
{
    var xmlhttp = CreateXMLHttpRequest();
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            Report.LoadDataFromAjaxRequest(xmlhttp.responseText, xmlhttp.getAllResponseHeaders()); //加载报表数据
            RunFun(); //数据加载后需要执行的任务
        }
    }
    xmlhttp.open("POST", encodeURI(DataUrl), true);
    xmlhttp.send();
}
//按异步方式请求报表数据,在响应事件中将数据加载进报表,并启动报表查看器的运行
function AjaxReportViewerStart(ReportViewer, DataUrl)
{
    ReportViewer.Stop(); //首先停止报表的运行
    var xmlhttp = CreateXMLHttpRequest();
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            ReportViewer.Report.LoadDataFromAjaxRequest(xmlhttp.responseText, xmlhttp.getAllResponseHeaders()); //加载报表数据
            ReportViewer.Start(); //启动报表运行
        }
    }
    xmlhttp.open("POST", encodeURI(DataUrl), true);
    xmlhttp.send();
}
//按异步方式请求报表模板与报表数据,在响应事件中将模板与数据加载进报表,并启动报表查看器的运行
function AjaxReportViewerStart2(ReportViewer, ReportUrl, DataUrl, ReportUrlMethod)
{
    var xmlhttp = CreateXMLHttpRequest();
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            ReportViewer.Report.LoadFromStr(xmlhttp.responseText);
            AjaxReportViewerStart(ReportViewer, DataUrl);
        }
    }
    xmlhttp.open(ReportUrlMethod, encodeURI(ReportUrl), true);
    xmlhttp.send();
}
//按异步方式请求报表模板,在响应事件中将模板加载
function AjaxReportLoad(Report, ReportUrl, ReportUrlMethod)
{
    var xmlhttp = CreateXMLHttpRequest();
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
            Report.LoadFromStr(xmlhttp.responseText);
    }
    xmlhttp.open(ReportUrlMethod, encodeURI(ReportUrl), true);
    xmlhttp.send();
}
//按同步方式请求报表数据,数据请求方法调用后紧接着调用报表载入数据的方法
//用 Ajax è½½å…¥å­æŠ¥è¡¨æ•°æ®å¿…须用 HTTP åŒæ­¥æ•°æ®è¯·æ±‚,即采用本函数
function AjaxSyncLoadReportData(Report, DataUrl)
{
    var xmlhttp = CreateXMLHttpRequest();
    xmlhttp.open("POST", encodeURI(DataUrl), false);
    xmlhttp.send();
    Report.LoadDataFromAjaxRequest(xmlhttp.responseText, xmlhttp.getAllResponseHeaders()); //加载报表数据
}
WebTM/views/grf/»ã±¨µ¥.grf
New file
@@ -0,0 +1,712 @@
Object Report
    Version='6.0.0.6'
    Object Font
        Name='宋体'
        Size=105000,0
        Weight=400
        Charset=134
    End
    Object Printer
        Height=29.7
        Oriention=Landscape
        LeftMargin=1.5
        TopMargin=0.5
        RightMargin=1.5
        BottomMargin=0.5
    End
    Object DetailGrid
        Object Recordset
            Items Field
                Item
                    Name='单据号'
                End
                Item
                    Name='日期'
                    Type=DateTime
                    Format='yyyy//MM//dd'
                End
                Item
                    Name='供应商'
                End
                Item
                    Name='物料代码'
                End
                Item
                    Name='物料名称'
                End
                Item
                    Name='规格型号'
                End
                Item
                    Name='计量单位'
                End
                Item
                    Name='数量'
                    Type=Integer
                End
                Item
                    Name='单价'
                    Type=Currency
                End
                Item
                    Name='金额'
                    Type=Currency
                End
                Item
                    Name='含税单价'
                    Type=Currency
                End
                Item
                    Name='交货日期'
                    Type=DateTime
                    Format='yyyy//MM//dd'
                End
                Item
                    Name='业务员'
                End
                Item
                    Name='行号'
                End
                Item
                    Name='批次'
                End
                Item
                    Name='让步接收'
                End
                Item
                    Name='生产日期'
                End
                Item
                    Name='合格数量'
                End
                Item
                    Name='计划跟踪单号'
                End
                Item
                    Name='送货单号'
                End
                Item
                    Name='采购订单号'
                End
                Item
                    Name='源单单号'
                End
                Item
                    Name='表头备注'
                End
                Item
                    Name='预计到货日期'
                End
                Item
                    Name='供应商代码'
                End
                Item
                    Name='Field3'
                End
                Item
                    Name='表体备注'
                End
            End
        End
        Items Column
            Item
                Name='序号'
                Width=0.767292
            End
            Item
                Name='计划跟踪单号'
                Width=2.80458
            End
            Item
                Name='物料代码'
                Width=3.20146
            End
            Item
                Name='物料'
                Width=2.98979
            End
            Item
                Name='规格型号'
                Width=3.01625
            End
            Item
                Name='计量单位'
                Width=1.79917
            End
            Item
                Name='数量'
                Width=1.98438
            End
            Item
                Name='Column2'
                Width=0.899583
            End
            Item
                Name='Column3'
                Width=1.905
            End
            Item
                Name='Column4'
                Width=2.01083
            End
            Item
                Name='Column5'
                Width=1.98438
            End
            Item
                Name='Column6'
                Width=3.20146
            End
        End
        Object ColumnContent
            Height=1.00542
            Items ColumnContentCell
                Item
                    Column='序号'
                    FreeCell=T
                    Items Control
                        Item
                            Type=SystemVarBox
                            Name='SystemVarBox1'
                            Dock=Fill
                            Object Font
                                Name='宋体'
                                Weight=400
                                Charset=134
                            End
                            SystemVar=RowNo
                        End
                    End
                End
                Item
                    Column='计划跟踪单号'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    ShrinkFontToFit=T
                    DataField='源单单号'
                End
                Item
                    Column='物料代码'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    ShrinkFontToFit=T
                    DataField='物料代码'
                End
                Item
                    Column='物料'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    ShrinkFontToFit=T
                    DataField='物料名称'
                End
                Item
                    Column='规格型号'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    ShrinkFontToFit=T
                    DataField='规格型号'
                End
                Item
                    Column='计量单位'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    ShrinkFontToFit=T
                    DataField='批次'
                End
                Item
                    Column='数量'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    ShrinkFontToFit=T
                    DataField='生产日期'
                End
                Item
                    Column='Column2'
                    FreeCell=T
                    Items Control
                        Item
                            Type=FieldBox
                            Name='FieldBox1'
                            Dock=Fill
                            Object Font
                                Name='宋体'
                                Weight=400
                                Charset=134
                            End
                            TextAlign=MiddleCenter
                            DataField='计量单位'
                        End
                    End
                End
                Item
                    Column='Column3'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=MiddleCenter
                    DataField='数量'
                End
                Item
                    Column='Column4'
                    TextAlign=MiddleCenter
                End
                Item
                    Column='Column5'
                End
                Item
                    Column='Column6'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    FreeCell=T
                    Items Control
                        Item
                            Type=FieldBox
                            Name='FieldBox2'
                            Dock=Fill
                            DataField='表体备注'
                        End
                    End
                End
            End
        End
        Object ColumnTitle
            Height=1.00542
            RepeatStyle=OnPage
            Items ColumnTitleCell
                Item
                    GroupTitle=F
                    Column='序号'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=MiddleCenter
                    Text='序号'
                End
                Item
                    GroupTitle=F
                    Column='计划跟踪单号'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=MiddleCenter
                    Text='订单号'
                End
                Item
                    GroupTitle=F
                    Column='物料代码'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    Text='物料代码'
                End
                Item
                    GroupTitle=F
                    Column='物料'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    Text='物料名称'
                End
                Item
                    GroupTitle=F
                    Column='规格型号'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    Text='规格型号'
                End
                Item
                    GroupTitle=F
                    Column='计量单位'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    Text='批次号'
                End
                Item
                    GroupTitle=F
                    Column='数量'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    Text='生产日期'
                End
                Item
                    GroupTitle=F
                    Column='Column2'
                    Object Font
                        Name='宋体'
                        Size=82500,0
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    Text='计量单位'
                End
                Item
                    GroupTitle=F
                    Column='Column3'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=MiddleCenter
                    Text='送货数量'
                End
                Item
                    GroupTitle=F
                    Column='Column4'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=MiddleCenter
                    Text='包装数*定量'
                End
                Item
                    GroupTitle=F
                    Column='Column5'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=MiddleCenter
                    Text='签收数量'
                End
                Item
                    GroupTitle=F
                    Column='Column6'
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    WordWrap=T
                    TextAlign=MiddleCenter
                    Text='备注'
                End
            End
        End
    End
    Items ReportHeader
        Item
            Name='ReportHeader1'
            Height=5.60917
            Items Control
                Item
                    Type=MemoBox
                    Name='MemoBox3'
                    Left=7.59354
                    Top=1.5875
                    Width=11.6152
                    Height=0.873125
                    Object Border
                        Styles=[DrawBottom]
                    End
                    Object Font
                        Name='宋体'
                        Size=180000,0
                        Bold=T
                        Charset=134
                    End
                    TextAlign=TopCenter
                    Text='送     è´§    æ¸…    å•\r\n'
                End
                Item
                    Type=Barcode
                    Name='Barcode1'
                    Left=21.0079
                    Top=0.608542
                    Width=3.59833
                    Height=2.80458
                    BarcodeType=QRCode
                    Text='[#单据号#]'
                    Object Font
                        Name='宋体'
                        Size=82500,0
                        Weight=400
                        Charset=134
                    End
                End
                Item
                    Type=MemoBox
                    Name='MemoBox4'
                    Left=0.396875
                    Top=0.740833
                    Width=15.0019
                    Height=0.79375
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    Text='供应商:[#供应商#]'
                End
                Item
                    Type=MemoBox
                    Name='MemoBox6'
                    Left=0.396875
                    Top=2.51354
                    Width=14.605
                    Height=0.6
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=TopLeft
                    Text='原送货单号:[#送货单号#]'
                End
                Item
                    Type=MemoBox
                    Name='MemoBox7'
                    Left=0.396875
                    Top=3.09563
                    Width=8.20208
                    Height=0.6
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=TopLeft
                    Text='单据号:[#单据号#]'
                End
                Item
                    Type=MemoBox
                    Name='MemoBox10'
                    Left=0.396875
                    Top=3.70417
                    Width=14.605
                    Height=0.6
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=TopLeft
                    Text='收货地址:浙江省台州市椒江区开发大道东段818号\r'
                End
                Item
                    Type=MemoBox
                    Name='MemoBox11'
                    Left=12.7
                    Top=3.09563
                    Width=6.40292
                    Height=0.6
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    Text='供应商编码:[#供应商代码#]'
                End
                Item
                    Type=MemoBox
                    Name='MemoBox12'
                    Left=0.396875
                    Top=4.31271
                    Width=8.20208
                    Height=0.6
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=TopLeft
                    Text='送货日期:[#日期#]'
                End
                Item
                    Type=MemoBox
                    Name='MemoBox13'
                    Left=0.396875
                    Top=4.92125
                    Width=8.20208
                    Height=0.6
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=TopLeft
                    Text='收货联系人:黄建'
                End
                Item
                    Type=MemoBox
                    Name='MemoBox14'
                    Left=12.7
                    Top=4.92125
                    Width=8.20208
                    Height=0.6
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=TopLeft
                    Text='电话:13185687491'
                End
                Item
                    Type=PictureBox
                    Name='PictureBox1'
                    Left=0.396875
                    Top=0.211667
                    Width=2.80458
                    Height=0.582083
                    Picture=-2055
iVBORw0KGgoAAAANSUhEUgAAAEwAAAAbCAYAAADWHGlkAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAecSURBVGhD7Vlr
bFRFFJ5uCxgkgcTE3/pDfxjjD02MGAx9v0tEEjX6S4yAUUGiiRA0RhRE+tjubktLy0MNAgqFBugD2/IKpQ+00G5LKWxpaUsLbdFS+6KPPZ4zc27v3b23tDUgkPAlX27v
uefMnfl27syZU1Hd5QFPRw/0DNwCDbXtLVDXot8PDXfDpRt/Q3Pvdbbo6B/thbOtHVB77Rq4Day96obW7r/YS8dQXx+cbz8Gde3FJha3V8Ch1mr08ipnAyraPOBuu34H
drCnQlPbTWjq7uS7O8PrHQVPYx1c6qjHN5vfbYQQ89NARCVCjruNTWiMcIF47Xu+AzjdPIg2ByzfkcMWHU8t2wMiLBlEqN2XYekwb/EO9tJRPzqGz7OR2yyYCbbwDAhL
L2VvHSKSntN7iElmhiSxp4IITUSm8N3kEBGZIIKz+G5iCBGSDAGxLiiob2cTQECcEwIMHai42g8iLhW+zCpmi8K1zk4ciANscQ6McfnQhhQxDrDnn2ZvhSvDo2CLN/vr
dIIITzX90gEx2+Rzatccg8QxGCEiU0HEOvhucohQ7G/U5P6PBGNMXTCcutTJPINgslPh+nSuaO7HDjlg9a5ytig8s/RHGWuLTYMAEsFAEtFGz+Kz2Vvheu+Aaj8+Vfcn
wWUM/lDy3gWO8gqOUAiK5ndpPvF0NRDbMEJE4bIQ6+S7ySFCUeDIyT9hFCxJdsRXMPyVI/wFc8Kne8rYAjDqpbXILjsqIvBl4+uLRvzF6Fm0HS40XeQogK4ebAsHKKKt
YnAtwraoP08kbOEIhVnRO6V93M+fIYnsqTB9wVJQMDvfTYz/LJinpRMHjoLEuGDlznxYe6gaeR7WHkbidVNBCXZ4C7btgo+SjnCUEiwQhXx+5c/K38B1edUQnHoc28TB
hvh2XgqGIq/LP8f+dGXmKhoxfcFQ9HspWFbORTlTYtebd04NB6pKpWBPv/8bW5Rg1P4nGSfZ4ovRsVGMycABp8LAyBBblWAiIpnvJscDJ9jqnQW4djmhqqWRLWZ4vV4p
6uxFGWzRBVvhOsYWM15Yk4OzzAmdV1rYwoJFPsyCZW5HPxd0D1GcVbKnbDTDRPg2+TdhXLC0iQVbmoyC4SbT1a5vMlIwzPf64TbgRgu3LWjEA7eGPRJsmoIty96Dfg48
/uhHKCuQYDbMxzRMRbB3NxRKwS6160exWXGYh2E7r3y9FxauOQyvrTniwwVf6BsLYfqCUVpxDwVbzoI1dQ6yxRokWGCsvvZMRbC3NxyVgtW19LAFYCYJRv3CXEkyCtML
IyP9jkbTFgz9/w/Bmrv62WINJZje1nQEu9CqH95lWoFxcsbGU8avkthx+okzfcFI9LskWHnzwH0RrLZN/9w1wUgEEUvHHj9i7mbE9AW7i7tkFX4aSjB9EV6WvXvqgsXp
HZmKYG99U4SDdcDlJr1kowRzwdxFKTAvgWj34dw4vb+E+ypYQ3cNCpYGn/9SxBaAVRm7ceY4obvTtw7lDxpk0GL9PDklwTYXyMH2lJ9li1r0KXFtHByB2mEz3UgjHgn2
8AjmhYMNx3FRdcFn+/RPcsVPp+RC6+64c1WT2p7zRhrf6YJ9eAfBXvyuWJaGOj16pj8zPhsH9ABl+sWeG2xiwQzlnZe+Ooo+aXDYXcMWgPW5NSASXPDOtjNsMaOsxS1n
2JPv7WWLLtiq7eaqqoY5r6M40Q4YGBxgC86wmAflLBmShANwwLKsEsitbIQjf1yRAtLh13H4LPxw9Dg2lCYH3tHXxWEAZ1qapS0A/Tbuq4XkA5WQcqBinN8WnoLZCRTn
hMWbfuUoXbD56/ZDSk65T0zK78WwOvecnF0iLBXPohyEkJk+vst+phLsOYYYA43QBEvZX2rpm3jwT/ZUIMEowT5SVgWZqENWpceHGeUe5acJRp8g1ZSIgSiETdas8KWh
VOyjop5THqY1DI8N4KBUsU9WN2OIVO5Rf9tQZIGfMe12ha0NHKULJn3xmeZP9wEUE041NicELdnKEQpyl6T8C4VUaYSKGY+PTmVPBRKM2lHv0PwM/lF+uyp9adi+zPhZ
Bx++ulH50RkqIF6rmOoVTEoO6Uq1Kymo4RPV8NjiTLm2kbjGWBWvEkoR6oQx7xhHANzoxZxOJp7mqqmqxOLf+CzlYC5HKMyUFVeKwf74xakY389PE8wWl272RYo43wIl
Ja6B6G9ZzSX/CPW5ChGGs4jEkc4GB75KsaKd8OwHvqVm2gyKMBOnX9B68HhFfrz9BPsrNI5QTV9v30SasdjmyIBvfjcjCo9G/NwUQ8QYI6Rg8tkEAkSls6eCCLX206ht
go8EY0xdsJc3gwjGc1QwrmFWDLHD40vS4Z8R3zxHK9/MoMZoXQnG9ScYB0uken0Ufq549Ro+R0L9bS8+x3bJx4ox6fDcm+b/DwaFZlj7a0SBjBAh3I+JuNDvfwALaGJY
+GkM3qz89p2vgRK3B4rdly1Zgs9vDtH2bq550b/CWvv7oKisFvbXnYaculLJzLwLcKiwEMqu6qmKhlu4WWwtqLNkVr4bcopPQdewuWSUdaLBMmaceXXsqbDvZJG1H3NL
/kXDiLywq+SEpZ/GjIJ69AP4F1sn4ukxmV+HAAAAAElFTkSuQmCC
                End
                Item
                    Type=MemoBox
                    Name='MemoBox15'
                    Left=12.7
                    Top=4.33917
                    Width=8.20208
                    Height=0.6
                    Object Font
                        Name='宋体'
                        Weight=400
                        Charset=134
                    End
                    TextAlign=TopLeft
                    Text='预计到货日期:[#预计到货日期#]'
                End
            End
            RepeatOnPage=T
        End
    End
    Items ReportFooter
        Item
            Name='ReportFooter1'
            Height=3.41313
            Items Control
                Item
                    Type=ShapeBox
                    Name='ShapeBox1'
                    Left=0.132292
                    Top=0.396875
                    Width=26.4054
                    Height=1.19063
                End
                Item
                    Type=StaticBox
                    Name='StaticBox3'
                    Left=0.211667
                    Top=2.40771
                    Width=3.38667
                    Height=0.582083
                    Text='送货人:'
                End
                Item
                    Type=StaticBox
                    Name='StaticBox4'
                    Left=16.4042
                    Top=2.40771
                    Width=3.20146
                    Height=0.582083
                    Text='收货人:'
                End
                Item
                    Type=MemoBox
                    Name='MemoBox16'
                    Left=0.211667
                    Top=0.502708
                    Width=26.1938
                    Height=0.978958
                    Object Font
                        Name='宋体'
                        Size=120000,0
                        Weight=400
                        Charset=134
                    End
                    Text='备注:[#表头备注#]'
                End
            End
            RepeatOnPage=T
        End
    End
End
WebTM/views/Éú²ú¹¤Ðò¹ÜÀí/¹¤Ðò»ã±¨µ¥/HBarPlanPrint.html
New file
@@ -0,0 +1,76 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>打印</title>
    <script src="../CreateControl.js"></script>
    <script src="../GRInstall.js"></script>
    <script src="../GRUtility.js"></script>
    <style type="text/css">
        html, body {
            margin: 0;
            height: 100%;
        }
    </style>
    <script type="text/javascript">
    function getUrlVars() {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for (var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    }
    //在网页初始加载时向报表提供数据
    function window_onload() {
        var ReportViewer = document.getElementById("ReportViewer");
        // ReportViewer.Stop();
        var Report = ReportViewer.Report;
        //开启报表生成进度条显示
        //ReportViewer.Report.ShowProgressUI = true;
        Report.OnPrintBegin = OnPrintBegin;
        Report.OnPrintEnd = OnPrintEnd;
        ReportViewer.Start();
    }
    //function OnPrintEnd() {
    //    if (PrintCount == 0) {
    //        var LCStatus = sessionStorage.getItem("LCStatus");
    //        if (LCStatus == "Print")//打印状态
    //        {
    //            SaveLabelPrint(sessionStorage.getItem("LabelJson"));
    //            PrintCount = 1;
    //        }
    //    }
    //}
    //function OnPrintBegin() {
    //}
    </script>
</head>
<body>
    <script type="text/javascript">
        var PrintCount = 0;
        var params = getUrlVars();
        var value = params[params[0]];
        var Type = params[params[1]];
        var OpenTmp = params[params[2]];
        switch (Type) {
            //case "HBarCodePrint"://物料条码打印
            //    //CreateDisplayViewerEx("100%", "100%", "../../views/grf/" + OpenTmp + ".grf", "../../views/SRM/xmlSRM_Web_BarCodeBillList.aspx?linterid=" + value, true, "");
            //    CreateDisplayViewerEx("100%", "100%", "../../views/grf/" + OpenTmp + ".grf", "xmlSRM_Web_BarCodeBillList.aspx?linterid=" + value, true, "");
            //     break;
            case "HProcessReport"://工序汇报单打印
                CreateDisplayViewerEx("100%", "100%", "../../views/grf/" + OpenTmp + ".grf", "xmlLBM_ProcessReport.aspx?linterid=" + value, true, "");
                break;
            //case "HPOOrderBill"://采购订单单打印
            //    CreateDisplayViewerEx("100%", "100%", "../../views/grf/" + OpenTmp + ".grf", "xmlSRM_POInStockBill.aspx?linterid=" + value, true, "");
            //    break;
        }
    </script>
</body>
</html>
WebTM/views/Éú²ú¹¤Ðò¹ÜÀí/¹¤Ðò»ã±¨µ¥/Sc_Add_ProcessReportList.html
@@ -21,11 +21,12 @@
                                <button type="button" id="add-btn" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="Saver">保存</button>
                                <button type="button" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="Exit">退出</button>
                                   <button type="button" id="Closeing" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="Closeing">关闭</button>
                                  <button type="button" id="BackClose" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="BackClose">反关闭</button>
                                  <button type="button" id="Auditing" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="Auditing">审核</button>
                                  <button type="button" id="BackAudit" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="BackAudit">反审核</button>
                                <button type="button" id="Closeing" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="Closeing">关闭</button>
                                <button type="button" id="BackClose" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="BackClose">反关闭</button>
                                <button type="button" id="Auditing" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="Auditing">审核</button>
                                <button type="button" id="BackAudit" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="BackAudit">反审核</button>
                                <button type="button" id="Printing" class="layui-btn layui-btn-normal layui-btn-radius" lay-submit="" lay-filter="Printing">打印</button>
                            </div>
                        </div>
@@ -55,14 +56,14 @@
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">任务单号:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HICMOBillNo" id="HICMOBillNo"  autocomplete="off" disabled>
                                                        <input class="layui-input" name="HICMOBillNo" id="HICMOBillNo" autocomplete="off" disabled>
                                                        <!--<input id="HICMOInterID" name="HICMOInterID" type="hidden" />-->
                                                    </div>
                                                </div>
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">车间代码:</label>
                                                    <div class="layui-input-inline">
                                                         <input type="text" name="HDeptNumber" id="HDeptNumber" lay-verify="HDeptID" readonly="readonly"  autocomplete="off" class="layui-input">
                                                        <input type="text" name="HDeptNumber" id="HDeptNumber" lay-verify="HDeptID" readonly="readonly" autocomplete="off" class="layui-input">
                                                    </div>
                                                </div>
                                            </div>
@@ -74,41 +75,41 @@
                                                    <label class="layui-form-label">车间:</label>
                                                    <div class="layui-input-inline">
                                                        <input type="text" name="HDeptName" id="HDeptName" lay-verify="HDeptName" autocomplete="off" class="layui-input">
                                                            <button type="button" id="HDeptID-BT" lay-submit="" class="layui-btn" lay-filter="HDeptID-BT">
                                                           <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                                              </button>
                                                   <input id="HDeptID" name="HDeptID" type="hidden" />
                                                        <button type="button" id="HDeptID-BT" lay-submit="" class="layui-btn" lay-filter="HDeptID-BT">
                                                            <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
                                                        </button>
                                                        <input id="HDeptID" name="HDeptID" type="hidden" />
                                                    </div>
                                                </div>
                                                  <!--<div class="layui-col-xs3">
                                                    <label class="layui-form-label"> è§„格型号:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HDHDate" lay-verify="HDHDate" id="HDHDate">
                                                    </div>
                                                </div>-->
                                                    <div class="layui-col-xs3">
                                                <!--<div class="layui-col-xs3">
                                <label class="layui-form-label"> è§„格型号:</label>
                                <div class="layui-input-inline">
                                    <input class="layui-input" name="HDHDate" lay-verify="HDHDate" id="HDHDate">
                                </div>
                            </div>-->
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label"> è®¡åˆ’开工日期:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HPlanBeginDate" lay-verify="HPlanBeginDate" id="HPlanBeginDate"  autocomplete="off">
                                                        <input class="layui-input" name="HPlanBeginDate" lay-verify="HPlanBeginDate" id="HPlanBeginDate" autocomplete="off">
                                                    </div>
                                                </div>
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label"> è®¡åˆ’完工日期:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HPlanEndDate" lay-verify="HPlanEndDate" id="HPlanEndDate"  autocomplete="off">
                                                        <input class="layui-input" name="HPlanEndDate" lay-verify="HPlanEndDate" id="HPlanEndDate" autocomplete="off">
                                                    </div>
                                                </div>
                                                  <div class="layui-col-xs3">
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label"> æ±‡æŠ¥æ•°é‡ï¼š</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HPlanQty" lay-verify="HPlanQty" id="HPlanQty"  autocomplete="off">
                                                        <input class="layui-input" name="HPlanQty" lay-verify="HPlanQty" id="HPlanQty" autocomplete="off">
                                                    </div>
                                                </div>
@@ -117,7 +118,7 @@
                                        <div class="layui-form-item">
                                            <div class="layui-row">
                                                <div class="layui-col-xs8">
                                                    <label class="layui-form-label"> å¤‡    æ³¨ï¼š</label>
                                                    <div class="layui-input-block">
@@ -127,79 +128,80 @@
                                            </div>
                                        </div>
                                    </div>
                                            <div class="layui-tab-item">
                                                <div class="layui-form-item">
                                                    <div class="layui-row">
                                                        <div class="layui-col-xs3">
                                                            <label class="layui-form-label">制 å• äººï¼š</label>
                                                            <div class="layui-input-inline">
                                                                <input class="layui-input" name="HMaker" id="HMaker" readonly="readonly" autocomplete="off">
                                                                 <input type="hidden" name="HEmpID" id="HEmpID"  autocomplete="off" class="layui-input">
                                    <div class="layui-tab-item">
                                        <div class="layui-form-item">
                                            <div class="layui-row">
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">制 å• äººï¼š</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HMaker" id="HMaker" readonly="readonly" autocomplete="off">
                                                        <input type="hidden" name="HEmpID" id="HEmpID" autocomplete="off" class="layui-input">
                                                            </div>
                                                        </div>
                                                        <div class="layui-col-xs3">
                                                            <label class="layui-form-label">审 æ ¸ äººï¼š</label>
                                                            <div class="layui-input-inline">
                                                                <input class="layui-input" name="HChecker" id="HChecker" readonly="readonly" autocomplete="off">
                                                            </div>
                                                        </div>
                                                        <div class="layui-col-xs3">
                                                            <label class="layui-form-label">修改人:</label>
                                                            <div class="layui-input-inline">
                                                                <input class="layui-input" name="HUpDater" id="HUpDater" readonly="readonly" autocomplete="off">
                                                            </div>
                                                        </div>
                                                         <div class="layui-col-xs3">
                                                            <label class="layui-form-label">关闭人:</label>
                                                            <div class="layui-input-inline">
                                                                <input class="layui-input" name="HCloseMan" id="HCloseMan" readonly="readonly" autocomplete="off">
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <div class="layui-row">
                                                        <div class="layui-col-xs3">
                                                            <label class="layui-form-label">制单日期:</label>
                                                            <div class="layui-input-inline">
                                                                <input class="layui-input" name="HMakeDate" id="HMakeDate" readonly="readonly" autocomplete="off">
                                                            </div>
                                                        </div>
                                                        <div class="layui-col-xs3">
                                                            <label class="layui-form-label">审核日期:</label>
                                                            <div class="layui-input-inline">
                                                                <input class="layui-input" name="HCheckDate" id="HCheckDate" readonly="readonly" autocomplete="off">
                                                            </div>
                                                        </div>
                                                        <div class="layui-col-xs3">
                                                            <label class="layui-form-label">修改日期:</label>
                                                            <div class="layui-input-inline">
                                                                <input class="layui-input" name="HUpDateDate" id="HUpDateDate" readonly="readonly" autocomplete="off">
                                                            </div>
                                                        </div>
                                                        <div class="layui-col-xs3">
                                                            <label class="layui-form-label">关闭日期:</label>
                                                            <div class="layui-input-inline">
                                                                <input class="layui-input" name="HCloseDate" id="HCloseDate" readonly="readonly" autocomplete="off">
                                                            </div>
                                                        </div>
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">审 æ ¸ äººï¼š</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HChecker" id="HChecker" readonly="readonly" autocomplete="off">
                                                    </div>
                                                </div>
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">修改人:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HUpDater" id="HUpDater" readonly="readonly" autocomplete="off">
                                                    </div>
                                                </div>
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">关闭人:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HCloseMan" id="HCloseMan" readonly="readonly" autocomplete="off">
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="layui-form-item">
                                            <div class="layui-row">
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">制单日期:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HMakeDate" id="HMakeDate" readonly="readonly" autocomplete="off">
                                                    </div>
                                                </div>
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">审核日期:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HCheckDate" id="HCheckDate" readonly="readonly" autocomplete="off">
                                                    </div>
                                                </div>
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">修改日期:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HUpDateDate" id="HUpDateDate" readonly="readonly" autocomplete="off">
                                                    </div>
                                                </div>
                                                <div class="layui-col-xs3">
                                                    <label class="layui-form-label">关闭日期:</label>
                                                    <div class="layui-input-inline">
                                                        <input class="layui-input" name="HCloseDate" id="HCloseDate" readonly="readonly" autocomplete="off">
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <blockquote class="layui-elem-quote">工序派工单</blockquote>
                        <table class="layui-hide" id="mainTable" lay-filter="mainTable"></table>
                        <script type="text/html" id="toolbarDemo">
                            <div class="layui-btn-container">
                                <!--<button type="button" class="layui-btn layui-btn-sm" lay-event="btn-add"><i class="layui-icon layui-icon-addition"></i>拆分</button>
                                <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-del"><i class="layui-icon layui-icon-subtraction"></i>删行</button>-->
            <button type="button" class="layui-btn layui-btn-sm" lay-event="btn-del"><i class="layui-icon layui-icon-subtraction"></i>删行</button>-->
                            </div>
                        </script>
                    </form>
                </div>
                        </div>
@@ -210,6 +212,7 @@
    <script src="../../../layuiadmin/Scripts/jquery-1.4.1.js"></script>
    <script src="../../../layuiadmin/Scripts/webConfig.js"></script>
    <script>
            function getUrlVars() {
            var vars = [], hash;
            var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
@@ -608,8 +611,12 @@
            });
             //打印Printing
            form.on("submit(Printing)", function (data) { layer.alert("我是打印按钮!");});
            //打印Printing
            form.on("submit(Printing)", function (data) {
                layer.alert("我是打印按钮!单据主ID是:" + HInterID);
                window.open("../../views/生产工序管理/工序汇报单/HBarPlanPrint.html?linterid=" + HInterID + "&Type=HProcessReport"+"&OpenTmp=汇报单");
            });
            function f_alert(sMsg) {
                layer.alert(sMsg, { icon: 5 });
WebTM/views/Éú²ú¹¤Ðò¹ÜÀí/¹¤Ðò»ã±¨µ¥/xmlLBM_ProcessReport.aspx
New file
@@ -0,0 +1,28 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xmlLBM_ProcessReport.aspx.cs" Inherits="WebTM.views.生产工序管理.工序汇报单.xmlLBM_ProcessReport" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        //★特别提示★:
        //不同的数据库应该选用不同的报表XML数据生成类,SQL Server数据库用SqlXMLReportData,Oracle数据库用OracleXMLReportData
        //OledbXMLReportData适合于Access等本地数据库,为了演示方便,这里从Grid++Report的Access例子数据库中获取报表数据
        //OledbXMLReportData.GenOneRecordset(this, "select * from Customers order by CustomerID");
        //SqlXMLReportData.GenOneRecordset(this, "select * from h_v_Kf_POStockInBillList_K3 where hmainid=1781");
        SqlXMLReportData.GenOneRecordset(this, "select * from h_v_Sc_ProcessReportList where hmainid=" + Request.Params["linterid"]+ " order by ç‰©æ–™ä»£ç ");
    }
</script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
        </div>
    </form>
</body>
</html>
WebTM/views/Éú²ú¹¤Ðò¹ÜÀí/¹¤Ðò»ã±¨µ¥/xmlLBM_ProcessReport.aspx.cs
New file
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebTM.views.生产工序管理.工序汇报单
{
    public partial class xmlLBM_ProcessReport : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
}
WebTM/views/Éú²ú¹¤Ðò¹ÜÀí/¹¤Ðò»ã±¨µ¥/xmlLBM_ProcessReport.aspx.designer.cs
New file
@@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½ä¼šå¯¼è‡´ä¸æ­£ç¡®çš„行为,并且如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œè¿™äº›æ›´æ”¹å°†ä¼šä¸¢å¤±ã€‚
// </auto-generated>
//------------------------------------------------------------------------------
namespace WebTM.views.生产工序管理.工序汇报单
{
    public partial class xmlLBM_ProcessReport
    {
        /// <summary>
        /// form1 æŽ§ä»¶ã€‚
        /// </summary>
        /// <remarks>
        /// è‡ªåŠ¨ç”Ÿæˆçš„å­—æ®µã€‚
        /// è‹¥è¦è¿›è¡Œä¿®æ”¹ï¼Œè¯·å°†å­—段声明从设计器文件移到代码隐藏文件。
        /// </remarks>
        protected global::System.Web.UI.HtmlControls.HtmlForm form1;
    }
}