瀏覽代碼

init:初始化提交代码

runming56 1 年之前
當前提交
1f570ba6c7
共有 100 個文件被更改,包括 24225 次插入0 次删除
  1. 二進制
      .vs/lqnet/FileContentIndex/fab3972b-da32-4189-aebd-aa4c4f46d432.vsidx
  2. 0 0
      .vs/lqnet/FileContentIndex/read.lock
  3. 二進制
      .vs/lqnet/v16/.suo
  4. 二進制
      .vs/lqnet/v17/.suo
  5. 273 0
      UpgradeLog.htm
  6. 268 0
      UpgradeLog2.htm
  7. 30 0
      lqnet.sln
  8. 57 0
      lqnet/Api/CallApi.cs
  9. 147 0
      lqnet/Api/CommonApi.cs
  10. 39 0
      lqnet/Api/MyConstants.cs
  11. 76 0
      lqnet/Application.cs
  12. 18 0
      lqnet/Entities/Checkitem.cs
  13. 10 0
      lqnet/Entities/Dto/CheckItemsDTO.cs
  14. 19 0
      lqnet/Entities/Dto/DataFileSubmitDTO.cs
  15. 19 0
      lqnet/Entities/Dto/TaskSelectDTO.cs
  16. 22 0
      lqnet/Entities/R.cs
  17. 26 0
      lqnet/Entities/TaskPage.cs
  18. 25 0
      lqnet/Entities/Tasks.cs
  19. 15 0
      lqnet/Entities/To/CheckItemToList.cs
  20. 15 0
      lqnet/Entities/To/TaskToList.cs
  21. 12 0
      lqnet/Entities/User.cs
  22. 179 0
      lqnet/Forms/LoginForm.Designer.cs
  23. 198 0
      lqnet/Forms/LoginForm.cs
  24. 120 0
      lqnet/Forms/LoginForm.resx
  25. 330 0
      lqnet/Forms/MainForm.Designer.cs
  26. 404 0
      lqnet/Forms/MainForm.cs
  27. 129 0
      lqnet/Forms/MainForm.resx
  28. 176 0
      lqnet/Lqnet.csproj
  29. 二進制
      lqnet/Lqnet_TemporaryKey.pfx
  30. 35 0
      lqnet/Properties/AssemblyInfo.cs
  31. 10 0
      lqnet/Properties/DataSources/lqnet.Entities.TaskList.datasource
  32. 10 0
      lqnet/Properties/DataSources/lqnet.Entities.TaskPage.datasource
  33. 73 0
      lqnet/Properties/Resources.Designer.cs
  34. 124 0
      lqnet/Properties/Resources.resx
  35. 26 0
      lqnet/Properties/Settings.Designer.cs
  36. 7 0
      lqnet/Properties/Settings.settings
  37. 1 0
      lqnet/Resources/TDM数据传输终端安装说明.txt
  38. 二進制
      lqnet/Resources/backgroundImg.jpg
  39. 二進制
      lqnet/Resources/dotNetFx40_Full_x86_x64.exe
  40. 二進制
      lqnet/Resources/favicon.ico
  41. 二進制
      lqnet/Resources/icon.ico
  42. 77 0
      lqnet/Utils/Base64.cs
  43. 85 0
      lqnet/Utils/InputBox.cs
  44. 125 0
      lqnet/Utils/OShelper.cs
  45. 250 0
      lqnet/Utils/PageHelper.Designer.cs
  46. 100 0
      lqnet/Utils/PageHelper.cs
  47. 120 0
      lqnet/Utils/PageHelper.resx
  48. 3 0
      lqnet/app.config
  49. 74 0
      lqnet/app.manifest
  50. 二進制
      lqnet/bin/Debug/Newtonsoft.Json.dll
  51. 9683 0
      lqnet/bin/Debug/Newtonsoft.Json.xml
  52. 二進制
      lqnet/bin/Debug/app.publish/lqnet.exe
  53. 21 0
      lqnet/bin/Debug/lqnet.application
  54. 二進制
      lqnet/bin/Debug/lqnet.exe
  55. 3 0
      lqnet/bin/Debug/lqnet.exe.config
  56. 108 0
      lqnet/bin/Debug/lqnet.exe.manifest
  57. 二進制
      lqnet/bin/Debug/lqnet.pdb
  58. 二進制
      lqnet/bin/Release/Newtonsoft.Json.dll
  59. 10335 0
      lqnet/bin/Release/Newtonsoft.Json.xml
  60. 二進制
      lqnet/bin/Release/app.publish/lqnet.exe
  61. 21 0
      lqnet/bin/Release/lqnet.application
  62. 二進制
      lqnet/bin/Release/lqnet.exe
  63. 3 0
      lqnet/bin/Release/lqnet.exe.config
  64. 108 0
      lqnet/bin/Release/lqnet.exe.manifest
  65. 二進制
      lqnet/bin/Release/lqnet.pdb
  66. 二進制
      lqnet/icon.ico
  67. 17 0
      lqnet/lqnet.csproj.user
  68. 4 0
      lqnet/obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs
  69. 4 0
      lqnet/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs
  70. 二進制
      lqnet/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  71. 二進制
      lqnet/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  72. 二進制
      lqnet/obj/Debug/Lqnet.csproj.AssemblyReference.cache
  73. 0 0
      lqnet/obj/Debug/Lqnet.csproj.CopyComplete
  74. 1 0
      lqnet/obj/Debug/Lqnet.csproj.CoreCompileInputs.cache
  75. 37 0
      lqnet/obj/Debug/Lqnet.csproj.FileListAbsolute.txt
  76. 二進制
      lqnet/obj/Debug/Lqnet.csproj.GenerateResource.cache
  77. 二進制
      lqnet/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
  78. 二進制
      lqnet/obj/Debug/lqnet.Forms.MainForm.resources
  79. 二進制
      lqnet/obj/Debug/lqnet.LoginForm.resources
  80. 二進制
      lqnet/obj/Debug/lqnet.Properties.Resources.resources
  81. 二進制
      lqnet/obj/Debug/lqnet.Utils.PageHelper.resources
  82. 21 0
      lqnet/obj/Debug/lqnet.application
  83. 二進制
      lqnet/obj/Debug/lqnet.exe
  84. 108 0
      lqnet/obj/Debug/lqnet.exe.manifest
  85. 二進制
      lqnet/obj/Debug/lqnet.pdb
  86. 4 0
      lqnet/obj/Release/.NETFramework,Version=v4.0.AssemblyAttributes.cs
  87. 二進制
      lqnet/obj/Release/DesignTimeResolveAssemblyReferences.cache
  88. 二進制
      lqnet/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache
  89. 二進制
      lqnet/obj/Release/Lqnet.csproj.AssemblyReference.cache
  90. 0 0
      lqnet/obj/Release/Lqnet.csproj.CopyComplete
  91. 1 0
      lqnet/obj/Release/Lqnet.csproj.CoreCompileInputs.cache
  92. 19 0
      lqnet/obj/Release/Lqnet.csproj.FileListAbsolute.txt
  93. 二進制
      lqnet/obj/Release/Lqnet.csproj.GenerateResource.cache
  94. 二進制
      lqnet/obj/Release/Lqnet.csprojAssemblyReference.cache
  95. 二進制
      lqnet/obj/Release/TempPE/Properties.Resources.Designer.cs.dll
  96. 0 0
      lqnet/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
  97. 0 0
      lqnet/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
  98. 0 0
      lqnet/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
  99. 二進制
      lqnet/obj/Release/lqnet.Forms.MainForm.resources
  100. 0 0
      lqnet/obj/Release/lqnet.LoginForm.resources

二進制
.vs/lqnet/FileContentIndex/fab3972b-da32-4189-aebd-aa4c4f46d432.vsidx


+ 0 - 0
.vs/lqnet/FileContentIndex/read.lock


二進制
.vs/lqnet/v16/.suo


二進制
.vs/lqnet/v17/.suo


文件差異過大導致無法顯示
+ 273 - 0
UpgradeLog.htm


文件差異過大導致無法顯示
+ 268 - 0
UpgradeLog2.htm


+ 30 - 0
lqnet.sln

@@ -0,0 +1,30 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.32602.291
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lqnet", "lqnet\Lqnet.csproj", "{98F57028-AF22-4FE1-8A58-F52A626D4D50}"
+EndProject
+Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "TDM测试台数据传输终端", "TDM测试台数据传输终端\TDM测试台数据传输终端.vdproj", "{BE92FB7E-2F51-487C-BDC9-8E21378BFC62}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{98F57028-AF22-4FE1-8A58-F52A626D4D50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{98F57028-AF22-4FE1-8A58-F52A626D4D50}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{98F57028-AF22-4FE1-8A58-F52A626D4D50}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{98F57028-AF22-4FE1-8A58-F52A626D4D50}.Release|Any CPU.Build.0 = Release|Any CPU
+		{BE92FB7E-2F51-487C-BDC9-8E21378BFC62}.Debug|Any CPU.ActiveCfg = Release
+		{BE92FB7E-2F51-487C-BDC9-8E21378BFC62}.Debug|Any CPU.Build.0 = Release
+		{BE92FB7E-2F51-487C-BDC9-8E21378BFC62}.Release|Any CPU.ActiveCfg = Release
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {1672B8A2-D05A-4D41-B51F-06699FD6C3CC}
+	EndGlobalSection
+EndGlobal

+ 57 - 0
lqnet/Api/CallApi.cs

@@ -0,0 +1,57 @@
+using lqnet.Entities;
+using lqnet.Entities.Dto;
+
+namespace lqnet.Api
+{
+    public class CallApi
+    {
+        /// <summary>
+        /// 登录
+        /// </summary>
+        /// <param name="user"></param>
+        /// <param name="pwd"></param>
+        /// <returns></returns>
+        public static R Login(string user, string pwd)
+        {
+            User u = new User
+            {
+                Username = user,
+                Password = pwd
+            };
+            return CommonApi.PostApi("login", u);
+        }
+
+        /// <summary>
+        /// 任务列表查询
+        /// </summary>
+        /// <param name="dto">TaskSelectDTO</param>
+        /// <returns></returns>
+        public static R SelectTasksList(TaskSelectDTO dto)
+        {
+            return CommonApi.PostApi("test/plugin/listPageTask", dto);
+        }
+
+        /// <summary>
+        /// 检验项下拉框查询
+        /// </summary>
+        /// <param name="dto">CheckItemsDTO</param>
+        /// <returns></returns>
+        public static R SelectCheckItemList(CheckItemsDTO dto)
+        {
+            return CommonApi.PostApi("test/plugin/checkItemList", dto);
+        }
+
+        /// <summary>
+        /// 检验项下拉框查询
+        /// </summary>
+        /// <param name="dto">DataFileSubmitDTO</param>
+        /// <returns></returns>
+        public static R PostDataFile(DataFileSubmitDTO dto)
+        {
+            return CommonApi.PostFileApi("test/plugin/dataFile?groupOrderCode="+dto.GroupOrderCode
+                +"&checkCode="+dto.CheckCode,
+                dto.FilePath,
+                "dataFile");
+        }
+    }
+}

+ 147 - 0
lqnet/Api/CommonApi.cs

@@ -0,0 +1,147 @@
+using System;
+using System.IO;
+using System.Net;
+using System.Text;
+using System.Windows.Forms;
+using lqnet.Entities;
+using Newtonsoft.Json;
+
+namespace lqnet.Api
+{
+    class CommonApi
+    {
+        /// <summary>
+        /// 带参数的请求发送
+        /// </summary>
+        /// <param name="relativeUrl"></param>
+        /// <param name="data"></param>
+        /// <returns></returns>
+        public static R PostApi(string relativeUrl, object data)
+        {
+            try
+            {
+                string strUrl = VariablesGlobal.IP_PORT + relativeUrl;
+                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strUrl);
+                request.Method = MyConstants.METHOD_POST;
+                request.ContentType = MyConstants.JSON_UTF8;
+                if (!string.IsNullOrEmpty(VariablesGlobal.USER_TOKEN))
+                {
+                    request.Headers.Add(MyConstants.USER_AUTH_HEADER, VariablesGlobal.USER_TOKEN);
+                }
+                String s = JsonConvert.SerializeObject(data);
+                Console.WriteLine("================");
+                Console.WriteLine("url:" + strUrl);
+                Console.WriteLine("================");
+                Console.WriteLine("data:" + s);
+                if (null != data)
+                {
+                    var postData = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(data));
+                    request.ContentLength = postData.Length;
+                    using (var postStream = request.GetRequestStream())
+                    {
+                        postStream.Write(postData, 0, postData.Length);
+                    }
+                }
+                R r = null;
+                using (WebResponse wr = request.GetResponse())
+                {
+                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
+                    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
+                    string content = reader.ReadToEnd();
+                    r = JsonConvert.DeserializeObject<R>(content);
+                    Console.WriteLine("================");
+                    Console.WriteLine("code:" + r.Code);
+                    Console.WriteLine("msg:" + r.Msg);
+                    Console.WriteLine("data:" + r.Data);
+                    Console.WriteLine("================");
+                    Console.WriteLine();
+                }
+                return r;
+            }
+            catch (Exception e)
+            {
+                return PrintExceptionInfo(e);
+            }
+        }
+
+        /// <summary>
+        /// 发送文件请求
+        /// </summary>
+        /// <param name="relativeUrlAndParam"></param>
+        /// <param name="absoluteFilePath">绝对文件路径</param>
+        /// <param name="fileParamName">文件的参数的名称</param>
+        /// <returns></returns>
+        public static R PostFileApi(string relativeUrlAndParam, string absoluteFilePath,string fileParamName)
+        {
+            try
+            {
+                string strUrl = VariablesGlobal.IP_PORT + relativeUrlAndParam;
+                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strUrl);
+                request.Method = MyConstants.METHOD_POST;
+                request.KeepAlive = true;
+                string boundary = DateTime.Now.Ticks.ToString("X");
+                request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
+
+                byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");
+                byte[] endBoundaryBytes = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
+                if (!string.IsNullOrEmpty(VariablesGlobal.USER_TOKEN))
+                {
+                    request.Headers.Add(MyConstants.USER_AUTH_HEADER, VariablesGlobal.USER_TOKEN);
+                }
+
+                Console.WriteLine("================");
+                Console.WriteLine("url:" + strUrl);
+                StringBuilder sbHeader = new StringBuilder(
+                    string.Format("Content-Disposition:form-data;name=\""+fileParamName+"\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n"
+                    , absoluteFilePath.Substring(absoluteFilePath.LastIndexOf(Path.DirectorySeparatorChar)+1)));
+                byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());
+                using (var postStream = request.GetRequestStream())
+                {
+                    FileStream fs = new FileStream(absoluteFilePath, FileMode.Open, FileAccess.Read);
+                    byte[] bArr = new byte[fs.Length];
+                    fs.Read(bArr, 0, bArr.Length);
+                    fs.Close();
+                    postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
+                    postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
+                    postStream.Write(bArr, 0, bArr.Length);
+                    postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
+                    postStream.Close();
+
+                }
+
+                R r = null;
+                using (WebResponse wr = request.GetResponse())
+                {
+                    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
+                    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
+                    string content = reader.ReadToEnd();
+                    r = JsonConvert.DeserializeObject<R>(content);
+                    Console.WriteLine("================");
+                    Console.WriteLine("code:" + r.Code);
+                    Console.WriteLine("msg:" + r.Msg);
+                    Console.WriteLine("data:" + r.Data);
+                    Console.WriteLine("================");
+                    Console.WriteLine();
+                }
+                return r;
+            }
+            catch (Exception e)
+            {
+                return PrintExceptionInfo(e);
+            }
+        }
+
+        /// <summary>
+        /// 统一异常处理
+        /// </summary>
+        private static R PrintExceptionInfo(Exception e)
+        {
+            Console.WriteLine(e.StackTrace);
+            MessageBox.Show("错误,推荐重试该操作或重启此插件: 错误信息:" + e.Message, "服务器或网络或本地配置错误", MessageBoxButtons.OK);
+            return new R()
+            {
+                Code = MyConstants.CODE_EXP_MINUS_2
+            };
+        }
+    }
+}

+ 39 - 0
lqnet/Api/MyConstants.cs

@@ -0,0 +1,39 @@
+
+using System.Drawing;
+
+namespace lqnet.Api
+{
+    public class MyConstants
+    {
+        public static string METHOD_POST = "POST";
+
+        public static string METHOD_GET = "GET";
+
+        public static string JSON_UTF8 = "application/json;charset=UTF-8";
+
+        public static string CONTENT_TYPE = "Content-Type";
+
+        public static int CODE_SUCCESS_200 = 200;
+
+        public static int CODE_FAIL_500 = 500;
+
+        public static int CODE_EXP_MINUS_2 = -2;
+
+        public static string MIND_PWD_PATH = "\\Windows\\cfg_00001.dat1";
+
+        public static string MIND_PWD_PATH_PREF = "eKm2Q1";
+
+        public static string USER_AUTH_HEADER = "Authorization";
+
+        public static string NON_NULL_CHECK_CODE = "-%#-@";
+
+        public static string BACKGROUDIMG_NAME = "\\backgroundImg.jpg";
+
+        public static Color BACKGROUDIMG_COLOR = Color.SkyBlue;
+    }
+    public class VariablesGlobal
+    {
+        public static string IP_PORT = "http://47.108.207.174:8190/";
+        public static string USER_TOKEN = "";
+    }
+}

+ 76 - 0
lqnet/Application.cs

@@ -0,0 +1,76 @@
+using System;
+using System.Text;
+using System.Windows.Forms;
+
+/// <summary>
+/// author Fengjl
+/// description app启动类
+/// date 2022-06-25
+/// </summary>
+namespace lqnet
+{
+    static class Application
+    {
+        /// <summary>
+        /// 应用程序的主入口点。
+        /// </summary>
+        /// 
+        [STAThread]
+        static void Main()
+        {
+            try
+            {
+                //设置应用程序处理异常
+                System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
+                System.Windows.Forms.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
+                AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
+
+                System.Windows.Forms.Application.EnableVisualStyles();
+                System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(true);
+                System.Windows.Forms.Application.Run(new LoginForm());
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.StackTrace);
+                MessageBox.Show("异常:" + e.Message + " ,终端将会重启", "插件异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
+            }
+
+        }
+
+        static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
+        {
+            string str = GetExceptionMsg(e.Exception, e.ToString());
+            MessageBox.Show(str, "插件异常", MessageBoxButtons.OK);
+        }
+
+        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
+        {
+            string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
+            MessageBox.Show(str, "插件未处理异常", MessageBoxButtons.OK);
+        }
+
+        /// <summary>
+        /// 生成自定义异常消息
+        /// </summary>
+        /// <param name="ex">异常对象</param>
+        /// <param name="backStr">备用异常消息:当ex为null时有效</param>
+        /// <returns>异常字符串文本</returns>
+        static string GetExceptionMsg(Exception ex, string backStr)
+        {
+            StringBuilder sb = new StringBuilder();
+            if (ex != null)
+            {
+                sb.AppendLine("【建议重试此功能或者重启终端】");
+                sb.AppendLine("【异常类型】:" + ex.GetType().Name);
+                sb.AppendLine("【异常信息】:" + ex.Message);
+            }
+            else
+            {
+                sb.AppendLine("【未处理异常】【建议重启终端】:" + backStr);
+            }
+            return sb.ToString();
+        }
+
+    }
+
+}

+ 18 - 0
lqnet/Entities/Checkitem.cs

@@ -0,0 +1,18 @@
+using Newtonsoft.Json;
+
+namespace lqnet.Entities
+{
+    /// <summary>
+    /// 检验项
+    /// </summary>
+    public class CheckItem
+    {
+        
+        [JsonProperty(PropertyName = "checkCode")]
+        public string CheckCode { get; set; }
+
+        [JsonProperty(PropertyName = "checkName")]
+        public string CheckName { get; set; }
+        
+    }
+}

+ 10 - 0
lqnet/Entities/Dto/CheckItemsDTO.cs

@@ -0,0 +1,10 @@
+using Newtonsoft.Json;
+
+namespace lqnet.Entities.Dto
+{
+    public class CheckItemsDTO
+    {
+        [JsonProperty(PropertyName = "groupOrderCode")]
+        public string GroupOrderCode { get; set; }
+    }
+}

+ 19 - 0
lqnet/Entities/Dto/DataFileSubmitDTO.cs

@@ -0,0 +1,19 @@
+using Newtonsoft.Json;
+
+namespace lqnet.Entities.Dto
+{
+    /// <summary>
+    /// 上传数据文件,和一些其他信息的
+    /// </summary>
+    public class DataFileSubmitDTO
+    {
+        [JsonProperty(PropertyName = "checkCode")]
+        public string CheckCode { get; set; }
+
+        [JsonProperty(PropertyName = "groupOrderCode")]
+        public string GroupOrderCode { get; set; }
+
+        [JsonProperty(PropertyName = "filePath")]
+        public string FilePath { get; set; }
+    }
+}

+ 19 - 0
lqnet/Entities/Dto/TaskSelectDTO.cs

@@ -0,0 +1,19 @@
+using Newtonsoft.Json;
+
+namespace lqnet.Entities.Dto
+{
+    /// <summary>
+    /// 任务列表的搜索条件
+    /// </summary>
+    public class TaskSelectDTO
+    {
+        [JsonProperty(PropertyName = "prodtBatch")]
+        public string ProdtBatch { get; set; }
+
+        [JsonProperty(PropertyName = "pageNum")]
+        public int PageNum { get; set; }
+
+        [JsonProperty(PropertyName = "pageSize")]
+        public int PageSize { get; set; }
+    }
+}

+ 22 - 0
lqnet/Entities/R.cs

@@ -0,0 +1,22 @@
+using Newtonsoft.Json;
+
+namespace lqnet.Entities
+{
+    /// <summary>
+    /// 实体接收
+    /// </summary>
+    public class R
+    {
+        [JsonProperty(PropertyName = "Code")]
+        public int Code { get; set; }
+        [JsonProperty(PropertyName = "msg")]
+        public string Msg { get; set; }
+        [JsonProperty(PropertyName = "data")]
+        public object Data { get; set; }
+        /// <summary>
+        /// 兼容一下TDM登录接口
+        /// </summary>
+        [JsonProperty(PropertyName = "token")]
+        public string Token { get; set; }
+    }
+}

+ 26 - 0
lqnet/Entities/TaskPage.cs

@@ -0,0 +1,26 @@
+using Newtonsoft.Json;
+
+namespace lqnet.Entities
+{
+    /// <summary>
+    /// 分页的任务列表
+    /// </summary>
+    public class TaskPage
+    {
+        [JsonProperty(PropertyName = "records")]
+        public object Records { get; set; }
+
+        [JsonProperty(PropertyName = "current")]
+        public int Current { get; set; }
+
+        [JsonProperty(PropertyName = "size")]
+        public int Size { get; set; }
+
+        [JsonProperty(PropertyName = "total")]
+        public int Total { get; set; }
+
+        [JsonProperty(PropertyName = "pages")]
+        public int Pages { get; set; }
+
+    }
+}

+ 25 - 0
lqnet/Entities/Tasks.cs

@@ -0,0 +1,25 @@
+using Newtonsoft.Json;
+
+namespace lqnet.Entities
+{
+    /// <summary>
+    /// 任务
+    /// </summary>
+    public class Tasks
+    {
+
+        public int Index { get; set; }
+
+        [JsonProperty(PropertyName = "groupOrderCode")]
+        public string GroupOrderCode { get; set; }
+
+        [JsonProperty(PropertyName = "prodtGroupType")]
+        public string ProdtGroupType { get; set; }
+
+        [JsonProperty(PropertyName = "num")]
+        public string Num { get; set; }
+
+        [JsonProperty(PropertyName = "prodtBatch")]
+        public string ProdtBatch { get; set; }
+    }
+}

+ 15 - 0
lqnet/Entities/To/CheckItemToList.cs

@@ -0,0 +1,15 @@
+using System.Collections.Generic;
+
+/// <summary>
+/// json 包装类
+/// </summary>
+namespace lqnet.Entities.To
+{
+    /// <summary>
+    /// 检验项列表
+    /// </summary>
+    class CheckItemToList
+    {
+        public List<CheckItem> ListCheckItem { get; set; }
+    }
+}

+ 15 - 0
lqnet/Entities/To/TaskToList.cs

@@ -0,0 +1,15 @@
+using System.Collections.Generic;
+
+/// <summary>
+/// json 包装类
+/// </summary>
+namespace lqnet.Entities.To
+{
+    /// <summary>
+    /// 任务列表
+    /// </summary>
+    class TaskToList
+    {
+        public List<Tasks> ListTask { get; set; }
+    }
+}

+ 12 - 0
lqnet/Entities/User.cs

@@ -0,0 +1,12 @@
+using Newtonsoft.Json;
+
+namespace lqnet.Entities
+{
+    class User
+    {
+        [JsonProperty(PropertyName = "username")]
+        public string Username { get; set; }
+        [JsonProperty(PropertyName = "password")]
+        public string Password { get; set; }
+    }
+}

+ 179 - 0
lqnet/Forms/LoginForm.Designer.cs

@@ -0,0 +1,179 @@
+using System.Drawing;
+using System.Windows.Forms;
+
+namespace lqnet
+{
+    partial class LoginForm
+    {
+        /// <summary>
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        /// <summary>
+        /// 控件闪烁
+        /// </summary>
+        protected override CreateParams CreateParams
+        {
+            get
+            {
+                CreateParams cp = base.CreateParams;
+                cp.ExStyle |= 0x02000000;
+                return cp;
+            }
+        }
+
+        #region Windows 窗体设计器生成的代码
+
+        /// <summary>
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.pwd_textBox = new System.Windows.Forms.TextBox();
+            this.mindPwd = new System.Windows.Forms.CheckBox();
+            this.userName = new System.Windows.Forms.Label();
+            this.userName_textBox = new System.Windows.Forms.TextBox();
+            this.login_button = new System.Windows.Forms.Button();
+            this.pwd = new System.Windows.Forms.Label();
+            this.Ip_set = new System.Windows.Forms.Button();
+            this.version = new System.Windows.Forms.Button();
+            this.SuspendLayout();
+            // 
+            // pwd_textBox
+            // 
+            this.pwd_textBox.BackColor = System.Drawing.SystemColors.Window;
+            this.pwd_textBox.Location = new System.Drawing.Point(138, 74);
+            this.pwd_textBox.Name = "pwd_textBox";
+            this.pwd_textBox.PasswordChar = '*';
+            this.pwd_textBox.Size = new System.Drawing.Size(201, 35);
+            this.pwd_textBox.TabIndex = 9;
+            this.pwd_textBox.TextChanged += new System.EventHandler(this.Pwd_textBox_TextChanged);
+            // 
+            // mindPwd
+            // 
+            this.mindPwd.AutoSize = true;
+            this.mindPwd.BackColor = System.Drawing.Color.Transparent;
+            this.mindPwd.ForeColor = System.Drawing.Color.White;
+            this.mindPwd.Location = new System.Drawing.Point(363, 86);
+            this.mindPwd.Name = "mindPwd";
+            this.mindPwd.Size = new System.Drawing.Size(138, 28);
+            this.mindPwd.TabIndex = 11;
+            this.mindPwd.Text = "记住密码";
+            this.mindPwd.UseVisualStyleBackColor = false;
+            this.mindPwd.CheckedChanged += new System.EventHandler(this.MindPwd_CheckedChanged);
+            // 
+            // userName
+            // 
+            this.userName.AutoSize = true;
+            this.userName.BackColor = System.Drawing.Color.Transparent;
+            this.userName.ForeColor = System.Drawing.Color.White;
+            this.userName.Location = new System.Drawing.Point(38, 20);
+            this.userName.Name = "userName";
+            this.userName.Size = new System.Drawing.Size(82, 24);
+            this.userName.TabIndex = 6;
+            this.userName.Text = "用户名";
+            // 
+            // userName_textBox
+            // 
+            this.userName_textBox.BackColor = System.Drawing.SystemColors.Window;
+            this.userName_textBox.Location = new System.Drawing.Point(138, 4);
+            this.userName_textBox.Name = "userName_textBox";
+            this.userName_textBox.Size = new System.Drawing.Size(201, 35);
+            this.userName_textBox.TabIndex = 8;
+            this.userName_textBox.TextChanged += new System.EventHandler(this.UserName_textBox_TextChanged);
+            // 
+            // login_button
+            // 
+            this.login_button.Font = new System.Drawing.Font("宋体", 13.875F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.login_button.ForeColor = System.Drawing.Color.Black;
+            this.login_button.Location = new System.Drawing.Point(507, 7);
+            this.login_button.Name = "login_button";
+            this.login_button.Size = new System.Drawing.Size(201, 102);
+            this.login_button.TabIndex = 10;
+            this.login_button.Text = "登录";
+            this.login_button.UseVisualStyleBackColor = false;
+            this.login_button.Click += new System.EventHandler(this.Login_button_Click);
+            // 
+            // pwd
+            // 
+            this.pwd.AutoSize = true;
+            this.pwd.BackColor = System.Drawing.Color.Transparent;
+            this.pwd.ForeColor = System.Drawing.Color.White;
+            this.pwd.Location = new System.Drawing.Point(38, 82);
+            this.pwd.Name = "pwd";
+            this.pwd.Size = new System.Drawing.Size(82, 24);
+            this.pwd.TabIndex = 7;
+            this.pwd.Text = "密  码";
+            // 
+            // Ip_set
+            // 
+            this.Ip_set.Location = new System.Drawing.Point(531, 299);
+            this.Ip_set.Name = "Ip_set";
+            this.Ip_set.Size = new System.Drawing.Size(163, 37);
+            this.Ip_set.TabIndex = 14;
+            this.Ip_set.Text = "服务IP设置";
+            this.Ip_set.UseVisualStyleBackColor = true;
+            this.Ip_set.Click += new System.EventHandler(this.Ip_set_Click);
+            // 
+            // version
+            // 
+            this.version.Location = new System.Drawing.Point(507, 342);
+            this.version.Name = "version";
+            this.version.Size = new System.Drawing.Size(187, 35);
+            this.version.TabIndex = 15;
+            this.version.Text = "version 1.0.0";
+            this.version.UseVisualStyleBackColor = true;
+            // 
+            // LoginForm
+            // 
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+            this.ClientSize = new System.Drawing.Size(727, 398);
+            this.Controls.Add(this.version);
+            this.Controls.Add(this.Ip_set);
+            this.Controls.Add(this.pwd_textBox);
+            this.Controls.Add(this.mindPwd);
+            this.Controls.Add(this.userName);
+            this.Controls.Add(this.pwd);
+            this.Controls.Add(this.userName_textBox);
+            this.Controls.Add(this.login_button);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.HelpButton = true;
+            this.MaximizeBox = false;
+            this.Name = "LoginForm";
+            this.Text = "TDM测试台数据传输终端";
+            this.Load += new System.EventHandler(this.Login_Load);
+            this.Paint += new System.Windows.Forms.PaintEventHandler(this.Boder_Paint);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+
+        private System.Windows.Forms.TextBox pwd_textBox;
+        private System.Windows.Forms.CheckBox mindPwd;
+        private System.Windows.Forms.Label userName;
+        private System.Windows.Forms.TextBox userName_textBox;
+        private System.Windows.Forms.Button login_button;
+        private System.Windows.Forms.Label pwd;
+        private string Ip_port;
+        private Button Ip_set;
+        private Button version;
+    }
+}
+

+ 198 - 0
lqnet/Forms/LoginForm.cs

@@ -0,0 +1,198 @@
+using System;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.IO;
+using System.Text;
+using System.Windows.Forms;
+using lqnet.Api;
+using lqnet.Entities;
+using lqnet.Forms;
+using lqnet.Utils;
+using Newtonsoft.Json;
+
+namespace lqnet
+{
+    /// <summary>
+    /// partial 部分类
+    /// desc 登录窗体
+    /// </summary>
+    public partial class LoginForm : Form
+    {
+        public LoginForm()
+        {
+            InitializeComponent();
+        }
+
+        private void Login_Load(object sender, EventArgs e)
+        {
+            //居中
+            int x = (System.Windows.Forms.SystemInformation.WorkingArea.Width - this.Size.Width) / 2;
+            int y = (System.Windows.Forms.SystemInformation.WorkingArea.Height - this.Size.Height) / 2;
+            this.StartPosition = FormStartPosition.Manual; //窗体的位置由Location属性决定
+            this.Location = (Point)new Size(x, y);         //窗体的起始位置为(x,y)
+
+            try
+            {
+                string imgPath = System.Windows.Forms.Application.StartupPath + MyConstants.BACKGROUDIMG_NAME;
+                this.BackgroundImage = Image.FromFile(imgPath);
+                this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+
+                //XP
+                if (OSHelper.IsWindowsXP)
+                {
+                    this.userName.BackColor = this.BackColor;
+                    this.pwd.BackColor = this.BackColor;
+                    this.mindPwd.BackColor = this.BackColor;
+                }
+            }
+            catch (Exception)
+            {
+                this.BackColor = MyConstants.BACKGROUDIMG_COLOR;
+                this.userName.BackColor = MyConstants.BACKGROUDIMG_COLOR;
+                this.pwd.BackColor = MyConstants.BACKGROUDIMG_COLOR;
+                this.mindPwd.BackColor = MyConstants.BACKGROUDIMG_COLOR;
+                //MessageBox.Show("未找到背景图片资源,建议重新安装修复终端,避免影响使用观感", "初始化提示", MessageBoxButtons.OK);
+            }
+            //记住密码
+            Init_MindPwd();
+            this.Ip_port = VariablesGlobal.IP_PORT;
+            this.login_button.Select();
+        }
+
+        /// <summary>
+        /// 记住密码
+        /// </summary>
+        private void Init_MindPwd()
+        {
+            try
+            {
+                using (StreamReader sr = new StreamReader(Environment.GetEnvironmentVariable("systemdrive") + MyConstants.MIND_PWD_PATH))
+                {
+                    string line;
+                    string lines = "";
+                    while ((line = sr.ReadLine()) != null)
+                    {
+                        lines = lines + line;
+                    }
+                    User u = JsonConvert.DeserializeObject<User>(Base64.Base64DeCodeMoreOnlyTwo(lines));
+                    this.mindPwd.Checked = true;
+                    this.userName_textBox.Text = u.Username;
+                    this.pwd_textBox.Text = u.Password;
+                }
+            }
+            catch (Exception)
+            {
+            }
+        }
+
+        /// <summary>
+        /// 登录
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Login_button_Click(object sender, EventArgs e)
+        {
+            String u = this.userName_textBox.Text;
+            String p = this.pwd_textBox.Text;
+            if (string.IsNullOrEmpty(u))
+            {
+                MessageBox.Show("用户名需要填写!", "提示", MessageBoxButtons.OK);
+            }
+            else if (string.IsNullOrEmpty(p))
+            {
+                MessageBox.Show("密码需要填写!", "提示", MessageBoxButtons.OK);
+            }
+            else
+            {
+                R r = CallApi.Login(u, p);
+                if (r.Code == MyConstants.CODE_SUCCESS_200)
+                {
+                    VariablesGlobal.USER_TOKEN = r.Token;
+                    //MessageBox.Show("登录成功 ^-^", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
+                    try
+                    {
+                        if (this.mindPwd.Checked)
+                        {
+                            User user = new User
+                            {
+                                Username = u,
+                                Password = p
+                            };
+                            var uBytes = Encoding.UTF8.GetBytes(Base64.Base64EnCodeMoreOnlyTwo(JsonConvert.SerializeObject(user)));
+                            FileStream file = new FileStream(Environment.GetEnvironmentVariable("systemdrive") + MyConstants.MIND_PWD_PATH,
+                                       FileMode.Create, FileAccess.ReadWrite);
+                            file.Write(uBytes, 0, uBytes.Length);
+                            file.Close();
+                        }
+                    }
+                    catch (Exception)
+                    {
+                    }
+                    new MainForm(this).Show();
+                    this.Visible = false;
+                }
+                else if (r.Code == MyConstants.CODE_FAIL_500)
+                {
+                    MessageBox.Show("登录失败,请检查账户、密码或网络," + r.Msg, "提示", MessageBoxButtons.OK);
+                }
+            }
+
+
+        }
+
+        /// <summary>
+        /// 画自定义边框
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Boder_Paint(object sender, PaintEventArgs e)
+        {
+            Rectangle tang = this.ClientRectangle;                  //获取窗口矩形 为了下面得到窗口的宽高
+            Graphics g3 = e.Graphics;                               //新建一个画布
+                                                                  
+            g3.InterpolationMode = InterpolationMode.HighQualityBicubic;    //使得画出来的效果高质量
+            g3.CompositingQuality = CompositingQuality.HighQuality;           //高质量画图
+            int padding = 10;
+            SolidBrush brush = new SolidBrush(Color.White);
+            g3.FillRectangle(brush, 0, 0, padding, tang.Height);              //在(0,0)和(tang.Width - 1, 0)这两点间画一条直线
+            g3.FillRectangle(brush, padding, tang.Height - padding, tang.Width - padding, tang.Height - padding);
+            g3.FillRectangle(brush, tang.Width - padding, 0, tang.Width - padding, tang.Height - padding);
+
+        }
+
+        /// <summary>
+        /// IP更新
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Ip_set_Click(object sender, EventArgs e)
+        {
+            string str = InputBox.Show("更改目的服务网络路径", "服务IP更改,注意末尾斜杠", this.Ip_port);
+            if (!string.IsNullOrEmpty(str))
+            {
+                VariablesGlobal.IP_PORT = str;
+                this.Ip_port = str;
+            }
+        }
+
+        private void MindPwd_CheckedChanged(object sender, EventArgs e)
+        {
+
+        }
+
+        private void UserName_textBox_TextChanged(object sender, EventArgs e)
+        {
+
+        }
+
+        private void Pwd_textBox_TextChanged(object sender, EventArgs e)
+        {
+
+        }
+
+        private void Ip_set1_Click(object sender, EventArgs e)
+        {
+
+        }
+    }
+}

+ 120 - 0
lqnet/Forms/LoginForm.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 330 - 0
lqnet/Forms/MainForm.Designer.cs

@@ -0,0 +1,330 @@
+using System.Windows.Forms;
+
+namespace lqnet.Forms
+{
+    partial class MainForm
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (this.DisposeParentFormIs)
+            {
+                this.ParentFormLogin.Dispose();
+            }
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+
+        }
+
+        /// <summary>
+        /// 控件闪烁
+        /// </summary>
+        protected override CreateParams CreateParams
+        {
+            get
+            {
+                CreateParams cp = base.CreateParams;
+                cp.ExStyle |= 0x02000000;
+                return cp;
+            }
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.components = new System.ComponentModel.Container();
+            this.prodtBatch_sel = new System.Windows.Forms.TextBox();
+            this.Index = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.dataGridView1 = new System.Windows.Forms.DataGridView();
+            this.CheckItemComboBox = new System.Windows.Forms.ComboBox();
+            this.reLogin = new System.Windows.Forms.Button();
+            this.slectBt = new System.Windows.Forms.Button();
+            this.button1 = new System.Windows.Forms.Button();
+            this.selectFileBt = new System.Windows.Forms.Button();
+            this.currentFilePath = new System.Windows.Forms.TextBox();
+            this.button2 = new System.Windows.Forms.Button();
+            this.button3 = new System.Windows.Forms.Button();
+            this.currentCheckItem = new System.Windows.Forms.TextBox();
+            this.uploadTrueBt = new System.Windows.Forms.Button();
+            this.version = new System.Windows.Forms.Button();
+            this.pageHelper2 = new lqnet.Utils.PageHelper();
+            this.numDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.groupOrderCodeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.prodtGroupTypeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.prodtBatchDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.taskListBindingSource = new System.Windows.Forms.BindingSource(this.components);
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.taskListBindingSource)).BeginInit();
+            this.SuspendLayout();
+            // 
+            // prodtBatch_sel
+            // 
+            this.prodtBatch_sel.Location = new System.Drawing.Point(156, 26);
+            this.prodtBatch_sel.Name = "prodtBatch_sel";
+            this.prodtBatch_sel.Size = new System.Drawing.Size(247, 35);
+            this.prodtBatch_sel.TabIndex = 1;
+            // 
+            // Index
+            // 
+            this.Index.DataPropertyName = "Index";
+            this.Index.HeaderText = "序号";
+            this.Index.MinimumWidth = 10;
+            this.Index.Name = "Index";
+            this.Index.ReadOnly = true;
+            this.Index.Width = 110;
+            // 
+            // dataGridView1
+            // 
+            this.dataGridView1.AutoGenerateColumns = false;
+            this.dataGridView1.BackgroundColor = System.Drawing.Color.SkyBlue;
+            this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+            this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
+            this.Index,
+            this.numDataGridViewTextBoxColumn,
+            this.groupOrderCodeDataGridViewTextBoxColumn,
+            this.prodtGroupTypeDataGridViewTextBoxColumn,
+            this.prodtBatchDataGridViewTextBoxColumn});
+            this.dataGridView1.DataSource = this.taskListBindingSource;
+            this.dataGridView1.Location = new System.Drawing.Point(11, 67);
+            this.dataGridView1.MultiSelect = false;
+            this.dataGridView1.Name = "dataGridView1";
+            this.dataGridView1.ReadOnly = true;
+            this.dataGridView1.RowHeadersVisible = false;
+            this.dataGridView1.RowHeadersWidth = 82;
+            this.dataGridView1.RowTemplate.Height = 37;
+            this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
+            this.dataGridView1.ShowCellToolTips = false;
+            this.dataGridView1.Size = new System.Drawing.Size(1088, 266);
+            this.dataGridView1.TabIndex = 2;
+            this.dataGridView1.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.DataGridView1_CellClick);
+            // 
+            // CheckItemComboBox
+            // 
+            this.CheckItemComboBox.DisplayMember = "checkName";
+            this.CheckItemComboBox.FormattingEnabled = true;
+            this.CheckItemComboBox.Items.AddRange(new object[] {
+            "绝缘介电强度",
+            "外观/尺寸"});
+            this.CheckItemComboBox.Location = new System.Drawing.Point(19, 357);
+            this.CheckItemComboBox.Name = "CheckItemComboBox";
+            this.CheckItemComboBox.Size = new System.Drawing.Size(240, 32);
+            this.CheckItemComboBox.TabIndex = 5;
+            this.CheckItemComboBox.SelectionChangeCommitted += new System.EventHandler(this.CheckItemComboBox_SelectionChangeCommitted);
+            // 
+            // reLogin
+            // 
+            this.reLogin.Location = new System.Drawing.Point(940, 6);
+            this.reLogin.Name = "reLogin";
+            this.reLogin.Size = new System.Drawing.Size(120, 59);
+            this.reLogin.TabIndex = 6;
+            this.reLogin.Text = "重新登录";
+            this.reLogin.UseVisualStyleBackColor = true;
+            this.reLogin.Click += new System.EventHandler(this.Button1_Click);
+            // 
+            // slectBt
+            // 
+            this.slectBt.Location = new System.Drawing.Point(409, 26);
+            this.slectBt.Name = "slectBt";
+            this.slectBt.Size = new System.Drawing.Size(91, 39);
+            this.slectBt.TabIndex = 7;
+            this.slectBt.Text = "搜索";
+            this.slectBt.UseVisualStyleBackColor = true;
+            this.slectBt.Click += new System.EventHandler(this.SlectBt_Click);
+            // 
+            // button1
+            // 
+            this.button1.Location = new System.Drawing.Point(12, 26);
+            this.button1.Name = "button1";
+            this.button1.Size = new System.Drawing.Size(126, 39);
+            this.button1.TabIndex = 8;
+            this.button1.Text = "产品代号";
+            this.button1.UseVisualStyleBackColor = true;
+            // 
+            // selectFileBt
+            // 
+            this.selectFileBt.Location = new System.Drawing.Point(19, 400);
+            this.selectFileBt.Name = "selectFileBt";
+            this.selectFileBt.Size = new System.Drawing.Size(240, 66);
+            this.selectFileBt.TabIndex = 9;
+            this.selectFileBt.Text = "选择数据文件";
+            this.selectFileBt.UseVisualStyleBackColor = true;
+            this.selectFileBt.Click += new System.EventHandler(this.SelectFileBt_Click);
+            // 
+            // currentFilePath
+            // 
+            this.currentFilePath.Enabled = false;
+            this.currentFilePath.Font = new System.Drawing.Font("宋体", 7.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.currentFilePath.Location = new System.Drawing.Point(300, 486);
+            this.currentFilePath.Multiline = true;
+            this.currentFilePath.Name = "currentFilePath";
+            this.currentFilePath.Size = new System.Drawing.Size(799, 63);
+            this.currentFilePath.TabIndex = 10;
+            // 
+            // button2
+            // 
+            this.button2.Location = new System.Drawing.Point(300, 358);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(247, 35);
+            this.button2.TabIndex = 15;
+            this.button2.Text = "当前已选中检验项:";
+            this.button2.UseVisualStyleBackColor = true;
+            // 
+            // button3
+            // 
+            this.button3.Location = new System.Drawing.Point(300, 441);
+            this.button3.Name = "button3";
+            this.button3.Size = new System.Drawing.Size(247, 39);
+            this.button3.TabIndex = 16;
+            this.button3.Text = "当前选择数据文件:";
+            this.button3.UseVisualStyleBackColor = true;
+            // 
+            // currentCheckItem
+            // 
+            this.currentCheckItem.Enabled = false;
+            this.currentCheckItem.Location = new System.Drawing.Point(300, 400);
+            this.currentCheckItem.Name = "currentCheckItem";
+            this.currentCheckItem.Size = new System.Drawing.Size(326, 35);
+            this.currentCheckItem.TabIndex = 17;
+            // 
+            // uploadTrueBt
+            // 
+            this.uploadTrueBt.Location = new System.Drawing.Point(18, 483);
+            this.uploadTrueBt.Name = "uploadTrueBt";
+            this.uploadTrueBt.Size = new System.Drawing.Size(240, 66);
+            this.uploadTrueBt.TabIndex = 19;
+            this.uploadTrueBt.Text = "确认上传";
+            this.uploadTrueBt.UseVisualStyleBackColor = true;
+            this.uploadTrueBt.Click += new System.EventHandler(this.UploadTrueBt_Click);
+            // 
+            // version
+            // 
+            this.version.Location = new System.Drawing.Point(918, 546);
+            this.version.Name = "version";
+            this.version.Size = new System.Drawing.Size(181, 41);
+            this.version.TabIndex = 21;
+            this.version.Text = "version 1.0.0";
+            this.version.UseVisualStyleBackColor = true;
+            // 
+            // pageHelper2
+            // 
+            this.pageHelper2.AllPage = 1;
+            this.pageHelper2.Location = new System.Drawing.Point(11, 296);
+            this.pageHelper2.Name = "pageHelper2";
+            this.pageHelper2.NowPage = 1;
+            this.pageHelper2.PageSize = 5;
+            this.pageHelper2.Size = new System.Drawing.Size(1088, 56);
+            this.pageHelper2.TabIndex = 20;
+            this.pageHelper2.Total = 0;
+            this.pageHelper2.Load += new System.EventHandler(this.PageHelper2_Load);
+            // 
+            // numDataGridViewTextBoxColumn
+            // 
+            this.numDataGridViewTextBoxColumn.DataPropertyName = "Num";
+            this.numDataGridViewTextBoxColumn.HeaderText = "数量";
+            this.numDataGridViewTextBoxColumn.MinimumWidth = 10;
+            this.numDataGridViewTextBoxColumn.Name = "numDataGridViewTextBoxColumn";
+            this.numDataGridViewTextBoxColumn.ReadOnly = true;
+            this.numDataGridViewTextBoxColumn.Width = 110;
+            // 
+            // groupOrderCodeDataGridViewTextBoxColumn
+            // 
+            this.groupOrderCodeDataGridViewTextBoxColumn.DataPropertyName = "GroupOrderCode";
+            this.groupOrderCodeDataGridViewTextBoxColumn.HeaderText = "调度单号";
+            this.groupOrderCodeDataGridViewTextBoxColumn.MinimumWidth = 10;
+            this.groupOrderCodeDataGridViewTextBoxColumn.Name = "groupOrderCodeDataGridViewTextBoxColumn";
+            this.groupOrderCodeDataGridViewTextBoxColumn.ReadOnly = true;
+            this.groupOrderCodeDataGridViewTextBoxColumn.Width = 290;
+            // 
+            // prodtGroupTypeDataGridViewTextBoxColumn
+            // 
+            this.prodtGroupTypeDataGridViewTextBoxColumn.DataPropertyName = "ProdtGroupType";
+            this.prodtGroupTypeDataGridViewTextBoxColumn.HeaderText = "任务组";
+            this.prodtGroupTypeDataGridViewTextBoxColumn.MinimumWidth = 10;
+            this.prodtGroupTypeDataGridViewTextBoxColumn.Name = "prodtGroupTypeDataGridViewTextBoxColumn";
+            this.prodtGroupTypeDataGridViewTextBoxColumn.ReadOnly = true;
+            this.prodtGroupTypeDataGridViewTextBoxColumn.Width = 290;
+            // 
+            // prodtBatchDataGridViewTextBoxColumn
+            // 
+            this.prodtBatchDataGridViewTextBoxColumn.DataPropertyName = "ProdtBatch";
+            this.prodtBatchDataGridViewTextBoxColumn.HeaderText = "生产批次";
+            this.prodtBatchDataGridViewTextBoxColumn.MinimumWidth = 10;
+            this.prodtBatchDataGridViewTextBoxColumn.Name = "prodtBatchDataGridViewTextBoxColumn";
+            this.prodtBatchDataGridViewTextBoxColumn.ReadOnly = true;
+            this.prodtBatchDataGridViewTextBoxColumn.Width = 290;
+            // 
+            // taskListBindingSource
+            // 
+            this.taskListBindingSource.DataSource = typeof(lqnet.Entities.Tasks);
+            // 
+            // MainForm
+            // 
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+            this.ClientSize = new System.Drawing.Size(1114, 599);
+            this.Controls.Add(this.version);
+            this.Controls.Add(this.pageHelper2);
+            this.Controls.Add(this.uploadTrueBt);
+            this.Controls.Add(this.currentCheckItem);
+            this.Controls.Add(this.button3);
+            this.Controls.Add(this.button2);
+            this.Controls.Add(this.currentFilePath);
+            this.Controls.Add(this.selectFileBt);
+            this.Controls.Add(this.button1);
+            this.Controls.Add(this.slectBt);
+            this.Controls.Add(this.reLogin);
+            this.Controls.Add(this.CheckItemComboBox);
+            this.Controls.Add(this.dataGridView1);
+            this.Controls.Add(this.prodtBatch_sel);
+            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+            this.MaximizeBox = false;
+            this.Name = "MainForm";
+            this.Text = "TDM测试台数据传输终端";
+            this.Load += new System.EventHandler(this.Main_Load);
+            this.Shown += new System.EventHandler(this.MainForm_Shown);
+            this.Paint += new System.Windows.Forms.PaintEventHandler(this.Boder_Paint);
+            ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.taskListBindingSource)).EndInit();
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        #endregion
+        private BindingSource taskListBindingSource;
+        private TextBox prodtBatch_sel;
+        private DataGridViewTextBoxColumn prodtBatchDataGridViewTextBoxColumn;
+        private DataGridViewTextBoxColumn prodtGroupTypeDataGridViewTextBoxColumn;
+        private DataGridViewTextBoxColumn groupOrderCodeDataGridViewTextBoxColumn;
+        private DataGridViewTextBoxColumn numDataGridViewTextBoxColumn;
+        private DataGridViewTextBoxColumn Index;
+        private DataGridView dataGridView1;
+        private ComboBox CheckItemComboBox;
+        private Button reLogin;
+        private Button slectBt;
+        private Button button1;
+        private Button selectFileBt;
+        private TextBox currentFilePath;
+        private Button button2;
+        private Button button3;
+        private TextBox currentCheckItem;
+        private Button uploadTrueBt;
+        private Utils.PageHelper pageHelper2;
+        private Button version;
+    }
+}

+ 404 - 0
lqnet/Forms/MainForm.cs

@@ -0,0 +1,404 @@
+using System;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.IO;
+using System.Threading;
+using System.Windows.Forms;
+
+using lqnet.Api;
+using lqnet.Entities;
+using lqnet.Entities.Dto;
+using lqnet.Entities.To;
+
+using Newtonsoft.Json;
+
+namespace lqnet.Forms
+{
+    public partial class MainForm : Form
+    {
+        /// <summary>
+        /// 登录窗体
+        /// </summary>
+        public Form ParentFormLogin;
+        /// <summary>
+        /// 父窗体销毁标识
+        /// </summary>
+        public bool DisposeParentFormIs;
+        /// <summary>
+        /// 数据文件选中唯一
+        /// </summary>
+        public bool OnlyOneSelect;
+
+        /// <summary>
+        /// 数据文件选中唯一
+        /// </summary>
+        public bool firstSelect;
+
+        public MainForm(Form parentForm)
+        {
+            this.ParentFormLogin = parentForm;
+            this.DisposeParentFormIs = true;
+            this.OnlyOneSelect = false;
+            this.firstSelect = true;
+
+            this.Visible = false;
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// 主界面
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Main_Load(object sender, EventArgs e)
+        {
+            //居中
+            int x = (System.Windows.Forms.SystemInformation.WorkingArea.Width - this.Size.Width) / 2;
+            int y = (System.Windows.Forms.SystemInformation.WorkingArea.Height - this.Size.Height) / 2;
+            this.StartPosition = FormStartPosition.Manual;
+            x = x < 10 ? 0 : x;
+            y = y < 0 ? 0 : y;
+            this.Location = (Point)new Size(x, y); 
+
+            try
+            {
+                string imgPath = System.Windows.Forms.Application.StartupPath + MyConstants.BACKGROUDIMG_NAME;
+                this.BackgroundImage = Image.FromFile(imgPath);
+                this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+            }
+            catch (Exception)
+            {
+                this.BackColor = MyConstants.BACKGROUDIMG_COLOR; ;
+                //MessageBox.Show("未找到背景图片资源,建议重新安装修复终端,避免影响使用观感", "初始化提示", MessageBoxButtons.OK);
+            }
+
+        }
+
+        /// <summary>
+        /// 主界面
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void MainForm_Shown(object sender, EventArgs e)
+        {
+            SelectTaskList();
+            this.firstSelect = false;
+            this.Visible = true;
+        }
+
+
+        /// <summary>
+        /// 分页插件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void PageHelper2_Load(object sender, EventArgs e)
+        {
+            this.pageHelper2.FirstPageClicek += new Utils.PageHelper.FirstPageClicekHandle(PageHelper2_FirstPageClicek);
+            this.pageHelper2.LastPageClick += new Utils.PageHelper.LastPageClickHandle(PageHelper2_LastPageClick);
+            this.pageHelper2.PreviousPageClick += new Utils.PageHelper.PreviousPageHandle(PageHelper2_PreviousPageClick);
+            this.pageHelper2.NextPageClick += new Utils.PageHelper.NextPageHandle(PageHelper2_NextPageClick);
+
+        }
+
+        private void PageHelper2_LastPageClick(object sender, EventArgs e)
+        {
+            SelectTaskList();
+        }
+
+        private void PageHelper2_FirstPageClicek(object sender, EventArgs e)
+        {
+            SelectTaskList();
+        }
+        private void PageHelper2_NextPageClick(object sender, EventArgs e)
+        {
+            SelectTaskList();
+        }
+
+        private void PageHelper2_PreviousPageClick(object sender, EventArgs e)
+        {
+            SelectTaskList();
+        }
+
+        /// <summary>
+        /// 搜索任务
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void SlectBt_Click(object sender, EventArgs e)
+        {
+            if (string.IsNullOrEmpty(this.prodtBatch_sel.Text))
+            {
+                MessageBox.Show("搜索时,产品代号必填", "提示", MessageBoxButtons.OK);
+                return;
+            }
+            this.pageHelper2.NumberSelectInit();
+            SelectTaskList();
+        }
+
+        /// <summary>
+        /// 搜索任务
+        /// </summary>
+        private void SelectTaskList()
+        {
+            Func_My_CheckItemComboBox_ClearAndInit();
+            R r = CallApi.SelectTasksList(new TaskSelectDTO
+            {
+                ProdtBatch = this.prodtBatch_sel.Text,
+                PageNum = this.pageHelper2.NowPage,
+                PageSize = this.pageHelper2.PageSize
+            });
+            if (r.Code == MyConstants.CODE_SUCCESS_200)
+            {
+                TaskPage page = JsonConvert.DeserializeObject<TaskPage>(r.Data.ToString());
+                TaskToList c = JsonConvert.DeserializeObject<TaskToList>("{\"ListTask\":" + page.Records.ToString() + "}");
+
+                this.taskListBindingSource.Clear();
+                if (null == c.ListTask || c.ListTask.Count == 0)
+                {
+                    if (this.firstSelect == false)
+                    {
+                        MessageBox.Show("没有查到任务结果", "提示", MessageBoxButtons.OK);
+                    }
+                    return;
+                }
+                int start = this.pageHelper2.PageSize * (this.pageHelper2.NowPage - 1) + 1;
+
+                Tasks firstTask = c.ListTask[0];
+                firstTask.Index = start;
+                this.taskListBindingSource.Add(firstTask);
+                for (int k = 1; k < c.ListTask.Count; k++)
+                {
+                    Tasks task = c.ListTask[k];
+                    task.Index = start + k;
+                    this.taskListBindingSource.Add(task);
+                }
+
+                CheckItem_SelectList(new CheckItemsDTO
+                {
+                    GroupOrderCode = firstTask.GroupOrderCode
+                });
+                this.pageHelper2.NowPage = page.Current;
+                this.pageHelper2.AllPage = page.Pages;
+                this.pageHelper2.Total = page.Total;
+                //this.pageHelper2.PageSize = page.Size;
+                return;
+
+            }
+            else if (r.Code == MyConstants.CODE_FAIL_500)
+            {
+                MessageBox.Show("搜索错误:" + r.Msg, "提示", MessageBoxButtons.OK);
+            }
+            this.pageHelper2.NumberSelectInit();
+        }
+
+        /// <summary>
+        /// 任务列表-行选中
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void DataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
+        {
+            SelectedTable();
+        }
+
+        /// <summary>
+        /// 列表某行选中
+        /// </summary>
+        private void SelectedTable()
+        {
+            //Console.WriteLine(this.dataGridView1.CurrentRow.Cells[2].Value.ToString());
+            this.CheckItemComboBox.SelectedIndex = 0;
+            this.CheckItemComboBox.SelectedItem = null;
+            if (null == this.dataGridView1.CurrentRow.Cells[2].Value)
+            {
+                MessageBox.Show("此行没有任务内容或者任务有缺失,请重新选择", "提示", MessageBoxButtons.OK);
+                Func_My_CheckItemComboBox_ClearAndInit();
+                return;
+            }
+            CheckItem_SelectList(new CheckItemsDTO
+            {
+                GroupOrderCode = this.dataGridView1.CurrentRow.Cells[2].Value.ToString()
+            });
+            this.currentFilePath.Text = "";
+        }
+
+        /// <summary>
+        /// 查询检验项 显示
+        /// </summary>
+        /// <param name="r"></param>
+        private void CheckItem_SelectList(CheckItemsDTO dto)
+        {
+            R r = CallApi.SelectCheckItemList(dto);
+            if (r.Code == MyConstants.CODE_SUCCESS_200)
+            {
+                CheckItemToList c = JsonConvert.DeserializeObject<CheckItemToList>("{\"ListCheckItem\":" + r.Data.ToString() + "}");
+                Func_My_CheckItemComboBox_ClearAndInit();
+                if (null == c.ListCheckItem || c.ListCheckItem.Count == 0)
+                {
+                    return;
+                }
+                foreach (CheckItem item in c.ListCheckItem)
+                {
+                    this.CheckItemComboBox.Items.Add(item);
+                }
+                return;
+            }
+            Func_My_CheckItemComboBox_ClearAndInit();
+        }
+
+        /// <summary>
+        /// 上传数据文件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void UploadTrueBt_Click(object sender, EventArgs e)
+        {
+            if (string.IsNullOrEmpty(this.currentFilePath.Text))
+            {
+                MessageBox.Show("请选择要上传的数据文件", "提示", MessageBoxButtons.OK);
+                return;
+            }
+            if (string.IsNullOrEmpty(this.currentCheckItem.Text))
+            {
+                MessageBox.Show("请选择要上传数据的对应的检验项", "提示", MessageBoxButtons.OK);
+                return;
+            }
+            string msg = "确保检查数据以及对应任务后,您确定提交 检验项为 " + this.currentCheckItem.Text + " , 文件名称为 " +
+            this.currentFilePath.Text.Substring(this.currentFilePath.Text.LastIndexOf(Path.DirectorySeparatorChar) + 1)
+             + " 的试验数据吗?";
+            if (DialogResult.Yes == MessageBox.Show(msg, "重要提交数据提示", MessageBoxButtons.YesNo))
+            {
+                CheckItem item = (CheckItem)this.CheckItemComboBox.SelectedItem;
+
+                R r = CallApi.PostDataFile(new DataFileSubmitDTO
+                {
+                    GroupOrderCode = this.dataGridView1.CurrentRow.Cells[2].Value.ToString(),
+                    CheckCode = item.CheckCode,
+                    FilePath = this.currentFilePath.Text
+                });
+                if (r.Code == MyConstants.CODE_SUCCESS_200)
+                {
+                    Func_My_CheckItemComboBox_ClearAndInit();
+                    MessageBox.Show("数据上传成功,可至终端查看,信息:" + r.Msg, "提示", MessageBoxButtons.OK);
+                }
+                else if (r.Code == MyConstants.CODE_FAIL_500)
+                {
+                    MessageBox.Show("数据上传失败,稍后重试或者检查任务或数据文件,原因:" + r.Msg, "提示", MessageBoxButtons.OK);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 画自定义边框
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Boder_Paint(object sender, PaintEventArgs e)
+        {
+            Rectangle tang = this.ClientRectangle;                  //获取窗口矩形 为了下面得到窗口的宽高
+            Graphics g3 = e.Graphics;                               //新建一个画布
+                                                                    //g3.SmoothingMode = SmoothingMode.HighQuality;                 //抗锯齿 使得线条变柔顺  在画斜线或者曲线的时候使用
+            g3.InterpolationMode = InterpolationMode.HighQualityBicubic;    //使得画出来的效果高质量
+            g3.CompositingQuality = CompositingQuality.HighQuality;           //高质量画图
+            int padding = 10;
+            SolidBrush brush = new SolidBrush(Color.White);
+            g3.FillRectangle(brush, 0, 0, padding, tang.Height);              //在(0,0)和(tang.Width - 1, 0)这两点间画一条直线
+            g3.FillRectangle(brush, padding, tang.Height - padding, tang.Width - padding, tang.Height - padding);
+            g3.FillRectangle(brush, tang.Width - padding, 0, tang.Width - padding, tang.Height - padding);
+
+        }
+
+        /// <summary>
+        /// 重新登陆
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void Button1_Click(object sender, EventArgs e)
+        {
+            if (this.OnlyOneSelect == true)
+            {
+                return;
+            }
+            this.ParentFormLogin.Visible = true;
+            this.DisposeParentFormIs = false;
+            VariablesGlobal.USER_TOKEN = null;
+            this.Dispose();
+        }
+
+        /// <summary>
+        /// 选择数据文件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void SelectFileBt_Click(object sender, EventArgs e)
+        {
+            if (this.OnlyOneSelect == true)
+            {
+                return;
+            }
+            this.OnlyOneSelect = true;
+
+            Thread thread = new Thread(new ThreadStart(FileDialog));
+            thread.SetApartmentState(ApartmentState.STA);
+            thread.Start();
+        }
+
+        /// <summary>
+        /// 选择数据文件窗体
+        /// </summary>
+        private void FileDialog()
+        {
+            OpenFileDialog dialog = new OpenFileDialog
+            {
+                Multiselect = false,
+                Title = "请选择需要上传的数据文件,支持 *.txt,*.csv,*.xls,*.xlsx",
+                Filter = "测试台数据文件(*.txt,*.csv,*.xls,*.xlsx)|*.txt;*.csv;*.xls;*.xlsx"
+            };
+
+
+            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+            {
+                this.Invoke((EventHandler)(delegate
+                {
+                    this.currentFilePath.Text = dialog.FileName;
+                }));
+
+            }
+            this.OnlyOneSelect = false;
+        }
+        /// <summary>
+        /// 检验项下拉事件
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void CheckItemComboBox_SelectionChangeCommitted(object sender, EventArgs e)
+        {
+            CheckItem item = (CheckItem)this.CheckItemComboBox.SelectedItem;
+
+            if (!MyConstants.NON_NULL_CHECK_CODE.Equals(item.CheckCode))
+            {
+                this.currentCheckItem.Text = item.CheckName;
+                this.version.Focus();
+            }
+
+        }
+
+        /// <summary>
+        /// 清理与初始化下拉框
+        /// </summary>
+        private void Func_My_CheckItemComboBox_ClearAndInit()
+        {
+            this.CheckItemComboBox.Items.Clear();
+            this.CheckItemComboBox.Items.Add(new CheckItem
+            {
+                CheckCode = MyConstants.NON_NULL_CHECK_CODE,
+                CheckName = "请选择检验项"
+            });
+            this.CheckItemComboBox.SelectedIndex = 0;
+            this.currentCheckItem.Text = null;
+            this.version.Focus();
+        }
+
+    }
+}

+ 129 - 0
lqnet/Forms/MainForm.resx

@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="Index.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <metadata name="taskListBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>731, 17</value>
+  </metadata>
+  <metadata name="taskListBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>731, 17</value>
+  </metadata>
+</root>

+ 176 - 0
lqnet/Lqnet.csproj

@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{98F57028-AF22-4FE1-8A58-F52A626D4D50}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <RootNamespace>lqnet</RootNamespace>
+    <AssemblyName>lqnet</AssemblyName>
+    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <Deterministic>true</Deterministic>
+    <IsWebBootstrapper>false</IsWebBootstrapper>
+    <TargetFrameworkProfile>
+    </TargetFrameworkProfile>
+    <PublishUrl>publish\</PublishUrl>
+    <Install>true</Install>
+    <InstallFrom>Disk</InstallFrom>
+    <UpdateEnabled>false</UpdateEnabled>
+    <UpdateMode>Foreground</UpdateMode>
+    <UpdateInterval>7</UpdateInterval>
+    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
+    <UpdatePeriodically>false</UpdatePeriodically>
+    <UpdateRequired>false</UpdateRequired>
+    <MapFileExtensions>true</MapFileExtensions>
+    <ApplicationRevision>2</ApplicationRevision>
+    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
+    <UseApplicationTrust>false</UseApplicationTrust>
+    <PublishWizardCompleted>true</PublishWizardCompleted>
+    <BootstrapperEnabled>true</BootstrapperEnabled>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ManifestCertificateThumbprint>4D89DEF7EBC9AE0384C9D94FDF90EF2C181DD108</ManifestCertificateThumbprint>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ManifestKeyFile>Lqnet_TemporaryKey.pfx</ManifestKeyFile>
+  </PropertyGroup>
+  <PropertyGroup>
+    <GenerateManifests>true</GenerateManifests>
+  </PropertyGroup>
+  <PropertyGroup>
+    <SignManifests>true</SignManifests>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationManifest>app.manifest</ApplicationManifest>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>icon.ico</ApplicationIcon>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualBasic" />
+    <Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+      <HintPath>..\packages\Newtonsoft.Json.13.0.1\lib\net40\Newtonsoft.Json.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Configuration.Install" />
+    <Reference Include="System.DirectoryServices" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Deployment" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Management" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Api\CommonApi.cs" />
+    <Compile Include="Api\CallApi.cs" />
+    <Compile Include="Api\MyConstants.cs" />
+    <Compile Include="Entities\Dto\CheckItemsDTO.cs" />
+    <Compile Include="Entities\Dto\DataFileSubmitDTO.cs" />
+    <Compile Include="Entities\R.cs" />
+    <Compile Include="Entities\Checkitem.cs" />
+    <Compile Include="Entities\TaskPage.cs" />
+    <Compile Include="Entities\Tasks.cs" />
+    <Compile Include="Entities\Dto\TaskSelectDTO.cs" />
+    <Compile Include="Entities\To\CheckItemToList.cs" />
+    <Compile Include="Entities\To\TaskToList.cs" />
+    <Compile Include="Entities\User.cs" />
+    <Compile Include="Forms\LoginForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Forms\LoginForm.Designer.cs">
+      <DependentUpon>LoginForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Application.cs" />
+    <Compile Include="Forms\MainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="Forms\MainForm.Designer.cs">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Utils\Base64.cs" />
+    <Compile Include="Utils\InputBox.cs" />
+    <Compile Include="Utils\OShelper.cs" />
+    <Compile Include="Utils\PageHelper.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Utils\PageHelper.Designer.cs">
+      <DependentUpon>PageHelper.cs</DependentUpon>
+    </Compile>
+    <EmbeddedResource Include="Forms\LoginForm.resx">
+      <DependentUpon>LoginForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Forms\MainForm.resx">
+      <DependentUpon>MainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+    </Compile>
+    <EmbeddedResource Include="Utils\PageHelper.resx">
+      <DependentUpon>PageHelper.cs</DependentUpon>
+    </EmbeddedResource>
+    <None Include="app.config" />
+    <None Include="app.manifest" />
+    <None Include="Lqnet_TemporaryKey.pfx" />
+    <None Include="packages.config" />
+    <None Include="Properties\DataSources\lqnet.Entities.TaskList.datasource" />
+    <None Include="Properties\DataSources\lqnet.Entities.TaskPage.datasource" />
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\backgroundImg.jpg" />
+  </ItemGroup>
+  <ItemGroup>
+    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
+      <Visible>False</Visible>
+      <ProductName>.NET Framework 3.5 SP1</ProductName>
+      <Install>false</Install>
+    </BootstrapperPackage>
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadata Include="Connected Services\" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="icon.ico" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>

二進制
lqnet/Lqnet_TemporaryKey.pfx


+ 35 - 0
lqnet/Properties/AssemblyInfo.cs

@@ -0,0 +1,35 @@
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+// 有关程序集的一般信息由以下
+// 控制。更改这些特性值可修改
+// 与程序集关联的信息。
+[assembly: AssemblyTitle("TDM测试台数据传输终端")]
+[assembly: AssemblyDescription("TDM测试台数据传输终端")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("jg")]
+[assembly: AssemblyProduct("TDM测试台数据传输终端")]
+[assembly: AssemblyCopyright("Copyright ©  2022")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 将 ComVisible 设置为 false 会使此程序集中的类型
+//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
+//请将此类型的 ComVisible 特性设置为 true。
+[assembly: ComVisible(false)]
+
+// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
+[assembly: Guid("98f57028-af22-4fe1-8a58-f52a626d4d50")]
+
+// 程序集的版本信息由下列四个值组成: 
+//
+//      主版本
+//      次版本
+//      生成号
+//      修订号
+//
+// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
+// 方法是按如下所示使用“*”: :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 10 - 0
lqnet/Properties/DataSources/lqnet.Entities.TaskList.datasource

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="TaskList" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>lqnet.Entities.TaskList, lqnet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>

+ 10 - 0
lqnet/Properties/DataSources/lqnet.Entities.TaskPage.datasource

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    This file is automatically generated by Visual Studio .Net. It is 
+    used to store generic object data source configuration information.  
+    Renaming the file extension or editing the content of this file may   
+    cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="TaskPage" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+   <TypeInfo>lqnet.Entities.TaskPage, lqnet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource>

+ 73 - 0
lqnet/Properties/Resources.Designer.cs

@@ -0,0 +1,73 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace lqnet.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   一个强类型的资源类,用于查找本地化的字符串等。
+    /// </summary>
+    // 此类是由 StronglyTypedResourceBuilder
+    // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
+    // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
+    // (以 /str 作为命令选项),或重新生成 VS 项目。
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   返回此类使用的缓存的 ResourceManager 实例。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("lqnet.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   重写当前线程的 CurrentUICulture 属性,对
+        ///   使用此强类型资源类的所有资源查找执行重写。
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   查找 System.Drawing.Bitmap 类型的本地化资源。
+        /// </summary>
+        internal static System.Drawing.Bitmap backgroundImg {
+            get {
+                object obj = ResourceManager.GetObject("backgroundImg", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+    }
+}

+ 124 - 0
lqnet/Properties/Resources.resx

@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="backgroundImg" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\backgroundImg.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>

+ 26 - 0
lqnet/Properties/Settings.Designer.cs

@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace lqnet.Properties {
+    
+    
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0")]
+    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
+        
+        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+        
+        public static Settings Default {
+            get {
+                return defaultInstance;
+            }
+        }
+    }
+}

+ 7 - 0
lqnet/Properties/Settings.settings

@@ -0,0 +1,7 @@
+<?xml version='1.0' encoding='utf-8'?>
+<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
+  <Profiles>
+    <Profile Name="(Default)" />
+  </Profiles>
+  <Settings />
+</SettingsFile>

+ 1 - 0
lqnet/Resources/TDM数据传输终端安装说明.txt

@@ -0,0 +1 @@
+如果双击

二進制
lqnet/Resources/backgroundImg.jpg


二進制
lqnet/Resources/dotNetFx40_Full_x86_x64.exe


二進制
lqnet/Resources/favicon.ico


二進制
lqnet/Resources/icon.ico


+ 77 - 0
lqnet/Utils/Base64.cs

@@ -0,0 +1,77 @@
+using System;
+using System.Text;
+using lqnet.Api;
+
+namespace lqnet.Utils
+{
+    class Base64
+    {
+
+        /// <summary>
+        /// Base64编码
+        /// </summary>
+        /// <param name="input">需要编码的字符串</param>
+        /// <returns></returns>
+        public static string Base64EnCodeMoreOnlyTwo(string input)
+        {
+            Encoding encode = new UTF8Encoding();
+            string str = MyConstants.MIND_PWD_PATH_PREF+Convert.ToBase64String(encode.GetBytes(input));
+            return Convert.ToBase64String(encode.GetBytes(str));
+        }
+
+        /// <summary>
+        /// Base64编码
+        /// </summary>
+        /// <param name="input">需要编码的字符串</param>
+        /// <returns></returns>
+        public static string Base64EnCode(string input)
+        {
+            return Base64EnCode(input, new UTF8Encoding());
+        }
+
+        /// <summary>
+        /// Base64编码
+        /// </summary>
+        /// <param name="input">需要编码的字符串</param>
+        /// <param name="encode">字符编码</param>
+        /// <returns></returns>
+        public static string Base64EnCode(string input, Encoding encode)
+        {
+            return Convert.ToBase64String(encode.GetBytes(input));
+        }
+
+        /// <summary>
+        /// Base64解码
+        /// </summary>
+        /// <param name="input">需要解码的字符串</param>
+        /// <returns></returns>
+        public static string Base64DeCode(string input)
+        {
+            return Base64DeCode(input, new UTF8Encoding());
+        }
+
+        /// <summary>
+        /// Base64解码
+        /// </summary>
+        /// <param name="input">需要解码的字符串</param>
+        /// <returns></returns>
+        public static string Base64DeCodeMoreOnlyTwo(string input)
+        {
+            Encoding encode = new UTF8Encoding();
+            string str = encode.GetString(Convert.FromBase64String(input));
+            str = str.Substring(MyConstants.MIND_PWD_PATH_PREF.Length);
+            return encode.GetString(Convert.FromBase64String(str));
+        }
+
+        /// <summary>
+        /// Base64解码
+        /// </summary>
+        /// <param name="input">需要解码的字符串</param>
+        /// <param name="encode">字符的编码</param>
+        /// <returns></returns>
+        public static string Base64DeCode(string input, Encoding encode)
+        {
+            return encode.GetString(Convert.FromBase64String(input));
+        }
+    }
+}

+ 85 - 0
lqnet/Utils/InputBox.cs

@@ -0,0 +1,85 @@
+using System.Windows.Forms;
+
+namespace lqnet.Utils
+{
+    /// <summary>
+    /// 自定义的-带输入的提示框
+    /// </summary>
+    class InputBox
+    {
+        public static string Show(string Caption, string Hint, string Default)
+        {
+            Form InputForm = new Form
+            {
+                MinimizeBox = false,
+                MaximizeBox = false,
+                StartPosition = FormStartPosition.CenterParent,
+                FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle,
+                Width = 410,
+                Height = 340,
+                //InputForm.Font.Name = "宋体";
+                //InputForm.Font.Size = 10;
+                Text = Caption
+            };
+
+            Label lbl = new Label
+            {
+                Text = Hint,
+                Left = 10,
+                Top = 50,
+                Parent = InputForm,
+                AutoSize = true
+            };
+
+            TextBox tb = new TextBox
+            {
+                Left = 10,
+                Top = 90,
+                Width = 380,
+                Parent = InputForm,
+                Text = Default
+            };
+            tb.SelectAll();
+
+            Button btnok = new Button
+            {
+                Left = 70,
+                Top = 230,
+                Height = 40,
+                Width = 120,
+                Parent = InputForm,
+                Text = "确定"
+            };
+            InputForm.AcceptButton = btnok;
+
+            btnok.DialogResult = DialogResult.OK;
+
+            Button btncancal = new Button
+            {
+                Left = 210,
+                Top = 230,
+                Height = 40,
+                Width = 120,
+                Parent = InputForm,
+                Text = "取消",
+                DialogResult = DialogResult.Cancel
+            };
+            try
+            {
+                if (InputForm.ShowDialog() == DialogResult.OK)
+                {
+                    return tb.Text;
+                }
+                else
+                {
+                    return "";
+                }
+            }
+            finally
+            {
+                InputForm.Dispose();
+            }
+
+        }
+    }
+}

+ 125 - 0
lqnet/Utils/OShelper.cs

@@ -0,0 +1,125 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace lqnet.Utils
+{
+    /// <summary>
+    /// 操作系统判断-来自网络
+    /// </summary>
+    public class OSHelper
+    {
+        // 获取操作系统ID
+        public static System.PlatformID GetPlatformID()
+        {
+            //获取系统信息
+            System.OperatingSystem osInfo = System.Environment.OSVersion;
+
+            //获取操作系统ID
+            System.PlatformID platformID = osInfo.Platform;
+
+            return platformID;
+        }
+
+        // 获取主版本号
+        public static int GetVersionMajor()
+        {
+            //获取系统信息
+            System.OperatingSystem osInfo = System.Environment.OSVersion;
+
+            //获取主版本号
+            int versionMajor = osInfo.Version.Major;
+
+            return versionMajor;
+        }
+
+        // 获取副版本号
+        public static int GetVersionMinor()
+        {
+            //获取系统信息
+            System.OperatingSystem osInfo = System.Environment.OSVersion;
+
+            //获取副版本号
+            int versionMinor = osInfo.Version.Minor;
+
+            return versionMinor;
+        }
+
+        //C#判断操作系统是否为Windows98
+        public static bool IsWindows98
+        {
+            get
+            {
+                return (Environment.OSVersion.Platform == PlatformID.Win32Windows) && (Environment.OSVersion.Version.Minor == 10) && (Environment.OSVersion.Version.Revision.ToString() != "2222A");
+            }
+        }
+        //C#判断操作系统是否为Windows98第二版
+        public static bool IsWindows98Second
+        {
+            get
+            {
+                return (Environment.OSVersion.Platform == PlatformID.Win32Windows) && (Environment.OSVersion.Version.Minor == 10) && (Environment.OSVersion.Version.Revision.ToString() == "2222A");
+            }
+        }
+        //C#判断操作系统是否为Windows2000
+        public static bool IsWindows2000
+        {
+            get
+            {
+                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 0);
+            }
+        }
+        //C#判断操作系统是否为WindowsXP
+        public static bool IsWindowsXP
+        {
+            get
+            {
+                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 1);
+            }
+        }
+        //C#判断操作系统是否为Windows2003
+        public static bool IsWindows2003
+        {
+            get
+            {
+                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor == 2);
+            }
+        }
+        //C#判断操作系统是否为WindowsVista
+        public static bool IsWindowsVista
+        {
+            get
+            {
+                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 6) && (Environment.OSVersion.Version.Minor == 0);
+            }
+        }
+        //C#判断操作系统是否为Windows7
+        public static bool IsWindows7
+        {
+            get
+            {
+                return (Environment.OSVersion.Platform == PlatformID.Win32NT) && (Environment.OSVersion.Version.Major == 6) && (Environment.OSVersion.Version.Minor == 1);
+            }
+        }
+        //C#判断操作系统是否为Unix
+        public static bool IsUnix
+        {
+            get
+            {
+                return Environment.OSVersion.Platform == PlatformID.Unix;
+            }
+        }
+        //利用C#判断当前操作系统是否为Win8系统
+        public static bool IsWindows8()
+        {
+            Version currentVersion = Environment.OSVersion.Version;
+            Version compareToVersion = new Version("6.2");
+            if (currentVersion.CompareTo(compareToVersion) >= 0)
+                return true;
+            else
+                return false;
+        }
+
+    }
+}

+ 250 - 0
lqnet/Utils/PageHelper.Designer.cs

@@ -0,0 +1,250 @@
+using System;
+
+namespace lqnet.Utils
+{
+    /// <summary>
+    /// 分页控件
+    /// @author Fengjl
+    /// </summary>
+    partial class PageHelper
+    {
+        /// <summary> 
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        private int allPage = 1;
+        private int nowPage = 1;
+        private int pageSize = 5;
+        private int total = 0;
+
+        public int PageSize
+        {
+            get
+            {
+                return pageSize;
+            }
+            set
+            {
+                pageSize = value;
+            }
+        }
+        public int NowPage
+        {
+            get
+            {
+                return nowPage;
+            }
+            set
+            {
+                nowPage = value;
+                indexPage.Text = nowPage.ToString();
+            }
+        }
+        public int AllPage
+        {
+            get
+            {
+                return allPage;
+            }
+            set
+            {
+                allPage = value;
+                totalPages.Text = allPage.ToString();
+            }
+        }
+        public int Total
+        {
+            get
+            {
+                return total;
+            }
+            set
+            {
+                total = value;
+                totalCount.Text = total.ToString();
+            }
+        }
+
+        /// <summary> 
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region 组件设计器生成的代码
+
+        /// <summary> 
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.btFirstPage = new System.Windows.Forms.Button();
+            this.btPreviousPage = new System.Windows.Forms.Button();
+            this.btNextPage = new System.Windows.Forms.Button();
+            this.btLastPage = new System.Windows.Forms.Button();
+            this.totalCount = new System.Windows.Forms.Button();
+            this.label2 = new System.Windows.Forms.Label();
+            this.label3 = new System.Windows.Forms.Label();
+            this.totalPages = new System.Windows.Forms.Button();
+            this.label4 = new System.Windows.Forms.Label();
+            this.indexPage = new System.Windows.Forms.Button();
+            this.label1 = new System.Windows.Forms.Label();
+            this.SuspendLayout();
+            // 
+            // btFirstPage
+            // 
+            this.btFirstPage.Location = new System.Drawing.Point(68, -1);
+            this.btFirstPage.Name = "btFirstPage";
+            this.btFirstPage.Size = new System.Drawing.Size(94, 61);
+            this.btFirstPage.TabIndex = 0;
+            this.btFirstPage.Text = "首页";
+            this.btFirstPage.UseVisualStyleBackColor = true;
+            this.btFirstPage.Click += new System.EventHandler(this.BtFirstPage_Click);
+            // 
+            // btPreviousPage
+            // 
+            this.btPreviousPage.Location = new System.Drawing.Point(185, -1);
+            this.btPreviousPage.Name = "btPreviousPage";
+            this.btPreviousPage.Size = new System.Drawing.Size(107, 60);
+            this.btPreviousPage.TabIndex = 1;
+            this.btPreviousPage.Text = "上一页";
+            this.btPreviousPage.UseVisualStyleBackColor = true;
+            this.btPreviousPage.Click += new System.EventHandler(this.BtPreviousPage_Click);
+            // 
+            // btNextPage
+            // 
+            this.btNextPage.Location = new System.Drawing.Point(317, -1);
+            this.btNextPage.Name = "btNextPage";
+            this.btNextPage.Size = new System.Drawing.Size(100, 61);
+            this.btNextPage.TabIndex = 4;
+            this.btNextPage.Text = "下一页";
+            this.btNextPage.UseVisualStyleBackColor = true;
+            this.btNextPage.Click += new System.EventHandler(this.BtNextPage_Click);
+            // 
+            // btLastPage
+            // 
+            this.btLastPage.Location = new System.Drawing.Point(438, -2);
+            this.btLastPage.Name = "btLastPage";
+            this.btLastPage.Size = new System.Drawing.Size(94, 61);
+            this.btLastPage.TabIndex = 5;
+            this.btLastPage.Text = "尾页";
+            this.btLastPage.UseVisualStyleBackColor = true;
+            this.btLastPage.Click += new System.EventHandler(this.BtLastPage_Click);
+            // 
+            // totalCount
+            // 
+            this.totalCount.Location = new System.Drawing.Point(930, -1);
+            this.totalCount.Name = "totalCount";
+            this.totalCount.Size = new System.Drawing.Size(98, 60);
+            this.totalCount.TabIndex = 6;
+            this.totalCount.Text = "0";
+            this.totalCount.UseVisualStyleBackColor = true;
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(1034, 16);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(34, 24);
+            this.label2.TabIndex = 8;
+            this.label2.Text = "条";
+            // 
+            // label3
+            // 
+            this.label3.AutoSize = true;
+            this.label3.Location = new System.Drawing.Point(854, 16);
+            this.label3.Name = "label3";
+            this.label3.Size = new System.Drawing.Size(70, 24);
+            this.label3.TabIndex = 11;
+            this.label3.Text = "页,共";
+            // 
+            // totalPages
+            // 
+            this.totalPages.Location = new System.Drawing.Point(765, -1);
+            this.totalPages.Name = "totalPages";
+            this.totalPages.Size = new System.Drawing.Size(83, 61);
+            this.totalPages.TabIndex = 9;
+            this.totalPages.Text = "0";
+            this.totalPages.UseVisualStyleBackColor = true;
+            // 
+            // label4
+            // 
+            this.label4.AutoSize = true;
+            this.label4.Location = new System.Drawing.Point(689, 16);
+            this.label4.Name = "label4";
+            this.label4.Size = new System.Drawing.Size(70, 24);
+            this.label4.TabIndex = 10;
+            this.label4.Text = "页,共";
+            // 
+            // indexPage
+            // 
+            this.indexPage.Location = new System.Drawing.Point(595, -1);
+            this.indexPage.Name = "indexPage";
+            this.indexPage.Size = new System.Drawing.Size(88, 61);
+            this.indexPage.TabIndex = 12;
+            this.indexPage.Text = "0";
+            this.indexPage.UseVisualStyleBackColor = true;
+            // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(555, 16);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(34, 24);
+            this.label1.TabIndex = 13;
+            this.label1.Text = "第";
+            // 
+            // PageHelper
+            // 
+            this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 24F);
+            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.Controls.Add(this.label1);
+            this.Controls.Add(this.indexPage);
+            this.Controls.Add(this.label3);
+            this.Controls.Add(this.label4);
+            this.Controls.Add(this.totalPages);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.totalCount);
+            this.Controls.Add(this.btLastPage);
+            this.Controls.Add(this.btNextPage);
+            this.Controls.Add(this.btPreviousPage);
+            this.Controls.Add(this.btFirstPage);
+            this.Name = "PageHelper";
+            this.Size = new System.Drawing.Size(1088, 56);
+            this.ResumeLayout(false);
+            this.PerformLayout();
+
+        }
+
+        private System.Windows.Forms.Button btFirstPage;
+        private System.Windows.Forms.Button btPreviousPage;
+        private System.Windows.Forms.Button btNextPage;
+        private System.Windows.Forms.Button btLastPage;
+        private System.Windows.Forms.Button totalCount;
+        private System.Windows.Forms.Label label2;
+        private System.Windows.Forms.Label label3;
+        private System.Windows.Forms.Button totalPages;
+        private System.Windows.Forms.Label label4;
+        private System.Windows.Forms.Button indexPage;
+        private System.Windows.Forms.Label label1;
+
+        public delegate void FirstPageClicekHandle(object sender, EventArgs e);
+        public event FirstPageClicekHandle FirstPageClicek;
+        public delegate void PreviousPageHandle(object sender, EventArgs e);
+        public event PreviousPageHandle PreviousPageClick;
+        public delegate void NextPageHandle(object sender, EventArgs e);
+        public event NextPageHandle NextPageClick;
+        public delegate void LastPageClickHandle(object sender, EventArgs e);
+        public event LastPageClickHandle LastPageClick;
+        #endregion
+    }
+}

+ 100 - 0
lqnet/Utils/PageHelper.cs

@@ -0,0 +1,100 @@
+using System;
+using System.Windows.Forms;
+
+namespace lqnet.Utils
+{
+    public partial class PageHelper : UserControl
+    {
+        /// <summary>
+        /// 自定义分页插件
+        /// </summary>
+        public PageHelper()
+        {
+            InitializeComponent();
+        }
+
+        /// <summary>
+        /// 首页
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void BtFirstPage_Click(object sender, EventArgs e)
+        {
+            if (allPage > 0)
+            {
+                nowPage = 1;
+                NumberTextChange();
+                FirstPageClicek?.Invoke(sender, new EventArgs());
+            }
+        }
+
+        /// <summary>
+        /// 上一页
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void BtPreviousPage_Click(object sender, EventArgs e)
+        {
+            if (allPage > 0 && nowPage > 1)
+            {
+                nowPage -= 1;
+                NumberTextChange();
+                PreviousPageClick?.Invoke(sender, new EventArgs());
+            }
+            else
+            {
+                MessageBox.Show("已经到达首页", "提示", MessageBoxButtons.OK);
+            }
+        }
+
+        /// <summary>
+        /// 下一页
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void BtNextPage_Click(object sender, EventArgs e)
+        {
+            if (nowPage < allPage)
+            {
+                nowPage += 1;
+                NumberTextChange();
+                NextPageClick?.Invoke(sender, new EventArgs());
+            }
+            else {
+                MessageBox.Show("已经到达尾页", "提示", MessageBoxButtons.OK);
+            }
+        }
+
+        /// <summary>
+        /// 尾页
+        /// </summary>
+        /// <param name="sender"></param>
+        /// <param name="e"></param>
+        private void BtLastPage_Click(object sender, EventArgs e)
+        {
+            nowPage = allPage;
+            NumberTextChange();
+            LastPageClick?.Invoke(sender, new EventArgs());
+        }
+
+        /// <summary>
+        /// 文本变化
+        /// </summary>
+        private void NumberTextChange()
+        {
+            indexPage.Text = nowPage.ToString();
+            totalPages.Text = allPage.ToString();
+            totalCount.Text = total.ToString();
+        }
+        /// <summary>
+        /// 初始化
+        /// </summary>
+        public void NumberSelectInit()
+        {
+            this.NowPage = 1;
+            this.AllPage = 1;
+            this.PageSize = 5;
+            this.Total = 0;
+        }
+    }
+}

+ 120 - 0
lqnet/Utils/PageHelper.resx

@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>

+ 3 - 0
lqnet/app.config

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8"/></startup></configuration>

+ 74 - 0
lqnet/app.manifest

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="utf-8"?>
+<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
+  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
+  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
+    <security>
+      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
+        <!-- UAC 清单选项
+             如果想要更改 Windows 用户帐户控制级别,请使用
+             以下节点之一替换 requestedExecutionLevel 节点。n
+        <requestedExecutionLevel  level="asInvoker" uiAccess="false" />
+        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
+        <requestedExecutionLevel  level="highestAvailable" uiAccess="false" />
+
+            指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
+            如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
+            元素。
+        -->
+        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
+      </requestedPrivileges>
+    </security>
+  </trustInfo>
+
+  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
+    <application>
+      <!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
+           Windows 版本的列表。取消评论适当的元素,
+           Windows 将自动选择最兼容的环境。 -->
+
+      <!-- Windows Vista -->
+      <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
+
+      <!-- Windows 7 -->
+      <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
+
+      <!-- Windows 8 -->
+      <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
+
+      <!-- Windows 8.1 -->
+      <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
+
+      <!-- Windows 10 -->
+      <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
+
+    </application>
+  </compatibility>
+
+  <!-- 指示该应用程序可以感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
+       自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
+       选择加入。选择加入此设置的 Windows 窗体应用程序(目标设定为 .NET Framework 4.6 )还应
+       在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。-->
+
+  <application xmlns="urn:schemas-microsoft-com:asm.v3">
+    <windowsSettings>
+      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
+    </windowsSettings>
+  </application>
+
+  <!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
+  <!--
+  <dependency>
+    <dependentAssembly>
+      <assemblyIdentity
+          type="win32"
+          name="Microsoft.Windows.Common-Controls"
+          version="6.0.0.0"
+          processorArchitecture="*"
+          publicKeyToken="6595b64144ccf1df"
+          language="*"
+        />
+    </dependentAssembly>
+  </dependency>
+  -->
+
+</assembly>

二進制
lqnet/bin/Debug/Newtonsoft.Json.dll


文件差異過大導致無法顯示
+ 9683 - 0
lqnet/bin/Debug/Newtonsoft.Json.xml


二進制
lqnet/bin/Debug/app.publish/lqnet.exe


文件差異過大導致無法顯示
+ 21 - 0
lqnet/bin/Debug/lqnet.application


二進制
lqnet/bin/Debug/lqnet.exe


+ 3 - 0
lqnet/bin/Debug/lqnet.exe.config

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

文件差異過大導致無法顯示
+ 108 - 0
lqnet/bin/Debug/lqnet.exe.manifest


二進制
lqnet/bin/Debug/lqnet.pdb


二進制
lqnet/bin/Release/Newtonsoft.Json.dll


文件差異過大導致無法顯示
+ 10335 - 0
lqnet/bin/Release/Newtonsoft.Json.xml


二進制
lqnet/bin/Release/app.publish/lqnet.exe


文件差異過大導致無法顯示
+ 21 - 0
lqnet/bin/Release/lqnet.application


二進制
lqnet/bin/Release/lqnet.exe


+ 3 - 0
lqnet/bin/Release/lqnet.exe.config

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

文件差異過大導致無法顯示
+ 108 - 0
lqnet/bin/Release/lqnet.exe.manifest


二進制
lqnet/bin/Release/lqnet.pdb


二進制
lqnet/icon.ico


+ 17 - 0
lqnet/lqnet.csproj.user

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <PublishUrlHistory>publish\</PublishUrlHistory>
+    <InstallUrlHistory />
+    <SupportUrlHistory />
+    <UpdateUrlHistory />
+    <BootstrapperUrlHistory />
+    <ErrorReportUrlHistory />
+    <FallbackCulture>zh-CN</FallbackCulture>
+    <VerifyUploadedFiles>false</VerifyUploadedFiles>
+    <ProjectView>ProjectFiles</ProjectView>
+  </PropertyGroup>
+  <PropertyGroup>
+    <EnableSecurityDebugging>false</EnableSecurityDebugging>
+  </PropertyGroup>
+</Project>

+ 4 - 0
lqnet/obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.0", FrameworkDisplayName = ".NET Framework 4")]

+ 4 - 0
lqnet/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

二進制
lqnet/obj/Debug/DesignTimeResolveAssemblyReferences.cache


二進制
lqnet/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


二進制
lqnet/obj/Debug/Lqnet.csproj.AssemblyReference.cache


+ 0 - 0
lqnet/obj/Debug/Lqnet.csproj.CopyComplete


+ 1 - 0
lqnet/obj/Debug/Lqnet.csproj.CoreCompileInputs.cache

@@ -0,0 +1 @@
+ec849436ddd8bc02417d49302b75e34341cdd152

+ 37 - 0
lqnet/obj/Debug/Lqnet.csproj.FileListAbsolute.txt

@@ -0,0 +1,37 @@
+D:\cs\lqnet\lqnet\bin\Debug\lqnet.exe.config
+D:\cs\lqnet\lqnet\bin\Debug\lqnet.exe.manifest
+D:\cs\lqnet\lqnet\bin\Debug\lqnet.application
+D:\cs\lqnet\lqnet\bin\Debug\lqnet.exe
+D:\cs\lqnet\lqnet\bin\Debug\lqnet.pdb
+D:\cs\lqnet\lqnet\bin\Debug\Newtonsoft.Json.dll
+D:\cs\lqnet\lqnet\bin\Debug\Newtonsoft.Json.xml
+D:\cs\lqnet\lqnet\obj\Debug\lqnet.LoginForm.resources
+D:\cs\lqnet\lqnet\obj\Debug\lqnet.Forms.MainForm.resources
+D:\cs\lqnet\lqnet\obj\Debug\lqnet.Properties.Resources.resources
+D:\cs\lqnet\lqnet\obj\Debug\lqnet.Utils.PageHelper.resources
+D:\cs\lqnet\lqnet\obj\Debug\Lqnet.csproj.GenerateResource.cache
+D:\cs\lqnet\lqnet\obj\Debug\Lqnet.csproj.CoreCompileInputs.cache
+D:\cs\lqnet\lqnet\obj\Debug\lqnet.exe.manifest
+D:\cs\lqnet\lqnet\obj\Debug\lqnet.application
+D:\cs\lqnet\lqnet\obj\Debug\Lqnet.csproj.CopyComplete
+D:\cs\lqnet\lqnet\obj\Debug\lqnet.exe
+D:\cs\lqnet\lqnet\obj\Debug\lqnet.pdb
+D:\workStudy\cs\lqnet\lqnet\bin\Debug\lqnet.exe.config
+D:\workStudy\cs\lqnet\lqnet\bin\Debug\lqnet.exe.manifest
+D:\workStudy\cs\lqnet\lqnet\bin\Debug\lqnet.application
+D:\workStudy\cs\lqnet\lqnet\bin\Debug\lqnet.exe
+D:\workStudy\cs\lqnet\lqnet\bin\Debug\lqnet.pdb
+D:\workStudy\cs\lqnet\lqnet\bin\Debug\Newtonsoft.Json.dll
+D:\workStudy\cs\lqnet\lqnet\bin\Debug\Newtonsoft.Json.xml
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\Lqnet.csproj.AssemblyReference.cache
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\lqnet.LoginForm.resources
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\lqnet.Forms.MainForm.resources
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\lqnet.Properties.Resources.resources
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\lqnet.Utils.PageHelper.resources
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\Lqnet.csproj.GenerateResource.cache
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\Lqnet.csproj.CoreCompileInputs.cache
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\lqnet.exe.manifest
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\lqnet.application
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\Lqnet.csproj.CopyComplete
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\lqnet.exe
+D:\workStudy\cs\lqnet\lqnet\obj\Debug\lqnet.pdb

二進制
lqnet/obj/Debug/Lqnet.csproj.GenerateResource.cache


二進制
lqnet/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll


二進制
lqnet/obj/Debug/lqnet.Forms.MainForm.resources


二進制
lqnet/obj/Debug/lqnet.LoginForm.resources


二進制
lqnet/obj/Debug/lqnet.Properties.Resources.resources


二進制
lqnet/obj/Debug/lqnet.Utils.PageHelper.resources


文件差異過大導致無法顯示
+ 21 - 0
lqnet/obj/Debug/lqnet.application


二進制
lqnet/obj/Debug/lqnet.exe


文件差異過大導致無法顯示
+ 108 - 0
lqnet/obj/Debug/lqnet.exe.manifest


二進制
lqnet/obj/Debug/lqnet.pdb


+ 4 - 0
lqnet/obj/Release/.NETFramework,Version=v4.0.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.0", FrameworkDisplayName = ".NET Framework 4")]

二進制
lqnet/obj/Release/DesignTimeResolveAssemblyReferences.cache


二進制
lqnet/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache


二進制
lqnet/obj/Release/Lqnet.csproj.AssemblyReference.cache


+ 0 - 0
lqnet/obj/Release/Lqnet.csproj.CopyComplete


+ 1 - 0
lqnet/obj/Release/Lqnet.csproj.CoreCompileInputs.cache

@@ -0,0 +1 @@
+6e73a94de4f5311e87446d0aca9864c7703b5166

+ 19 - 0
lqnet/obj/Release/Lqnet.csproj.FileListAbsolute.txt

@@ -0,0 +1,19 @@
+D:\cs\lqnet\lqnet\bin\Release\lqnet.exe.config
+D:\cs\lqnet\lqnet\bin\Release\lqnet.exe.manifest
+D:\cs\lqnet\lqnet\bin\Release\lqnet.application
+D:\cs\lqnet\lqnet\bin\Release\lqnet.exe
+D:\cs\lqnet\lqnet\bin\Release\lqnet.pdb
+D:\cs\lqnet\lqnet\bin\Release\Newtonsoft.Json.dll
+D:\cs\lqnet\lqnet\bin\Release\Newtonsoft.Json.xml
+D:\cs\lqnet\lqnet\obj\Release\Lqnet.csprojAssemblyReference.cache
+D:\cs\lqnet\lqnet\obj\Release\lqnet.LoginForm.resources
+D:\cs\lqnet\lqnet\obj\Release\lqnet.Forms.MainForm.resources
+D:\cs\lqnet\lqnet\obj\Release\lqnet.Properties.Resources.resources
+D:\cs\lqnet\lqnet\obj\Release\lqnet.Utils.PageHelper.resources
+D:\cs\lqnet\lqnet\obj\Release\Lqnet.csproj.GenerateResource.cache
+D:\cs\lqnet\lqnet\obj\Release\Lqnet.csproj.CoreCompileInputs.cache
+D:\cs\lqnet\lqnet\obj\Release\lqnet.exe.manifest
+D:\cs\lqnet\lqnet\obj\Release\lqnet.application
+D:\cs\lqnet\lqnet\obj\Release\Lqnet.csproj.CopyComplete
+D:\cs\lqnet\lqnet\obj\Release\lqnet.exe
+D:\cs\lqnet\lqnet\obj\Release\lqnet.pdb

二進制
lqnet/obj/Release/Lqnet.csproj.GenerateResource.cache


二進制
lqnet/obj/Release/Lqnet.csprojAssemblyReference.cache


二進制
lqnet/obj/Release/TempPE/Properties.Resources.Designer.cs.dll


+ 0 - 0
lqnet/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs


+ 0 - 0
lqnet/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs


+ 0 - 0
lqnet/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs


二進制
lqnet/obj/Release/lqnet.Forms.MainForm.resources


+ 0 - 0
lqnet/obj/Release/lqnet.LoginForm.resources


部分文件因文件數量過多而無法顯示