From a7e9939224debe7052b660c5c3af35a6fc94c327 Mon Sep 17 00:00:00 2001
From: kyy <3283105747@qq.com>
Date: 星期六, 01 十一月 2025 17:50:44 +0800
Subject: [PATCH] 1、到货单查询

---
 DevApp/HELP.md | 1545 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 1,456 insertions(+), 89 deletions(-)

diff --git a/DevApp/HELP.md b/DevApp/HELP.md
index 0852eda..a64b2d4 100644
--- a/DevApp/HELP.md
+++ b/DevApp/HELP.md
@@ -1,107 +1,1474 @@
-# 钃濆疂 MES 瀹㈡埛绔府鍔╂寚鍗�
+# 钃濆疂 MES 瀹㈡埛绔府鍔╂寚鍗� (G-MES V2.0)
+
+> **LanBMes MES Client** 鏄熀浜� .NET Framework 4.8 鍜� DevExpress WinForms 鏋勫缓鐨勪紒涓氱骇鍒堕�犳墽琛岀郴缁�(MES)妗岄潰搴旂敤绋嬪簭,涓哄埗閫犺溅闂存彁渚涘叏闈㈢殑鐢熶骇鎵ц銆佷粨鍌ㄧ鐞嗐�佽川閲忔帶鍒跺拰鎶ヨ〃鍒嗘瀽鑳藉姏銆�
+
+## 鐩綍
+
+- [1. 椤圭洰姒傝](#1-椤圭洰姒傝)
+- [2. 瑙e喅鏂规缁撴瀯](#2-瑙e喅鏂规缁撴瀯)
+- [3. 鏍稿績鎶�鏈爤](#3-鏍稿績鎶�鏈爤)
+- [4. 寮�鍙戠幆澧冮厤缃甝(#4-寮�鍙戠幆澧冮厤缃�)
+- [5. 鏋勫缓涓庤繍琛宂(#5-鏋勫缓涓庤繍琛�)
+- [6. DevFrm 鍔熻兘妯″潡璇﹁В](#6-devfrm-鍔熻兘妯″潡璇﹁В)
+- [7. 鏋舵瀯涓庤璁℃ā寮廬(#7-鏋舵瀯涓庤璁℃ā寮�)
+- [8. 宸ュ叿绫讳笌鍏叡缁勪欢](#8-宸ュ叿绫讳笌鍏叡缁勪欢)
+- [9. 閰嶇疆璇存槑](#9-閰嶇疆璇存槑)
+- [10. 閮ㄧ讲鎸囧崡](#10-閮ㄧ讲鎸囧崡)
+- [11. 寮�鍙戣鑼冧笌鏈�浣冲疄璺礭(#11-寮�鍙戣鑼冧笌鏈�浣冲疄璺�)
+- [12. 甯歌闂涓庢晠闅滄帓鏌(#12-甯歌闂涓庢晠闅滄帓鏌�)
+
+---
 
 ## 1. 椤圭洰姒傝
-- **瑙e喅鏂规鍚嶇О**锛歚GsDevSolution.sln`
-- **涓昏鐢ㄩ��**锛氶潰鍚戝埗閫犵幇鍦虹殑 MES Windows 瀹㈡埛绔紝瑕嗙洊鐢熶骇銆佷粨鍌ㄣ�佽川妫�銆佺郴缁熼厤缃瓑涓氬姟銆�
-- **鏍稿績搴旂敤**锛歚Gs.DevApp`锛圖evExpress WinForms 瀹㈡埛绔級锛岃緟浠ョО閲嶉噰闆嗙珯鐐逛笌瀹夎绋嬪簭銆�
+
+### 1.1 鍩烘湰淇℃伅
+
+| 椤圭洰 | 璇存槑 |
+|------|------|
+| **瑙e喅鏂规鍚嶇О** | `GsDevSolution.sln` |
+| **浜у搧鍚嶇О** | G-MES V2.0 |
+| **涓昏鐢ㄩ��** | 闈㈠悜鍒堕�犵幇鍦虹殑 MES Windows 瀹㈡埛绔� |
+| **鏍稿績搴旂敤** | `Gs.DevApp` (涓诲鎴风) |
+| **杈呭姪搴旂敤** | `Gs.WeightIqc` (IQC绉伴噸), `Gs.WeightLine` (浜х嚎绉伴噸) |
+| **寮�鍙戠幆澧�** | Visual Studio 2022+ |
+| **鐩爣妗嗘灦** | .NET Framework 4.8 |
+| **鏋勫缓骞冲彴** | Any CPU |
+
+### 1.2 鏍稿績鐗规��
+
+- 鉁� **鐜颁唬鍖� UI**: 鍩轰簬 DevExpress v22.2 鐨� FluentDesign 鐣岄潰
+- 鉁� **鍔ㄦ�佸姞杞�**: 閫氳繃鍙嶅皠鏈哄埗瀹炵幇鑿滃崟鍜岀獥浣撶殑鍔ㄦ�佸姞杞�
+- 鉁� **鏉冮檺鎺у埗**: 鍩轰簬瑙掕壊鐨勮彍鍗曟潈闄愬拰鎿嶄綔鏉冮檺绠$悊
+- 鉁� **鍙鐢ㄧ粍浠�**: 150+ 涓氬姟鎺т欢,鎻愰珮寮�鍙戞晥鐜�
+- 鉁� **澶氭暟鎹簱鏀寔**: 鍏煎 Oracle 鍜� SQL Server
+- 鉁� **鑷姩鏇存柊**: 闆嗘垚 AutoUpdater.NET 瀹炵幇鑷姩鍗囩骇
+- 鉁� **宓屽叆寮忔祻瑙堝櫒**: CefSharp 鏀寔 H5 椤甸潰闆嗘垚
+- 鉁� **宸ヤ笟閫氫俊**: NModbus 鏀寔 Modbus TCP/RTU 璁惧閫氫俊
+- 鉁� **闆嗕腑寮忔棩蹇�**: 缁熶竴鐨勬棩蹇楄褰曞拰閿欒杩借釜鏈哄埗
+
+### 1.3 涓氬姟瑕嗙洊鑼冨洿
+
+```
+鍩虹鏁版嵁绠$悊 鈫� 鐢熶骇璁″垝 鈫� 宸ュ崟绠$悊 鈫� 鐢熶骇鎵ц 鈫� 璐ㄩ噺妫�楠� 鈫� 浠撳偍鐗╂祦 鈫� 鎶ヨ〃鍒嗘瀽
+     鈫�            鈫�          鈫�          鈫�          鈫�          鈫�          鈫�
+  瀹㈡埛/渚涘簲鍟�   鎺掍骇璋冩暣   浠诲姟涓嬭揪   宸ュ簭寮�宸�   澶氱骇璐ㄦ   鍑哄叆搴撶鐞�   FastReport
+  鐗╂枡涓绘暟鎹�   浜х嚎鍒嗛厤   娴佺▼鍗�     鏁版嵁閲囬泦   缂洪櫡杩借釜   搴撳瓨璋冩嫧   缁熻鍒嗘瀽
+  宸ヨ璁惧     璧勬簮鍗忚皟   杩涘害杩借釜   杩斿伐缁翠慨   AQL鎶芥牱   鏉$爜绠$悊   鑷畾涔夋姤琛�
+```
+
+---
 
 ## 2. 瑙e喅鏂规缁撴瀯
 
-| 鐩綍 | 璇存槑 |
-| --- | --- |
-| `Gs.DevApp/` | 涓诲鎴风椤圭洰锛屽寘鍚叏閮ㄤ笟鍔$獥浣撱�佸伐鍏峰簱銆佽祫婧愬強閰嶇疆銆� |
-| 鈹溾攢 `DevFrm/` | 涓氬姟绐椾綋锛屾寜棰嗗煙鍒掑垎锛坄BasicData/` 鍩虹鏁版嵁銆乣Work/` 鍒剁▼銆乣QC/` 璐ㄦ銆乣Sys/` 绯荤粺璁剧疆绛夛級銆� |
-| 鈹溾攢 `Entity/` | DTO 涓庨�氱敤妯″瀷锛堝 `PageQueryModel`銆乣ReturnModel`锛夈�� |
-| 鈹溾攢 `ToolBox/` | 鍏叡宸ュ叿绫伙紙HTTP銆佹棩蹇椼�丮odbus銆佸璇濇鍖呰绛夛級銆� |
-| 鈹溾攢 `UserControl/` | 鍙鐢ㄦ帶浠讹紙宸ュ叿鏍忋�佸垎椤点�佹暟鎹瓧鍏搞�佹煡璇㈤�夋嫨鍣ㄧ瓑锛夈�� |
-| `Gs.WeightIqc/` | IQC 鏉ユ枡绉伴噸瀹㈡埛绔紝璐熻矗涓插彛/Modbus 閲囬泦涓庝笂浼犮�� |
-| `Gs.WeightLine/` | 浜х嚎绉伴噸瀹㈡埛绔紝鏀寔澶氭潯绾夸綋鍒囨崲涓庡疄鏃剁洃鎺с�� |
-| `Gs.Setup/` | Visual Studio Installer 椤圭洰锛坄.vdproj`锛夛紝鐢ㄤ簬鎵撳寘鍙戝竷銆� |
-| `packages/` | NuGet 缂撳瓨鐩綍锛屽寘鍚� DevExpress銆丆efSharp銆丯Modbus銆丼ystem.* 渚濊禆銆� |
+### 2.1 椤圭洰缁勬垚
 
-## 3. 鏍稿績鎶�鏈爤
-- **.NET Framework 4.8 / C# WinForms**锛氬簲鐢ㄥ熀纭�妗嗘灦銆�
-- **DevExpress v22.2**锛歎I 缁勪欢锛團luentDesign銆乆traGrid銆乆traTab銆乄aitDialog 绛夛級銆�
-- **CefSharp 109 + AutoUpdater.NET**锛氬祵鍏ュ紡娴忚鍣ㄤ笌鍙�夌殑鑷姩鏇存柊鑳藉姏銆�
-- **NModbus銆丼erialPort**锛氬伐涓氳澶囬�氫俊锛屾兜鐩� TCP 涓� RTU銆�
-- **Newtonsoft.Json銆丆onfigurationManager**锛欰PI 鏁版嵁瑙f瀽涓庨厤缃鍙栥��
-- **Oracle.ManagedDataAccess銆丼ystem.Data.SqlClient**锛氭寜鍦烘櫙璁块棶 Oracle 鎴� SQL Server銆�
+```
+GsDevSolution/
+鈹溾攢鈹� Gs.DevApp/              銆愪富瀹㈡埛绔」鐩��
+鈹�   鈹溾攢鈹� DevFrm/             - 18涓笟鍔¢鍩熸ā鍧� (150+ 绐椾綋)
+鈹�   鈹�   鈹溾攢鈹� BasicData/      - 鍩虹鏁版嵁 (瀹㈡埛/渚涘簲鍟�/鐗╂枡/浜х嚎)
+鈹�   鈹�   鈹溾攢鈹� Work/           - 鐢熶骇鎵ц (寮�宸�/鏁版嵁閲囬泦/杩斿伐)
+鈹�   鈹�   鈹溾攢鈹� WOM/            - 宸ュ崟绠$悊 (浠诲姟涓嬭揪/鎺掍骇)
+鈹�   鈹�   鈹溾攢鈹� QC/             - 璐ㄩ噺绠$悊閫氱敤妯″潡
+鈹�   鈹�   鈹溾攢鈹� IPQC/           - 鍒剁▼妫�楠� (棣栦欢/宸℃)
+鈹�   鈹�   鈹溾攢鈹� FQC/            - 鎴愬搧缁堟
+鈹�   鈹�   鈹溾攢鈹� RkQC/           - 鏉ユ枡璐ㄦ
+鈹�   鈹�   鈹溾攢鈹� Ck/             - 鍑哄簱绠$悊 (棰嗘枡/琛ユ枡/閫�璐�)
+鈹�   鈹�   鈹溾攢鈹� Rk/             - 鍏ュ簱绠$悊 (鏉ユ枡/閫�搴�/鍏朵粬)
+鈹�   鈹�   鈹溾攢鈹� Warehouse/      - 浠撳簱鎿嶄綔 (璋冩嫧/鐩樼偣/鏉$爜)
+鈹�   鈹�   鈹溾攢鈹� Sales/          - 閿�鍞鍗曚笌鍙戣揣
+鈹�   鈹�   鈹溾攢鈹� WW/             - 濮斿绠$悊
+鈹�   鈹�   鈹溾攢鈹� Rpt/            - 鎶ヨ〃璁捐涓庢墽琛�
+鈹�   鈹�   鈹溾攢鈹� Sys/            - 绯荤粺璁剧疆 (鑿滃崟/缁勭粐/鍗曞彿瑙勫垯)
+鈹�   鈹�   鈹溾攢鈹� User/           - 鐢ㄦ埛涓庢潈闄愮鐞�
+鈹�   鈹�   鈹溾攢鈹� JJGZ/           - 澶瑰叿宸ヨ涓庤澶囧彴璐�
+鈹�   鈹�   鈹溾攢鈹� BarCode/        - 鏉$爜鐢熸垚涓庢墦鍗�
+鈹�   鈹�   鈹斺攢鈹� PDA/            - 鎵嬫寔缁堢鐣岄潰
+鈹�   鈹溾攢鈹� Entity/             - 鏁版嵁浼犺緭瀵硅薄 (DTO)
+鈹�   鈹溾攢鈹� ToolBox/            - 鍏叡宸ュ叿绫�
+鈹�   鈹溾攢鈹� UserControl/        - 鍙鐢ㄦ帶浠跺簱 (150+)
+鈹�   鈹溾攢鈹� Resources/          - 璧勬簮鏂囦欢 (鍥炬爣/鍥剧墖)
+鈹�   鈹溾攢鈹� App.config          - 搴旂敤閰嶇疆鏂囦欢
+鈹�   鈹斺攢鈹� Program.cs          - 搴旂敤绋嬪簭鍏ュ彛
+鈹溾攢鈹� Gs.WeightIqc/           銆怚QC 绉伴噸瀹㈡埛绔��
+鈹溾攢鈹� Gs.WeightLine/          銆愪骇绾跨О閲嶅鎴风銆�
+鈹溾攢鈹� Gs.Setup/               銆愬畨瑁呯▼搴忛」鐩��(.vdproj)
+鈹斺攢鈹� packages/               銆怤uGet 鍖呯洰褰曘��
+```
 
-## 4. DevFrm 鍔熻兘妯″潡璇﹁В
+### 2.2 鏍稿績鐩綍璇﹁В
 
-### 4.1 鐧诲綍涓庝富妗嗘灦
-- `Program.cs`锛氬崟瀹炰緥瀹堟姢銆丆efSharp 鍒濆鍖栥�佸惎鍔ㄧ櫥褰曟祦绋嬨��
-- `FrmLogin`锛氳嚜鍔ㄦ洿鏂帮紙AutoUpdater.NET锛夈�佸瓧浣撳姞杞姐�佽处鍙疯蹇嗐�佽皟鐢� `User/UserLogin`銆�
-- `FrmMain`锛欴evExpress FluentDesign 涓荤晫闈紝璐熻矗鑿滃崟鏍戝姞杞斤紙`User/GetUserLoginInfo`锛夈�侀〉绛剧敓鍛藉懆鏈熴�佺粍缁囧垏鎹€�佸簳閮ㄧ姸鎬佹爮鍙婄獥鍙i棿浜嬩欢浼犻�掋��
+#### DevFrm/ - 涓氬姟绐椾綋
 
-### 4.2 鍩虹鏁版嵁鍩�
-- **`BasicData/`**锛氱淮鎶ょ郴缁熶富鏁版嵁銆傚吀鍨嬬獥浣撳寘鎷� `Frm_Customer`锛堝鎴凤級銆乣Frm_Supplier` & `Frm_SupplierSrm`锛堜緵搴斿晢涓� SRM 鍏崇郴锛夈�乣Frm_MesItems`/`Frm_MesItemsShow`锛堢墿鏂欙級銆乣Frm_MesWorkshopLine`锛堜骇绾匡級銆乣Frm_Staff`銆乣Frm_Department` 绛夈��
-- **`BarCode/`**锛氭潯鐮佹壒閲忕敓鎴愩�佹墦鍗版ā鏉胯缃紝甯歌绐椾綋濡� `Frm_BarcodePrint`, `Frm_BarcodeTemplate`銆�
-- **`JJGZ/`**锛氬す鍏峰伐瑁呭強璁惧鐐规鐩稿叧涓绘暟鎹紝缁存姢宸ヨ鍙拌处銆佺偣妫�椤圭洰銆�
+鎵�鏈変笟鍔$獥浣撴寜棰嗗煙鍒掑垎,姣忎釜瀛愮洰褰曞寘鍚棰嗗煙鐨勬墍鏈夎〃鍗曞拰瀵硅瘽妗嗐��
 
-### 4.3 浠撳偍绠$悊鍩�
-- **`Ck/`锛堝嚭搴擄級**锛氳鐩栨潗鏂欍�佽ˉ鏂欍�佸叾浠栥�侀��璐с�佸澶栫瓑鍑哄簱娴佺▼锛涘 `Frm_MesItemBl`锛堣ˉ鏂欏嚭搴擄級銆乣Frm_MesCgthSq`锛堥噰璐��璐х敵璇凤級銆乣Frm_MesInvItemOut_SCLL`锛堢敓浜ч鏂欏嚭搴擄級銆�
-- **`Rk/`锛堝叆搴擄級**锛氭潵鏂欍�侀��搴撳強鏉傞」鍏ュ簱锛涘 `Frm_MesInvItemArn`锛堝埌璐у叆搴擄級銆乣Frm_MesItemTbl`锛堟潗鏂欏叆搴撳彴璐︼級銆乣Frm_MesItemQtrk`锛堝叾浠栧叆搴擄級銆�
-- **`Warehouse/`**锛氬簱鍐呮搷浣滀笌鏉$爜缁存姢锛涘寘鍚� `Frm_MesDbck`锛堣皟鎷ㄥ嚭搴擄級銆乣Frm_MesRohIn`锛堝師鏉愬叆搴擄級銆乣Frm_ArrivalBarcode`銆乣Frm_InitialBarcode` 绛夋潯鐮佸鐞嗐��
-- **`PDA/`**锛氫笌鎵嬫寔璁惧浜や簰鐨勭畝鍖栫晫闈紝鎻愪緵鎵爜銆佺悊璐с�佺洏鐐圭瓑鐜板満鍔ㄤ綔銆�
+**鍛藉悕瑙勮寖**: `Frm_{涓氬姟鍚嶇О}.cs` 鎴� `Frm_{涓氬姟鍚嶇О}_{瀛愮被鍨媫.cs`
 
-### 4.4 璐ㄩ噺绠$悊鍩�
-- **`QC/`**锛氳川閲忛�氱敤妯″潡涓庡瓧鍏哥淮鎶わ紝鍚己闄蜂唬鐮侊紙`DefectCode*.cs`锛夈�佹楠岄」鐩紙`Frm_MesQaItemsDetect01`锛夈�丄QL 鎶芥牱璁剧疆锛坄Frm_MesQmAql1`锛夌瓑锛屽苟鎻愪緵 `Models/` DTO銆�
-- **`IPQC/`**锛氬埗绋嬭繃绋嬫楠岋紝濡� `Frm_ShouJian`锛堥浠讹級銆乣Frm_XunJian`锛堝贰妫�锛夈�丠5 妫�楠岀晫闈㈢瓑銆�
-- **`FQC/`**锛氭垚鍝佺粓妫�锛屽寘鎷� `Frm_Fqc`銆乣Frm_FqcDetect01`銆佸紓甯稿鐞� `MesFqcExceptional`銆�
-- **`RkQC/`**锛氭潵鏂欒川妫�锛屾彁渚� `Frm_Cqfa`锛堟娊妫�鏂规锛夈�乣Frm_CqfaItems`銆乣Frm_QtrkDetect01`銆乣Frm_WwrkDetect01` 绛夈��
-- **`WW/`**锛氬澶栬川閲忕鐞嗭紝濡傚澶栨楠屻�佸紓甯稿洖浼犮��
+#### Entity/ - 鏁版嵁妯″瀷
 
-### 4.5 鍒堕�犳墽琛屽煙
-- **`Work/`**锛氬埗绋嬩綔涓氭牳蹇冿紝濡� `Frm_WorkStart`锛堝伐搴忓紑宸ワ級銆乣Frm_WorkProcesses`锛堟祦绋嬪崱鎺э級銆乣Frm_Work01/09`锛堝伐绔欐暟鎹噰闆嗭紝鍚� Modbus銆丼QLServer 浜や簰锛夈�乣Frm_Repair`锛堣繑宸ョ淮淇級绛夈��
-- **`WOM/`**锛氬伐鍗曠鐞嗭紝璐熻矗鐢熶骇浠诲姟涓嬭揪銆佹帓浜ц皟鏁淬�佸伐鍗曡拷韪��
+| 鏂囦欢 | 璇存槑 |
+|------|------|
+| `LoginInfoModel.cs` | 鐧诲綍鐢ㄦ埛淇℃伅妯″瀷 |
+| `PageQueryModel.cs` | 鍒嗛〉鏌ヨ閫氱敤妯″瀷 |
+| `ReturnModel.cs` | API 杩斿洖缁撴灉灏佽 |
 
-### 4.6 閿�鍞�佹姤琛ㄤ笌缁熻
-- **`Sales/`**锛氶攢鍞鍗曘�佸彂璐с�侀��璐х瓑鍓嶇涓氬姟銆�
-- **`Rpt/`**锛氭姤琛ㄤ腑蹇冿紝鍖呭惈 FastReport/DevExpress 鎶ヨ〃璁捐銆佽繍琛屻�佹暟鎹簮閰嶇疆锛屽 `EasyRptDesign`, `EasyRptEdt`, `SysHelp` 绛夈��
+#### ToolBox/ - 宸ュ叿绫诲簱
 
-### 4.7 绯荤粺涓庢潈闄�
-- **`Sys/`**锛氱郴缁熻缃笌鍚庡彴绠$悊銆傚姛鑳藉寘鎷� `SysMenu`锛堣彍鍗曠粨鏋勶級銆乣Organization`锛堢粍缁囨爲锛夈�乣DocNoRule`锛堝崟鍙疯鍒欙級銆乣SysLog`銆乣SysHelp`銆乣Frm_Config` 绛夈��
-- **`User/`**锛氱敤鎴枫�佽鑹层�佽鑹叉巿鏉冦�佸瘑鐮佸彉鏇寸瓑锛屽 `User`, `Role`, `RoleSelectAction`, `UserSetPwd`銆�
+| 鏂囦欢 | 璇存槑 |
+|------|------|
+| `UtilityHelper.cs` | **鏍稿績宸ュ叿绫�**: HTTP璇锋眰銆丣SON瑙f瀽銆丟rid鍒濆鍖栫瓑 |
+| `LogHelper.cs` | 鏃ュ織璁板綍宸ュ叿 (鍐欏叆 `logs/{yyyy-MM-dd}.log`) |
+| `MsgHelper.cs` | 缁熶竴娑堟伅鎻愮ず灏佽 (鍩轰簬 DevExpress) |
+| `UpdateParentEventArgs.cs` | 绐椾綋闂翠簨浠堕�氫俊鏈哄埗 |
+| `ModbusHelper.cs` | Modbus 璁惧閫氫俊灏佽 |
 
-### 4.8 鍏跺畠鏀寔鍩�
-- `JJGZ/`锛氬す鍏峰伐瑁呫�佽閲忚澶囧彴璐︿笌鐐规浠诲姟锛屼负璐ㄩ噺涓庣淮鎶ゆā鍧楁彁渚涘熀纭�鏁版嵁銆�
-- `WW/`锛氬澶栧崗鍚屼綔涓氬強璐ㄦ闂幆锛岃鎺ュ鍗忔祦绋嬨��
-- `PDA/`锛氭墜鎸佺粓绔晫闈㈤泦锛岀敤浜庝粨鍌ㄣ�佺敓浜с�佽川妫�鍦烘櫙鐨勬壂鐮佷綔涓氥��
-- 鏍圭洰褰曚笅鐨� `FrmMain`銆乣FrmLogin`銆乣XtraForm*` 绛夌獥浣撴彁渚涢�氱敤绀轰緥鎴栬皟璇曞叆鍙o紝鍙綔涓烘柊妯″潡鍙傝�冩ā鏉裤��
+#### UserControl/ - 鍙鐢ㄦ帶浠�
 
-## 5. 宸ュ叿銆佹帶浠朵笌鍏叡鑳藉姏
-- `ToolBox/UtilityHelper`锛氬皝瑁� `HttpPost`銆丣SON 瑙f瀽锛坄ReturnToDynamic/ReturnToTablePage`锛夈�佽祫婧愬姞杞姐�丟rid 鍒濆鍖栥�佽繃婊ゆ潯浠舵弿杩扮瓑銆�
-- `ToolBox/LogHelper`锛氭寜鏃ユ湡鍐欏叆 `logs/{yyyy-MM-dd}.log`锛汫UI 灞傜粺涓�閫氳繃 `MsgHelper` 鎻愮ず銆�
-- `ToolBox/UpdateParentEventArgs`锛氱敤浜庡瓙绐椾綋涓庝富绐椾綋涔嬮棿鐨勪簨浠堕�氫俊銆�
-- `UserControl/`锛歚UcToolBarMenu`銆乣UcPageBar`銆乣UcDictionarySelect`銆乣UcLook*` 绛夋帶浠舵彁鍗囧鐢ㄦ�э紱`Toast` 鐢ㄤ簬杞婚噺鎻愮ず銆�
-
-## 6. 杈呭姪椤圭洰璇存槑
-- **Gs.WeightIqc**锛氬畾鏃惰鍙栦覆鍙gО閲嶆暟鎹紝閫氳繃 `WorkWeight/EditModel` API 涓婃姤锛涘惈绾跨▼绠$悊銆佷覆鍙i厤缃�佹棩蹇楄褰曘��
-- **Gs.WeightLine**锛氱被浼� IQC锛屼絾鏀寔绾夸綋涓嬫媺閫夋嫨銆佸弻璁℃椂鍣ㄥ埛鏂颁互鍙婃洿澶氱晫闈氦浜掋��
-- **Gs.Setup**锛氱敓鎴愬畨瑁呭寘鎴� ClickOnce 閮ㄧ讲鎵�闇�鐨勫畨瑁呭伐绋嬶紝涓� Release 鏋勫缓杈撳嚭閰嶅銆�
-
-## 7. 閰嶇疆涓庣幆澧�
-- 涓婚厤缃枃浠讹細`Gs.DevApp/App.config`锛堣繍琛屾湡璇诲彇 `Gs.DevApp.exe.config`锛夈��
-  - 鍏抽敭閿�硷細`WebApiUrl`銆乣ProductName`銆乣Version`銆乣IsAutoUpdater`銆乣AutoUpdaterXml`銆乣LogPath`銆乣AsyncSeconds`銆乣TimingMailInterval` 绛夈��
-  - 璁惧涓庢暟鎹簱鍦板潃榛樿鎸囧悜鍐呯綉 IP锛堝 `192.168.0.51`銆乣192.168.60.51`锛夛紝閮ㄧ讲鍓嶉渶鎸夌幆澧冭皟鏁淬��
-- 绉伴噸妯″潡浣跨敤涓插彛鍙傛暟锛堟尝鐗圭巼銆佺鍙e彿锛夊強 Modbus 绔欏彿/瀵勫瓨鍣ㄩ厤缃紱寤鸿灏嗙‖缂栫爜璺緞鎶界鍒伴厤缃垨鍚庡彴鍙傛暟琛ㄣ��
-- 鏃ュ織榛樿鍐欏叆搴旂敤鐩綍涓� `logs/`锛涜纭繚瀹㈡埛绔叿澶囧啓鏉冮檺鎴栨敼涓哄叕鍏辨暟鎹洰褰曘��
-
-## 8. 鏋勫缓涓庨儴缃�
-- 璋冭瘯鏋勫缓锛歚msbuild GsDevSolution.sln /p:Configuration=Debug`
-- 鍙戝竷鏋勫缓锛歚msbuild .\Gs.DevApp\Gs.DevApp.csproj /t:Rebuild /p:Configuration=Release`
-- 鍙墽琛屾枃浠朵綅浜� `bin\{Configuration}\`锛涘彂甯冩椂闇�鎼哄甫 DevExpress銆丆efSharp 渚濊禆鍙� `x86/x64` 瀛愮洰褰曘��
-- 瀹夎鍖咃細鍦� Release 鏋勫缓鍚庢墦寮� `Gs.Setup/Gs.Setup.vdproj` 瀵煎嚭 MSI/EXE銆�
-- 鑷姩鏇存柊锛氳嫢鍚敤 `IsAutoUpdater=1`锛岄渶瑕侀儴缃� `AutoUpdaterXml` 鎸囧悜鐨勬洿鏂版弿杩版枃浠朵笌瀹夎鍖呫��
-
-## 9. 寮�鍙戜笌璋冭瘯寤鸿
-- 閬靛惊鐜版湁鐩綍鍒掑垎锛屾柊澧炲姛鑳戒紭鍏堟斁缃簬鐩稿簲涓氬姟瀛愮洰褰曘��
-- 澶嶇敤 `ToolBox`銆乣UserControl` 涓殑鍏叡鑳藉姏锛岄伩鍏嶉噸澶嶅疄鐜� HTTP銆佹棩蹇椼�佸垎椤点�侀�夋嫨鍣ㄧ瓑閫昏緫銆�
-- 鍏抽敭 API 璋冪敤鍓嶅悗璁板綍鏃ュ織锛屽紓甯告椂浣跨敤 `MsgHelper` 灞曠ず鍙嬪ソ淇℃伅锛屽苟鍦ㄥ悗鍙版棩蹇楅檮甯︿笂涓嬫枃锛堝伐绔欍�佹潯鐮併�佺敤鎴风瓑锛夈��
-- 鍦ㄦ秹鍙婄‖浠舵垨闀胯�楁椂鎿嶄綔鏃讹紝浣跨敤鍚庡彴绾跨▼/寮傛妯″紡锛岄伩鍏嶉樆濉� UI锛涙浛鎹� `Thread.Abort` 涓哄彇娑堟爣璁板彲鎻愬崌绋冲畾鎬с��
-- 寤鸿寤虹珛鎵嬪伐娴嬭瘯娓呭崟锛氱櫥褰曘�佽彍鍗曞姞杞姐�佹牳蹇冧笟鍔℃祦绋嬨�佺О閲嶄笂浼犮�佹姤琛ㄦ墦鍗扮瓑銆�
-- 鏄庢枃鍑嵁鍜岀幆澧� IP 搴旇縼绉昏嚦瀹夊叏閰嶇疆鎴栫幆澧冨彉閲忥紝鎻愪氦鍓嶆敞鎰忚劚鏁忋��
+| 鎺т欢绫诲瀷 | 绀轰緥 | 璇存槑 |
+|----------|------|------|
+| **宸ュ叿鏍�** | `UcToolBarMenu.cs` | 鏍囧噯CRUD鎿嶄綔鏍� |
+| **鍒嗛〉** | `UcPageBar.cs` | 鍒嗛〉鎺т欢 |
+| **閫夋嫨鍣�** | `UcDictionarySelect.cs` | 鏁版嵁瀛楀吀涓嬫媺妗� |
+| **鏌ユ壘鎺т欢** | `UcLookCustomer.cs`<br>`UcLookItems.cs`<br>`UcLookWarehouse.cs` | 60+ 鏁版嵁鏌ユ壘瀵硅瘽妗�<br>(瀹㈡埛/鐗╂枡/浠撳簱绛�) |
+| **閫氱煡** | `Toast.cs` | 杞婚噺绾ф彁绀烘 |
 
 ---
-濡傞渶杩涗竴姝ユ墿灞曟垨鍩硅锛屽彲鍩轰簬鏈寚鍗楀揩閫熷畾浣嶆ā鍧楀叆鍙c�佹牳蹇冮厤缃互鍙婃瀯寤烘祦绋嬨�傛杩庢牴鎹疄闄呬笟鍔℃寔缁ˉ鍏呫��***
+
+## 3. 鏍稿績鎶�鏈爤
+
+### 3.1 涓昏渚濊禆
+
+| 鎶�鏈�/搴� | 鐗堟湰 | 鐢ㄩ�� |
+|---------|------|------|
+| **.NET Framework** | 4.8 | 搴旂敤鍩虹妗嗘灦 |
+| **DevExpress** | v22.2.3 | UI 缁勪欢搴� (FluentDesign, XtraGrid, XtraTab, XtraBars) |
+| **CefSharp** | 109.1.110 | 宓屽叆寮� Chromium 娴忚鍣� |
+| **AutoUpdater.NET** | 1.9.2 | 鑷姩杞欢鏇存柊 |
+| **NModbus** | 3.0.81 | 宸ヤ笟璁惧閫氫俊 (Modbus TCP/RTU) |
+| **Newtonsoft.Json** | 13.0.3 | JSON 搴忓垪鍖� |
+| **System.Text.Json** | 8.0.4 | 鐜颁唬 JSON 鏀寔 |
+| **Oracle.ManagedDataAccess** | 鏈�鏂� | Oracle 鏁版嵁搴撹闂� |
+| **System.Data.SqlClient** | 鏈�鏂� | SQL Server 鏁版嵁搴撹闂� |
+
+### 3.2 DevExpress 鏍稿績缁勪欢
+
+```csharp
+// FluentDesign 涓荤晫闈�
+DevExpress.XtraBars.FluentDesignSystem.FluentDesignForm
+
+// 鏁版嵁琛ㄦ牸
+DevExpress.XtraGrid.GridControl
+DevExpress.XtraGrid.Views.Grid.GridView
+
+// 鏍囩椤�
+DevExpress.XtraTab.XtraTabControl
+
+// 瀵艰埅鑿滃崟
+DevExpress.XtraNavBar.NavBarControl
+
+// 绛夊緟瀵硅瘽妗�
+DevExpress.XtraWaitForm.WaitDialogForm
+```
+
+---
+
+## 4. 寮�鍙戠幆澧冮厤缃�
+
+### 4.1 鍓嶇疆瑕佹眰
+
+- 鉁� Windows 10/11 鎴� Windows Server 2016+
+- 鉁� Visual Studio 2022 (鎺ㄨ崘) 鎴� Visual Studio 2019
+- 鉁� .NET Framework 4.8 SDK
+- 鉁� DevExpress v22.2+ 璁稿彲璇� (闇�閰嶇疆 NuGet 婧�)
+- 鉁� Git (鐗堟湰鎺у埗)
+
+### 4.2 鍏嬮殕涓庤繕鍘�
+
+```bash
+# 鍏嬮殕浠g爜搴�
+cd E:\LanBMes
+git clone <repository_url> LB_MesClient
+
+# 杩涘叆瑙e喅鏂规鐩綍
+cd LB_MesClient\DevApp
+
+# 杩樺師 NuGet 鍖�
+nuget restore GsDevSolution.sln
+
+# 鎴栧湪 Visual Studio 涓�:
+# 鍙抽敭瑙e喅鏂规 鈫� 杩樺師 NuGet 绋嬪簭鍖�
+```
+
+### 4.3 閰嶇疆 DevExpress
+
+纭繚宸插畨瑁� DevExpress v22.2 骞堕厤缃� NuGet 婧�:
+
+```
+宸ュ叿 鈫� NuGet 鍖呯鐞嗗櫒 鈫� 绋嬪簭鍖呯鐞嗗櫒璁剧疆 鈫� 绋嬪簭鍖呮簮
+娣诲姞婧�: https://nuget.devexpress.com/<your_feed_key>/api
+```
+
+### 4.4 閰嶇疆鍚庣 API
+
+缂栬緫 `Gs.DevApp\App.config`:
+
+```xml
+<add key="WebApiUrl" value="http://192.168.0.51:8081/" />
+```
+
+淇敼涓哄疄闄呯殑鍚庣 API 鍦板潃銆�
+
+---
+
+## 5. 鏋勫缓涓庤繍琛�
+
+### 5.1 鍛戒护琛屾瀯寤�
+
+```bash
+# Debug 鏋勫缓 (鎺ㄨ崘寮�鍙戜娇鐢�)
+cd E:\LanBMes\LB_MesClient\DevApp
+msbuild GsDevSolution.sln /p:Configuration=Debug /p:Platform="Any CPU"
+
+# Release 鏋勫缓 (鐢ㄤ簬鍙戝竷)
+msbuild GsDevSolution.sln /p:Configuration=Release /p:Platform="Any CPU"
+
+# 浠呮瀯寤轰富椤圭洰
+msbuild Gs.DevApp\Gs.DevApp.csproj /t:Rebuild /p:Configuration=Debug
+```
+
+### 5.2 Visual Studio 杩愯
+
+1. **鎵撳紑瑙e喅鏂规**: 鍙屽嚮 `GsDevSolution.sln`
+2. **璁剧疆鍚姩椤圭洰**: 鍙抽敭 `Gs.DevApp` 鈫� 璁句负鍚姩椤圭洰
+3. **杩愯**: 鎸� `F5` 鎴栫偣鍑� "寮�濮嬭皟璇�"
+
+### 5.3 鐩存帴杩愯
+
+```bash
+# Debug 鐗堟湰
+Gs.DevApp\bin\Debug\Gs.DevApp.exe
+
+# Release 鐗堟湰
+Gs.DevApp\bin\Release\Gs.DevApp.exe
+```
+
+### 5.4 璋冭瘯鎶�宸�
+
+**绂佺敤鍗曞疄渚嬮檺鍒�** (鍏佽鍚屾椂杩愯澶氫釜瀹炰緥鐢ㄤ簬娴嬭瘯):
+
+鍦� `Program.cs` 涓敞閲婁互涓嬩唬鐮�:
+
+```csharp
+// Process[] MyProcesses = Process.GetProcessesByName("Gs.DevApp");
+// if (MyProcesses.Length > 1)
+// {
+//     MyProcesses[0].Kill();
+// }
+```
+
+---
+
+## 6. DevFrm 鍔熻兘妯″潡璇﹁В
+
+### 6.1 鐧诲綍涓庝富妗嗘灦
+
+#### Program.cs - 搴旂敤绋嬪簭鍏ュ彛
+
+```csharp
+[STAThread]
+static void Main()
+{
+    // 1. 鍗曞疄渚嬫鏌� (闃叉閲嶅杩愯)
+    Process[] MyProcesses = Process.GetProcessesByName("Gs.DevApp");
+    if (MyProcesses.Length > 1) {
+        MyProcesses[0].Kill();
+    }
+
+    // 2. 鍚敤瑙嗚鏍峰紡
+    Application.EnableVisualStyles();
+    Application.SetCompatibleTextRenderingDefault(false);
+
+    // 3. 鍚姩鐧诲綍娴佺▼
+    _startLogin();
+}
+```
+
+#### FrmLogin.cs - 鐧诲綍绐椾綋
+
+**鏍稿績鍔熻兘**:
+- 鑷姩鏇存柊妫�鏌� (AutoUpdater.NET)
+- 鐢ㄦ埛韬唤楠岃瘉 (璋冪敤 `User/UserLogin` API)
+- 璁颁綇鐢ㄦ埛鍚�/瀵嗙爜
+- 瀛椾綋璁剧疆鎸佷箙鍖� (娉ㄥ唽琛�)
+
+**鍏抽敭浠g爜**:
+
+```csharp
+// 鐧诲綍楠岃瘉
+string result = UtilityHelper.HttpPost("User/UserLogin", "UserLogin", jsonParam);
+dynamic dy = UtilityHelper.ReturnToDynamic(result);
+
+if (dy.code == 200) {
+    LoginInfoModel.CurrentUser = JsonConvert.DeserializeObject<LoginInfoModel>(dy.data.ToString());
+    this.DialogResult = DialogResult.OK;
+}
+```
+
+#### FrmMain.cs - 涓荤獥浣�
+
+**鏍稿績鑱岃矗**:
+1. 鍔犺浇鐢ㄦ埛鑿滃崟缁撴瀯 (`User/GetUserLoginInfo`)
+2. 鏋勫缓 AccordionControl 瀵艰埅鑿滃崟
+3. 鍔ㄦ�佸姞杞界獥浣� (閫氳繃鍙嶅皠)
+4. 绠$悊 TabPage 鐢熷懡鍛ㄦ湡
+5. 缁勭粐鍒囨崲
+6. 鍏ㄥ眬浜嬩欢澶勭悊
+
+**鍔ㄦ�佺獥浣撳姞杞�**:
+
+```csharp
+// 閫氳繃鍛藉悕绌洪棿鍔ㄦ�佸垱寤虹獥浣撳疄渚�
+Form newForm = (Form)Assembly.GetExecutingAssembly()
+    .CreateInstance("Gs.DevApp.DevFrm.BasicData.Frm_Customer");
+
+// 宓屽叆鍒� TabPage
+newForm.FormBorderStyle = FormBorderStyle.None;
+newForm.TopLevel = false;
+newForm.Dock = DockStyle.Fill;
+xtraTabPage.Controls.Add(newForm);
+newForm.Show();
+```
+
+**TabPage 缂撳瓨** (闃叉閲嶅鎵撳紑):
+
+```csharp
+if (tabPageDict.ContainsKey(formName)) {
+    xtraTabControl.SelectedTabPage = tabPageDict[formName];
+    return;
+}
+```
+
+---
+
+### 6.2 鍩虹鏁版嵁鍩� (BasicData/)
+
+#### 瀹㈡埛绠$悊 - Frm_Customer.cs
+
+- 瀹㈡埛涓绘暟鎹淮鎶�
+- 鏀寔鍒嗛〉鏌ヨ
+- 浣跨敤 `UcToolBarMenu` 瀹炵幇澧炲垹鏀规煡
+- 浣跨敤 `UcPageBar` 瀹炵幇鍒嗛〉
+
+#### 渚涘簲鍟嗙鐞�
+
+- `Frm_Supplier.cs` - 渚涘簲鍟嗗熀纭�淇℃伅
+- `Frm_SupplierSrm.cs` - SRM 渚涘簲鍟嗗叧绯荤鐞�
+
+#### 鐗╂枡绠$悊
+
+- `Frm_MesItems.cs` - 鐗╂枡涓绘暟鎹淮鎶�
+- `Frm_MesItemsShow.cs` - 鐗╂枡淇℃伅灞曠ず
+
+#### 浜х嚎绠$悊 - Frm_MesWorkshopLine.cs
+
+- 杞﹂棿浜х嚎閰嶇疆
+- 宸ヤ綔涓績瀹氫箟
+
+#### 鍏朵粬涓绘暟鎹�
+
+- `Frm_Staff.cs` - 鍛樺伐淇℃伅
+- `Frm_Department.cs` - 閮ㄩ棬缁勭粐
+
+---
+
+### 6.3 浠撳偍绠$悊鍩�
+
+#### 鍑哄簱绠$悊 (Ck/)
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `Frm_MesInvItemOut_SCLL.cs` | 鐢熶骇棰嗘枡鍑哄簱 |
+| `Frm_MesItemBl.cs` | 琛ユ枡鍑哄簱 |
+| `Frm_MesCgthSq.cs` | 閲囪喘閫�璐х敵璇� |
+| `Frm_MesItemQtck.cs` | 鍏朵粬鍑哄簱 |
+
+#### 鍏ュ簱绠$悊 (Rk/)
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `Frm_MesInvItemArn.cs` | 鍒拌揣鍏ュ簱 |
+| `Frm_MesItemTbl.cs` | 鏉愭枡鍏ュ簱鍙拌处 |
+| `Frm_MesItemQtrk.cs` | 鍏朵粬鍏ュ簱 |
+
+#### 浠撳簱鎿嶄綔 (Warehouse/)
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `Frm_MesDbck.cs` | 璋冩嫧鍑哄簱 |
+| `Frm_MesRohIn.cs` | 鍘熸潗鍏ュ簱 |
+| `Frm_ArrivalBarcode.cs` | 鍒拌揣鏉$爜鐢熸垚 |
+| `Frm_InitialBarcode.cs` | 鍒濆鏉$爜缁存姢 |
+
+#### 鎵嬫寔缁堢 (PDA/)
+
+鎻愪緵绠�鍖栫殑鎵爜浣滀笟鐣岄潰,鐢ㄤ簬:
+- 蹇�熺悊璐�
+- 搴撳瓨鐩樼偣
+- 鏉$爜鎵弿
+- 绉诲姩浣滀笟
+
+---
+
+### 6.4 璐ㄩ噺绠$悊鍩�
+
+#### QC/ - 璐ㄩ噺閫氱敤妯″潡
+
+- 缂洪櫡浠g爜缁存姢 (`DefectCode*.cs`)
+- 妫�楠岄」鐩缃� (`Frm_MesQaItemsDetect01.cs`)
+- AQL 鎶芥牱鏂规 (`Frm_MesQmAql1.cs`)
+- 璐ㄩ噺鏍囧噯瀹氫箟
+
+#### IPQC/ - 鍒剁▼妫�楠�
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `Frm_ShouJian.cs` | 棣栦欢妫�楠� |
+| `Frm_XunJian.cs` | 宸℃浣滀笟 |
+| H5 妫�楠岀晫闈� | 绉诲姩绔楠� |
+
+#### FQC/ - 鎴愬搧缁堟
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `Frm_Fqc.cs` | 鎴愬搧妫�楠屼富鐣岄潰 |
+| `Frm_FqcDetect01.cs` | 妫�楠屾暟鎹綍鍏� |
+| `MesFqcExceptional.cs` | 寮傚父澶勭悊 |
+
+#### RkQC/ - 鏉ユ枡璐ㄦ
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `Frm_Cqfa.cs` | 鎶芥鏂规 |
+| `Frm_CqfaItems.cs` | 妫�楠岄」閰嶇疆 |
+| `Frm_QtrkDetect01.cs` | 鏉ユ枡妫�楠� |
+| `Frm_WwrkDetect01.cs` | 濮斿鏉ユ枡妫�楠� |
+
+---
+
+### 6.5 鍒堕�犳墽琛屽煙 (Work/)
+
+#### 宸ュ簭浣滀笟
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `Frm_WorkStart.cs` | 宸ュ簭寮�宸� |
+| `Frm_WorkProcesses.cs` | 娴佺▼鍗$鐞� |
+| `Frm_Work01.cs` ~ `Frm_Work09.cs` | 鍚勫伐绔欐暟鎹噰闆� |
+| `Frm_Repair.cs` | 杩斿伐缁翠慨 |
+
+#### 鐗规畩鍔熻兘
+
+- **Modbus 璁惧閫氫俊**: 鏀寔瀹炴椂璇诲彇宸ヤ笟璁惧鏁版嵁
+- **SQL Server 鐩磋繛**: 閮ㄥ垎宸ョ珯鐩存帴涓� SQL Server 浜や簰
+- **瀹炴椂鐩戞帶**: 宸ョ珯鐘舵�佸疄鏃跺睍绀�
+
+---
+
+### 6.6 宸ュ崟绠$悊鍩� (WOM/)
+
+- 鐢熶骇浠诲姟涓嬭揪
+- 宸ュ崟鎺掍骇璋冩暣
+- 宸ュ崟杩涘害杩借釜
+- 宸ュ崟鐘舵�佺鐞�
+
+---
+
+### 6.7 閿�鍞鐞嗗煙 (Sales/)
+
+- 閿�鍞鍗曠鐞�
+- 鍙戣揣鍗曞鐞�
+- 閫�璐х鐞�
+- 瀹㈡埛瀵硅处
+
+---
+
+### 6.8 濮斿绠$悊鍩� (WW/)
+
+- 濮斿璁㈠崟绠$悊
+- 濮斿鏉ユ枡妫�楠�
+- 濮斿璐ㄩ噺寮傚父澶勭悊
+- 澶栧崗娴佺▼闂幆
+
+---
+
+### 6.9 鎶ヨ〃鍩� (Rpt/)
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `EasyRptDesign.cs` | 鎶ヨ〃璁捐鍣� |
+| `EasyRptEdt.cs` | 鎶ヨ〃缂栬緫 |
+| `SysHelp.cs` | 鎶ヨ〃甯姪 |
+
+**鏀寔鎶�鏈�**:
+- FastReport
+- DevExpress Reports
+- 鑷畾涔夋姤琛ㄥ紩鎿�
+
+---
+
+### 6.10 绯荤粺绠$悊鍩� (Sys/)
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `SysMenu.cs` | 鑿滃崟缁撴瀯缁存姢 |
+| `Organization.cs` | 缁勭粐鏋舵瀯绠$悊 |
+| `DocNoRule.cs` | 鍗曞彿瑙勫垯閰嶇疆 |
+| `SysLog.cs` | 绯荤粺鏃ュ織鏌ヨ |
+| `Frm_Config.cs` | 绯荤粺閰嶇疆 |
+
+---
+
+### 6.11 鐢ㄦ埛涓庢潈闄愬煙 (User/)
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `User.cs` | 鐢ㄦ埛绠$悊 |
+| `Role.cs` | 瑙掕壊绠$悊 |
+| `RoleSelectAction.cs` | 瑙掕壊鎺堟潈 |
+| `UserSetPwd.cs` | 瀵嗙爜鍙樻洿 |
+
+**鏉冮檺妯″瀷**:
+```
+鐢ㄦ埛 鈫� 瑙掕壊 鈫� 鑿滃崟鏉冮檺 + 鎿嶄綔鏉冮檺
+```
+
+---
+
+### 6.12 澶瑰叿宸ヨ鍩� (JJGZ/)
+
+- 澶瑰叿宸ヨ鍙拌处
+- 璁¢噺璁惧绠$悊
+- 鐐规浠诲姟涓庤褰�
+- 璁惧缁存姢璁″垝
+
+---
+
+### 6.13 鏉$爜绠$悊鍩� (BarCode/)
+
+| 绐椾綋 | 鍔熻兘 |
+|------|------|
+| `Frm_BarcodePrint.cs` | 鏉$爜鎵归噺鎵撳嵃 |
+| `Frm_BarcodeTemplate.cs` | 鎵撳嵃妯℃澘璁剧疆 |
+
+---
+
+## 7. 鏋舵瀯涓庤璁℃ā寮�
+
+### 7.1 澶氬眰鏋舵瀯
+
+```
+鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹�         UI Layer (WinForms)             鈹�
+鈹�  DevExpress FluentDesign + 150+ 鎺т欢    鈹�
+鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+                  鈹� HTTP/JSON REST API
+鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈻尖攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹�      Business Logic Layer (Client)      鈹�
+鈹�  绐椾綋閫昏緫 + ToolBox 宸ュ叿绫� + 鍔ㄦ�佸姞杞�    鈹�
+鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+                  鈹�
+鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈻尖攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹�     Backend REST API (鍒椤圭洰)         鈹�
+鈹�  韬唤楠岃瘉 + 鑿滃崟 + 涓氬姟閫昏緫 + 鏁版嵁璁块棶   鈹�
+鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+                  鈹�
+鈹屸攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈻尖攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+鈹�          Data Layer                     鈹�
+鈹�     Oracle / SQL Server                 鈹�
+鈹斺攢鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+```
+
+### 7.2 鏍稿績璁捐妯″紡
+
+#### 妯″紡 1: HTTP 璇锋眰闆嗕腑鍖�
+
+**鎵�鏈� API 璋冪敤缁熶竴浣跨敤 `UtilityHelper.HttpPost()`**:
+
+```csharp
+public static string HttpPost(string url, string method, string param, bool isLoading = true)
+{
+    // 1. 鎷兼帴瀹屾暣 URL (WebApiUrl + url)
+    // 2. 娣诲姞 Bearer Token 璁よ瘉澶�
+    // 3. 鏄剧ず Loading 瀵硅瘽妗� (鍙��)
+    // 4. 鍙戦�� POST 璇锋眰
+    // 5. 杩斿洖 JSON 瀛楃涓�
+    // 6. 瓒呮椂鏃堕棿: 150 绉�
+}
+```
+
+**浣跨敤绀轰緥**:
+
+```csharp
+string jsonParam = JsonConvert.SerializeObject(new {
+    pageIndex = 1,
+    pageSize = 50
+});
+
+string result = UtilityHelper.HttpPost(
+    "BasicData/Customer/GetListPage",  // 鐩稿璺緞
+    "GetListPage",                      // 鏂规硶鍚�
+    jsonParam,                          // JSON 鍙傛暟
+    true                                // 鏄剧ず鍔犺浇妗�
+);
+
+dynamic dy = UtilityHelper.ReturnToDynamic(result);
+if (dy.code == 200) {
+    // 澶勭悊鏁版嵁
+}
+```
+
+#### 妯″紡 2: 鍔ㄦ�佺獥浣撳姞杞� (鍙嶅皠)
+
+```csharp
+// 鍦� FrmMain.cs 涓�
+private void LoadForm(string namespacePath)
+{
+    // 閫氳繃鍛藉悕绌洪棿璺緞鍒涘缓绐椾綋瀹炰緥
+    string fullName = $"Gs.DevApp.DevFrm.{namespacePath}";
+    Form form = (Form)Assembly.GetExecutingAssembly().CreateInstance(fullName);
+
+    if (form != null)
+    {
+        // 閰嶇疆涓哄瓙绐椾綋
+        form.FormBorderStyle = FormBorderStyle.None;
+        form.TopLevel = false;
+        form.Dock = DockStyle.Fill;
+
+        // 娣诲姞鍒� TabPage
+        XtraTabPage tabPage = new XtraTabPage();
+        tabPage.Text = form.Text;
+        tabPage.Controls.Add(form);
+        xtraTabControl.TabPages.Add(tabPage);
+        xtraTabControl.SelectedTabPage = tabPage;
+
+        form.Show();
+    }
+}
+```
+
+**濂藉**:
+- 鑿滃崟缁撴瀯瀹屽叏鐢卞悗绔帶鍒�
+- 鏃犻渶淇敼浠g爜鍗冲彲璋冩暣鑿滃崟
+- 鏀寔鍔ㄦ�佹潈闄愭帶鍒�
+
+#### 妯″紡 3: TabPage 缂撳瓨鏈哄埗
+
+```csharp
+// 闃叉閲嶅鎵撳紑鍚屼竴绐椾綋
+private Dictionary<string, XtraTabPage> tabPageDict = new Dictionary<string, XtraTabPage>();
+
+private void OpenForm(string formName)
+{
+    if (tabPageDict.ContainsKey(formName))
+    {
+        // 宸插瓨鍦�,婵�娲荤幇鏈� Tab
+        xtraTabControl.SelectedTabPage = tabPageDict[formName];
+    }
+    else
+    {
+        // 鏂板缓 Tab
+        XtraTabPage newPage = CreateNewTabPage(formName);
+        tabPageDict[formName] = newPage;
+    }
+}
+```
+
+#### 妯″紡 4: 鐖跺瓙绐椾綋浜嬩欢閫氫俊
+
+**瀛愮獥浣撹Е鍙戠埗绐椾綋鍒锋柊**:
+
+```csharp
+// 鍦ㄥ瓙绐椾綋涓�
+UpdateParentEventArgs args = new UpdateParentEventArgs(this, "Refresh");
+// 瑙﹀彂浜嬩欢,閫氱煡鐖剁獥浣�
+
+// 鍦ㄧ埗绐椾綋涓�
+private void ChildForm_UpdateParent(object sender, UpdateParentEventArgs e)
+{
+    if (e.Action == "Refresh")
+    {
+        LoadData(); // 鍒锋柊鏁版嵁
+    }
+}
+```
+
+#### 妯″紡 5: 鏍囧噯 CRUD 绐椾綋妯℃澘
+
+**鍏稿瀷绐椾綋缁撴瀯**:
+
+```csharp
+public partial class Frm_Customer : DevExpress.XtraEditors.XtraForm
+{
+    private UcToolBarMenu ucToolBar;      // 宸ュ叿鏍� (澧炲垹鏀规煡)
+    private UcPageBar ucPageBar;          // 鍒嗛〉鎺т欢
+    private GridControl gridControl;      // 鏁版嵁琛ㄦ牸
+
+    private void InitializeForm()
+    {
+        // 1. 鍒濆鍖栧伐鍏锋爮
+        ucToolBar.AddClick += BtnAdd_Click;
+        ucToolBar.EditClick += BtnEdit_Click;
+        ucToolBar.DeleteClick += BtnDelete_Click;
+        ucToolBar.RefreshClick += BtnRefresh_Click;
+
+        // 2. 鍒濆鍖栧垎椤�
+        ucPageBar.PageChanged += LoadData;
+
+        // 3. 鍔犺浇鏁版嵁
+        LoadData();
+    }
+
+    private void LoadData()
+    {
+        string jsonParam = JsonConvert.SerializeObject(new {
+            pageIndex = ucPageBar.CurrentPage,
+            pageSize = ucPageBar.PageSize
+        });
+
+        string result = UtilityHelper.HttpPost(
+            "BasicData/Customer/GetListPage",
+            "GetListPage",
+            jsonParam
+        );
+
+        dynamic dy = UtilityHelper.ReturnToDynamic(result);
+        if (dy.code == 200)
+        {
+            gridControl.DataSource = dy.data;
+            ucPageBar.TotalRecords = dy.totalCount;
+        }
+    }
+}
+```
+
+---
+
+## 8. 宸ュ叿绫讳笌鍏叡缁勪欢
+
+### 8.1 UtilityHelper.cs - 鏍稿績宸ュ叿绫�
+
+#### HTTP 璇锋眰
+
+```csharp
+// 鏍囧噯 POST 璇锋眰
+string result = UtilityHelper.HttpPost(
+    "User/UserLogin",       // 鐩稿璺緞
+    "UserLogin",            // 鏂规硶鍚�
+    jsonParam,              // JSON 鍙傛暟
+    true                    // 鏄剧ず鍔犺浇妗�
+);
+```
+
+#### JSON 瑙f瀽
+
+```csharp
+// 瑙f瀽涓� dynamic 瀵硅薄
+dynamic dy = UtilityHelper.ReturnToDynamic(result);
+
+// 瑙f瀽涓哄垎椤垫暟鎹〃
+DataTable dt = UtilityHelper.ReturnToTablePage(result);
+```
+
+#### Grid 鍒濆鍖�
+
+```csharp
+// 鍒濆鍖栬〃鏍兼帶浠�
+UtilityHelper.InitGridControl(
+    gridControl,
+    gridView,
+    columns,        // 鍒楀畾涔�
+    dataSource,     // 鏁版嵁婧�
+    allowEdit: false,
+    allowDelete: false
+);
+```
+
+### 8.2 LogHelper.cs - 鏃ュ織宸ュ叿
+
+```csharp
+// 璁板綍淇℃伅鏃ュ織
+LogHelper.WriteLog("鐢ㄦ埛鐧诲綍鎴愬姛", LogHelper.LogType.Info);
+
+// 璁板綍閿欒鏃ュ織
+LogHelper.WriteLog($"API 璋冪敤澶辫触: {ex.Message}", LogHelper.LogType.Error);
+
+// 璁板綍璀﹀憡
+LogHelper.WriteLog("鏁版嵁寮傚父,浣跨敤榛樿鍊�", LogHelper.LogType.Warning);
+```
+
+**鏃ュ織鏂囦欢浣嶇疆**: `logs/{yyyy-MM-dd}.log`
+
+### 8.3 MsgHelper.cs - 娑堟伅鎻愮ず
+
+```csharp
+// 鎴愬姛鎻愮ず
+MsgHelper.ShowSuccess("鎿嶄綔鎴愬姛!");
+
+// 閿欒鎻愮ず
+MsgHelper.ShowError("鎿嶄綔澶辫触,璇烽噸璇�!");
+
+// 璀﹀憡鎻愮ず
+MsgHelper.ShowWarning("鏁版嵁涓嶅畬鏁�!");
+
+// 纭瀵硅瘽妗�
+if (MsgHelper.ShowConfirm("纭畾瑕佸垹闄ゅ悧?") == DialogResult.Yes)
+{
+    // 鎵ц鍒犻櫎
+}
+```
+
+### 8.4 Toast.cs - 杞婚噺鎻愮ず
+
+```csharp
+// 鏄剧ず 3 绉掓彁绀�
+Toast.Show("淇濆瓨鎴愬姛", 3);
+
+// 鏄剧ず鑷畾涔夋椂闀�
+Toast.Show("鏁版嵁宸叉洿鏂�", 5); // 5 绉�
+```
+
+### 8.5 鍙鐢ㄦ帶浠�
+
+#### UcToolBarMenu - 宸ュ叿鏍忔帶浠�
+
+```csharp
+UcToolBarMenu toolBar = new UcToolBarMenu();
+toolBar.AddClick += (s, e) => { /* 鏂板 */ };
+toolBar.EditClick += (s, e) => { /* 缂栬緫 */ };
+toolBar.DeleteClick += (s, e) => { /* 鍒犻櫎 */ };
+toolBar.RefreshClick += (s, e) => { /* 鍒锋柊 */ };
+toolBar.ExportClick += (s, e) => { /* 瀵煎嚭 */ };
+```
+
+#### UcPageBar - 鍒嗛〉鎺т欢
+
+```csharp
+UcPageBar pageBar = new UcPageBar();
+pageBar.PageSize = 50;
+pageBar.TotalRecords = 1000;
+pageBar.PageChanged += (s, e) => {
+    LoadData(pageBar.CurrentPage, pageBar.PageSize);
+};
+```
+
+#### UcDictionarySelect - 鏁版嵁瀛楀吀涓嬫媺
+
+```csharp
+UcDictionarySelect cmbStatus = new UcDictionarySelect();
+cmbStatus.DictionaryType = "OrderStatus"; // 瀛楀吀绫诲瀷
+cmbStatus.LoadData();
+```
+
+#### UcLook* - 鏁版嵁鏌ユ壘鎺т欢
+
+**60+ 鏌ユ壘鎺т欢,瑕嗙洊鎵�鏈変富鏁版嵁**:
+
+```csharp
+// 瀹㈡埛鏌ユ壘
+UcLookCustomer lookCustomer = new UcLookCustomer();
+lookCustomer.ShowDialog();
+string customerId = lookCustomer.SelectedId;
+string customerName = lookCustomer.SelectedName;
+
+// 鐗╂枡鏌ユ壘
+UcLookItems lookItems = new UcLookItems();
+lookItems.ShowDialog();
+string itemId = lookItems.SelectedId;
+
+// 浠撳簱鏌ユ壘
+UcLookWarehouse lookWarehouse = new UcLookWarehouse();
+lookWarehouse.ShowDialog();
+```
+
+---
+
+## 9. 閰嶇疆璇存槑
+
+### 9.1 App.config 鍏抽敭閰嶇疆
+
+**浣嶇疆**: `Gs.DevApp\App.config` (杩愯鏃朵负 `Gs.DevApp.exe.config`)
+
+#### 鏍稿績閰嶇疆椤�
+
+```xml
+<appSettings>
+  <!-- 鍚庣 API 鍦板潃 (蹇呴』閰嶇疆) -->
+  <add key="WebApiUrl" value="http://192.168.0.51:8081/" />
+
+  <!-- 浜у搧鍚嶇О -->
+  <add key="ProductName" value="G-MES V2.0" />
+
+  <!-- 鐗堟湰鍙� -->
+  <add key="Version" value="0.1" />
+
+  <!-- 鏃ュ織鐩綍 (鐩稿璺緞鎴栫粷瀵硅矾寰�) -->
+  <add key="LogPath" value="logs" />
+
+  <!-- 鍒嗛〉澶у皬 -->
+  <add key="PageSize" value="50" />
+
+  <!-- 鍚敤鑷姩鏇存柊 (0=绂佺敤, 1=鍚敤) -->
+  <add key="IsAutoUpdater" value="0" />
+
+  <!-- 鑷姩鏇存柊閰嶇疆鏂囦欢 URL -->
+  <add key="AutoUpdaterXml" value="http://192.168.0.51:8086/AutoUpdater/AutoUpdater.xml" />
+
+  <!-- Toast 鎻愮ず妗嗘樉绀烘椂闀� (绉�) -->
+  <add key="ToastSeconds" value="5" />
+
+  <!-- 姘存瓒呮椂鏃堕棿 (绉�) -->
+  <add key="AsyncSeconds" value="2" />
+
+  <!-- 鏄惁鍚敤姘存鍙婂伐浣嶇爜鍔熻兘 (0=绂佺敤, 1=鍚敤) -->
+  <add key="IsWater" value="0" />
+
+  <!-- IQC 绉伴噸璇诲彇瓒呮椂 (姣) -->
+  <add key="IqcGetWeight" value="3000" />
+
+  <!-- 瀹氭椂閭欢鍙戦�侀棿闅� (姣) -->
+  <add key="TimingMailInterval" value="10000" />
+</appSettings>
+```
+
+### 9.2 鐢ㄦ埛璁剧疆 (鑷姩淇濆瓨)
+
+```xml
+<userSettings>
+  <Gs.DevApp.Properties.Settings>
+    <!-- 鐢ㄦ埛鍚� (璁颁綇瀵嗙爜鍔熻兘) -->
+    <setting name="userName" serializeAs="String">
+      <value />
+    </setting>
+
+    <!-- 瀵嗙爜 (鍔犲瘑瀛樺偍) -->
+    <setting name="userPwd" serializeAs="String">
+      <value />
+    </setting>
+
+    <!-- 璁颁綇瀵嗙爜 -->
+    <setting name="remember" serializeAs="String">
+      <value>False</value>
+    </setting>
+
+    <!-- 瀛椾綋璁剧疆 -->
+    <setting name="fontSizeName" serializeAs="String">
+      <value>瀹嬩綋,10</value>
+    </setting>
+
+    <!-- 鏄惁鍚敤绉伴噸鍔熻兘 -->
+    <setting name="isWeight" serializeAs="String">
+      <value>False</value>
+    </setting>
+  </Gs.DevApp.Properties.Settings>
+</userSettings>
+```
+
+### 9.3 閮ㄧ讲鍓嶅繀鏀归厤缃�
+
+**寮�鍙戠幆澧� 鈫� 鐢熶骇鐜**:
+
+| 閰嶇疆椤� | 寮�鍙戠幆澧� | 鐢熶骇鐜 |
+|--------|----------|----------|
+| `WebApiUrl` | `http://192.168.0.51:8081/` | `http://your-server:port/` |
+| `IsAutoUpdater` | `0` (绂佺敤) | `1` (鍚敤) |
+| `AutoUpdaterXml` | 鍐呯綉鍦板潃 | 鐢熶骇鐜 URL |
+| `LogPath` | `logs` | 寤鸿浣跨敤鍏叡鐩綍 |
+
+---
+
+## 10. 閮ㄧ讲鎸囧崡
+
+### 10.1 鏋勫缓 Release 鐗堟湰
+
+```bash
+# 娓呯悊骞堕噸鏂版瀯寤�
+msbuild Gs.DevApp\Gs.DevApp.csproj /t:Clean
+msbuild Gs.DevApp\Gs.DevApp.csproj /t:Rebuild /p:Configuration=Release /p:Platform="Any CPU"
+```
+
+### 10.2 鍙戝竷鐩綍缁撴瀯
+
+```
+Gs.DevApp.exe                   # 涓荤▼搴�
+Gs.DevApp.exe.config            # 閰嶇疆鏂囦欢 (蹇呴』淇敼)
+DevExpress.*.dll                # DevExpress 缁勪欢
+CefSharp.*.dll                  # CefSharp 缁勪欢
+AutoUpdater.NET.dll             # 鑷姩鏇存柊缁勪欢
+Newtonsoft.Json.dll             # JSON 搴�
+Oracle.ManagedDataAccess.dll    # Oracle 椹卞姩
+x86/                            # CefSharp x86 鏈湴搴� (蹇呴』)
+x64/                            # CefSharp x64 鏈湴搴� (蹇呴』)
+locales/                        # CefSharp 璇█鍖�
+logs/                           # 鏃ュ織鐩綍 (杩愯鏃跺垱寤�)
+```
+
+### 10.3 浣跨敤瀹夎绋嬪簭
+
+1. 鎵撳紑 `Gs.Setup\Gs.Setup.vdproj`
+2. 閰嶇疆瀹夎绋嬪簭灞炴��:
+   - **ProductName**: G-MES V2.0
+   - **Manufacturer**: 钃濆疂
+   - **Version**: 涓� App.config 淇濇寔涓�鑷�
+3. 鍙抽敭椤圭洰 鈫� 鐢熸垚
+4. 杈撳嚭: `Gs.Setup\Release\Gs.Setup.msi`
+
+### 10.4 鑷姩鏇存柊閰嶇疆
+
+#### AutoUpdater.xml 绀轰緥
+
+```xml
+<?xml version="1.0" encoding="utf-8"?>
+<update>
+  <version>0.2.0.0</version>
+  <url>http://your-server/updates/Gs.DevApp_v0.2.0.0.zip</url>
+  <changelog>
+    <![CDATA[
+    <h3>鐗堟湰 0.2.0.0 鏇存柊鍐呭</h3>
+    <ul>
+      <li>鏂板锛氭潯鐮佹壒閲忔墦鍗板姛鑳�</li>
+      <li>浼樺寲锛氫粨搴撳嚭鍏ュ簱娴佺▼</li>
+      <li>淇锛氳川妫�鏁版嵁淇濆瓨澶辫触闂</li>
+    </ul>
+    ]]>
+  </changelog>
+  <mandatory>false</mandatory>
+</update>
+```
+
+#### 鍚敤鑷姩鏇存柊
+
+鍦� `App.config` 涓�:
+
+```xml
+<add key="IsAutoUpdater" value="1" />
+<add key="AutoUpdaterXml" value="http://your-server/updates/AutoUpdater.xml" />
+```
+
+### 10.5 閮ㄧ讲妫�鏌ユ竻鍗�
+
+- [ ] 淇敼 `WebApiUrl` 涓虹敓浜х幆澧冨湴鍧�
+- [ ] 妫�鏌� `IsAutoUpdater` 閰嶇疆
+- [ ] 纭繚 `x86/` 鍜� `x64/` 鐩綍瀹屾暣
+- [ ] 娴嬭瘯鏁版嵁搴撹繛鎺�
+- [ ] 楠岃瘉鏃ュ織鐩綍鍐欐潈闄�
+- [ ] 娴嬭瘯鑷姩鏇存柊鍔熻兘
+- [ ] 妫�鏌� DevExpress 璁稿彲璇�
+- [ ] 澶囦唤閰嶇疆鏂囦欢
+
+---
+
+## 11. 寮�鍙戣鑼冧笌鏈�浣冲疄璺�
+
+### 11.1 浠g爜缁勭粐瑙勮寖
+
+#### 鏂板妯″潡
+
+```
+DevFrm/
+鈹斺攢鈹� YourModule/                 # 鏂版ā鍧楃洰褰�
+    鈹溾攢鈹� Frm_Main.cs             # 涓荤獥浣�
+    鈹溾攢鈹� Frm_Edit.cs             # 缂栬緫绐椾綋
+    鈹溾攢鈹� Dlg_Select.cs           # 閫夋嫨瀵硅瘽妗�
+    鈹斺攢鈹� Models/                 # 鏈湴妯″瀷 (鍙��)
+```
+
+#### 鍛藉悕瑙勮寖
+
+| 绫诲瀷 | 鍛藉悕瑙勫垯 | 绀轰緥 |
+|------|----------|------|
+| 涓荤獥浣� | `Frm_{涓氬姟鍚峿` | `Frm_Customer.cs` |
+| 缂栬緫绐椾綋 | `Frm_{涓氬姟鍚峿Edit` | `Frm_CustomerEdit.cs` |
+| 瀵硅瘽妗� | `Dlg_{涓氬姟鍚峿` | `Dlg_SelectCustomer.cs` |
+| 鐢ㄦ埛鎺т欢 | `Uc{鍔熻兘鍚峿` | `UcToolBarMenu.cs` |
+
+### 11.2 API 璋冪敤瑙勮寖
+
+#### 鉁� 姝g‘鍋氭硶
+
+```csharp
+// 浣跨敤 UtilityHelper.HttpPost
+string jsonParam = JsonConvert.SerializeObject(new {
+    id = customerId
+});
+
+string result = UtilityHelper.HttpPost(
+    "BasicData/Customer/GetById",
+    "GetById",
+    jsonParam
+);
+
+dynamic dy = UtilityHelper.ReturnToDynamic(result);
+if (dy.code == 200)
+{
+    // 澶勭悊鏁版嵁
+}
+else
+{
+    MsgHelper.ShowError(dy.msg.ToString());
+    LogHelper.WriteLog($"API Error: {dy.msg}", LogHelper.LogType.Error);
+}
+```
+
+#### 鉂� 閿欒鍋氭硶
+
+```csharp
+// 涓嶈鐩存帴浣跨敤 HttpClient銆乄ebRequest 绛�
+// 涓嶈璺宠繃閿欒澶勭悊
+// 涓嶈蹇界暐鏃ュ織璁板綍
+```
+
+### 11.3 寮傚父澶勭悊瑙勮寖
+
+```csharp
+try
+{
+    // 涓氬姟閫昏緫
+    string result = UtilityHelper.HttpPost(...);
+    dynamic dy = UtilityHelper.ReturnToDynamic(result);
+
+    if (dy.code == 200)
+    {
+        // 鎴愬姛澶勭悊
+    }
+    else
+    {
+        // API 杩斿洖閿欒
+        MsgHelper.ShowError(dy.msg.ToString());
+        LogHelper.WriteLog($"API Error: {dy.msg}", LogHelper.LogType.Error);
+    }
+}
+catch (Exception ex)
+{
+    // 鎹曡幏寮傚父
+    MsgHelper.ShowError($"鎿嶄綔澶辫触: {ex.Message}");
+    LogHelper.WriteLog($"Exception in {MethodName}: {ex}", LogHelper.LogType.Error);
+}
+```
+
+### 11.4 UI 鏇存柊瑙勮寖
+
+#### 闀挎椂闂存搷浣滀娇鐢ㄥ悗鍙扮嚎绋�
+
+```csharp
+// 浣跨敤 BackgroundWorker
+BackgroundWorker worker = new BackgroundWorker();
+worker.DoWork += (s, e) => {
+    // 鑰楁椂鎿嶄綔
+    e.Result = PerformLongOperation();
+};
+worker.RunWorkerCompleted += (s, e) => {
+    // UI 鏇存柊
+    UpdateUI(e.Result);
+};
+worker.RunWorkerAsync();
+```
+
+#### 閬垮厤 UI 闃诲
+
+```csharp
+// 鉂� 闃诲 UI 绾跨▼
+Thread.Sleep(5000);
+
+// 鉁� 浣跨敤瀹氭椂鍣ㄦ垨寮傛
+Timer timer = new Timer();
+timer.Interval = 5000;
+timer.Tick += (s, e) => {
+    timer.Stop();
+    // 鎵ц鎿嶄綔
+};
+timer.Start();
+```
+
+### 11.5 鎺т欢澶嶇敤瑙勮寖
+
+#### 浼樺厛浣跨敤鐜版湁鎺т欢
+
+```csharp
+// 鉁� 浣跨敤 UcLookCustomer
+UcLookCustomer lookCustomer = new UcLookCustomer();
+if (lookCustomer.ShowDialog() == DialogResult.OK)
+{
+    txtCustomerId.Text = lookCustomer.SelectedId;
+    txtCustomerName.Text = lookCustomer.SelectedName;
+}
+
+// 鉂� 涓嶈鑷繁鍐欓�夋嫨瀵硅瘽妗�
+// 宸叉湁 60+ UcLook* 鎺т欢鍙敤
+```
+
+### 11.6 鏃ュ織璁板綍瑙勮寖
+
+```csharp
+// 鍏抽敭鎿嶄綔鍓嶅悗璁板綍鏃ュ織
+LogHelper.WriteLog($"寮�濮嬩繚瀛樺鎴锋暟鎹�: {customerId}", LogHelper.LogType.Info);
+
+try
+{
+    string result = UtilityHelper.HttpPost(...);
+    LogHelper.WriteLog($"淇濆瓨鎴愬姛: {customerId}", LogHelper.LogType.Info);
+}
+catch (Exception ex)
+{
+    LogHelper.WriteLog($"淇濆瓨澶辫触: {ex.Message}", LogHelper.LogType.Error);
+}
+```
+
+### 11.7 閰嶇疆绠$悊瑙勮寖
+
+```csharp
+// 鉁� 浠庨厤缃枃浠惰鍙�
+string apiUrl = ConfigurationManager.AppSettings["WebApiUrl"];
+int pageSize = int.Parse(ConfigurationManager.AppSettings["PageSize"]);
+
+// 鉂� 涓嶈纭紪鐮�
+// string apiUrl = "http://192.168.0.51:8081/";
+```
+
+---
+
+## 12. 甯歌闂涓庢晠闅滄帓鏌�
+
+### 12.1 鏋勫缓澶辫触
+
+#### 闂: DevExpress 缁勪欢鎵句笉鍒�
+
+**鍘熷洜**: DevExpress 鏈畨瑁呮垨 NuGet 婧愭湭閰嶇疆
+
+**瑙e喅鏂规**:
+
+1. 瀹夎 DevExpress v22.2
+2. 閰嶇疆 NuGet 婧�:
+   ```
+   宸ュ叿 鈫� NuGet 鍖呯鐞嗗櫒 鈫� 绋嬪簭鍖呯鐞嗗櫒璁剧疆 鈫� 绋嬪簭鍖呮簮
+   娣诲姞: https://nuget.devexpress.com/<your_feed_key>/api
+   ```
+3. 杩樺師 NuGet 鍖�:
+   ```bash
+   nuget restore GsDevSolution.sln
+   ```
+
+#### 闂: CefSharp 鏈湴搴撳姞杞藉け璐�
+
+**鍘熷洜**: `x86/` 鎴� `x64/` 鐩綍缂哄け
+
+**瑙e喅鏂规**:
+
+纭繚杈撳嚭鐩綍鍖呭惈:
+```
+x86/
+  libcef.dll
+  chrome_elf.dll
+  ...
+x64/
+  libcef.dll
+  chrome_elf.dll
+  ...
+```
+
+### 12.2 杩愯鏃堕敊璇�
+
+#### 闂: "鏃犳硶杩炴帴鍒� API 鏈嶅姟鍣�"
+
+**鎺掓煡姝ラ**:
+
+1. 妫�鏌� `App.config` 涓殑 `WebApiUrl`
+2. 浣跨敤娴忚鍣ㄨ闂� API 鍦板潃
+3. 妫�鏌ョ綉缁滆繛鎺�
+4. 鏌ョ湅鏃ュ織鏂囦欢 `logs/{yyyy-MM-dd}.log`
+
+#### 闂: "鐧诲綍澶辫触"
+
+**鎺掓煡姝ラ**:
+
+1. 妫�鏌ョ敤鎴峰悕瀵嗙爜鏄惁姝g‘
+2. 妫�鏌ュ悗绔� API 鏄惁姝e父
+3. 鏌ョ湅鏃ュ織鏂囦欢涓殑閿欒淇℃伅
+4. 妫�鏌ユ暟鎹簱杩炴帴
+
+#### 闂: "绐椾綋鍔犺浇澶辫触"
+
+**鍘熷洜**: 鍙嶅皠鍒涘缓绐椾綋澶辫触
+
+**鎺掓煡姝ラ**:
+
+1. 妫�鏌ュ懡鍚嶇┖闂存槸鍚︽纭�
+2. 妫�鏌ョ獥浣撶被鏄惁涓� public
+3. 妫�鏌ョ獥浣撴槸鍚︽湁鏃犲弬鏋勯�犲嚱鏁�
+4. 鏌ョ湅鏃ュ織涓殑寮傚父鍫嗘爤
+
+### 12.3 鎬ц兘闂
+
+#### 闂: Grid 鍔犺浇鎱�
+
+**浼樺寲鏂规**:
+
+1. 鍚敤鍒嗛〉 (浣跨敤 `UcPageBar`)
+2. 鍑忓皯鍒楁暟
+3. 绂佺敤涓嶅繀瑕佺殑 Grid 鐗规��
+4. 浣跨敤铏氭嫙妯″紡 (澶ф暟鎹噺鏃�)
+
+```csharp
+gridView.OptionsView.ColumnAutoWidth = false;
+gridView.BestFitColumns();
+```
+
+#### 闂: API 璇锋眰瓒呮椂
+
+**瑙e喅鏂规**:
+
+1. 妫�鏌ョ綉缁滅姸鍐�
+2. 浼樺寲鍚庣鏌ヨ
+3. 澧炲姞瓒呮椂鏃堕棿 (淇敼 `UtilityHelper.cs` 涓殑瓒呮椂璁剧疆)
+
+### 12.4 鏃ュ織鐩稿叧
+
+#### 鏌ョ湅鏃ュ織
+
+**浣嶇疆**: `logs/{yyyy-MM-dd}.log`
+
+**鏃ュ織绾у埆**:
+- `[Info]` - 淇℃伅
+- `[Warning]` - 璀﹀憡
+- `[Error]` - 閿欒
+
+#### 鏃ュ織鍐欏叆澶辫触
+
+**鍘熷洜**: 鏃犲啓鏉冮檺
+
+**瑙e喅鏂规**:
+
+1. 浠ョ鐞嗗憳韬唤杩愯
+2. 淇敼 `LogPath` 涓哄叕鍏辩洰褰�
+3. 璧嬩簣搴旂敤鐩綍鍐欐潈闄�
+
+### 12.5 鏁版嵁搴撹繛鎺ラ棶棰�
+
+#### Oracle 杩炴帴澶辫触
+
+**妫�鏌�**:
+- Oracle.ManagedDataAccess.dll 鏄惁瀛樺湪
+- 杩炴帴瀛楃涓叉槸鍚︽纭�
+- 缃戠粶鏄惁鍙揪
+
+#### SQL Server 杩炴帴澶辫触
+
+**妫�鏌�**:
+- SQL Server 鏄惁鍚敤 TCP/IP
+- 绔彛鏄惁寮�鏀� (榛樿 1433)
+- 闃茬伀澧欒鍒�
+
+### 12.6 鑷姩鏇存柊闂
+
+#### 鏇存柊妫�鏌ュけ璐�
+
+**鎺掓煡**:
+
+1. 妫�鏌� `AutoUpdaterXml` URL 鏄惁鍙闂�
+2. 妫�鏌� XML 鏍煎紡鏄惁姝g‘
+3. 妫�鏌ョ綉缁滆繛鎺�
+4. 鏌ョ湅鏃ュ織鏂囦欢
+
+#### 鏇存柊涓嬭浇澶辫触
+
+**鎺掓煡**:
+
+1. 妫�鏌ユ洿鏂板寘 URL 鏄惁鏈夋晥
+2. 妫�鏌ョ鐩樼┖闂�
+3. 妫�鏌ュ啓鏉冮檺
+
+---
+
+## 闄勫綍 A: 鍚庣 API 绔偣
+
+### 璁よ瘉涓庣敤鎴�
+
+| 绔偣 | 璇存槑 |
+|------|------|
+| `User/UserLogin` | 鐢ㄦ埛鐧诲綍 |
+| `User/GetUserLoginInfo` | 鑾峰彇鐢ㄦ埛淇℃伅鍜岃彍鍗� |
+| `User/SetUserOrg` | 鍒囨崲缁勭粐 |
+
+### 缁勭粐涓庤彍鍗�
+
+| 绔偣 | 璇存槑 |
+|------|------|
+| `Organization/GetListPage` | 鑾峰彇缁勭粐鍒楄〃 |
+| `MenuAction/GetModelByNameSpace` | 鏍规嵁鍛藉悕绌洪棿鑾峰彇绐椾綋淇℃伅 |
+
+### 閫氱敤鍒楄〃鏌ヨ
+
+**妯″紡**: `{Module}/{Entity}/GetListPage`
+
+绀轰緥:
+- `BasicData/Customer/GetListPage` - 瀹㈡埛鍒楄〃
+- `BasicData/Items/GetListPage` - 鐗╂枡鍒楄〃
+- `Warehouse/Inventory/GetListPage` - 搴撳瓨鍒楄〃
+
+---
+
+## 闄勫綍 B: 蹇�熷弬鑰�
+
+### 甯哥敤鍛戒护
+
+```bash
+# 杩樺師 NuGet 鍖�
+nuget restore GsDevSolution.sln
+
+# Debug 鏋勫缓
+msbuild GsDevSolution.sln /p:Configuration=Debug
+
+# Release 鏋勫缓
+msbuild GsDevSolution.sln /p:Configuration=Release
+
+# 杩愯绋嬪簭
+Gs.DevApp\bin\Debug\Gs.DevApp.exe
+```
+
+### 甯哥敤浠g爜鐗囨
+
+```csharp
+// API 璋冪敤
+string result = UtilityHelper.HttpPost("Module/Action", "Action", jsonParam);
+dynamic dy = UtilityHelper.ReturnToDynamic(result);
+
+// 娑堟伅鎻愮ず
+MsgHelper.ShowSuccess("鎿嶄綔鎴愬姛");
+MsgHelper.ShowError("鎿嶄綔澶辫触");
+
+// 鏃ュ織璁板綍
+LogHelper.WriteLog("娑堟伅鍐呭", LogHelper.LogType.Info);
+
+// Toast 鎻愮ず
+Toast.Show("鎻愮ず鍐呭", 3);
+```
+
+---
+
+## 闄勫綍 C: 鐩稿叧鏂囨。
+
+- **CLAUDE.md** - Claude Code AI 杈呭姪寮�鍙戞寚鍗�
+- **DEVFRM_GUIDE.md** - DevFrm 妯″潡璇︾粏鎸囧崡
+- **ANALYSIS_REPORT.md** - 鏋舵瀯鍒嗘瀽鎶ュ憡
+- **DevFrm璇︾粏鍒嗘瀽.md** - 妯″潡鍒嗘瀽 (涓枃)
+
+---
+
+## 鑱旂郴涓庢敮鎸�
+
+濡傞渶鎶�鏈敮鎸佹垨鎶ュ憡闂,璇疯仈绯诲紑鍙戝洟闃熴��
+
+**鏈�鍚庢洿鏂�**: 2025-10-16
+
+---
+
+*鏈枃妗i殢椤圭洰鎸佺画鏇存柊,寤鸿瀹氭湡鏌ョ湅鏈�鏂扮増鏈��*

--
Gitblit v1.9.3