From f2fa318161407b936f70aa3b918dd38f24ea9a88 Mon Sep 17 00:00:00 2001
From: yzh <snbbt@21cn.com>
Date: 星期一, 13 六月 2022 07:08:28 +0800
Subject: [PATCH] 数据字典表相关功能 系统账号管理优化 订单管理 API账号管理 客户信息管理

---
 web/web/SysDictData.aspx.cs      |   58 
 web/web/Session.ashx             |   22 
 web/web/GwSp.aspx.cs             |    4 
 web/Dao/GwSpDao.cs               |   38 
 web/Model/Model/SysDictData.cs   |   33 
 web/web/Bin/Common.dll           |    0 
 web/Dao/SysDictTypeDao.cs        |  267 +++
 web/web/GwProduct.aspx           |   11 
 web/web/GwOrderList.aspx         |   70 
 web/Dao/GwOrderDao.cs            |    3 
 web/Model/Model.csproj           |    2 
 web/web/Bin/Common.pdb           |    0 
 web/Model/Model/SysDictType.cs   |   29 
 web/Model/Model/SysUser.cs       |    2 
 web/Model/Model/GwClient.cs      |    1 
 web/Lib/Dao.dll                  |    0 
 web/Dao/SysDictDataDao.cs        |  294 ++++
 web/web/GwClient.ashx            |   23 
 web/.vs/Web/v16/.suo             |    0 
 web/web/GwOrderList.aspx.cs      |   51 
 web/Model/Model/GwOrder.cs       |    2 
 web/web/GwClient.aspx            |   49 
 web/web/GwProduct.aspx.cs        |    2 
 web/web/GwOrderAudit.aspx        |   71 
 web/Lib/Dao.pdb                  |    0 
 web/web/Bin/Dao.dll              |    0 
 web/Model/Model/GwSp.cs          |   14 
 web/web/GwOrderComplete.aspx     |   65 
 web/web/gwspupdate.aspx.cs       |   20 
 web/Dao/Dao.csproj               |    2 
 web/web/SysDictData.aspx         |  277 +++
 web/web/GwOrderCreate.aspx.cs    |   51 
 web/web/SysDictType.ashx         |  282 ++++
 web/Lib/Model.dll                |    0 
 web/web/Bin/App_Code.pdb         |    0 
 web/web/GwOrder.ashx             |   11 
 web/web/SysDictData.ashx         |  321 ++++
 web/web/GwProductClasses.aspx.cs |  117 +
 web/web/SysDictType.aspx         |  240 +++
 web/web/GwOrderAudit.aspx.cs     |   53 
 web/web/Bin/Dao.pdb              |    0 
 web/web/GwProduct.ashx           |   86 
 web/web/Bin/App_Code.dll         |    0 
 web/web/SysDictType.aspx.cs      |   58 
 web/Lib/Common.dll               |    0 
 web/web/GwSp.aspx                |   50 
 web/web/ExportDocument.aspx.cs   |    2 
 web/Lib/Model.pdb                |    0 
 web/web/GwSp.ashx                |   78 
 web/web/gwspupdate.aspx          |  920 +++++++-----
 web/Dao/GwClientDao.cs           |    3 
 web/web/Index.aspx               |    2 
 web/web/GwOrderComplete.aspx.cs  |   51 
 web/Lib/Common.pdb               |    0 
 web/web/SysUser.aspx             |  204 ++
 web/web/Bin/Model.pdb            |    0 
 web/Dao/UserDao.cs               |   11 
 web/web/GwOrderCreate.aspx       |   71 
 web/web/GwStatis.aspx.cs         |    2 
 web/web/SysUser.ashx             |   99 +
 web/web/Bin/Model.dll            |    0 
 web/web/GwStatisV3.aspx.cs       |    2 
 web/Common/DataConverter.cs      |   18 
 63 files changed, 3,529 insertions(+), 613 deletions(-)

diff --git a/web/.vs/Web/v16/.suo b/web/.vs/Web/v16/.suo
index 70364d0..c09ba32 100644
--- a/web/.vs/Web/v16/.suo
+++ b/web/.vs/Web/v16/.suo
Binary files differ
diff --git a/web/Common/DataConverter.cs b/web/Common/DataConverter.cs
index 421765e..5b9bf15 100644
--- a/web/Common/DataConverter.cs
+++ b/web/Common/DataConverter.cs
@@ -179,6 +179,24 @@
             [FieldOffset(0)]
             public DataConverter.IPAdress _IP;
         }
+
+        //鑾峰彇闅忔満鐮�
+        public static string getRandom(int strLength)
+        {
+            string random = "";
+            if (strLength <= 0)
+            {
+                strLength = 6;  //榛樿6浣嶉暱搴�
+            }
+            //random = Guid.NewGuid().ToString().Replace("-", "").Substring(0, strLength);
+            random = Guid.NewGuid().ToString();
+            random = random.Replace("-", "");
+            random = random.Substring(0, strLength);
+
+            return random;
+        }
+
     }
+
 }
 
diff --git a/web/Dao/Dao.csproj b/web/Dao/Dao.csproj
index c1438c0..86360a6 100644
--- a/web/Dao/Dao.csproj
+++ b/web/Dao/Dao.csproj
@@ -80,6 +80,8 @@
     <Compile Include="GwMoRouteDao.cs" />
     <Compile Include="GwOrderAuditDao.cs" />
     <Compile Include="GwOrderDao.cs" />
+    <Compile Include="SysDictDataDao.cs" />
+    <Compile Include="SysDictTypeDao.cs" />
     <Compile Include="GwProductDao.cs" />
     <Compile Include="GwRmResendDao.cs" />
     <Compile Include="GwSpPrePattern.cs" />
diff --git a/web/Dao/GwClientDao.cs b/web/Dao/GwClientDao.cs
index 91326a7..c1d1699 100644
--- a/web/Dao/GwClientDao.cs
+++ b/web/Dao/GwClientDao.cs
@@ -355,7 +355,7 @@
 
         public bool Add(GwClient item)
         {
-            return OracleHelper.ExecuteSql("INSERT INTO GW_CLIENT(CLIENT_ID,CLIENT_NAME,TELEPHONE,ADDRESS,AGENT,SALESMAN,CUSTOMER_MANAGER,SUPPORT_STAFF,FINANCIAL_STAFF,CHARGE_TYPE,SMS_STATUS_REPORT,MMS_STATUS_REPORT,COMPANY,REMARK,PASSWORD,PERMISSION_DATA, IS_ENABLE_WHITE, IS_ENABLE_BLACK, IS_REMOTE_LOGIN_NOTICE, IS_MOBILE_CAPTCHA, IS_HIDE_MOBILE, IS_DISPLAY_STATUS, IS_LOGIN_IP_RESTRICT, IS_LOGIN_IP_ALLOW_GATHER, IS_LOGIN_CITY_RESTRICT, IS_LOGIN_CITY_ALLOW_GATHER,CREATE_TIME,PARENTID,Certification_Status) VALUES(:CLIENTID,:CLIENTNAME,:TELEPHONE,:ADDRESS,:AGENT,:SALESMAN,:CUSTOMER_MANAGER,:SUPPORT_STAFF,:FINANCIAL_STAFF,:CHARGE_TYPE,:SMS_STATUS_REPORT,:MMS_STATUS_REPORT,:COMPANY,:REMARK,:PASSWORD,:PERMISSION_DATA, :IS_ENABLE_WHITE, :IS_ENABLE_BLACK, :IS_REMOTE_LOGIN_NOTICE, :IS_MOBILE_CAPTCHA, :IS_HIDE_MOBILE, :IS_DISPLAY_STATUS, :IS_LOGIN_IP_RESTRICT, :IS_LOGIN_IP_ALLOW_GATHER, :IS_LOGIN_CITY_RESTRICT, :IS_LOGIN_CITY_ALLOW_GATHER,SYSDATE,:PARENTID,:Certification_Status)", OracleHelper.Connection, new OracleParameter(":CLIENTID", (object)item.ClientID), new OracleParameter(":CLIENTNAME", (object)item.ClientName), new OracleParameter(":TELEPHONE", (object)item.Telephone), new OracleParameter(":ADDRESS", (object)item.Address), new OracleParameter(":AGENT", (object)item.Agent), new OracleParameter(":SALESMAN", (object)item.Salesman), new OracleParameter(":CUSTOMER_MANAGER", (object)item.CustomerManager), new OracleParameter(":SUPPORT_STAFF", (object)item.SupportStaff), new OracleParameter(":FINANCIAL_STAFF", (object)item.FinancialStaff), new OracleParameter(":CHARGE_TYPE", (object)item.ChargeType), new OracleParameter(":SMS_STATUS_REPORT", (object)item.SmsStatusReport), new OracleParameter(":MMS_STATUS_REPORT", (object)item.MmsStatusReport), new OracleParameter(":COMPANY", (object)item.Company), new OracleParameter(":REMARK", (object)item.Remark), new OracleParameter(":PASSWORD", (object)item.Password), new OracleParameter(":PERMISSION_DATA", (object)item.PermissionData), new OracleParameter(":PARENTID", (object)item.ParentId), new OracleParameter(":Certification_Status", (object)item.Certification_Status), new OracleParameter(":IS_ENABLE_WHITE", (object)item.IsEnableWhite), new OracleParameter(":IS_ENABLE_BLACK", (object)item.IsEnableBlack), new OracleParameter(":IS_REMOTE_LOGIN_NOTICE", (object)item.IsRemoteLoginNotice), new OracleParameter(":IS_MOBILE_CAPTCHA", (object)item.IsMobileCaptcha), new OracleParameter(":IS_HIDE_MOBILE", (object)item.IsHideMobile), new OracleParameter(":IS_DISPLAY_STATUS", (object)item.IsDisplayStatus), new OracleParameter(":IS_LOGIN_IP_RESTRICT", (object)item.IsLoginIpRestrict), new OracleParameter(":IS_LOGIN_IP_ALLOW_GATHER", (object)item.IsLoginIpAllowGather), new OracleParameter(":IS_LOGIN_CITY_RESTRICT", (object)item.IsLoginCityRestrict), new OracleParameter(":IS_LOGIN_CITY_ALLOW_GATHER", (object)item.IsLoginCityAllowGather) ) > 0;
+            return OracleHelper.ExecuteSql("INSERT INTO GW_CLIENT(CLIENT_ID,CLIENT_NAME,TELEPHONE,ADDRESS,AGENT,SALESMAN,CUSTOMER_MANAGER,SUPPORT_STAFF,FINANCIAL_STAFF,CHARGE_TYPE,SMS_STATUS_REPORT,MMS_STATUS_REPORT,COMPANY,REMARK,PASSWORD, SALT, PERMISSION_DATA, IS_ENABLE_WHITE, IS_ENABLE_BLACK, IS_REMOTE_LOGIN_NOTICE, IS_MOBILE_CAPTCHA, IS_HIDE_MOBILE, IS_DISPLAY_STATUS, IS_LOGIN_IP_RESTRICT, IS_LOGIN_IP_ALLOW_GATHER, IS_LOGIN_CITY_RESTRICT, IS_LOGIN_CITY_ALLOW_GATHER,CREATE_TIME,PARENTID,Certification_Status) VALUES(:CLIENTID,:CLIENTNAME,:TELEPHONE,:ADDRESS,:AGENT,:SALESMAN,:CUSTOMER_MANAGER,:SUPPORT_STAFF,:FINANCIAL_STAFF,:CHARGE_TYPE,:SMS_STATUS_REPORT,:MMS_STATUS_REPORT,:COMPANY,:REMARK,:PASSWORD, :SALT,:PERMISSION_DATA, :IS_ENABLE_WHITE, :IS_ENABLE_BLACK, :IS_REMOTE_LOGIN_NOTICE, :IS_MOBILE_CAPTCHA, :IS_HIDE_MOBILE, :IS_DISPLAY_STATUS, :IS_LOGIN_IP_RESTRICT, :IS_LOGIN_IP_ALLOW_GATHER, :IS_LOGIN_CITY_RESTRICT, :IS_LOGIN_CITY_ALLOW_GATHER,SYSDATE,:PARENTID,:Certification_Status)", OracleHelper.Connection, new OracleParameter(":CLIENTID", (object)item.ClientID), new OracleParameter(":CLIENTNAME", (object)item.ClientName), new OracleParameter(":TELEPHONE", (object)item.Telephone), new OracleParameter(":ADDRESS", (object)item.Address), new OracleParameter(":AGENT", (object)item.Agent), new OracleParameter(":SALESMAN", (object)item.Salesman), new OracleParameter(":CUSTOMER_MANAGER", (object)item.CustomerManager), new OracleParameter(":SUPPORT_STAFF", (object)item.SupportStaff), new OracleParameter(":FINANCIAL_STAFF", (object)item.FinancialStaff), new OracleParameter(":CHARGE_TYPE", (object)item.ChargeType), new OracleParameter(":SMS_STATUS_REPORT", (object)item.SmsStatusReport), new OracleParameter(":MMS_STATUS_REPORT", (object)item.MmsStatusReport), new OracleParameter(":COMPANY", (object)item.Company), new OracleParameter(":REMARK", (object)item.Remark), new OracleParameter(":PASSWORD", (object)item.Password), new OracleParameter(":SALT", (object)item.Salt), new OracleParameter(":PERMISSION_DATA", (object)item.PermissionData), new OracleParameter(":PARENTID", (object)item.ParentId), new OracleParameter(":Certification_Status", (object)item.Certification_Status), new OracleParameter(":IS_ENABLE_WHITE", (object)item.IsEnableWhite), new OracleParameter(":IS_ENABLE_BLACK", (object)item.IsEnableBlack), new OracleParameter(":IS_REMOTE_LOGIN_NOTICE", (object)item.IsRemoteLoginNotice), new OracleParameter(":IS_MOBILE_CAPTCHA", (object)item.IsMobileCaptcha), new OracleParameter(":IS_HIDE_MOBILE", (object)item.IsHideMobile), new OracleParameter(":IS_DISPLAY_STATUS", (object)item.IsDisplayStatus), new OracleParameter(":IS_LOGIN_IP_RESTRICT", (object)item.IsLoginIpRestrict), new OracleParameter(":IS_LOGIN_IP_ALLOW_GATHER", (object)item.IsLoginIpAllowGather), new OracleParameter(":IS_LOGIN_CITY_RESTRICT", (object)item.IsLoginCityRestrict), new OracleParameter(":IS_LOGIN_CITY_ALLOW_GATHER", (object)item.IsLoginCityAllowGather) ) > 0;
         }
 
         public GwClient Get(string clientID)
@@ -451,6 +451,7 @@
             o.Company = oracleReaderWrapper.GetString("COMPANY", "");
             o.Remark = oracleReaderWrapper.GetString("REMARK", "");
             o.Password = oracleReaderWrapper.GetString("PASSWORD", "");
+            o.Salt = oracleReaderWrapper.GetString("SALT", "");
             o.Agent = oracleReaderWrapper.GetString("AGENT", "");
             o.AlarmMobile = oracleReaderWrapper.GetString("ALARM_MOBILE", "");
             o.BalanceThreshold = oracleReaderWrapper.GetInt("BALANCE_THRESHOLD", 0);
diff --git a/web/Dao/GwOrderDao.cs b/web/Dao/GwOrderDao.cs
index 44532b5..0e1a091 100644
--- a/web/Dao/GwOrderDao.cs
+++ b/web/Dao/GwOrderDao.cs
@@ -285,7 +285,7 @@
             GwOrder o = new GwOrder();
             if (string.IsNullOrEmpty(orderId))
                 return o;
-            using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select * from GW_ORDER where ORDER_ID=:ORDER_ID"), OracleHelper.Connection, new OracleParameter(":ORDER_ID", (object)orderId)))
+            using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select gwo.*, gc.COMPANY, gp.name PRODUCT_NAME from gw_order gwo left join gw_client gc on gc.client_id = gwo.client_id left join gw_product gp on gp.id = gwo.product_id where gwo.ORDER_ID=:ORDER_ID"), OracleHelper.Connection, new OracleParameter(":ORDER_ID", (object)orderId)))
             {
                 if (((DbDataReader)reader).Read())
                 {
@@ -313,6 +313,7 @@
             o.Company = oracleReaderWrapper.GetString("COMPANY", "");
             o.ClientName = oracleReaderWrapper.GetString("CLIENT_NAME", "");
             o.ProductId = oracleReaderWrapper.GetString("PRODUCT_ID", "");
+            o.ProductName = oracleReaderWrapper.GetString("PRODUCT_NAME", "");
             o.ComboId = oracleReaderWrapper.GetString("COMBO_ID", "");
             o.BasicNum = oracleReaderWrapper.GetInt("BASIC_NUM", 0);
             o.GivingNum = oracleReaderWrapper.GetInt("GIVING_NUM", 0);
diff --git a/web/Dao/GwSpDao.cs b/web/Dao/GwSpDao.cs
index 492f708..aa296c8 100644
--- a/web/Dao/GwSpDao.cs
+++ b/web/Dao/GwSpDao.cs
@@ -456,7 +456,7 @@
                 ) > 0;
             **/
 
-            return OracleHelper.ExecuteSql("UPDATE GW_SP SET AP_ID=:APID,COMBINATION_MODE=:COMBINATION_MODE,CLIENT_ID=:CLIENTID,STRATEGY_ID=:STRATEGYID,PASSWORD=:PASSWORD,\r\nCLIENT_IP=:CLIENTIP,CLIENT_PORT=:CLIENTPORT,ACCESS_CODE=:ACCESSCODE,\r\nPRIORITY=:PRIORITY,PRICE=:PRICE,CHARGE_TYPE=:CHARGETYPE,IS_AUTO_RETURN=:IS_AUTO_RETURN,THRESHOLD=:THRESHOLD,MAX_CONN_COUNT=:MAXCONNCOUNT,REMARK=:REMARK,\r\nTIME_PERMITTING=:TIME_PERMITTING,AUDITING_MODE=:AUDITINGMODE,\r\nDEDUCT_PERCENT=:DEDUCTPERCENT,\r\nCM_OP_ID=:CM_OP_ID,CT_OP_ID=:CT_OP_ID,UN_OP_ID=:UN_OP_ID,\r\nDEFISHING_TIMEOUT = :DEFISHING_TIMEOUT,DEFISHING_THRESHOLD =:DEFISHING_THRESHOLD,\r\nREJECT_IF_FORBIDDEN =:REJECT_IF_FORBIDDEN,\r\nREFUND_IF_UNDELIVERED =:REFUND_IF_UNDELIVERED,\r\nROUTER_TYPE=:ROUTER_TYPE,STATUS=:STATUS,ACCESSCODE_MODE=:ACCESSCODE_MODE,\r\nEXTNOEXTENSION_MODE=:EXTNOEXTENSION_MODE,DEFISHING_OP_ID =:DEFISHING_OP_ID,\r\nMODIFY_TIME=SYSDATE,FEE_SHORT_LENGTH=:FEE_SHORT_LENGTH,FEE_LONG_LENGTH=:FEE_LONG_LENGTH,\r\nBLACK_MODE=:BLACK_MODE,\r\nDIVERTER_ID=:DIVERTER_ID,\r\nMCPM=:MCPM,\r\nMC_EXPRESSION=:MC_EXPRESSION,\r\nCM_EXT_PARAMS=:CM_EXT_PARAMS,\r\nCT_EXT_PARAMS=:CT_EXT_PARAMS,\r\nCU_EXT_PARAMS=:CU_EXT_PARAMS,\r\nCM_GROUP_ID=:CM_GROUP_ID,\r\nCU_GROUP_ID=:CU_GROUP_ID,\r\nCT_GROUP_ID=:CT_GROUP_ID ,\r\nBALANCE_THRESHOLD = :BALANCE_THRESHOLD,\r\nALARM_MOBILE = :ALARM_MOBILE,\r\nFORCE_SIGN_FLAG = :FORCE_SIGN_FLAG,\r\nFORCE_SIGN = :FORCE_SIGN,\r\nSIGNATURE_MODE=:SIGNATURE_MODE,\r\nSIGNATURES=:SIGNATURES\r\n,VerCodeMode=:VerCodeMode \r\n,ProvincialNetworkMode=:ProvincialNetworkMode \r\n,RESEND_STATUS=:RESEND_STATUS \r\n,RESEND_CM_GROUPID=:RESEND_CM_GROUPID \r\n,RESEND_CU_GROUPID=:RESEND_CU_GROUPID \r\n,RESEND_CT_GROUPID=:RESEND_CT_GROUPID,TRANSFERFLAG=:TRANSFERFLAG WHERE SP_ID=:SPID", OracleHelper.Connection, new OracleParameter(":APID", (object)o.ApID), new OracleParameter(":COMBINATION_MODE", (object)o.CombinationMode), new OracleParameter(":CLIENTID", (object)o.ClientID), new OracleParameter(":STRATEGYID", (object)o.StrategyID), new OracleParameter(":PASSWORD", (object)o.Password), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CLIENTPORT", (object)o.ClientPort), new OracleParameter(":ACCESSCODE", (object)o.AccessCode), new OracleParameter(":PRIORITY", (object)o.Priority), new OracleParameter(":PRICE", (object)o.Price), new OracleParameter(":CHARGETYPE", (object)o.ChargeType), new OracleParameter(":IS_AUTO_RETURN", (object)o.IsAutoReturn), new OracleParameter(":THRESHOLD", (object)o.Threshold), new OracleParameter(":MAXCONNCOUNT", (object)o.MaxConnCount), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":TIME_PERMITTING", (object)o.TimePermitting), new OracleParameter(":AUDITINGMODE", (object)o.AuditingMode), new OracleParameter(":DEDUCTPERCENT", (object)o.DeductPercent), new OracleParameter(":SPID", (object)o.SpID), new OracleParameter(":CM_OP_ID", (object)o.CMOPID), new OracleParameter(":CT_OP_ID", (object)o.CTOPID), new OracleParameter(":UN_OP_ID", (object)o.UNOPID), new OracleParameter(":DEFISHING_TIMEOUT", (object)o.DefishingTimeout), new OracleParameter(":DEFISHING_THRESHOLD", (object)o.DefishingThreshold), new OracleParameter(":REJECT_IF_FORBIDDEN", (object)o.RejectIfForbidden), new OracleParameter(":REFUND_IF_UNDELIVERED", (object)o.RefundIfUndelivered), new OracleParameter(":STATUS", (object)o.Status), new OracleParameter(":ACCESSCODE_MODE", (object)o.AccessCodeMode), new OracleParameter(":EXTNOEXTENSION_MODE", (object)o.ExtnoExtensionMode), new OracleParameter(":DEFISHING_OP_ID", (object)o.DefishingOPID), new OracleParameter(":ROUTER_TYPE", (object)o.RouterType), new OracleParameter(":CM_EXT_PARAMS", (object)o.CMextparms), new OracleParameter(":CT_EXT_PARAMS", (object)o.CTextparams), new OracleParameter(":CU_EXT_PARAMS", (object)o.CUextparams), new OracleParameter(":FEE_SHORT_LENGTH", (object)o.FeeShortLength), new OracleParameter(":FEE_LONG_LENGTH", (object)o.FeeLongLength), new OracleParameter(":BLACK_MODE", (object)o.BlackMode), new OracleParameter(":DIVERTER_ID", (object)o.DiverterID), new OracleParameter(":MCPM", (object)o.MCPM), new OracleParameter(":MC_EXPRESSION", (object)o.McExpression), new OracleParameter(":CM_GROUP_ID", (object)o.CMGroupID), new OracleParameter(":CU_GROUP_ID", (object)o.CUGroupID), new OracleParameter(":CT_GROUP_ID", (object)o.CTGroupID), new OracleParameter(":BALANCE_THRESHOLD", (object)o.BalanceThreshold), new OracleParameter(":ALARM_MOBILE", (object)o.AlarmMobile), new OracleParameter(":FORCE_SIGN_FLAG", (object)o.ForceSignFlag), new OracleParameter(":FORCE_SIGN", (object)o.ForceSign), new OracleParameter(":SIGNATURE_MODE", (object)o.SignatureMode), new OracleParameter(":SIGNATURES", (object)o.Signatures), new OracleParameter(":VerCodeMode", (object)o.VerCodeMode), new OracleParameter(":ProvincialNetworkMode", (object)o.ProvincialNetworkMode), new OracleParameter(":RESEND_STATUS", (object)o.RESEND_STATUS), new OracleParameter(":RESEND_CM_GROUPID", (object)o.RESEND_CM_GROUPID), new OracleParameter(":RESEND_CU_GROUPID", (object)o.RESEND_CU_GROUPID), new OracleParameter(":RESEND_CT_GROUPID", (object)o.RESEND_CT_GROUPID), new OracleParameter(":TRANSFERFLAG", (object)o.TransferFlag)) > 0;
+            return OracleHelper.ExecuteSql("UPDATE GW_SP SET AP_ID=:APID,COMBINATION_MODE=:COMBINATION_MODE,CLIENT_ID=:CLIENTID,STRATEGY_ID=:STRATEGYID,PASSWORD=:PASSWORD,\r\nCLIENT_IP=:CLIENTIP,CLIENT_PORT=:CLIENTPORT,ACCESS_CODE=:ACCESSCODE,\r\nPRIORITY=:PRIORITY,PRICE=:PRICE,CHARGE_TYPE=:CHARGETYPE,IS_AUTO_RETURN=:IS_AUTO_RETURN,THRESHOLD=:THRESHOLD,MAX_CONN_COUNT=:MAXCONNCOUNT,REMARK=:REMARK,\r\nTIME_PERMITTING=:TIME_PERMITTING,AUDITING_MODE=:AUDITINGMODE,\r\nDEDUCT_PERCENT=:DEDUCTPERCENT,\r\nCM_OP_ID=:CM_OP_ID,CT_OP_ID=:CT_OP_ID,UN_OP_ID=:UN_OP_ID,\r\nDEFISHING_TIMEOUT = :DEFISHING_TIMEOUT,DEFISHING_THRESHOLD =:DEFISHING_THRESHOLD,\r\nREJECT_IF_FORBIDDEN =:REJECT_IF_FORBIDDEN,\r\nREFUND_IF_UNDELIVERED =:REFUND_IF_UNDELIVERED,\r\nROUTER_TYPE=:ROUTER_TYPE,STATUS=:STATUS,ACCESSCODE_MODE=:ACCESSCODE_MODE,\r\nEXTNOEXTENSION_MODE=:EXTNOEXTENSION_MODE,DEFISHING_OP_ID =:DEFISHING_OP_ID,\r\nMODIFY_TIME=SYSDATE,FEE_SHORT_LENGTH=:FEE_SHORT_LENGTH,FEE_LONG_LENGTH=:FEE_LONG_LENGTH,\r\nBLACK_MODE=:BLACK_MODE,\r\nDIVERTER_ID=:DIVERTER_ID,\r\nMCPM=:MCPM,\r\nMC_EXPRESSION=:MC_EXPRESSION,\r\nCM_EXT_PARAMS=:CM_EXT_PARAMS,\r\nCT_EXT_PARAMS=:CT_EXT_PARAMS,\r\nCU_EXT_PARAMS=:CU_EXT_PARAMS,\r\nCM_GROUP_ID=:CM_GROUP_ID,\r\nCU_GROUP_ID=:CU_GROUP_ID,\r\nCT_GROUP_ID=:CT_GROUP_ID ,\r\nBALANCE_THRESHOLD = :BALANCE_THRESHOLD,\r\nALARM_MOBILE = :ALARM_MOBILE,\r\nFORCE_SIGN_FLAG = :FORCE_SIGN_FLAG,\r\nFORCE_SIGN = :FORCE_SIGN,\r\nSIGNATURE_MODE=:SIGNATURE_MODE,\r\nSIGNATURES=:SIGNATURES\r\n,VerCodeMode=:VerCodeMode \r\n,ProvincialNetworkMode=:ProvincialNetworkMode \r\n,RESEND_STATUS=:RESEND_STATUS \r\n,RESEND_CM_GROUPID=:RESEND_CM_GROUPID \r\n,RESEND_CU_GROUPID=:RESEND_CU_GROUPID \r\n,RESEND_CT_GROUPID=:RESEND_CT_GROUPID,TRANSFERFLAG=:TRANSFERFLAG, SUB_PACKAGE_NUM=:SUB_PACKAGE_NUM, SINGLE_SUBMIT_MIN_RESTRICT=:SINGLE_SUBMIT_MIN_RESTRICT, IS_DISPALY_PRICE=:IS_DISPALY_PRICE, DEDUCTION_MODE=:DEDUCTION_MODE, IS_SEND_AUDIT=:IS_SEND_AUDIT, BELOW_NUM_AUDIT=:BELOW_NUM_AUDIT, ABOVE_NUM_AUDIT=:ABOVE_NUM_AUDIT, IS_CUMULATIVE_AUDIT=:IS_CUMULATIVE_AUDIT, CUMULATIVE_AUDIT_NUM=:CUMULATIVE_AUDIT_NUM, CUMULATIVE_AUDIT_TIME=:CUMULATIVE_AUDIT_TIME, IS_SYNC_CHILD_SEND_AUDIT=:IS_SYNC_CHILD_SEND_AUDIT WHERE SP_ID=:SPID", OracleHelper.Connection, new OracleParameter(":APID", (object)o.ApID), new OracleParameter(":COMBINATION_MODE", (object)o.CombinationMode), new OracleParameter(":CLIENTID", (object)o.ClientID), new OracleParameter(":STRATEGYID", (object)o.StrategyID), new OracleParameter(":PASSWORD", (object)o.Password), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CLIENTPORT", (object)o.ClientPort), new OracleParameter(":ACCESSCODE", (object)o.AccessCode), new OracleParameter(":PRIORITY", (object)o.Priority), new OracleParameter(":PRICE", (object)o.Price), new OracleParameter(":CHARGETYPE", (object)o.ChargeType), new OracleParameter(":IS_AUTO_RETURN", (object)o.IsAutoReturn), new OracleParameter(":THRESHOLD", (object)o.Threshold), new OracleParameter(":MAXCONNCOUNT", (object)o.MaxConnCount), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":TIME_PERMITTING", (object)o.TimePermitting), new OracleParameter(":AUDITINGMODE", (object)o.AuditingMode), new OracleParameter(":DEDUCTPERCENT", (object)o.DeductPercent), new OracleParameter(":SPID", (object)o.SpID), new OracleParameter(":CM_OP_ID", (object)o.CMOPID), new OracleParameter(":CT_OP_ID", (object)o.CTOPID), new OracleParameter(":UN_OP_ID", (object)o.UNOPID), new OracleParameter(":DEFISHING_TIMEOUT", (object)o.DefishingTimeout), new OracleParameter(":DEFISHING_THRESHOLD", (object)o.DefishingThreshold), new OracleParameter(":REJECT_IF_FORBIDDEN", (object)o.RejectIfForbidden), new OracleParameter(":REFUND_IF_UNDELIVERED", (object)o.RefundIfUndelivered), new OracleParameter(":STATUS", (object)o.Status), new OracleParameter(":ACCESSCODE_MODE", (object)o.AccessCodeMode), new OracleParameter(":EXTNOEXTENSION_MODE", (object)o.ExtnoExtensionMode), new OracleParameter(":DEFISHING_OP_ID", (object)o.DefishingOPID), new OracleParameter(":ROUTER_TYPE", (object)o.RouterType), new OracleParameter(":CM_EXT_PARAMS", (object)o.CMextparms), new OracleParameter(":CT_EXT_PARAMS", (object)o.CTextparams), new OracleParameter(":CU_EXT_PARAMS", (object)o.CUextparams), new OracleParameter(":FEE_SHORT_LENGTH", (object)o.FeeShortLength), new OracleParameter(":FEE_LONG_LENGTH", (object)o.FeeLongLength), new OracleParameter(":BLACK_MODE", (object)o.BlackMode), new OracleParameter(":DIVERTER_ID", (object)o.DiverterID), new OracleParameter(":MCPM", (object)o.MCPM), new OracleParameter(":MC_EXPRESSION", (object)o.McExpression), new OracleParameter(":CM_GROUP_ID", (object)o.CMGroupID), new OracleParameter(":CU_GROUP_ID", (object)o.CUGroupID), new OracleParameter(":CT_GROUP_ID", (object)o.CTGroupID), new OracleParameter(":BALANCE_THRESHOLD", (object)o.BalanceThreshold), new OracleParameter(":ALARM_MOBILE", (object)o.AlarmMobile), new OracleParameter(":FORCE_SIGN_FLAG", (object)o.ForceSignFlag), new OracleParameter(":FORCE_SIGN", (object)o.ForceSign), new OracleParameter(":SIGNATURE_MODE", (object)o.SignatureMode), new OracleParameter(":SIGNATURES", (object)o.Signatures), new OracleParameter(":VerCodeMode", (object)o.VerCodeMode), new OracleParameter(":ProvincialNetworkMode", (object)o.ProvincialNetworkMode), new OracleParameter(":RESEND_STATUS", (object)o.RESEND_STATUS), new OracleParameter(":RESEND_CM_GROUPID", (object)o.RESEND_CM_GROUPID), new OracleParameter(":RESEND_CU_GROUPID", (object)o.RESEND_CU_GROUPID), new OracleParameter(":RESEND_CT_GROUPID", (object)o.RESEND_CT_GROUPID), new OracleParameter(":TRANSFERFLAG", (object)o.TransferFlag), new OracleParameter(":SUB_PACKAGE_NUM", (object)o.SubPackageNum), new OracleParameter(":SINGLE_SUBMIT_MIN_RESTRICT", (object)o.SingleSubmitMinRestrict), new OracleParameter(":IS_DISPALY_PRICE", (object)o.IsDispalyPrice), new OracleParameter(":DEDUCTION_MODE", (object)o.DeductionMode), new OracleParameter(":IS_SEND_AUDIT", (object)o.IsSendAudit), new OracleParameter(":BELOW_NUM_AUDIT", (object)o.BelowNumAudit), new OracleParameter(":ABOVE_NUM_AUDIT", (object)o.AboveNumAudit), new OracleParameter(":IS_CUMULATIVE_AUDIT", (object)o.IsCumulativeAudit), new OracleParameter(":CUMULATIVE_AUDIT_NUM", (object)o.CumulativeAuditNum), new OracleParameter(":CUMULATIVE_AUDIT_TIME", (object)o.CumulativeAuditTime), new OracleParameter(":IS_SYNC_CHILD_SEND_AUDIT", (object)o.IsSyncChildSendAudit) ) > 0;
         }
 
         //鏇存柊璐﹀彿鍏呭�兼暟鎹�
@@ -496,21 +496,21 @@
 
     public bool Add(GwSp o)
     {
-        return OracleHelper.ExecuteSql("INSERT INTO GW_SP\r\n (\r\n SP_ID,AP_ID,COMBINATION_MODE,CLIENT_ID,STRATEGY_ID,PASSWORD,CLIENT_IP,CLIENT_PORT,ACCESS_CODE,BALANCE,PRIORITY,PRICE,CHARGE_TYPE,IS_AUTO_RETURN,THRESHOLD,MAX_CONN_COUNT,CREATE_TIME,REMARK,TIME_PERMITTING,AUDITING_MODE,DEDUCT_PERCENT,CM_OP_ID,CT_OP_ID,UN_OP_ID,DEFISHING_TIMEOUT,DEFISHING_THRESHOLD,REJECT_IF_FORBIDDEN,REJECT_IF_NO_SIGNATURE,REFUND_IF_UNDELIVERED,ROUTER_TYPE,STATUS,ACCESSCODE_MODE,EXTNOEXTENSION_MODE,DEFISHING_OP_ID,MODIFY_TIME,FEE_SHORT_LENGTH,FEE_LONG_LENGTH,BLACK_MODE,DIVERTER_ID,MCPM,MC_EXPRESSION,CM_EXT_PARAMS,CT_EXT_PARAMS,CU_EXT_PARAMS,CM_GROUP_ID,CU_GROUP_ID,CT_GROUP_ID,BALANCE_THRESHOLD,ALARM_MOBILE,FORCE_SIGN_FLAG,FORCE_SIGN,SIGNATURE_MODE,SIGNATURES,VerCodeMode,ProvincialNetworkMode,RESEND_STATUS,RESEND_CM_GROUPID,RESEND_CU_GROUPID,RESEND_CT_GROUPID\r\n )\r\n VALUES\r\n (\r\n :SPID,:APID,:COMBINATION_MODE,:CLIENTID,:STRATEGYID,:PASSWORD,:CLIENTIP,:CLIENTPORT,:ACCESSCODE,:BALANCE,:PRIORITY,:PRICE,:CHARGETYPE,:IS_AUTO_RETURN,:THRESHOLD,:MAXCONNCOUNT,:CREATETIME,:REMARK,:TIME_PERMITTING,:AUDITINGMODE,:DEDUCTPERCENT,:CM_OP_ID,:CT_OP_ID,:UN_OP_ID,:DEFISHING_TIMEOUT,:DEFISHING_THRESHOLD,:REJECT_IF_FORBIDDEN,:REJECT_IF_NO_SIGNATURE,:REFUND_IF_UNDELIVERED,:ROUTER_TYPE,:STATUS,:ACCESSCODE_MODE,:EXTNOEXTENSION_MODE,:DEFISHING_OP_ID,:MODIFY_TIME,:FEE_SHORT_LENGTH,:FEE_LONG_LENGTH,:BLACK_MODE,:DIVERTER_ID,:MCPM,:MC_EXPRESSION,:CM_EXT_PARAMS,:CT_EXT_PARAMS,:CU_EXT_PARAMS,:CM_GROUP_ID,:CU_GROUP_ID,:CT_GROUP_ID,:BALANCE_THRESHOLD,:ALARM_MOBILE,:FORCE_SIGN_FLAG,:FORCE_SIGN,:SIGNATURE_MODE,:SIGNATURES,:VerCodeMode,:ProvincialNetworkMode,:RESEND_STATUS,:RESEND_CM_GROUPID,:RESEND_CU_GROUPID,:RESEND_CT_GROUPID\r\n            )", OracleHelper.Connection, new OracleParameter(":SPID", (object)o.SpID), new OracleParameter(":APID", (object)o.ApID), new OracleParameter(":COMBINATION_MODE", (object)o.CombinationMode), new OracleParameter(":CLIENTID", (object)o.ClientID), new OracleParameter(":STRATEGYID", (object)o.StrategyID), new OracleParameter(":PASSWORD", (object)o.Password), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CLIENTPORT", (object)o.ClientPort), new OracleParameter(":ACCESSCODE", (object)o.AccessCode), new OracleParameter(":BALANCE", (object)o.Balance), new OracleParameter(":PRIORITY", (object)o.Priority), new OracleParameter(":PRICE", (object)o.Price), new OracleParameter(":CHARGETYPE", (object)o.ChargeType), new OracleParameter(":IS_AUTO_RETURN", (object)o.IsAutoReturn), new OracleParameter(":THRESHOLD", (object)o.Threshold), new OracleParameter(":MAXCONNCOUNT", (object)o.MaxConnCount), new OracleParameter(":CREATETIME", (object)DateTime.Now), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":TIME_PERMITTING", (object)o.TimePermitting), new OracleParameter(":AUDITINGMODE", (object)o.AuditingMode), new OracleParameter(":DEDUCTPERCENT", (object)o.DeductPercent), new OracleParameter(":CM_OP_ID", (object)o.CMOPID), new OracleParameter(":CT_OP_ID", (object)o.CTOPID), new OracleParameter(":UN_OP_ID", (object)o.UNOPID), new OracleParameter(":DEFISHING_TIMEOUT", (object)o.DefishingTimeout), new OracleParameter(":DEFISHING_THRESHOLD", (object)o.DefishingThreshold), new OracleParameter(":REJECT_IF_FORBIDDEN", (object)o.RejectIfForbidden), new OracleParameter(":REJECT_IF_NO_SIGNATURE", (object)o.RejectIfNoSignature), new OracleParameter(":REFUND_IF_UNDELIVERED", (object)o.RefundIfUndelivered), new OracleParameter(":ROUTER_TYPE", (object)o.RouterType), new OracleParameter(":STATUS", (object)o.Status), new OracleParameter(":ACCESSCODE_MODE", (object)o.AccessCodeMode), new OracleParameter(":EXTNOEXTENSION_MODE", (object)o.ExtnoExtensionMode), new OracleParameter(":DEFISHING_OP_ID", (object)o.DefishingOPID), new OracleParameter(":MODIFY_TIME", (object)DateTime.Now), new OracleParameter(":FEE_SHORT_LENGTH", (object)o.FeeShortLength), new OracleParameter(":FEE_LONG_LENGTH", (object)o.FeeLongLength), new OracleParameter(":BLACK_MODE", (object)o.BlackMode), new OracleParameter(":DIVERTER_ID", (object)o.DiverterID), new OracleParameter(":MCPM", (object)o.MCPM), new OracleParameter(":MC_EXPRESSION", (object)o.McExpression), new OracleParameter(":CM_EXT_PARAMS", (object)o.CMextparms), new OracleParameter(":CT_EXT_PARAMS", (object)o.CTextparams), new OracleParameter(":CU_EXT_PARAMS", (object)o.CUextparams), new OracleParameter(":CM_GROUP_ID", (object)o.CMGroupID), new OracleParameter(":CU_GROUP_ID", (object)o.CUGroupID), new OracleParameter(":CT_GROUP_ID", (object)o.CTGroupID), new OracleParameter(":BALANCE_THRESHOLD", (object)o.BalanceThreshold), new OracleParameter(":ALARM_MOBILE", (object)o.AlarmMobile), new OracleParameter(":FORCE_SIGN_FLAG", (object)o.ForceSignFlag), new OracleParameter(":FORCE_SIGN", (object)o.ForceSign), new OracleParameter(":SIGNATURE_MODE", (object)o.SignatureMode), new OracleParameter(":SIGNATURES", (object)o.Signatures), new OracleParameter(":VerCodeMode", (object)o.VerCodeMode), new OracleParameter(":ProvincialNetworkMode",(object)o.ProvincialNetworkMode), new OracleParameter(":RESEND_STATUS", (object)o.RESEND_STATUS), new OracleParameter(":RESEND_CM_GROUPID", (object)o.RESEND_CM_GROUPID), new OracleParameter(":RESEND_CU_GROUPID", (object)o.RESEND_CU_GROUPID), new OracleParameter(":RESEND_CT_GROUPID", (object)o.RESEND_CT_GROUPID)) > 0;
+        return OracleHelper.ExecuteSql("INSERT INTO GW_SP\r\n (\r\n SP_ID,AP_ID,COMBINATION_MODE,CLIENT_ID,STRATEGY_ID,PASSWORD,CLIENT_IP,CLIENT_PORT,ACCESS_CODE,BALANCE,PRIORITY,PRICE,CHARGE_TYPE,IS_AUTO_RETURN,THRESHOLD,MAX_CONN_COUNT,CREATE_TIME,REMARK,TIME_PERMITTING,AUDITING_MODE,DEDUCT_PERCENT,CM_OP_ID,CT_OP_ID,UN_OP_ID,DEFISHING_TIMEOUT,DEFISHING_THRESHOLD,REJECT_IF_FORBIDDEN,REJECT_IF_NO_SIGNATURE,REFUND_IF_UNDELIVERED,ROUTER_TYPE,STATUS,ACCESSCODE_MODE,EXTNOEXTENSION_MODE,DEFISHING_OP_ID,MODIFY_TIME,FEE_SHORT_LENGTH,FEE_LONG_LENGTH,BLACK_MODE,DIVERTER_ID,MCPM,MC_EXPRESSION,CM_EXT_PARAMS,CT_EXT_PARAMS,CU_EXT_PARAMS,CM_GROUP_ID,CU_GROUP_ID,CT_GROUP_ID,BALANCE_THRESHOLD,ALARM_MOBILE,FORCE_SIGN_FLAG,FORCE_SIGN,SIGNATURE_MODE,SIGNATURES,VerCodeMode,ProvincialNetworkMode,RESEND_STATUS,RESEND_CM_GROUPID,RESEND_CU_GROUPID,RESEND_CT_GROUPID, SUB_PACKAGE_NUM, SINGLE_SUBMIT_MIN_RESTRICT, IS_DISPALY_PRICE, DEDUCTION_MODE, IS_SEND_AUDIT, BELOW_NUM_AUDIT, ABOVE_NUM_AUDIT, IS_CUMULATIVE_AUDIT, CUMULATIVE_AUDIT_NUM, CUMULATIVE_AUDIT_TIME, IS_SYNC_CHILD_SEND_AUDIT \r\n )\r\n VALUES\r\n (\r\n :SPID,:APID,:COMBINATION_MODE,:CLIENTID,:STRATEGYID,:PASSWORD,:CLIENTIP,:CLIENTPORT,:ACCESSCODE,:BALANCE,:PRIORITY,:PRICE,:CHARGETYPE,:IS_AUTO_RETURN,:THRESHOLD,:MAXCONNCOUNT,:CREATETIME,:REMARK,:TIME_PERMITTING,:AUDITINGMODE,:DEDUCTPERCENT,:CM_OP_ID,:CT_OP_ID,:UN_OP_ID,:DEFISHING_TIMEOUT,:DEFISHING_THRESHOLD,:REJECT_IF_FORBIDDEN,:REJECT_IF_NO_SIGNATURE,:REFUND_IF_UNDELIVERED,:ROUTER_TYPE,:STATUS,:ACCESSCODE_MODE,:EXTNOEXTENSION_MODE,:DEFISHING_OP_ID,:MODIFY_TIME,:FEE_SHORT_LENGTH,:FEE_LONG_LENGTH,:BLACK_MODE,:DIVERTER_ID,:MCPM,:MC_EXPRESSION,:CM_EXT_PARAMS,:CT_EXT_PARAMS,:CU_EXT_PARAMS,:CM_GROUP_ID,:CU_GROUP_ID,:CT_GROUP_ID,:BALANCE_THRESHOLD,:ALARM_MOBILE,:FORCE_SIGN_FLAG,:FORCE_SIGN,:SIGNATURE_MODE,:SIGNATURES,:VerCodeMode,:ProvincialNetworkMode,:RESEND_STATUS,:RESEND_CM_GROUPID,:RESEND_CU_GROUPID,:RESEND_CT_GROUPID, :SUB_PACKAGE_NUM, :SINGLE_SUBMIT_MIN_RESTRICT, :IS_DISPALY_PRICE, :DEDUCTION_MODE, :IS_SEND_AUDIT, :BELOW_NUM_AUDIT, :ABOVE_NUM_AUDIT, :IS_CUMULATIVE_AUDIT, :CUMULATIVE_AUDIT_NUM, :CUMULATIVE_AUDIT_TIME, :IS_SYNC_CHILD_SEND_AUDIT\r\n            )", OracleHelper.Connection, new OracleParameter(":SPID", (object)o.SpID), new OracleParameter(":APID", (object)o.ApID), new OracleParameter(":COMBINATION_MODE", (object)o.CombinationMode), new OracleParameter(":CLIENTID", (object)o.ClientID), new OracleParameter(":STRATEGYID", (object)o.StrategyID), new OracleParameter(":PASSWORD", (object)o.Password), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CLIENTPORT", (object)o.ClientPort), new OracleParameter(":ACCESSCODE", (object)o.AccessCode), new OracleParameter(":BALANCE", (object)o.Balance), new OracleParameter(":PRIORITY", (object)o.Priority), new OracleParameter(":PRICE", (object)o.Price), new OracleParameter(":CHARGETYPE", (object)o.ChargeType), new OracleParameter(":IS_AUTO_RETURN", (object)o.IsAutoReturn), new OracleParameter(":THRESHOLD", (object)o.Threshold), new OracleParameter(":MAXCONNCOUNT", (object)o.MaxConnCount), new OracleParameter(":CREATETIME", (object)DateTime.Now), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":TIME_PERMITTING", (object)o.TimePermitting), new OracleParameter(":AUDITINGMODE", (object)o.AuditingMode), new OracleParameter(":DEDUCTPERCENT", (object)o.DeductPercent), new OracleParameter(":CM_OP_ID", (object)o.CMOPID), new OracleParameter(":CT_OP_ID", (object)o.CTOPID), new OracleParameter(":UN_OP_ID", (object)o.UNOPID), new OracleParameter(":DEFISHING_TIMEOUT", (object)o.DefishingTimeout), new OracleParameter(":DEFISHING_THRESHOLD", (object)o.DefishingThreshold), new OracleParameter(":REJECT_IF_FORBIDDEN", (object)o.RejectIfForbidden), new OracleParameter(":REJECT_IF_NO_SIGNATURE", (object)o.RejectIfNoSignature), new OracleParameter(":REFUND_IF_UNDELIVERED", (object)o.RefundIfUndelivered), new OracleParameter(":ROUTER_TYPE", (object)o.RouterType), new OracleParameter(":STATUS", (object)o.Status), new OracleParameter(":ACCESSCODE_MODE", (object)o.AccessCodeMode), new OracleParameter(":EXTNOEXTENSION_MODE", (object)o.ExtnoExtensionMode), new OracleParameter(":DEFISHING_OP_ID", (object)o.DefishingOPID), new OracleParameter(":MODIFY_TIME", (object)DateTime.Now), new OracleParameter(":FEE_SHORT_LENGTH", (object)o.FeeShortLength), new OracleParameter(":FEE_LONG_LENGTH", (object)o.FeeLongLength), new OracleParameter(":BLACK_MODE", (object)o.BlackMode), new OracleParameter(":DIVERTER_ID", (object)o.DiverterID), new OracleParameter(":MCPM", (object)o.MCPM), new OracleParameter(":MC_EXPRESSION", (object)o.McExpression), new OracleParameter(":CM_EXT_PARAMS", (object)o.CMextparms), new OracleParameter(":CT_EXT_PARAMS", (object)o.CTextparams), new OracleParameter(":CU_EXT_PARAMS", (object)o.CUextparams), new OracleParameter(":CM_GROUP_ID", (object)o.CMGroupID), new OracleParameter(":CU_GROUP_ID", (object)o.CUGroupID), new OracleParameter(":CT_GROUP_ID", (object)o.CTGroupID), new OracleParameter(":BALANCE_THRESHOLD", (object)o.BalanceThreshold), new OracleParameter(":ALARM_MOBILE", (object)o.AlarmMobile), new OracleParameter(":FORCE_SIGN_FLAG", (object)o.ForceSignFlag), new OracleParameter(":FORCE_SIGN", (object)o.ForceSign), new OracleParameter(":SIGNATURE_MODE", (object)o.SignatureMode), new OracleParameter(":SIGNATURES", (object)o.Signatures), new OracleParameter(":VerCodeMode", (object)o.VerCodeMode), new OracleParameter(":ProvincialNetworkMode",(object)o.ProvincialNetworkMode), new OracleParameter(":RESEND_STATUS", (object)o.RESEND_STATUS), new OracleParameter(":RESEND_CM_GROUPID", (object)o.RESEND_CM_GROUPID), new OracleParameter(":RESEND_CU_GROUPID", (object)o.RESEND_CU_GROUPID), new OracleParameter(":RESEND_CT_GROUPID", (object)o.RESEND_CT_GROUPID), new OracleParameter(":SUB_PACKAGE_NUM", (object)o.SubPackageNum), new OracleParameter(":SINGLE_SUBMIT_MIN_RESTRICT", (object)o.SingleSubmitMinRestrict), new OracleParameter(":IS_DISPALY_PRICE", (object)o.IsDispalyPrice), new OracleParameter(":DEDUCTION_MODE", (object)o.DeductionMode), new OracleParameter(":IS_SEND_AUDIT", (object)o.IsSendAudit), new OracleParameter(":BELOW_NUM_AUDIT", (object)o.BelowNumAudit), new OracleParameter(":ABOVE_NUM_AUDIT", (object)o.AboveNumAudit), new OracleParameter(":IS_CUMULATIVE_AUDIT", (object)o.IsCumulativeAudit), new OracleParameter(":CUMULATIVE_AUDIT_NUM", (object)o.CumulativeAuditNum), new OracleParameter(":CUMULATIVE_AUDIT_TIME", (object)o.CumulativeAuditTime), new OracleParameter(":IS_SYNC_CHILD_SEND_AUDIT", (object)o.IsSyncChildSendAudit) ) > 0;
     }
 
     public GwSp Get(string spid)
-    {
-      using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select * from GW_SP where SP_ID=:SP_ID"), OracleHelper.Connection, new OracleParameter(":SP_ID", (object) spid)))
-      {
-        if (((DbDataReader) reader).Read())
         {
-          GwSp o = new GwSp();
-          this.ReadInfo(reader, o);
-          return o;
-        }
-      }
-      return (GwSp) null;
+            GwSp o = new GwSp();
+            using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select gs.*, gc.company COMPANY, gp.name PRODUCT_NAME from gw_sp gs left join gw_client gc on gc.client_id = gs.client_id left join gw_product gp on gp.id = gs.product_id where gs.SP_ID=:SP_ID"), OracleHelper.Connection, new OracleParameter(":SP_ID", (object) spid)))
+              {
+                if (((DbDataReader) reader).Read())
+                {
+                  this.ReadInfo(reader, o);
+                  return o;
+                }
+            }
+            return o;
     }
 
     public bool IsSpIDExists(string spid)
@@ -568,6 +568,7 @@
             o.ApID = oracleReaderWrapper.GetInt("AP_ID", 0);
             o.CombinationMode = oracleReaderWrapper.GetInt("COMBINATION_MODE", 0);
             o.ClientID = oracleReaderWrapper.GetString("CLIENT_ID", "");
+            o.Company = oracleReaderWrapper.GetString("COMPANY", "");
             o.StrategyID = oracleReaderWrapper.GetInt("STRATEGY_ID", 0);
             o.ChannelType = oracleReaderWrapper.GetString("CHANNEL_TYPE", "");
             o.Password = oracleReaderWrapper.GetString("PASSWORD", "");
@@ -631,9 +632,22 @@
             o.TransferFlag = oracleReaderWrapper.GetInt("TransferFlag",0);
 
             o.ProductId = oracleReaderWrapper.GetString("PRODUCT_ID", "");  //浜у搧ID
+            o.ProductName = oracleReaderWrapper.GetString("PRODUCT_NAME", "");  //浜у搧ID
             o.BasicNum = oracleReaderWrapper.GetInt("BASIC_NUM", 0);  //鍩烘湰鏉℃暟(鍓╀綑鏁�)
             o.GivingNum = oracleReaderWrapper.GetInt("GIVING_NUM", 0);  //璧犻�佹潯鏁�(鍓╀綑鏁�)
             o.DelFlag = oracleReaderWrapper.GetInt("DelFlag", 0); //鍒犻櫎鏍囧織锛�0-姝e父锛�2-閫昏緫鍒犻櫎
+
+            o.SubPackageNum = oracleReaderWrapper.GetInt("SUB_PACKAGE_NUM", 4000);  //鍒嗗寘鏉℃暟: 琛ㄧず鍚庡彴鏁版嵁鍒嗗寘鏁伴噺锛屼笉鑳戒负0锛屽惁鍒欐病鍔炴硶鍒嗗寘锛岄粯璁�4000涓彿鐮佷竴涓暟鎹寘,寤鸿鍦�2000鑷�5000
+            o.SingleSubmitMinRestrict = oracleReaderWrapper.GetInt("SINGLE_SUBMIT_MIN_RESTRICT", 0);  //鐭俊鍗曟鎻愪氦鏈�灏忛檺鍒�:榛樿0琛ㄧず涓嶉檺鍒讹紝鍚敤闄愬埗鍚庡皬浜庤鎻愪氦鏉℃暟鐨勫皢琚嫆缁濄��
+            o.IsDispalyPrice = oracleReaderWrapper.GetInt("IS_DISPALY_PRICE", 0);  //鏄惁鏄剧ず鍗曚环
+            o.DeductionMode = oracleReaderWrapper.GetInt("DEDUCTION_MODE", 1); //鎵h垂鏂瑰紡锛�1-鎻愪氦閲忥紱2-鎴愪氦閲�
+            o.IsSendAudit = oracleReaderWrapper.GetInt("IS_SEND_AUDIT", 0);  //鍙戦�佹槸鍚﹀鏍革細0-鍋滅敤锛�1-鍚敤
+            o.BelowNumAudit = oracleReaderWrapper.GetInt("BELOW_NUM_AUDIT", 0);  //浣庝簬杩欎釜鏉℃暟闇�瑕佸鏍�
+            o.AboveNumAudit = oracleReaderWrapper.GetInt("ABOVE_NUM_AUDIT", 0);  //楂樹簬杩欎釜鏉℃暟闇�瑕佸鏍�
+            o.IsCumulativeAudit = oracleReaderWrapper.GetInt("IS_CUMULATIVE_AUDIT", 0); //鏄惁绱瀹℃牳锛�0-鍋滅敤锛�1-鍚敤
+            o.CumulativeAuditNum = oracleReaderWrapper.GetInt("CUMULATIVE_AUDIT_NUM", 0); //绱鏉℃暟瀹℃牳
+            o.CumulativeAuditTime = oracleReaderWrapper.GetInt("CUMULATIVE_AUDIT_TIME", 0); //绱鏃堕棿锛堝皬鏃讹級
+            o.IsSyncChildSendAudit = oracleReaderWrapper.GetInt("IS_SYNC_CHILD_SEND_AUDIT", 0); //鏄惁鍚屾瀛愯处鍙�(鍙戦�佸鏍�)锛�0-鍚︼紱2-鏄�
             return true;
         }
 
diff --git a/web/Dao/SysDictDataDao.cs b/web/Dao/SysDictDataDao.cs
new file mode 100644
index 0000000..343d34f
--- /dev/null
+++ b/web/Dao/SysDictDataDao.cs
@@ -0,0 +1,294 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Model;
+using Common;
+using Oracle.DataAccess.Client;
+using System.Data.Common;
+
+namespace Dao
+{
+    /// <summary>
+    /// 瀛楀吀鏁版嵁鎿嶄綔
+    /// </summary>
+    public class SysDictDataDao : IDisposable
+    {
+        public void Dispose()
+        {
+        }
+
+        private static SysDictDataDao _instance;
+        public static SysDictDataDao Instance
+        {
+            get {
+                if (_instance == null)
+                {
+                    _instance = new SysDictDataDao();
+                }
+                return _instance;
+            }
+        }
+
+
+        public List<SysDictData> LoadInfoList(string dictLabel, string dictType, int pageSize, int PageIndex, out int recordcount)
+        {
+            
+            List<SysDictData> list = new List<SysDictData>();
+            recordcount = 0;
+            try
+            {
+                StringBuilder builder = new StringBuilder();
+                builder.Append("from SYS_DICT_DATA where 1=1 AND DEL_FLAG=0 ");
+                if (!string.IsNullOrEmpty(dictLabel))
+                {
+                    builder.Append(" and DICT_LABEL like '%" + dictLabel + "%'");
+                }
+                if (!string.IsNullOrEmpty(dictType))
+                {
+                    builder.Append(" and DICT_TYPE = '" + dictType + "'");
+                }
+                using (OracleDataReader reader = OracleHelper.ExecuteReader("select count(*) as count " + builder.ToString(), OracleHelper.Connection))
+                {
+                    while (reader.Read())
+                    {
+                        recordcount = this.ReadCount(reader);
+                    }
+                }
+                using (OracleDataReader reader2 = OracleHelper.ExecuteReader(PubConstant.doOracleSql(PageIndex, pageSize, recordcount, "select * " + builder.ToString()).ToString() + " order by DICT_TYPE, DICT_SORT ", OracleHelper.Connection ))
+                {
+                    while (reader2.Read())
+                    {
+                        SysDictData o = new SysDictData();
+                        if (this.ReadInfo(reader2, o))
+                        {
+                            list.Add(o);
+                        }
+                    }
+                }
+            }
+            catch (Exception exception)
+            {
+                LogHelper.Error(exception);
+                return list;
+            }
+            return list;
+
+        }
+
+        //鏍规嵁鏉′欢鑾峰彇鏁版嵁鍒楄〃
+        public List<SysDictData> getAllList(SysDictData bean)
+        {
+
+            List<SysDictData> list = new List<SysDictData>();
+            try
+            {
+                StringBuilder builder = new StringBuilder();
+                builder.Append("from SYS_DICT_DATA where 1=1 AND DEL_FLAG=0 ");
+                if (!string.IsNullOrEmpty(bean.DictLabel))
+                {
+                    builder.Append(" and DICT_LABEL like '%" + bean.DictLabel + "%'");
+                }
+
+                if (!string.IsNullOrEmpty(bean.DictValue))
+                {
+                    builder.Append(" and DICT_VALUE like '%" + bean.DictValue + "%'");
+                }
+
+                if (!string.IsNullOrEmpty(bean.DictType))
+                {
+                    builder.Append(" and DICT_TYPE = '" + bean.DictType + "'");
+                }
+
+                if (bean.Status == -1)
+                {
+                    builder.Append(" AND (STATUS != " + bean.Status + " OR STATUS IS NULL) ");
+                }
+                else
+                {
+                    builder.Append(" AND STATUS = " + bean.Status + " ");
+                }
+
+                using (OracleDataReader reader = OracleHelper.ExecuteReader("select * " + builder.ToString() + " order by CREATE_TIME ", OracleHelper.Connection))
+                {
+                    while (reader.Read())
+                    {
+                        SysDictData o = new SysDictData();
+                        if (this.ReadInfo(reader, o))
+                        {
+                            list.Add(o);
+                        }
+                    }
+                }
+            }
+            catch (Exception exception)
+            {
+                LogHelper.Error(exception);
+                return list;
+            }
+            return list;
+
+        }
+
+        //娣诲姞淇℃伅
+        public bool Add(SysDictData o)
+        {
+            StringBuilder stringBuilder = new StringBuilder();
+            stringBuilder.Append("INSERT INTO SYS_DICT_DATA ( ");
+            stringBuilder.Append(" DICT_ID, DICT_VALUE, DICT_LABEL, DICT_TYPE, DICT_SORT, STATUS, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, REMARK ");
+            stringBuilder.Append(" ) ");
+            stringBuilder.Append(" VALUES (:DICT_ID, :DICT_VALUE, :DICT_LABEL, :DICT_TYPE, :DICT_SORT, :STATUS, :CREATE_BY, :CREATE_TIME, :UPDATE_BY, :UPDATE_TIME, :REMARK ");
+            stringBuilder.Append("  ) ");
+
+            string sql = stringBuilder.ToString();
+
+            return OracleHelper.ExecuteSql(sql, 
+                OracleHelper.Connection,
+                new OracleParameter(":DICT_ID", (object)o.DictId),
+                new OracleParameter(":DICT_VALUE", (object)o.DictValue),
+                new OracleParameter(":DICT_LABEL", (object)o.DictLabel),
+                new OracleParameter(":DICT_TYPE", (object)o.DictType),
+                new OracleParameter(":DICT_SORT", (object)o.DictSort),
+                new OracleParameter(":STATUS", (object)o.Status),
+                new OracleParameter(":CREATE_BY", (object)o.CreateBy),
+                new OracleParameter(":CREATE_TIME", (object)o.CreateTime),
+                new OracleParameter(":UPDATE_BY", (object)o.UpdateBy),
+                new OracleParameter(":UPDATE_TIME", (object)o.UpdateTime),
+                new OracleParameter(":REMARK", (object)o.Remark)
+                ) > 0;
+        }
+
+        //鍒犻櫎
+        public bool Delete(SysDictData o)
+        {
+            if (o == null || string.IsNullOrEmpty(o.DictId))
+                return false;
+            //return OracleHelper.ExecuteSql("delete from SYS_DICT_DATA where DICT_ID=:DICT_ID", OracleHelper.Connection, new OracleParameter(":DICT_ID", (object)dictId)) > 0;
+            return OracleHelper.ExecuteSql("UPDATE SYS_DICT_DATA SET DEL_FLAG = 2, UPDATE_BY=:UPDATE_BY, UPDATE_TIME=:UPDATE_TIME where DICT_ID=:DICT_ID", OracleHelper.Connection, new OracleParameter(":UPDATE_BY", (object)o.UpdateBy), new OracleParameter(":UPDATE_TIME", (object)o.UpdateTime), new OracleParameter(":DICT_ID", (object)o.DictId)) > 0;
+            
+        }
+
+        //鏇存柊淇℃伅
+        public bool Update(SysDictData o)
+        {
+            OracleParameter[] cmdParms = new OracleParameter[] {
+                new OracleParameter(":DICT_ID", (object)o.DictId),
+                new OracleParameter(":DICT_VALUE", (object)o.DictValue),
+                new OracleParameter(":DICT_LABEL", (object)o.DictLabel),
+                new OracleParameter(":DICT_TYPE", (object)o.DictType),
+                new OracleParameter(":DICT_SORT", (object)o.DictSort),
+                new OracleParameter(":STATUS", (object)o.Status),
+                new OracleParameter(":CREATE_BY", (object)o.CreateBy),
+                new OracleParameter(":CREATE_TIME", (object)o.CreateTime),
+                new OracleParameter(":UPDATE_BY", (object)o.UpdateBy),
+                new OracleParameter(":UPDATE_TIME", (object)o.UpdateTime),
+                new OracleParameter(":REMARK", (object)o.Remark)
+            };
+
+            StringBuilder stringBuilder = new StringBuilder();
+            stringBuilder.Append("UPDATE SYS_DICT_DATA SET ");
+            stringBuilder.Append(" DICT_VALUE=:DICT_VALUE ");
+            stringBuilder.Append(" , DICT_LABEL =:DICT_LABEL ");
+            stringBuilder.Append(" DICT_TYPE=:DICT_TYPE ");
+            stringBuilder.Append(" , DICT_SORT =:DICT_SORT ");
+            stringBuilder.Append(" , STATUS =:STATUS ");
+            stringBuilder.Append(" , CREATE_BY =:CREATE_BY ");
+            stringBuilder.Append(" , CREATE_TIME =:CREATE_TIME ");
+            stringBuilder.Append(" , UPDATE_BY =:UPDATE_BY ");
+            stringBuilder.Append(" , UPDATE_TIME =:UPDATE_TIME ");
+            stringBuilder.Append(" , REMARK=:REMARK ");
+            stringBuilder.Append(" WHERE DICT_ID=:DICT_ID ");
+
+            string sql = stringBuilder.ToString();
+            return (OracleHelper.ExecuteSql(sql, OracleHelper.Connection, cmdParms) > 0);
+        }
+
+        //鑾峰彇淇℃伅
+        public SysDictData GetByDictId(string dictId)
+        {
+            SysDictData o = new SysDictData();
+            if (string.IsNullOrEmpty(dictId))
+                return o;
+            using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select * from SYS_DICT_DATA where DICT_ID=:DICT_ID"), OracleHelper.Connection, new OracleParameter(":DICT_ID", (object)dictId)))
+            {
+                if (((DbDataReader)reader).Read())
+                {
+                    this.ReadInfo(reader, o);
+                    return o;
+                }
+            }
+            return o;
+        }
+
+        //鑾峰彇淇℃伅
+        public SysDictData GetByDictValue(string dictType, string dictValue)
+        {
+            SysDictData o = new SysDictData();
+            if (string.IsNullOrEmpty(dictValue))
+                return o;
+            using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select * from SYS_DICT_DATA where DICT_TYPE=:DICT_TYPE AND DICT_VALUE=:DICT_VALUE"), OracleHelper.Connection, new OracleParameter(":DICT_TYPE", (object)dictType), new OracleParameter(":DICT_VALUE", (object)dictValue)))
+            {
+                if (((DbDataReader)reader).Read())
+                {
+                    this.ReadInfo(reader, o);
+                    return o;
+                }
+            }
+            return o;
+        }
+
+        //鑾峰彇淇℃伅
+        public SysDictData Get(string dictId)
+        {
+            SysDictData o = new SysDictData();
+            if (string.IsNullOrEmpty(dictId))
+                return o;
+            using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select * from SYS_DICT_DATA where DICT_ID=:DICT_ID"), OracleHelper.Connection, new OracleParameter(":DICT_ID", (object)dictId)))
+            {
+                if (((DbDataReader)reader).Read())
+                {
+                    this.ReadInfo(reader, o);
+                    return o;
+                }
+            }
+            return o;
+        }
+
+        //鏇存柊鍚敤鎴栧仠鐢�
+        public bool UpdateStatus(SysDictData o)
+        {
+            if (o == null || string.IsNullOrEmpty(o.DictId))
+                return false;
+            return OracleHelper.ExecuteSql("UPDATE SYS_DICT_DATA SET STATUS=:STATUS, UPDATE_BY=:UPDATE_BY, UPDATE_TIME=:UPDATE_TIME where DICT_ID=:DICT_ID", OracleHelper.Connection, new OracleParameter(":STATUS", (object)o.Status), new OracleParameter(":UPDATE_BY", (object)o.UpdateBy), new OracleParameter(":UPDATE_TIME", (object)o.UpdateTime), new OracleParameter(":DICT_ID", (object)o.DictId)) > 0;
+            
+        }
+
+        //缁熻璁板綍鏁�
+        private int ReadCount(OracleDataReader reader)
+        {
+            OracleReaderWrapper wrapper = new OracleReaderWrapper(reader);
+            return wrapper.GetInt("count", 0);
+        }
+
+        //鏁版嵁灏佽
+        private bool ReadInfo(OracleDataReader reader, SysDictData o)
+        {
+            OracleReaderWrapper oracleReaderWrapper = new OracleReaderWrapper(reader);
+            o.DictId = oracleReaderWrapper.GetString("DICT_ID", "");
+            o.DictValue = oracleReaderWrapper.GetString("DICT_VALUE", "");
+            o.DictLabel = oracleReaderWrapper.GetString("DICT_LABEL", "");
+            o.DictType = oracleReaderWrapper.GetString("DICT_TYPE", "");
+            o.DictSort = oracleReaderWrapper.GetInt("DICT_SORT", 1);
+            o.DelFlag = oracleReaderWrapper.GetInt("DEL_FLAG", 0);
+            o.Status = oracleReaderWrapper.GetInt("STATUS", 0);
+            o.CreateBy = oracleReaderWrapper.GetString("CREATE_BY", "");
+            o.CreateTime = oracleReaderWrapper.GetDateTime("CREATE_TIME");
+            o.UpdateBy = oracleReaderWrapper.GetString("UPDATE_BY", "");
+            o.UpdateTime = oracleReaderWrapper.GetDateTime("UPDATE_TIME");
+            o.Remark = oracleReaderWrapper.GetString("REMARK", "");
+            return true;
+        }
+
+    }
+
+}
diff --git a/web/Dao/SysDictTypeDao.cs b/web/Dao/SysDictTypeDao.cs
new file mode 100644
index 0000000..7a08eb2
--- /dev/null
+++ b/web/Dao/SysDictTypeDao.cs
@@ -0,0 +1,267 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Model;
+using Common;
+using Oracle.DataAccess.Client;
+using System.Data.Common;
+
+namespace Dao
+{
+    /// <summary>
+    /// 瀛楀吀绫诲瀷鎿嶄綔
+    /// </summary>
+    public class SysDictTypeDao : IDisposable
+    {
+        public void Dispose()
+        {
+        }
+
+        private static SysDictTypeDao _instance;
+        public static SysDictTypeDao Instance
+        {
+            get {
+                if (_instance == null)
+                {
+                    _instance = new SysDictTypeDao();
+                }
+                return _instance;
+            }
+        }
+
+
+        public List<SysDictType> LoadInfoList(string dictName, int pageSize, int PageIndex, out int recordcount)
+        {
+            
+            List<SysDictType> list = new List<SysDictType>();
+            recordcount = 0;
+            try
+            {
+                StringBuilder builder = new StringBuilder();
+                builder.Append("from SYS_DICT_TYPE where 1=1 AND DEL_FLAG=0 ");
+                if (!string.IsNullOrEmpty(dictName))
+                {
+                    builder.Append(" and DICT_NAME like '%" + dictName + "%'");
+                }
+                using (OracleDataReader reader = OracleHelper.ExecuteReader("select count(*) as count " + builder.ToString(), OracleHelper.Connection))
+                {
+                    while (reader.Read())
+                    {
+                        recordcount = this.ReadCount(reader);
+                    }
+                }
+                using (OracleDataReader reader2 = OracleHelper.ExecuteReader(PubConstant.doOracleSql(PageIndex, pageSize, recordcount, "select * " + builder.ToString()).ToString() + " order by CREATE_TIME ", OracleHelper.Connection ))
+                {
+                    while (reader2.Read())
+                    {
+                        SysDictType o = new SysDictType();
+                        if (this.ReadInfo(reader2, o))
+                        {
+                            list.Add(o);
+                        }
+                    }
+                }
+            }
+            catch (Exception exception)
+            {
+                LogHelper.Error(exception);
+                return list;
+            }
+            return list;
+
+        }
+
+        //鏍规嵁鏉′欢鑾峰彇瀛楀吀绫诲瀷鍒楄〃
+        public List<SysDictType> getAllList(SysDictType bean)
+        {
+
+            List<SysDictType> list = new List<SysDictType>();
+            try
+            {
+                StringBuilder builder = new StringBuilder();
+                builder.Append("from SYS_DICT_TYPE where 1=1 AND DEL_FLAG=0 ");
+                if (!string.IsNullOrEmpty(bean.DictName))
+                {
+                    builder.Append(" and DICT_NAME like '%" + bean.DictName + "%'");
+                }
+
+                if (bean.Status == -1)
+                {
+                    builder.Append(" AND (STATUS != " + bean.Status + " OR STATUS IS NULL) ");
+                }
+                else
+                {
+                    builder.Append(" AND STATUS = " + bean.Status + " ");
+                }
+
+                using (OracleDataReader reader = OracleHelper.ExecuteReader("select * " + builder.ToString() + " order by CREATE_TIME ", OracleHelper.Connection))
+                {
+                    while (reader.Read())
+                    {
+                        SysDictType o = new SysDictType();
+                        if (this.ReadInfo(reader, o))
+                        {
+                            list.Add(o);
+                        }
+                    }
+                }
+            }
+            catch (Exception exception)
+            {
+                LogHelper.Error(exception);
+                return list;
+            }
+            return list;
+
+        }
+
+        //娣诲姞瀛楀吀绫诲瀷
+        public bool Add(SysDictType o)
+        {
+            StringBuilder stringBuilder = new StringBuilder();
+            stringBuilder.Append("INSERT INTO SYS_DICT_TYPE ( ");
+            stringBuilder.Append(" DICT_ID, DICT_TYPE, DICT_NAME, STATUS, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME, REMARK ");
+            stringBuilder.Append(" ) ");
+            stringBuilder.Append(" VALUES (:DICT_ID, :DICT_TYPE, :DICT_NAME, :STATUS, :CREATE_BY, :CREATE_TIME, :UPDATE_BY, :UPDATE_TIME, :REMARK ");
+            stringBuilder.Append("  ) ");
+
+            string sql = stringBuilder.ToString();
+
+            return OracleHelper.ExecuteSql(sql, 
+                OracleHelper.Connection,
+                new OracleParameter(":DICT_ID", (object)o.DictId),
+                new OracleParameter(":DICT_TYPE", (object)o.DictType),
+                new OracleParameter(":DICT_NAME", (object)o.DictName),
+                new OracleParameter(":STATUS", (object)o.Status),
+                new OracleParameter(":CREATE_BY", (object)o.CreateBy),
+                new OracleParameter(":CREATE_TIME", (object)o.CreateTime),
+                new OracleParameter(":UPDATE_BY", (object)o.UpdateBy),
+                new OracleParameter(":UPDATE_TIME", (object)o.UpdateTime),
+                new OracleParameter(":REMARK", (object)o.Remark)
+                ) > 0;
+        }
+
+        //鍒犻櫎
+        public bool Delete(SysDictType o)
+        {
+            if (o==null || string.IsNullOrEmpty(o.DictId) )
+                return false;
+            //return OracleHelper.ExecuteSql("delete from SYS_DICT_TYPE where DICT_ID=:DICT_ID", OracleHelper.Connection, new OracleParameter(":DICT_ID", (object)dictId)) > 0;
+            return OracleHelper.ExecuteSql("UPDATE SYS_DICT_TYPE SET DEL_FLAG = 2, UPDATE_BY=:UPDATE_BY, UPDATE_TIME=:UPDATE_TIME where DICT_ID=:DICT_ID", OracleHelper.Connection, new OracleParameter(":UPDATE_BY", (object)o.UpdateBy), new OracleParameter(":UPDATE_TIME", (object)o.UpdateTime), new OracleParameter(":DICT_ID", (object)o.DictId)) > 0;
+        }
+
+        //鏇存柊淇℃伅
+        public bool Update(SysDictType o)
+        {
+            OracleParameter[] cmdParms = new OracleParameter[] {
+                new OracleParameter(":DICT_ID", (object)o.DictId),
+                new OracleParameter(":DICT_TYPE", (object)o.DictType),
+                new OracleParameter(":DICT_NAME", (object)o.DictName),
+                new OracleParameter(":STATUS", (object)o.Status),
+                new OracleParameter(":CREATE_BY", (object)o.CreateBy),
+                new OracleParameter(":CREATE_TIME", (object)o.CreateTime),
+                new OracleParameter(":UPDATE_BY", (object)o.UpdateBy),
+                new OracleParameter(":UPDATE_TIME", (object)o.UpdateTime),
+                new OracleParameter(":REMARK", (object)o.Remark)
+            };
+
+            StringBuilder stringBuilder = new StringBuilder();
+            stringBuilder.Append("UPDATE SYS_DICT_TYPE SET ");
+            stringBuilder.Append(" DICT_TYPE=:DICT_TYPE ");
+            stringBuilder.Append(" , DICT_NAME =:DICT_NAME ");
+            stringBuilder.Append(" , STATUS =:STATUS ");
+            stringBuilder.Append(" , CREATE_BY =:CREATE_BY ");
+            stringBuilder.Append(" , CREATE_TIME =:CREATE_TIME ");
+            stringBuilder.Append(" , UPDATE_BY =:UPDATE_BY ");
+            stringBuilder.Append(" , UPDATE_TIME =:UPDATE_TIME ");
+            stringBuilder.Append(" , REMARK=:REMARK ");
+            stringBuilder.Append(" WHERE DICT_ID=:DICT_ID ");
+
+            string sql = stringBuilder.ToString();
+            return (OracleHelper.ExecuteSql(sql, OracleHelper.Connection, cmdParms) > 0);
+        }
+
+        //鑾峰彇淇℃伅
+        public SysDictType GetByDictId(string dictId)
+        {
+            SysDictType o = new SysDictType();
+            if (string.IsNullOrEmpty(dictId))
+                return o;
+            using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select * from SYS_DICT_TYPE where DICT_ID=:DICT_ID"), OracleHelper.Connection, new OracleParameter(":DICT_ID", (object)dictId)))
+            {
+                if (((DbDataReader)reader).Read())
+                {
+                    this.ReadInfo(reader, o);
+                    return o;
+                }
+            }
+            return o;
+        }
+
+        //鑾峰彇淇℃伅
+        public SysDictType GetByDictType(string dictType)
+        {
+            SysDictType o = new SysDictType();
+            if (string.IsNullOrEmpty(dictType))
+                return o;
+            using (OracleDataReader reader = OracleHelper.ExecuteReader(string.Format("select * from SYS_DICT_TYPE where DICT_TYPE=:DICT_TYPE"), OracleHelper.Connection, new OracleParameter(":DICT_TYPE", (object)dictType)))
+            {
+                if (((DbDataReader)reader).Read())
+                {
+                    this.ReadInfo(reader, o);
+                    return o;
+                }
+            }
+            return o;
+        }
+
+        //鏇存柊鍚敤鎴栧仠鐢�
+        public bool UpdateStatus(SysDictType o)
+        {
+            if (o==null || string.IsNullOrEmpty(o.DictId))
+                return false;
+            return OracleHelper.ExecuteSql("UPDATE SYS_DICT_TYPE SET STATUS=:STATUS, UPDATE_BY=:UPDATE_BY, UPDATE_TIME=:UPDATE_TIME where DICT_ID=:DICT_ID", OracleHelper.Connection, new OracleParameter(":STATUS", (object)o.Status), new OracleParameter(":UPDATE_BY", (object)o.UpdateBy), new OracleParameter(":UPDATE_TIME", (object)o.UpdateTime), new OracleParameter(":DICT_ID", (object)o.DictId)) > 0;
+        }
+
+        //鍒ゆ柇鏄惁鍦ㄤ骇鍝佷腑浣跨敤
+        public int SysDictTypeUseCount(string dictType)
+        {
+            string str = string.Format("SELECT count(*) as Count  from SYS_DICT_DATA where DICT_TYPE=:DICT_TYPE ");
+            List<OracleParameter> list = new List<OracleParameter>();
+            int num = 0;
+            using (OracleDataReader reader = OracleHelper.ExecuteReader(str.ToString(), OracleHelper.Connection, new OracleParameter(":DICT_TYPE", (object)dictType)))
+            {
+                while (((DbDataReader)reader).Read())
+                    num = this.ReadCount(reader);
+            }
+            return num;
+        }
+
+        //缁熻璁板綍鏁�
+        private int ReadCount(OracleDataReader reader)
+        {
+            OracleReaderWrapper wrapper = new OracleReaderWrapper(reader);
+            return wrapper.GetInt("count", 0);
+        }
+
+        //鏁版嵁灏佽
+        private bool ReadInfo(OracleDataReader reader, SysDictType o)
+        {
+            OracleReaderWrapper oracleReaderWrapper = new OracleReaderWrapper(reader);
+            o.DictId = oracleReaderWrapper.GetString("DICT_ID", "");
+            o.DictType = oracleReaderWrapper.GetString("DICT_TYPE", "");
+            o.DictName = oracleReaderWrapper.GetString("DICT_NAME", "");
+            o.DelFlag = oracleReaderWrapper.GetInt("DEL_FLAG", 0);
+            o.Status = oracleReaderWrapper.GetInt("STATUS", 0);
+            o.CreateBy = oracleReaderWrapper.GetString("CREATE_BY", "");
+            o.CreateTime = oracleReaderWrapper.GetDateTime("CREATE_TIME");
+            o.UpdateBy = oracleReaderWrapper.GetString("UPDATE_BY", "");
+            o.UpdateTime = oracleReaderWrapper.GetDateTime("UPDATE_TIME");
+            o.Remark = oracleReaderWrapper.GetString("REMARK", "");
+            return true;
+        }
+
+    }
+
+}
diff --git a/web/Dao/UserDao.cs b/web/Dao/UserDao.cs
index a2ba02d..e339782 100644
--- a/web/Dao/UserDao.cs
+++ b/web/Dao/UserDao.cs
@@ -130,6 +130,7 @@
             e.UserID = oracleReaderWrapper.GetInt("USER_ID", 0);
             e.Account = oracleReaderWrapper.GetString("ACCOUNT", "");
             e.Password = oracleReaderWrapper.GetString("PASSWORD", "");
+            e.Salt = oracleReaderWrapper.GetString("SALT", "");
             e.UserName = oracleReaderWrapper.GetString("USER_NAME", "");
             e.UserType = oracleReaderWrapper.GetInt("USER_TYPE", 1);
             e.ExpireTime = oracleReaderWrapper.GetDateTime("EXPIRE_TIME");
@@ -224,7 +225,7 @@
 
         public bool Update(SysUser o)//淇敼璐﹀彿
         {
-            return OracleHelper.ExecuteSql("update SYS_USER SET ACCOUNT=:ACCOUNT,PASSWORD=:PASSWORD,USER_NAME=:USER_NAME,USER_TYPE=:USER_TYPE,EXPIRE_TIME=:EXPIRE_TIME,REMARK=:REMARK,MOBILE=:MOBILE,EMAIL=:EMAIL,MOBILE_FLAG=:MOBILE_FLAG,EMAIL_FLAG=:EMAIL_FLAG,ISENCRYPTION=:ISENCRYPTION,ISVERIFICATION=:ISVERIFICATION,CLIENTIP=:CLIENTIP,CREATE_TIME=:CREATE_TIME WHERE USER_ID=:USER_ID", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)o.Account), new OracleParameter(":PASSWORD", (object)o.Password), new OracleParameter(":USER_NAME", (object)o.UserName), new OracleParameter(":USER_TYPE", (object)o.UserType), new OracleParameter(":EXPIRE_TIME", (object)o.ExpireTime), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":USER_ID", (object)o.UserID), new OracleParameter(":MOBILE", (object)o.Mobile), new OracleParameter(":EMAIL", (object)o.Email), new OracleParameter(":MOBILE_FLAG", (object)o.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)o.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)o.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)o.IsVerification), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CREATE_TIME", (object)o.CreateTime) ) > 0;
+            return OracleHelper.ExecuteSql("update SYS_USER SET ACCOUNT=:ACCOUNT, USER_NAME=:USER_NAME,USER_TYPE=:USER_TYPE,EXPIRE_TIME=:EXPIRE_TIME,REMARK=:REMARK,MOBILE=:MOBILE,EMAIL=:EMAIL,MOBILE_FLAG=:MOBILE_FLAG,EMAIL_FLAG=:EMAIL_FLAG,ISENCRYPTION=:ISENCRYPTION,ISVERIFICATION=:ISVERIFICATION,CLIENTIP=:CLIENTIP,CREATE_TIME=:CREATE_TIME WHERE USER_ID=:USER_ID", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)o.Account), new OracleParameter(":USER_NAME", (object)o.UserName), new OracleParameter(":USER_TYPE", (object)o.UserType), new OracleParameter(":EXPIRE_TIME", (object)o.ExpireTime), new OracleParameter(":REMARK", (object)o.Remark), new OracleParameter(":USER_ID", (object)o.UserID), new OracleParameter(":MOBILE", (object)o.Mobile), new OracleParameter(":EMAIL", (object)o.Email), new OracleParameter(":MOBILE_FLAG", (object)o.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)o.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)o.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)o.IsVerification), new OracleParameter(":CLIENTIP", (object)o.ClientIp), new OracleParameter(":CREATE_TIME", (object)o.CreateTime) ) > 0;
         }
 
         //鏇存柊鐘舵��
@@ -235,7 +236,7 @@
 
         public bool Add(SysUser e)//娣诲姞璐﹀彿
         {
-            return OracleHelper.ExecuteSql("INSERT INTO SYS_USER(USER_ID,ACCOUNT,PASSWORD, USER_NAME, USER_TYPE, EXPIRE_TIME,REMARK,MOBILE,EMAIL,MOBILE_FLAG,EMAIL_FLAG,ISENCRYPTION,ISVERIFICATION,CLIENTIP,CREATE_TIME) VALUES(SYS_USER_ID_SEQ.NextVal,:ACCOUNT,:PASSWORD, :USER_NAME,:USER_TYPE,:EXPIRE_TIME,:REMARK,:MOBILE,:EMAIL,:MOBILE_FLAG,:EMAIL_FLAG,:ISENCRYPTION,:ISVERIFICATION,:CLIENTIP,:CREATE_TIME)", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)e.Account), new OracleParameter(":PASSWORD", (object)e.Password), new OracleParameter(":USER_NAME", (object)e.UserName), new OracleParameter(":USER_TYPE", (object)e.UserType), new OracleParameter(":EXPIRE_TIME", (object)e.ExpireTime), new OracleParameter(":REMARK", (object)e.Remark), new OracleParameter(":MOBILE", (object)e.Mobile), new OracleParameter(":EMAIL", (object)e.Email), new OracleParameter(":MOBILE_FLAG", (object)e.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)e.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)e.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)e.IsVerification), new OracleParameter(":CLIENTIP", (object)e.ClientIp), new OracleParameter(":CREATE_TIME", (object)e.CreateTime) ) > 0;
+            return OracleHelper.ExecuteSql("INSERT INTO SYS_USER(USER_ID,ACCOUNT,PASSWORD, SALT, USER_NAME, USER_TYPE, EXPIRE_TIME,REMARK,MOBILE,EMAIL,MOBILE_FLAG,EMAIL_FLAG,ISENCRYPTION,ISVERIFICATION,CLIENTIP,CREATE_TIME) VALUES(SYS_USER_ID_SEQ.NextVal,:ACCOUNT,:PASSWORD, :SALT, :USER_NAME,:USER_TYPE,:EXPIRE_TIME,:REMARK,:MOBILE,:EMAIL,:MOBILE_FLAG,:EMAIL_FLAG,:ISENCRYPTION,:ISVERIFICATION,:CLIENTIP,:CREATE_TIME)", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)e.Account), new OracleParameter(":PASSWORD", (object)e.Password), new OracleParameter(":SALT", (object)e.Salt), new OracleParameter(":USER_NAME", (object)e.UserName), new OracleParameter(":USER_TYPE", (object)e.UserType), new OracleParameter(":EXPIRE_TIME", (object)e.ExpireTime), new OracleParameter(":REMARK", (object)e.Remark), new OracleParameter(":MOBILE", (object)e.Mobile), new OracleParameter(":EMAIL", (object)e.Email), new OracleParameter(":MOBILE_FLAG", (object)e.MobileFlag), new OracleParameter(":EMAIL_FLAG", (object)e.EmailFlag), new OracleParameter(":ISENCRYPTION", (object)e.IsEncryption), new OracleParameter(":ISVERIFICATION", (object)e.IsVerification), new OracleParameter(":CLIENTIP", (object)e.ClientIp), new OracleParameter(":CREATE_TIME", (object)e.CreateTime) ) > 0;
         }
 
         public bool UpdatePassword(int userID, string oldPassword, string newPassword)
@@ -243,6 +244,12 @@
             return OracleHelper.ExecuteSql("update SYS_USER SET PASSWORD=:NEWPASSWORD,ISENCRYPTION=1 WHERE USER_ID=:USER_ID AND PASSWORD=:OLDPASSWORD", OracleHelper.Connection, new OracleParameter(":NEWPASSWORD", (object)newPassword), new OracleParameter(":OLDPASSWORD", (object)oldPassword), new OracleParameter(":USER_ID", (object)userID)) >= 1;
         }
 
+        //鍔犲瘑鐩愪慨鏀瑰瘑鐮�
+        public bool UpdatePwd(string account, string password)
+        {
+            return OracleHelper.ExecuteSql("UPDATE SYS_USER SET PASSWORD=:PASSWORD WHERE ACCOUNT=:ACCOUNT", OracleHelper.Connection, new OracleParameter(":ACCOUNT", (object)account), new OracleParameter(":PASSWORD", (object)password) ) > 0;
+        }
+
         public void UpdatePermission(int userid, string[] menuIDArray)
         {
             List<KeyValuePair<string, OracleParameter[]>> list = new List<KeyValuePair<string, OracleParameter[]>>();
diff --git a/web/Lib/Common.dll b/web/Lib/Common.dll
index 2ecc5df..19116cd 100644
--- a/web/Lib/Common.dll
+++ b/web/Lib/Common.dll
Binary files differ
diff --git a/web/Lib/Common.pdb b/web/Lib/Common.pdb
index 06e0fa5..a96091a 100644
--- a/web/Lib/Common.pdb
+++ b/web/Lib/Common.pdb
Binary files differ
diff --git a/web/Lib/Dao.dll b/web/Lib/Dao.dll
index 3164e3c..69e8ae3 100644
--- a/web/Lib/Dao.dll
+++ b/web/Lib/Dao.dll
Binary files differ
diff --git a/web/Lib/Dao.pdb b/web/Lib/Dao.pdb
index 4ab63fc..8f45c1e 100644
--- a/web/Lib/Dao.pdb
+++ b/web/Lib/Dao.pdb
Binary files differ
diff --git a/web/Lib/Model.dll b/web/Lib/Model.dll
index 33cce63..141ef2b 100644
--- a/web/Lib/Model.dll
+++ b/web/Lib/Model.dll
Binary files differ
diff --git a/web/Lib/Model.pdb b/web/Lib/Model.pdb
index ed58be0..432eea9 100644
--- a/web/Lib/Model.pdb
+++ b/web/Lib/Model.pdb
Binary files differ
diff --git a/web/Model/Model.csproj b/web/Model/Model.csproj
index e913b4e..4692f68 100644
--- a/web/Model/Model.csproj
+++ b/web/Model/Model.csproj
@@ -69,6 +69,8 @@
     <Compile Include="Model\GwMoRoute.cs" />
     <Compile Include="Model\GwOpGroupItem.cs" />
     <Compile Include="Model\GwOrderAudit.cs" />
+    <Compile Include="Model\SysDictData.cs" />
+    <Compile Include="Model\SysDictType.cs" />
     <Compile Include="Model\SysFlowNode.cs" />
     <Compile Include="Model\SysFlow.cs" />
     <Compile Include="Model\GwOrder.cs" />
diff --git a/web/Model/Model/GwClient.cs b/web/Model/Model/GwClient.cs
index 3452ccb..4a167aa 100644
--- a/web/Model/Model/GwClient.cs
+++ b/web/Model/Model/GwClient.cs
@@ -21,6 +21,7 @@
         private string _company;
         private string _remark;
         private string _password;
+        public string Salt { get; set; } //瀵嗙爜鍔犲瘑鐩�
 
 
         private string _parentId;//涓婄骇ID
diff --git a/web/Model/Model/GwOrder.cs b/web/Model/Model/GwOrder.cs
index f8ed56d..b9497dd 100644
--- a/web/Model/Model/GwOrder.cs
+++ b/web/Model/Model/GwOrder.cs
@@ -19,6 +19,8 @@
 
         public string ProductId { get; set; }
 
+        public string ProductName { get; set; }
+
         public string ComboId { get; set; }
 
         public int BasicNum { get; set; }
diff --git a/web/Model/Model/GwSp.cs b/web/Model/Model/GwSp.cs
index 8df86b1..7866540 100644
--- a/web/Model/Model/GwSp.cs
+++ b/web/Model/Model/GwSp.cs
@@ -39,11 +39,25 @@
 
         private int _TransferFlag;//鎼哄彿杞綉璁剧疆銆�0鍚敤锛�1鍋滅敤
 
+        public string Company { get; set; }  //鍏徃鍚嶇О
         public string ProductId { get; set; }  //浜у搧ID
+        public string ProductName { get; set; }  //浜у搧鍚嶇О
         public int BasicNum { get; set; }  //鍩烘湰鏉℃暟
         public int GivingNum { get; set; }  //璧犻�佹潯鏁�
         public int DelFlag { get; set; }  //鍒犻櫎鏍囧織锛�0-姝e父锛�2-閫昏緫鍒犻櫎
         public int IsAutoReturn { get; set; }  //鏄惁鑷姩杩旇繕: 0-鍚�; 1-鏄�.
+        public int SubPackageNum { get; set; }  //鍒嗗寘鏉℃暟: 琛ㄧず鍚庡彴鏁版嵁鍒嗗寘鏁伴噺锛屼笉鑳戒负0锛屽惁鍒欐病鍔炴硶鍒嗗寘锛岄粯璁�4000涓彿鐮佷竴涓暟鎹寘,寤鸿鍦�2000鑷�5000
+        public int SingleSubmitMinRestrict { get; set; }  //鐭俊鍗曟鎻愪氦鏈�灏忛檺鍒�:榛樿0琛ㄧず涓嶉檺鍒讹紝鍚敤闄愬埗鍚庡皬浜庤鎻愪氦鏉℃暟鐨勫皢琚嫆缁濄��
+        public int IsDispalyPrice { get; set; }  //鏄惁鏄剧ず鍗曚环
+        public int DeductionMode { get; set; }  //鎵h垂鏂瑰紡
+        public int IsSendAudit { get; set; }  //鍙戦�佹槸鍚﹀鏍�
+        public int BelowNumAudit { get; set; }  //浣庝簬鏉℃暟瀹℃牳
+        public int AboveNumAudit { get; set; }  //楂樹簬鏉℃暟瀹℃牳
+        public int IsCumulativeAudit { get; set; }  //鏄惁绱瀹℃牳
+        public int CumulativeAuditNum { get; set; }  //绱鏉℃暟瀹℃牳
+        public int CumulativeAuditTime { get; set; }  //绱鏃堕棿锛堝皬鏃讹級
+        public int IsSyncChildSendAudit { get; set; }  //鏄惁鍚屾瀛愯处鍙�(鍙戦�佸鏍�)
+
 
         public int Id
         {
diff --git a/web/Model/Model/SysDictData.cs b/web/Model/Model/SysDictData.cs
new file mode 100644
index 0000000..ffbc34b
--- /dev/null
+++ b/web/Model/Model/SysDictData.cs
@@ -0,0 +1,33 @@
+锘� 
+using System;
+
+namespace Model
+{
+    //瀛楀吀鏁版嵁琛�
+    public class SysDictData
+  {
+        public string DictId { get; set; }  //涓婚敭ID
+
+        public string DictValue { get; set; }    //瀛楀吀閿��
+
+        public string DictLabel { get; set; }    //瀛楀吀鏍囩
+
+        public string DictType { get; set; }    //瀛楀吀绫诲瀷缂栫爜
+
+        public int DictSort { get; set; } //瀛楀吀鎺掑簭
+
+        public int DelFlag { get; set; } //鐘舵�侊細0-鍋滅敤锛�1-姝e父
+
+        public int Status { get; set; } //鐘舵�侊細0-鍋滅敤锛�1-姝e父
+
+        public string CreateBy { get; set; }    //鍒涘缓鑰�
+
+        public DateTime CreateTime { get; set; }  //鍒涘缓鏃堕棿
+
+        public string UpdateBy { get; set; }    //鏇存柊鑰�
+
+        public DateTime UpdateTime { get; set; }   //鏇存柊鏃堕棿
+
+        public string Remark { get; set; }  //澶囨敞
+  }
+}
diff --git a/web/Model/Model/SysDictType.cs b/web/Model/Model/SysDictType.cs
new file mode 100644
index 0000000..460d658
--- /dev/null
+++ b/web/Model/Model/SysDictType.cs
@@ -0,0 +1,29 @@
+锘� 
+using System;
+
+namespace Model
+{
+    //瀛楀吀绫诲瀷琛�
+    public class SysDictType
+  {
+        public string DictId { get; set; }  //涓婚敭ID
+
+        public string DictType { get; set; }    //瀛楀吀绫诲瀷缂栫爜
+
+        public string DictName { get; set; }    //瀛楀吀绫诲瀷鍚嶇О
+
+        public int DelFlag { get; set; } //鐘舵�侊細0-鍋滅敤锛�1-姝e父
+
+        public int Status { get; set; } //鐘舵�侊細0-鍋滅敤锛�1-姝e父
+
+        public string CreateBy { get; set; }    //鍒涘缓鑰�
+
+        public DateTime CreateTime { get; set; }  //鍒涘缓鏃堕棿
+
+        public string UpdateBy { get; set; }    //鏇存柊鑰�
+
+        public DateTime UpdateTime { get; set; }   //鏇存柊鏃堕棿
+
+        public string Remark { get; set; }  //澶囨敞
+  }
+}
diff --git a/web/Model/Model/SysUser.cs b/web/Model/Model/SysUser.cs
index c4d43cc..a09d921 100644
--- a/web/Model/Model/SysUser.cs
+++ b/web/Model/Model/SysUser.cs
@@ -14,6 +14,8 @@
 
         public string Password { get; set; }
 
+        public string Salt { get; set; }   //鍔犲瘑鐩�
+
         public string UserName { get; set; }
 
         public DateTime ExpireTime { get; set; }
diff --git a/web/web/Bin/App_Code.dll b/web/web/Bin/App_Code.dll
index f2907f5..31377bf 100644
--- a/web/web/Bin/App_Code.dll
+++ b/web/web/Bin/App_Code.dll
Binary files differ
diff --git a/web/web/Bin/App_Code.pdb b/web/web/Bin/App_Code.pdb
index b948e2f..c315af5 100644
--- a/web/web/Bin/App_Code.pdb
+++ b/web/web/Bin/App_Code.pdb
Binary files differ
diff --git a/web/web/Bin/Common.dll b/web/web/Bin/Common.dll
index 2ecc5df..19116cd 100644
--- a/web/web/Bin/Common.dll
+++ b/web/web/Bin/Common.dll
Binary files differ
diff --git a/web/web/Bin/Common.pdb b/web/web/Bin/Common.pdb
index 06e0fa5..a96091a 100644
--- a/web/web/Bin/Common.pdb
+++ b/web/web/Bin/Common.pdb
Binary files differ
diff --git a/web/web/Bin/Dao.dll b/web/web/Bin/Dao.dll
index 3164e3c..69e8ae3 100644
--- a/web/web/Bin/Dao.dll
+++ b/web/web/Bin/Dao.dll
Binary files differ
diff --git a/web/web/Bin/Dao.pdb b/web/web/Bin/Dao.pdb
index 4ab63fc..8f45c1e 100644
--- a/web/web/Bin/Dao.pdb
+++ b/web/web/Bin/Dao.pdb
Binary files differ
diff --git a/web/web/Bin/Model.dll b/web/web/Bin/Model.dll
index 33cce63..141ef2b 100644
--- a/web/web/Bin/Model.dll
+++ b/web/web/Bin/Model.dll
Binary files differ
diff --git a/web/web/Bin/Model.pdb b/web/web/Bin/Model.pdb
index ed58be0..432eea9 100644
--- a/web/web/Bin/Model.pdb
+++ b/web/web/Bin/Model.pdb
Binary files differ
diff --git a/web/web/ExportDocument.aspx.cs b/web/web/ExportDocument.aspx.cs
index 79b9573..6fea544 100644
--- a/web/web/ExportDocument.aspx.cs
+++ b/web/web/ExportDocument.aspx.cs
@@ -196,7 +196,7 @@
 
         Model.GwClient x = clientlist.Find(delegate(Model.GwClient client) { return client.ClientID == clientID; });
 
-        return x == null ? string.Format("{0}", clientID) : string.Format("{0}-{1}", x.ClientID, x.ClientName);
+        return x == null ? string.Format("{0}", clientID) : string.Format("{0}-{1}", x.ClientID, x.Company);
     }
 
 
diff --git a/web/web/GwClient.ashx b/web/web/GwClient.ashx
index 47443d7..98c3fe2 100644
--- a/web/web/GwClient.ashx
+++ b/web/web/GwClient.ashx
@@ -141,7 +141,7 @@
                             + "<td>"+ (item.Is_Enable == 1 ? "<span class='label label-primary'>鍚敤</span>" : "<span class='label label-default'>鍋滅敤</span>") + "</td>";
 
                     str += @"<td>";
-                        
+
                     if (item.Is_Enable == 1)
                     {
                         //string loginStr = "http://" + serverIp + ":" + clientPort + "/Attachedlogin.aspx?action=Attachedlogin&account=" + item.Account + "&password=" + item.Password;
@@ -323,8 +323,10 @@
         {
             throw new ArgumentException("鐧诲綍瀵嗙爜涓嶈兘涓虹┖锛屼笖蹇呴』涓�4-10浣嶈嫳鏂囨垨鏁板瓧瀛楃缁勫悎锛�");
         }
+        GwClient gwClient = _Dao.Get(clientID);
 
         //瀵嗙爜MD5鍔犲瘑锛�
+        newPwd += gwClient.Salt;
         newPwd = DataHelper.MD5Hex(newPwd);
 
         _Dao.UpdatePassword(clientID, newPwd);
@@ -404,7 +406,7 @@
         int id = Int32.Parse(context.GetString("id"));
         string clientID = context.GetString("clientID");
         string company = context.GetString("company");
-        string password = context.GetString("password");
+        //string password = context.GetString("password");
         string clientName = context.GetString("clientName");
         string address = context.GetString("address");
         string telephone = context.GetString("telephone");
@@ -417,7 +419,7 @@
         string chargeType = context.GetString("chargeType");
         string smsStatusReport = context.GetString("smsStatusReport");
         string mmsStatusReport = context.GetString("mmsStatusReport");
-            
+
         string isEnableWhite = context.GetString("isEnableWhite");
         string isEnableBlack = context.GetString("isEnableBlack");
         string isRemoteLoginNotice = context.GetString("isRemoteLoginNotice");
@@ -528,7 +530,7 @@
         client.ChargeType = string.IsNullOrEmpty(chargeType) ? 0 : int.Parse(chargeType);
         client.SmsStatusReport = string.IsNullOrEmpty(smsStatusReport) ? 0 : int.Parse(smsStatusReport);
         client.MmsStatusReport = string.IsNullOrEmpty(mmsStatusReport) ? 0 : int.Parse(mmsStatusReport);
-            
+
         client.IsEnableWhite = string.IsNullOrEmpty(isEnableWhite) ? 0 : int.Parse(isEnableWhite);
         client.IsEnableBlack = string.IsNullOrEmpty(isEnableBlack) ? 0 : int.Parse(isEnableBlack);
         client.IsRemoteLoginNotice = string.IsNullOrEmpty(isRemoteLoginNotice) ? 0 : int.Parse(isRemoteLoginNotice);
@@ -539,7 +541,7 @@
         client.IsLoginIpAllowGather = isLoginIpAllowGather;
         client.IsLoginCityRestrict = string.IsNullOrEmpty(isLoginCityRestrict) ? 0 : int.Parse(isLoginCityRestrict);
         client.IsLoginCityAllowGather = isLoginCityAllowGather;
-                        
+
         client.PermissionData = permissionData;
 
         _Dao.Update(client);
@@ -564,8 +566,8 @@
         string financialStaff = context.GetString("financialStaff");
         string chargeType = context.GetString("chargeType");
         string smsStatusReport = context.GetString("smsStatusReport");
-        string mmsStatusReport = context.GetString("mmsStatusReport");            
-            
+        string mmsStatusReport = context.GetString("mmsStatusReport");
+
         string isEnableWhite = context.GetString("isEnableWhite");
         string isEnableBlack = context.GetString("isEnableBlack");
         string isRemoteLoginNotice = context.GetString("isRemoteLoginNotice");
@@ -691,12 +693,15 @@
             }
         }
 
+        string salt = DataConverter.getRandom(6);
+        password += salt;
         //瀵嗙爜鍔犲瘑
         password = DataHelper.MD5Hex(password);
 
         var client = new Model.GwClient();
         client.ClientID = clientID;
         client.Password = password;
+        client.Salt = salt;
 
         client.ClientName = clientName;
         client.Address = address;
@@ -713,8 +718,8 @@
         client.FinancialStaff = financialStaff;
         client.ChargeType = string.IsNullOrEmpty(chargeType) ? 0 : int.Parse(chargeType);
         client.SmsStatusReport = string.IsNullOrEmpty(smsStatusReport) ? 0 : int.Parse(smsStatusReport);
-        client.MmsStatusReport = string.IsNullOrEmpty(mmsStatusReport) ? 0 : int.Parse(mmsStatusReport);            
-            
+        client.MmsStatusReport = string.IsNullOrEmpty(mmsStatusReport) ? 0 : int.Parse(mmsStatusReport);
+
         client.IsEnableWhite = string.IsNullOrEmpty(isEnableWhite) ? 0 : int.Parse(isEnableWhite);
         client.IsEnableBlack = string.IsNullOrEmpty(isEnableBlack) ? 0 : int.Parse(isEnableBlack);
         client.IsRemoteLoginNotice = string.IsNullOrEmpty(isRemoteLoginNotice) ? 0 : int.Parse(isRemoteLoginNotice);
diff --git a/web/web/GwClient.aspx b/web/web/GwClient.aspx
index b424b71..53dafeb 100644
--- a/web/web/GwClient.aspx
+++ b/web/web/GwClient.aspx
@@ -259,25 +259,29 @@
                 $(document).on("click", ".action-updateProduct", function () {
                     var productIdArray = [];
 
-                    $("#updateProductDialog #_ProductId").each(function () {
-                        if ($(this).is(":checked")) {
-                            productIdArray.push($(this).val());
-                        }
-                    });
+                    mytek.confirm("鏄惁闇�瑕佷慨鏀瑰鎴峰垎閰嶄釜鎬т骇鍝侊紵", "纭鍒嗛厤涓�т骇鍝侊紝璇疯皑鎱庢搷浣滐紒", function (b) {
+                        if (b) {
+                            $("#updateProductDialog #_ProductId").each(function () {
+                                if ($(this).is(":checked")) {
+                                    productIdArray.push($(this).val());
+                                }
+                            });
 
-                    //var clientId = $("#updateProductDialog").data("id");
-                    var clientId = $("#updateProductDialog input[name='clientID']").val();
-                    $.ajax({
-                        url: "GwClient.ashx",
-                        type: "POST",
-                        data: { action: "updateProduct", clientId: clientId, productIdArray: $.toJSON(productIdArray) },
-                        success: function (result) {
-                            if (result.OK) {
-                                $("#updateProductDialog").modal("hide");
-                                loadPageList();
-                            } else {
-                                mytek.alert(result.Message, result.OK);
-                            }
+                            //var clientId = $("#updateProductDialog").data("id");
+                            var clientId = $("#updateProductDialog input[name='clientID']").val();
+                            $.ajax({
+                                url: "GwClient.ashx",
+                                type: "POST",
+                                data: { action: "updateProduct", clientId: clientId, productIdArray: $.toJSON(productIdArray) },
+                                success: function (result) {
+                                    if (result.OK) {
+                                        $("#updateProductDialog").modal("hide");
+                                        loadPageList();
+                                    } else {
+                                        mytek.alert(result.Message, result.OK);
+                                    }
+                                }
+                            });
                         }
                     });
                 });
@@ -431,6 +435,10 @@
             //娣诲姞瀹㈡埛锛氬鍒跺瘑鐮�
             $(document).on("click", ".action-copyPwd", function () {
                 var value = $("#password").val();
+                if (value == "") {
+                    mytek.alert("璇风敓鎴愬瘑鐮侊紒");
+                    return false;
+                }
                 // for ie
                 if (window.clipboardData) {
                     window.clipboardData.clearData();
@@ -466,6 +474,11 @@
             //淇敼瀵嗙爜锛氬鍒跺瘑鐮�
             $(document).on("click", ".action-copyNewPwd", function () {
                 var value = $("#newPwd").val();
+                if (value == "") {
+                    mytek.alert("璇风敓鎴愬瘑鐮侊紒");
+                    return false;
+                }
+
                 // for ie
                 if (window.clipboardData) {
                     window.clipboardData.clearData();
diff --git a/web/web/GwOrder.ashx b/web/web/GwOrder.ashx
index b1a5ef4..7500c6c 100644
--- a/web/web/GwOrder.ashx
+++ b/web/web/GwOrder.ashx
@@ -817,23 +817,24 @@
 
             }
 
+            
+            GwOrder gwOrder = new GwOrder();
 
             GwClient gwClient = new GwClient();
             using (GwClientDao gwClientDao = new GwClientDao())
             {
                 gwClient = gwClientDao.Get(gwSp.ClientID);
+                gwOrder.Company = gwClient.Company;
+                gwOrder.Balance = long.Parse(gwClient.Balance.ToString() );    //浣欓
             }
 
-
-            GwOrder gwOrder = new GwOrder();
                 gwOrder.SpId = gwSp.SpID;
                 gwOrder.ClientId = gwSp.ClientID;
                 gwOrder.ProductId = gwSp.ProductId;
+                gwOrder.ProductName = gwSp.ProductName;
                 gwOrder.Price = gwSp.Price;
                 gwOrder.BasicNum = gwSp.BasicNum;  //鍩烘湰鏉℃暟
-                gwOrder.GivingNum = gwSp.GivingNum;
-                
-                gwOrder.Balance = long.Parse(gwClient.Balance.ToString() );    //浣欓
+                gwOrder.GivingNum = gwSp.GivingNum;                
                 
             return new JsonPageResult(true, gwOrder);
         }
diff --git a/web/web/GwOrderAudit.aspx b/web/web/GwOrderAudit.aspx
index 55cf577..959674b 100644
--- a/web/web/GwOrderAudit.aspx
+++ b/web/web/GwOrderAudit.aspx
@@ -32,6 +32,31 @@
 
         $(".input-daterange").datepicker({ keyboardNavigation: !1, forceParse: !1, autoclose: !0 });
 
+        //鐘舵�佽浆鎹㈠悕绉�
+        function statusToName(status) {
+            if (status == "") {
+                return "";
+            }
+            else if (status == 0) {
+                return "寰呭鏍�";
+            }
+            else if (status == 1) {
+                return "瀹℃牳涓�";
+            }
+            else if (status == 2) {
+                return "瀹℃牳閫氳繃";
+            }
+            else if (status == 3) {
+                return "瀹℃牳涓嶉�氳繃";
+            }
+            else if (status == 4) {
+                return "鍙栨秷";
+            }
+            else {
+                return status;
+            }
+        }
+
         //鏌ョ湅鏄庣粏
         $(document).on("click", ".action-modal-detail", function () {
             var orderId = $(this).data("orderid");
@@ -43,8 +68,12 @@
                 //$("#orderDialog #action").val("detail");
                 $("#orderDialog #orderId").val(r.Message.OrderId).attr("readonly", "readonly");
                 $("#orderDialog #spId").val(r.Message.SpId).attr("readonly", "readonly");
-                $("#orderDialog #clientId").val(r.Message.ClientId).attr("disabled", "disabled");
-                $("#orderDialog #productId").val(r.Message.ProductId).attr("disabled", "disabled");
+                //$("#orderDialog #clientId").val(r.Message.ClientId).attr("disabled", "disabled");
+                $("#orderDialog #clientId").val(r.Message.ClientId);
+                $("#orderDialog #clientCompany").val(r.Message.Company).attr("readonly", "readonly");  //杞崲鍚嶇О
+                //$("#orderDialog #productId").val(r.Message.ProductId).attr("disabled", "disabled");
+                $("#orderDialog #productId").val(r.Message.ProductId);
+                $("#orderDialog #productName").val(r.Message.ProductName).attr("readonly", "readonly");  //杞崲鍚嶇О
                 //$("#orderDialog #comboId").val(r.Message.ComboId);
                 $("#orderDialog #basicNum").val(r.Message.BasicNum, 0).attr("readonly", "readonly");
                 $("#orderDialog #givingNum").val(r.Message.GivingNum, 0).attr("readonly", "readonly");
@@ -55,7 +84,9 @@
                 $("#orderDialog #beforeBalanceNum").val(r.Message.BeforeBalanceNum, 0).attr("readonly", "readonly");
                 $("#orderDialog #creator").val(r.Message.Creator).attr("readonly", "readonly");
                 $("#orderDialog #createTime").val(r.Message.CreateTime).attr("readonly", "readonly");
-                $("#orderDialog #status").val(r.Message.Status).attr("disabled", "disabled");
+                //$("#orderDialog #status").val(r.Message.Status).attr("disabled", "disabled");
+                $("#orderDialog #status").val(r.Message.Status);
+                $("#orderDialog #statusName").val(statusToName(r.Message.Status)).attr("disabled", "disabled");  //杞崲鍚嶇О
                 $("#orderDialog #remark").val(r.Message.Remark).attr("disabled", "disabled");
 
 
@@ -81,8 +112,12 @@
                 //$("#orderDialog #action").val("detail");
                 $("#orderDialog #orderId").val(r.Message.OrderId).attr("readonly", "readonly");
                 $("#orderDialog #spId").val(r.Message.SpId).attr("readonly", "readonly");
-                $("#orderDialog #clientId").val(r.Message.ClientId).attr("disabled", "disabled");
-                $("#orderDialog #productId").val(r.Message.ProductId).attr("disabled", "disabled");
+                //$("#orderDialog #clientId").val(r.Message.ClientId).attr("disabled", "disabled");
+                $("#orderDialog #clientId").val(r.Message.ClientId);
+                $("#orderDialog #clientCompany").val(r.Message.Company).attr("disabled", "disabled");  //杞崲鍚嶇О
+                //$("#orderDialog #productId").val(r.Message.ProductId).attr("disabled", "disabled");
+                $("#orderDialog #productId").val(r.Message.ProductId);
+                $("#orderDialog #productName").val(r.Message.ProductName).attr("disabled", "disabled");  //杞崲鍚嶇О
                 //$("#orderDialog #comboId").val(r.Message.ComboId);
                 $("#orderDialog #basicNum").val(r.Message.BasicNum, 0).attr("readonly", false);
                 $("#orderDialog #givingNum").val(r.Message.GivingNum, 0).attr("readonly", false);
@@ -93,7 +128,9 @@
                 $("#orderDialog #beforeBalanceNum").val(r.Message.BeforeBalanceNum, 0).attr("readonly", "readonly");
                 $("#orderDialog #creator").val(r.Message.Creator).attr("readonly", "readonly");
                 $("#orderDialog #createTime").val(r.Message.CreateTime).attr("readonly", "readonly");
-                $("#orderDialog #status").val(r.Message.Status).attr("disabled", "disabled");
+                //$("#orderDialog #status").val(r.Message.Status).attr("disabled", "disabled");
+                $("#orderDialog #status").val(r.Message.Status);
+                $("#orderDialog #statusName").val(statusToName(r.Message.Status)).attr("disabled", "disabled");  //杞崲鍚嶇О
                 $("#orderDialog #remark").val(r.Message.Remark).attr("disabled", "disabled");
 
                 $("#orderDialog #auditReason").val(r.Message.AuditReason);
@@ -320,18 +357,32 @@
                             <label class="col-sm-2 control-label">
                                 瀹㈡埛璐﹀彿</label>
                             <div class="col-sm-4 ">
+                                <!--
                                 <select name="clientId" id="clientId" class="form-control">
-                                    <%=GetClientOptions("0")%>
+                                    <!%=GetClientOptions("0")%>
                                 </select>
+                                -->
+                                <input type="text" class="form-control" name="clientId" id="clientId" value="" readonly="readonly" />
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                鍏徃鍚嶇О</label>
+                            <div class="col-sm-4 ">
+                                <input type="text" class="form-control" name="clientCompany" id="clientCompany" value="" readonly="readonly" />
                             </div>
                         </div>
                         <div class="form-group">
                             <label class="col-sm-2 control-label">
                                 浜у搧鍚嶇О</label>
                             <div class="col-sm-4 ">
+                                <!--
                                 <select name="productId" id="productId" class="form-control">
-                                    <%=GetProductOptions("0")%>
+                                    <!%=GetProductOptions("0")%>
                                 </select>
+                                -->
+                                <input type="text" class="form-control" name="productName" id="productName" value="" readonly="readonly" />
+                                <input type="hidden" class="form-control" name="productId" id="productId" value="" />
                             </div>
                         </div>
                         <%--
@@ -438,6 +489,7 @@
                             <label class="col-sm-2 control-label">
                                 鐘舵��</label>
                             <div class="col-sm-4 ">
+                                <!--
                                 <select name="status" id="status" class="form-control">
                                     <option value=""></option>
                                     <option value="0">寰呭鏍�</option>
@@ -446,6 +498,9 @@
                                     <option value="3">瀹℃牳涓嶉�氳繃</option>
                                     <option value="4">鍙栨秷</option>
                                 </select>
+                                -->
+                                <input type="text" class="form-control" name="statusName" id="statusName" value="" />
+                                <input type="hidden" class="form-control" name="status" id="status" value="" />
                             </div>
                         </div>
                         <div class="form-group">
diff --git a/web/web/GwOrderAudit.aspx.cs b/web/web/GwOrderAudit.aspx.cs
index 85d8bb5..d9472df 100644
--- a/web/web/GwOrderAudit.aspx.cs
+++ b/web/web/GwOrderAudit.aspx.cs
@@ -157,7 +157,7 @@
         StringBuilder stringBuilder = new StringBuilder();
         if (this.GwClientList.Count == 0)
             return "<option value='0'>鏃�</option>";
-        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)0, (object)"鏃�");
+        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)"", (object)"鏃�");
         foreach (GwClient bean in this.GwClientList)
         {
             if (clientId.Equals(bean.ClientID))
@@ -168,5 +168,56 @@
         return stringBuilder.ToString();
     }
 
+    //浜у搧ID杞崲鍚嶇О
+    public string ProductIdToName(string productId)
+    {
+        if (this.GwProductList.Count == 0)
+            return productId;
+        foreach (GwProduct bean in this.GwProductList)
+        {
+            if (productId.Equals(bean.Name))
+                return bean.Name;
+            else
+                continue;
+        }
+
+        return productId;
+    }
+
+    //瀹㈡埛ID杞崲鍚嶇О
+    public string ClientIdToName(string clientId)
+    {
+        if (this.GwClientList.Count == 0)
+            return clientId;
+        foreach (GwClient bean in this.GwClientList)
+        {
+            if (clientId.Equals(bean.ClientID))
+                return bean.Company;
+            else
+                continue;
+        }
+
+        return clientId;
+    }
+
+    //鐘舵�佽浆鎹㈠悕绉�
+    public string StatusToName(string status)
+    {
+        if (string.IsNullOrEmpty(status))
+            return "";
+        else if (status.Equals("0"))
+            return "寰呭鏍�";
+        else if (status.Equals("1"))
+            return "瀹℃牳涓�";
+        else if (status.Equals("2"))
+            return "瀹℃牳閫氳繃";
+        else if (status.Equals("3"))
+            return "瀹℃牳涓嶉�氳繃";
+        else if (status.Equals("4"))
+            return "鍙栨秷";
+        else
+            return status;
+    }
+
 }
  
\ No newline at end of file
diff --git a/web/web/GwOrderComplete.aspx b/web/web/GwOrderComplete.aspx
index 1eea045..5134d50 100644
--- a/web/web/GwOrderComplete.aspx
+++ b/web/web/GwOrderComplete.aspx
@@ -32,6 +32,31 @@
 
         $(".input-daterange").datepicker({ keyboardNavigation: !1, forceParse: !1, autoclose: !0 });
 
+        //鐘舵�佽浆鎹㈠悕绉�
+        function statusToName(status) {
+            if (status == "") {
+                return "";
+            }
+            else if (status == 0) {
+                return "寰呭鏍�";
+            }
+            else if (status == 1) {
+                return "瀹℃牳涓�";
+            }
+            else if (status == 2) {
+                return "瀹℃牳閫氳繃";
+            }
+            else if (status == 3) {
+                return "瀹℃牳涓嶉�氳繃";
+            }
+            else if (status == 4) {
+                return "鍙栨秷";
+            }
+            else {
+                return status;
+            }
+        }
+
         $(document).on("click", ".action-modal-detail", function () {
             var orderId = $(this).data("orderid");
             $("#orderDialog .modal-title").text("璁㈠崟鏄庣粏");
@@ -42,19 +67,25 @@
                 //$("#orderDialog #action").val("detail");
                 $("#orderDialog #orderId").val(r.Message.OrderId).attr("readonly", "readonly");
                 $("#orderDialog #spId").val(r.Message.SpId).attr("readonly", "readonly");
-                $("#orderDialog #clientId").val(r.Message.ClientId).attr("disabled", "disabled");
-                $("#orderDialog #productId").val(r.Message.ProductId).attr("disabled", "disabled");
+                //$("#orderDialog #clientId").val(r.Message.ClientId).attr("disabled", "disabled");
+                $("#orderDialog #clientId").val(r.Message.ClientId);
+                $("#orderDialog #clientCompany").val(r.Message.Company).attr("disabled", "disabled");  //杞崲鍚嶇О
+                //$("#orderDialog #productId").val(r.Message.ProductId).attr("disabled", "disabled");
+                $("#orderDialog #productId").val(r.Message.ProductId);
+                $("#orderDialog #productName").val(r.Message.ProductName).attr("disabled", "disabled");  //杞崲鍚嶇О
                 //$("#orderDialog #comboId").val(r.Message.ComboId);
-                $("#orderDialog #basicNum").val(r.Message.BasicNum, 0).attr("readonly", "readonly");
-                $("#orderDialog #givingNum").val(r.Message.GivingNum, 0).attr("readonly", "readonly");
+                $("#orderDialog #basicNum").val(r.Message.BasicNum, 0).attr("readonly", readonly);
+                $("#orderDialog #givingNum").val(r.Message.GivingNum, 0).attr("readonly", readonly);
                 $("#orderDialog #price").val(r.Message.Price / 1000, 0.00).attr("readonly", "readonly");
                 $("#orderDialog #orderNumTotal").val(r.Message.OrderNumTotal, 0).attr("readonly", "readonly");
                 $("#orderDialog #orderAmountTotal").val(r.Message.OrderAmountTotal / 1000, 0).attr("readonly", "readonly");
-                $("#orderDialog #payAmount").val(r.Message.PayAmount / 1000, 0).attr("readonly", "readonly");
+                $("#orderDialog #payAmount").val(r.Message.PayAmount / 1000, 0).attr("readonly", readonly);
                 $("#orderDialog #beforeBalanceNum").val(r.Message.BeforeBalanceNum, 0).attr("readonly", "readonly");
                 $("#orderDialog #creator").val(r.Message.Creator).attr("readonly", "readonly");
                 $("#orderDialog #createTime").val(r.Message.CreateTime).attr("readonly", "readonly");
-                $("#orderDialog #status").val(r.Message.Status).attr("disabled", "disabled");
+                //$("#orderDialog #status").val(r.Message.Status).attr("disabled", "disabled");
+                $("#orderDialog #status").val(r.Message.Status);
+                $("#orderDialog #statusName").val(statusToName(r.Message.Status)).attr("disabled", "disabled");  //杞崲鍚嶇О
                 $("#orderDialog #remark").val(r.Message.Remark).attr("disabled", "disabled");
 
                 $("#orderDialog").modal("show");
@@ -210,18 +241,32 @@
                             <label class="col-sm-2 control-label">
                                 瀹㈡埛璐﹀彿</label>
                             <div class="col-sm-4 ">
+                                <!--
                                 <select name="clientId" id="clientId" class="form-control">
-                                    <%=GetClientOptions("0")%>
+                                    <!%=GetClientOptions("0")%>
                                 </select>
+                                -->
+                                <input type="text" class="form-control" name="clientId" id="clientId" value="" readonly="readonly" />
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                鍏徃鍚嶇О</label>
+                            <div class="col-sm-4 ">
+                                <input type="text" class="form-control" name="clientCompany" id="clientCompany" value="" readonly="readonly" />
                             </div>
                         </div>
                         <div class="form-group">
                             <label class="col-sm-2 control-label">
                                 浜у搧鍚嶇О</label>
                             <div class="col-sm-4 ">
+                                <!--
                                 <select name="productId" id="productId" class="form-control">
-                                    <%=GetProductOptions("0")%>
+                                    <!%=GetProductOptions("0")%>
                                 </select>
+                                -->
+                                <input type="text" class="form-control" name="productName" id="productName" value="" readonly="readonly" />
+                                <input type="hidden" class="form-control" name="productId" id="productId" value="" />
                             </div>
                         </div>
                         <%--
@@ -328,6 +373,7 @@
                             <label class="col-sm-2 control-label">
                                 鐘舵��</label>
                             <div class="col-sm-4 ">
+                                <!--
                                 <select name="status" id="status" class="form-control">
                                     <option value=""></option>
                                     <option value="0">寰呭鏍�</option>
@@ -336,6 +382,9 @@
                                     <option value="3">瀹℃牳涓嶉�氳繃</option>
                                     <option value="4">鍙栨秷</option>
                                 </select>
+                                -->
+                                <input type="text" class="form-control" name="statusName" id="statusName" value="" />
+                                <input type="hidden" class="form-control" name="status" id="status" value="" />
                             </div>
                         </div>
                         <div class="form-group">
diff --git a/web/web/GwOrderComplete.aspx.cs b/web/web/GwOrderComplete.aspx.cs
index efa5343..6e08bf7 100644
--- a/web/web/GwOrderComplete.aspx.cs
+++ b/web/web/GwOrderComplete.aspx.cs
@@ -176,5 +176,56 @@
         return stringBuilder.ToString();
     }
 
+    //浜у搧ID杞崲鍚嶇О
+    public string ProductIdToName(string productId)
+    {
+        if (this.GwProductList.Count == 0)
+            return productId;
+        foreach (GwProduct bean in this.GwProductList)
+        {
+            if (productId.Equals(bean.Name))
+                return bean.Name;
+            else
+                continue;
+        }
+
+        return productId;
+    }
+
+    //瀹㈡埛ID杞崲鍚嶇О
+    public string ClientIdToName(string clientId)
+    {
+        if (this.GwClientList.Count == 0)
+            return clientId;
+        foreach (GwClient bean in this.GwClientList)
+        {
+            if (clientId.Equals(bean.ClientID))
+                return bean.Company;
+            else
+                continue;
+        }
+
+        return clientId;
+    }
+
+    //鐘舵�佽浆鎹㈠悕绉�
+    public string StatusToName(string status)
+    {
+        if (string.IsNullOrEmpty(status))
+            return "";
+        else if (status.Equals("0"))
+            return "寰呭鏍�";
+        else if (status.Equals("1"))
+            return "瀹℃牳涓�";
+        else if (status.Equals("2"))
+            return "瀹℃牳閫氳繃";
+        else if (status.Equals("3"))
+            return "瀹℃牳涓嶉�氳繃";
+        else if (status.Equals("4"))
+            return "鍙栨秷";
+        else
+            return status;
+    }
+
 }
  
\ No newline at end of file
diff --git a/web/web/GwOrderCreate.aspx b/web/web/GwOrderCreate.aspx
index 7cb0dd4..05c5cfb 100644
--- a/web/web/GwOrderCreate.aspx
+++ b/web/web/GwOrderCreate.aspx
@@ -16,37 +16,58 @@
                         璐﹀彿鍏呭�� <input type="hidden" name="apid" id="apid" value="0"/></h4>
                 </div>
                 <div class="modal-body">
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">
-                            瀹㈡埛璐﹀彿</label>
-                        <div class="col-sm-6 ">
-                            <select name="clientId" id="clientId" class="form-control" disabled="disabled">
-                                <%=GetClientOptions(GwOrder.ClientId)%>
-                            </select>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                瀹㈡埛璐﹀彿</label>
+                            <div class="col-sm-6 ">
+                                <input type="text" class="form-control" name="clientId" id="clientId" value="<%=GwOrder.ClientId %>" readonly="readonly"/>
+                            </div>
                         </div>
-                    </div>
-                    <div class="form-group">
-                        <label class="col-sm-2 control-label">
-                            鐭俊璐﹀彿</label>
-                        <div class="col-sm-6 ">
-                            <%if (_controlFlag == 0)
-                                { %>
-                                <select name="spId" id="spId" class="form-control" onchange="getGwSp(this);" >
-                                    <%=GetSpOptions()%>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                鍏徃鍚嶇О</label>
+                            <div class="col-sm-6 ">
+                                <input type="text" class="form-control" name="company" id="company" value="<%=GwOrder.Company %>" readonly="readonly"/>
+                            </div>
+                        </div>
+                    <%if (_controlFlag == 0)
+                        { %>
+                        <!--
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                瀹㈡埛璐﹀彿</label>
+                            <div class="col-sm-6 ">
+                                <select name="clientId" id="clientId" class="form-control" disabled="disabled">
+                                    <!%=GetClientOptions(GwOrder.ClientId)%>
                                 </select>
-                            <%}
-                                else { %>
-                            <input type="text" class="form-control" name="spId" id="spId" value="<%=GwOrder.SpId %>" readonly="readonly"/>
-                            <%} %>
+                            </div>
                         </div>
-                    </div>
+                        -->
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                鐭俊璐﹀彿</label>
+                            <div class="col-sm-6 ">
+                                    <select name="spId" id="spId" class="form-control" onchange="getGwSp(this);" >
+                                        <%=GetSpOptions()%>
+                                    </select>
+                            </div>
+                        </div>
+                    <%}
+                        else { %>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                鐭俊璐﹀彿</label>
+                            <div class="col-sm-6 ">
+                                <input type="text" class="form-control" name="spId" id="spId" value="<%=GwOrder.SpId %>" readonly="readonly"/>
+                            </div>
+                        </div>
+                    <%} %>
                     <div class="form-group">
                         <label class="col-sm-2 control-label">
                             浜у搧鍚嶇О</label>
                         <div class="col-sm-6 ">
-                            <select name="productId" id="productId" class="form-control" disabled="disabled">
-                                <%=GetProductOptions(GwOrder.ProductId)%>
-                            </select>
+                            <input type="text" class="form-control" name="productName" id="productName" value="<%=GwOrder.ProductName %>" readonly="readonly"/>
+                            <input type="hidden" class="form-control" name="productId" id="productId" value="<%=GwOrder.ProductId %>" />
                         </div>
                     </div>
                     <div class="form-group">
@@ -187,8 +208,10 @@
 
                     //$("#orderId").val(r.Message.OrderId).attr("readonly", "readonly");
                     $("#clientId").val(r.Message.ClientId).attr("disabled", "disabled");
+                    $("#company").val(r.Message.Company).attr("disabled", "disabled");
                     $("#spId").val(r.Message.SpId);
                     $("#productId").val(r.Message.ProductId).attr("disabled", "disabled");
+                    $("#productName").val(r.Message.ProductName).attr("disabled", "disabled");
                     $("#_basicNum").val(r.Message.BasicNum, 0);
                     $("#_givingNum").val(r.Message.GivingNum, 0); 
                     $("#price").val(r.Message.Price / 1000, 0.00).attr("readonly", "readonly");
diff --git a/web/web/GwOrderCreate.aspx.cs b/web/web/GwOrderCreate.aspx.cs
index ef84d05..dca0ab9 100644
--- a/web/web/GwOrderCreate.aspx.cs
+++ b/web/web/GwOrderCreate.aspx.cs
@@ -50,10 +50,27 @@
 
         using (GwSpDao gwSpDao = new GwSpDao())
         {
+            this.GwOrder = new GwOrder();
             if (!string.IsNullOrEmpty(this.ClientId))
             {
-                this.GwOrder = new GwOrder();
                 this.GwOrder.ClientId = ClientId;
+
+                GwClient gwClient = new GwClient();
+                using (GwClientDao gwClientDao = new GwClientDao())
+                {
+                    gwClient = gwClientDao.Get(this.ClientId);
+                    this.GwOrder.Company = gwClient.Company;
+                    this.GwOrder.Balance = long.Parse(gwClient.Balance.ToString());    //浣欓
+
+                    if (gwClient.Is_Enable == 1)
+                    {
+                        backUrl = "GwClient.aspx?IsEnable=1";
+                    }
+                    else
+                    {
+                        backUrl = "GwClient.aspx?IsEnable=0";
+                    }
+                }
 
                 string permissionsSQL = new GwClientDao().GetClientPermissions(_userId, _userType, null);
                 this.GwSpList = gwSpDao.LoadInfoList(null, null, this.ClientId, permissionsSQL);
@@ -74,30 +91,39 @@
 
                 }
 
-
                 GwClient gwClient = new GwClient();
                 using (GwClientDao gwClientDao = new GwClientDao())
                 {
                     gwClient = gwClientDao.Get(gwSp.ClientID);
+                    this.GwOrder.Company = gwClient.Company;
+                    this.GwOrder.Balance = long.Parse(gwClient.Balance.ToString());    //浣欓
+
+                    if (gwClient.Is_Enable==1)
+                    {
+                        backUrl = "GwClient.aspx?IsEnable=1";
+                    }
+                    else
+                    {
+                        backUrl = "GwClient.aspx?IsEnable=0";
+                    }
                 }
 
+                this.GwOrder.SpId = gwSp.SpID;
+                this.GwOrder.ClientId = gwSp.ClientID;
+                this.GwOrder.ProductId = gwSp.ProductId;
+                this.GwOrder.ProductName = gwSp.ProductName;
+                this.GwOrder.Price = gwSp.Price;
+                this.GwOrder.BasicNum = gwSp.BasicNum;  //鍩烘湰鏉℃暟
+                this.GwOrder.GivingNum = gwSp.GivingNum;
 
-                this.GwOrder = new GwOrder();
-                    this.GwOrder.SpId = gwSp.SpID;
-                    this.GwOrder.ClientId = gwSp.ClientID;
-                    this.GwOrder.ProductId = gwSp.ProductId;
-                    this.GwOrder.Price = gwSp.Price;
-                    this.GwOrder.BasicNum = gwSp.BasicNum;  //鍩烘湰鏉℃暟
-                    this.GwOrder.GivingNum = gwSp.GivingNum;
-
-                    this.GwOrder.Balance = long.Parse(gwClient.Balance.ToString());    //浣欓
+                //this.GwOrder.Balance = long.Parse(gwClient.Balance.ToString());    //浣欓
             }
 
         }
     }
 
 
-    public GwOrder GwOrder { get; protected set; }
+    public GwOrder GwOrder { get; set; }
 
     public string SpID
     {
@@ -119,7 +145,6 @@
         {
             if(!string.IsNullOrEmpty(this.AppContext.GetString("clientId")) )
             {
-                backUrl = "GwClient.aspx";
                 _controlFlag = 0;
             }
 
diff --git a/web/web/GwOrderList.aspx b/web/web/GwOrderList.aspx
index 9f9cbe4..b801ca0 100644
--- a/web/web/GwOrderList.aspx
+++ b/web/web/GwOrderList.aspx
@@ -43,6 +43,31 @@
 
             $(".input-daterange").datepicker({ keyboardNavigation: !1, forceParse: !1, autoclose: !0 });
 
+            //鐘舵�佽浆鎹㈠悕绉�
+            function statusToName(status) {
+                if (status == "") {
+                    return "";
+                }
+                else if (status == 0) {
+                    return "寰呭鏍�";
+                }
+                else if (status == 1) {
+                    return "瀹℃牳涓�";
+                }
+                else if (status == 2) {
+                    return "瀹℃牳閫氳繃";
+                }
+                else if (status == 3) {
+                    return "瀹℃牳涓嶉�氳繃";
+                }
+                else if (status == 4) {
+                    return "鍙栨秷";
+                }
+                else {
+                    return status;
+                }
+            }
+
             $(document).on("click", ".action-modal-detail", function () {
                 var orderId = $(this).data("orderid");
                 $("#orderDialog .modal-title").text("璁㈠崟鏄庣粏");
@@ -53,8 +78,12 @@
                     //$("#orderDialog #action").val("detail");
                     $("#orderDialog #orderId").val(r.Message.OrderId).attr("readonly", "readonly");
                     $("#orderDialog #spId").val(r.Message.SpId).attr("readonly", "readonly");
-                    $("#orderDialog #clientId").val(r.Message.ClientId).attr("disabled", "disabled");
-                    $("#orderDialog #productId").val(r.Message.ProductId).attr("disabled", "disabled");
+                    //$("#orderDialog #clientId").val(r.Message.ClientId).attr("disabled", "disabled");
+                    $("#orderDialog #clientId").val(r.Message.ClientId);
+                    $("#orderDialog #clientCompany").val(r.Message.Company).attr("readonly", "readonly");  //杞崲鍚嶇О
+                    //$("#orderDialog #productId").val(r.Message.ProductId).attr("disabled", "disabled");
+                    $("#orderDialog #productId").val(r.Message.ProductId);
+                    $("#orderDialog #productName").val(r.Message.ProductName).attr("readonly", "readonly");  //杞崲鍚嶇О
                     //$("#orderDialog #comboId").val(r.Message.ComboId);
                     $("#orderDialog #basicNum").val(r.Message.BasicNum, 0).attr("readonly", "readonly");
                     $("#orderDialog #givingNum").val(r.Message.GivingNum, 0).attr("readonly", "readonly");
@@ -65,9 +94,9 @@
                     $("#orderDialog #beforeBalanceNum").val(r.Message.BeforeBalanceNum, 0).attr("readonly", "readonly");
                     $("#orderDialog #creator").val(r.Message.Creator).attr("readonly", "readonly");
                     $("#orderDialog #createTime").val(r.Message.CreateTime).attr("readonly", "readonly");
-                    //$("#orderDialog #auditor").valval(r.Message.Auditor);
-                    //$("#orderDialog #auditTime").val(r.Message.AuditTime);
-                    $("#orderDialog #status").val(r.Message.Status).attr("disabled", "disabled");
+                    //$("#orderDialog #status").val(r.Message.Status).attr("disabled", "disabled");
+                    $("#orderDialog #status").val(r.Message.Status);
+                    $("#orderDialog #statusName").val(statusToName(r.Message.Status)).attr("disabled", "disabled");  //杞崲鍚嶇О
                     $("#orderDialog #remark").val(r.Message.Remark).attr("disabled", "disabled");
 
                     $("#orderDialog").modal("show");
@@ -209,18 +238,32 @@
                             <label class="col-sm-2 control-label">
                                 瀹㈡埛璐﹀彿</label>
                             <div class="col-sm-4 ">
+                                <!--
                                 <select name="clientId" id="clientId" class="form-control">
-                                    <%=GetClientOptions("0")%>
+                                    <!%=GetClientOptions("0")%>
                                 </select>
+                                -->
+                                <input type="text" class="form-control" name="clientId" id="clientId" value="" readonly="readonly" />
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                鍏徃鍚嶇О</label>
+                            <div class="col-sm-4 ">
+                                <input type="text" class="form-control" name="clientCompany" id="clientCompany" value="" />
                             </div>
                         </div>
                         <div class="form-group">
                             <label class="col-sm-2 control-label">
                                 浜у搧鍚嶇О</label>
                             <div class="col-sm-4 ">
+                                <!--
                                 <select name="productId" id="productId" class="form-control">
-                                    <%=GetProductOptions("0")%>
+                                    <!%=GetProductOptions("0")%>
                                 </select>
+                                -->
+                                <input type="text" class="form-control" name="productName" id="productName" value="" />
+                                <input type="hidden" class="form-control" name="productId" id="productId" value="" />
                             </div>
                         </div>
                         <%--
@@ -327,7 +370,18 @@
                             <label class="col-sm-2 control-label">
                                 鐘舵��</label>
                             <div class="col-sm-4 ">
-                                <input type="text" class="form-control" name="status" id="status" value="" />
+                                <!--
+                                <select name="status" id="status" class="form-control">
+                                    <option value=""></option>
+                                    <option value="0">寰呭鏍�</option>
+                                    <option value="1">瀹℃牳涓�</option>
+                                    <option value="2">瀹℃牳閫氳繃</option>
+                                    <option value="3">瀹℃牳涓嶉�氳繃</option>
+                                    <option value="4">鍙栨秷</option>
+                                </select>
+                                -->
+                                <input type="text" class="form-control" name="statusName" id="statusName" value="" />
+                                <input type="hidden" class="form-control" name="status" id="status" value="" />
                             </div>
                         </div>
                         <div class="form-group">
diff --git a/web/web/GwOrderList.aspx.cs b/web/web/GwOrderList.aspx.cs
index 1f2828e..7123008 100644
--- a/web/web/GwOrderList.aspx.cs
+++ b/web/web/GwOrderList.aspx.cs
@@ -123,4 +123,55 @@
         }
         return stringBuilder.ToString();
     }
+
+    //浜у搧ID杞崲鍚嶇О
+    public string ProductIdToName(string productId)
+    {
+        if (this.GwProductList.Count == 0)
+            return productId;
+        foreach (GwProduct bean in this.GwProductList)
+        {
+            if (productId.Equals(bean.Name))
+                return bean.Name;
+            else
+                continue;
+        }
+
+        return productId;
+    }
+
+    //瀹㈡埛ID杞崲鍚嶇О
+    public string ClientIdToName(string clientId)
+    {
+        if (this.GwClientList.Count == 0)
+            return clientId;
+        foreach (GwClient bean in this.GwClientList)
+        {
+            if (clientId.Equals(bean.ClientID))
+                return bean.Company;
+            else
+                continue;
+        }
+
+        return clientId;
+    }
+
+    //鐘舵�佽浆鎹㈠悕绉�
+    public string StatusToName(string status)
+    {
+        if (string.IsNullOrEmpty(status))
+            return "";
+        else if (status.Equals("0"))
+            return "寰呭鏍�";
+        else if (status.Equals("1"))
+            return "瀹℃牳涓�";
+        else if (status.Equals("2"))
+            return "瀹℃牳閫氳繃";
+        else if (status.Equals("3"))
+            return "瀹℃牳涓嶉�氳繃";
+        else if (status.Equals("4"))
+            return "鍙栨秷";
+        else
+            return status;
+    }
 }
diff --git a/web/web/GwProduct.ashx b/web/web/GwProduct.ashx
index 829c88d..c6048c6 100644
--- a/web/web/GwProduct.ashx
+++ b/web/web/GwProduct.ashx
@@ -265,6 +265,26 @@
         int ctGroupid = 0;
         int price = 0;
         int givingNum = 0;
+            
+        string parentId = context.GetString("parentId", "");
+        string path = "";
+        if (string.IsNullOrEmpty(parentId) )
+        {
+            path = "0";
+        }
+        else
+        {
+            GwProduct newProduct = _Dao.Get(parentId);
+            if(newProduct!=null)
+            {
+                path = newProduct.Path=="" ? "0" : newProduct.Path + "," + newProduct.Id ;
+            }
+            else
+            {
+                path = "0";
+            }
+
+        }
 
         string info = "" ;
         if (classes == -1) {
@@ -278,6 +298,11 @@
                 if (string.IsNullOrEmpty(name))
                 {
                     throw new ArgumentException(info + "鍚嶇О涓嶈兘涓虹┖锛�");
+                }
+
+                if (string.IsNullOrEmpty(parentId))
+                {
+                    throw new ArgumentException("鎵�灞炰骇鍝佺被鍒笉鑳戒负绌猴紒");
                 }
 
             }
@@ -326,25 +351,7 @@
             }
 
         }
-        string parentId = context.GetString("parentId", "0");
-        string path = "";
-        if (parentId.Equals("0"))
-        {
-            path = "0";
-        }
-        else
-        {
-            GwProduct newProduct = _Dao.Get(parentId);
-            if(newProduct!=null)
-            {
-                path = newProduct.Path=="" ? "0" : newProduct.Path + "," + newProduct.Id ;
-            }
-            else
-            {
-                path = "0";
-            }
 
-        }
         int isEnable = context.GetInt("isEnable", 0);
 
         //int price = context.GetInt("price", 0);
@@ -446,6 +453,26 @@
         int ctGroupid = 0;
         int price = 0;
         int givingNum = 0;
+            
+        string parentId = context.GetString("parentId", "");
+        string path = "";
+        if (string.IsNullOrEmpty(parentId) )
+        {
+            path = "0";
+        }
+        else
+        {
+            GwProduct newProduct = _Dao.Get(parentId);
+            if(newProduct!=null)
+            {
+                path = newProduct.Path=="" ? "0" : newProduct.Path + "," + newProduct.Id ;
+            }
+            else
+            {
+                path = "0";
+            }
+
+        }
 
         string info = "" ;
         if (classes == -1) {
@@ -459,6 +486,11 @@
                 if (string.IsNullOrEmpty(name))
                 {
                     throw new ArgumentException(info + "鍚嶇О涓嶈兘涓虹┖锛�");
+                }
+
+                if (string.IsNullOrEmpty(parentId))
+                {
+                    throw new ArgumentException("鎵�灞炰骇鍝佺被鍒笉鑳戒负绌猴紒");
                 }
 
             }
@@ -508,25 +540,7 @@
             }
 
         }
-        string parentId = context.GetString("parentId", "0");
-        string path = "";
-        if (parentId.Equals("0"))
-        {
-            path = "0";
-        }
-        else
-        {
-            GwProduct newProduct = _Dao.Get(parentId);
-            if(newProduct!=null)
-            {
-                path = newProduct.Path=="" ? "0" : newProduct.Path + "," + newProduct.Id ;
-            }
-            else
-            {
-                path = "0";
-            }
 
-        }
         int isEnable = context.GetInt("isEnable", 0);
 
         string remark = context.GetString("remark", "");
diff --git a/web/web/GwProduct.aspx b/web/web/GwProduct.aspx
index a654cf9..516ac10 100644
--- a/web/web/GwProduct.aspx
+++ b/web/web/GwProduct.aspx
@@ -93,12 +93,12 @@
         $("#classes").trigger("change");
 
         //閫夋嫨璺敱绫诲瀷涓嬫媺妗嗭紝鎺у埗鐩稿叧杈撳叆椤规樉绀�
-        $("#RouterType").on("change", function () {
+        $("#routerType").on("change", function () {
             $(".router-type-span").hide();
             $(".router-type-span-" + $(this).val()).show();
         });
 
-        $("#RouterType").trigger("change");
+        $("#routerType").trigger("change");
 
         $(document).on("click", ".action-modal-edit", function() {
             var id = $(this).data("id");
@@ -146,6 +146,9 @@
 
                     //璁剧疆绫诲埆
                     $("#classes").trigger("change");
+
+                    //璁剧疆璺敱
+                    $("#routerType").trigger("change");
 
                     //璁剧疆鍥炬爣
                     $("#icon").trigger("change");
@@ -310,7 +313,7 @@
                         </div>
                         <div class="form-group">
                             <label class="col-sm-2 control-label">
-                                鎵�灞炰骇鍝佺被鍒�</label>
+                                鎵�灞炰骇鍝佺被鍒� <span style="color:red">*</span></label>
                             <div class="col-sm-4 ">
                                 <select name="parentId" id="parentId" class="form-control">
                                     <%=GetProductClassOptions("0")%>
@@ -391,7 +394,7 @@
                             <label class="col-sm-2 control-label">
                                 閫氶亾璺敱</label>
                             <div class="col-sm-4">
-                                 <select name="RouterType" id="RouterType" class="form-control">
+                                 <select name="routerType" id="routerType" class="form-control">
                                     <option value="1" >鎸囧畾閫氶亾璺敱</option>
                                     <option value="3" >閫氶亾缁勮矾鐢辨ā寮�</option>
                                 </select>
diff --git a/web/web/GwProduct.aspx.cs b/web/web/GwProduct.aspx.cs
index eeb26d7..3de30a1 100644
--- a/web/web/GwProduct.aspx.cs
+++ b/web/web/GwProduct.aspx.cs
@@ -90,7 +90,7 @@
         StringBuilder stringBuilder = new StringBuilder();
         if (this.GwProductClassList.Count == 0)
             return "<option value='0'>鏃�</option>";
-        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)0, (object)"鏃�");
+        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)"", (object)"鏃�");
         foreach (GwProduct bean in this.GwProductClassList)
         {
             //鍋滅敤鐨勪骇鍝佸垎绫讳笉鍐嶆樉绀�
diff --git a/web/web/GwProductClasses.aspx.cs b/web/web/GwProductClasses.aspx.cs
new file mode 100644
index 0000000..1051199
--- /dev/null
+++ b/web/web/GwProductClasses.aspx.cs
@@ -0,0 +1,117 @@
+锘� 
+using Common;
+using Dao;
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Web;
+using System.Web.Profile;
+using System.Web.SessionState;
+
+
+/**
+ * 浜у搧鍒嗙被
+ * 
+ */
+public partial class _GwProductClasses : PageBase<SysUser>, IRequiresSessionState
+{
+    protected List<GwProduct> GwProductList;
+    protected List<GwProduct> GwProductClassList;
+    protected List<GwOp> OpList;    //閫氶亾淇℃伅鍒楄〃
+    protected List<GwOpGroup> OpGroupList;    //閫氶亾缁勪俊鎭垪琛�
+    //public GwProduct GwProduct { get; protected set; }  //鐢ㄤ簬瀛樻斁浜у搧缂栬緫
+
+    protected void Page_Load(object sender, EventArgs e)
+  {
+        //鏉冮檺鎺у埗
+        this.CheckRight("601", FailedOperation.ErrorMsgOnly);
+        using (GwOpDao gwOpDao = new GwOpDao())
+            this.OpList = gwOpDao.LoadInfoList();
+        using (GwOpGroupDao gwOpGroupDao = new GwOpGroupDao())
+            this.OpGroupList = gwOpGroupDao.GetGroupList();
+
+        //鑾峰彇鍚敤鐨勪骇鍝佸垎绫�
+        using (GwProductDao gwProductDao = new GwProductDao()) { 
+            GwProduct bean = new GwProduct();
+            bean.Classes = 0;
+            bean.IsEnable = -1;
+            this.GwProductClassList = gwProductDao.getAllList(bean);
+        }
+
+
+
+    }
+
+
+    //鑾峰彇閫氶亾淇℃伅
+    public string GetOpOptions(int opId)
+    {
+        StringBuilder stringBuilder = new StringBuilder();
+        if (this.OpList.Count == 0)
+            return "<option value=''>鏃犻�氶亾淇℃伅</option>";
+        stringBuilder.AppendFormat("<option value=\"{0}\" selected>{1}</option>", (object)0, (object)"NA");
+        foreach (GwOp gwOp in this.OpList)
+        {
+            //鍋滅敤鐨勯�氶亾涓嶅啀鏄剧ず
+            if (gwOp.OpStatus == 0)
+            {
+                continue;
+            }
+
+            if (opId == gwOp.OpID)
+                stringBuilder.AppendFormat("<option value=\"{0}\" selected>{0}-{1}</option>", (object)gwOp.OpID, (object)gwOp.OpName);
+            else
+                stringBuilder.AppendFormat("<option value=\"{0}\">{0}-{1}</option>", (object)gwOp.OpID, (object)gwOp.OpName);
+        }
+        return stringBuilder.ToString();
+    }
+
+    /// <summary>
+    /// 鑾峰彇閫氶亾缁�
+    /// </summary>
+    /// <param name="groupID"></param>
+    /// <returns></returns>
+    public string GetOpGroupOptions(int groupID)
+    {
+        StringBuilder stringBuilder = new StringBuilder();
+        using (GwOpGroupDao gwOpGroupDao = new GwOpGroupDao())
+        {
+            List<GwOpGroup> groupList = gwOpGroupDao.GetGroupList();
+            stringBuilder.AppendFormat("<option value=\"0\">涓嶈缃�</option>");
+            foreach (GwOpGroup gwOpGroup in groupList)
+                stringBuilder.AppendFormat("<option value='{0}' {2}>{1}</option>", (object)gwOpGroup.GroupID, (object)gwOpGroup.GroupName, gwOpGroup.GroupID == groupID ? (object)"selected" : (object)"");
+        }
+        return stringBuilder.ToString();
+    }
+
+    //鑾峰彇浜у搧鍒嗙被淇℃伅
+    public string GetProductClassOptions(string productId)
+    {
+        StringBuilder stringBuilder = new StringBuilder();
+        if (this.GwProductClassList.Count == 0)
+            return "<option value='0'>鏃�</option>";
+        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)"", (object)"鏃�");
+        foreach (GwProduct bean in this.GwProductClassList)
+        {
+            //鍋滅敤鐨勪骇鍝佸垎绫讳笉鍐嶆樉绀�
+            if (bean.IsEnable == 0)
+            {
+                continue;
+            }
+            //绫诲埆涓轰骇鍝佷笉鍐嶆樉绀�
+            if (bean.Classes == 1)
+            {
+                continue;
+            }
+
+            if (productId.Equals(bean.Id) )
+                stringBuilder.AppendFormat("<option value=\"{0}\" selected>{1}</option>", (object)bean.Id, (object)bean.Name);
+            else
+                stringBuilder.AppendFormat("<option value=\"{0}\">{1}</option>", (object)bean.Id, (object)bean.Name);
+        }
+        return stringBuilder.ToString();
+    }
+
+}
+ 
\ No newline at end of file
diff --git a/web/web/GwSp.ashx b/web/web/GwSp.ashx
index 25423cb..26d653d 100644
--- a/web/web/GwSp.ashx
+++ b/web/web/GwSp.ashx
@@ -334,44 +334,44 @@
         {
             foreach (GwSp gwSp in list)
             {
-                str1 = str1 + "<tr><td  rowspan=\"1\" ><input type=\"checkbox\"name=\"checkbox\" value=\"" + gwSp.SpID + "\"/></td><td rowspan=\"1\">" + gwSp.SpID + "<div class=\"text-muted\">" + this.GetAPName(gwSp.ApID) + "</div><div class=\"text-muted\">" + this.GetClientName(gwSp.ClientID) + "</div>";
-                str1 += "</td>";
-                str1 = str1 + "<td>" + (object)this.GetProductToName(gwSp.ProductId) + "</td>";
+                //str1 = str1 + "<tr><td  rowspan=\"1\" ><input type=\"checkbox\"name=\"checkbox\" value=\"" + gwSp.SpID + "\"/></td><td rowspan=\"1\">" + gwSp.SpID + "<div class=\"text-muted\">" + this.GetAPName(gwSp.ApID) + "</div><div class=\"text-muted\">" + this.GetClientName(gwSp.ClientID) + "</div>";
+                str1 += "<tr><td  rowspan=\"1\" ><input type=\"checkbox\"name=\"checkbox\" value=\"" + gwSp.SpID + "\"/></td><td rowspan=\"1\">" + gwSp.SpID + "</td>";
+                str1 += "<td>" + (object)this.GetProductToName(gwSp.ProductId) + "</td>";
+                str1 += "<td>" + (object)gwSp.ClientID + "</td>";
+                str1 += "<td>" + (object)this.GetClientName(gwSp.ClientID) + "</td>";
+                str1 += "<td>" + (object)this.GetAPName(gwSp.ApID) + "</td>";
                 if (gwSp.RouterType == 1)
                 {
-                    str1 += "<td rowspan=\"1\"><div class=\"btn  btn-primary btn-xs\">鐐硅矾鐢�</div>";
+                    str1 += "<td rowspan=\"1\"><span class='label label-primary'>閫氶亾</span>";
                     str1 += string.Format("<div>绉诲姩锛歿0}</div><div>鐢典俊锛歿1}</div><div>鑱旈�氾細{2}</div>", (object)this.GetOpName(gwSp.CMOPID), (object)this.GetOpName(gwSp.CTOPID), (object)this.GetOpName(gwSp.UNOPID));
                 }
                 else if (gwSp.RouterType == 3)
                 {
-                    str1 += "<td rowspan=\"1\"><div class=\"btn  btn-success  btn-xs\">缁勮矾鐢�</div>";
+                    str1 += "<td rowspan=\"1\"><span class='label label-success'>閫氶亾缁�</span>";
                     str1 += string.Format("<div>绉诲姩锛歿0}</div><div>鐢典俊锛歿1}</div><div>鑱旈�氾細{2}</div>", (object)this.GetGroupName(gwSp.CMGroupID), (object)this.GetGroupName(gwSp.CTGroupID), (object)this.GetGroupName(gwSp.CUGroupID));
                 }
 
                 if (gwSp.RESEND_STATUS == 1)
                 {
-                    str1 += "<td rowspan=\"1\"><div class=\"btn  btn-primary  btn-xs\">鍚敤澶辫触琛ュ彂</div>";
+                    str1 += "<td rowspan=\"1\"><span class='label label-success'>鍚敤澶辫触琛ュ彂</span>";
                     //str1 += string.Format("<div>绉诲姩锛歿0}</div><div>鐢典俊锛歿1}</div><div>鑱旈�氾細{2}</div>", (object)this.GetGroupName(gwSp.RESEND_CM_GROUPID), (object)this.GetGroupName(gwSp.RESEND_CU_GROUPID), (object)this.GetGroupName(gwSp.RESEND_CT_GROUPID));
                     //璐︽埛椤甸潰鏄剧ず琛ュ彂閫氶亾鍏蜂綋鐨勯�氶亾
                 }
                 else
                 {
-                    str1 += "<td rowspan=\"1\"><div class=\"btn  btn-danger  btn-xs\">鍋滅敤澶辫触琛ュ彂</div>";
+                    str1 += "<td rowspan=\"1\"><span class='label label-danger'>鍋滅敤澶辫触琛ュ彂</span>";
                 }
 
 
-                string str2 = "<div class=\"text-muted\">" + gwSp.ChargerTypeText + "</div>";
+                string str2 = gwSp.ChargerTypeText ;
                 if (gwSp.ChargerTypeText == "鍚庝粯璐�")
                     str2 = "<div  style=\"color:red\">" + gwSp.ChargerTypeText + "</div>";
+                str1 += "<td>" + str2 + "</td>";
+                str1 += "<td>" + (object)((double)gwSp.Price / 1000.0) + "</td>";
                 //add: yangzh by 2022-03-14 start
                 //str1 = str1 + (object)"<td><div class=\"text-muted\">" + (object)(gwSp.Balance / (long)gwSp.Price) + "鏉�/" + (object)((double)gwSp.Balance / 1000.0) + "鍏�</div>";
-                str1 = str1 + (object)"<td><div class=\"text-muted\">" + (object)(gwSp.BasicNum + (long)gwSp.GivingNum) + "鏉� / " + (object)(gwSp.BasicNum) + "鏉� / " + (object)(gwSp.GivingNum) + "鏉�</div>";
+                str1 = str1 + (object)"<td>" + (object)(gwSp.BasicNum + (long)gwSp.GivingNum) + "鏉� / " + (object)(gwSp.BasicNum) + "鏉� / " + (object)(gwSp.GivingNum) + "鏉�";
                 //add: yangzh by 2022-03-14 end
-                str1 = str1 + (object)str2 + "<div class=\"text-muted\">" + (object)((double)gwSp.Price / 1000.0) + "鍏�/鏉�</div>";
-                if (context.HasRight("3021"))
-                    str1 += string.Format(" <a class=\"btn btn-xs btn-success action-modal-charge\"  data-id=\"{0}\"><i class=\"fa fa-cny\"></i> 鍏呭��</a>", (object)gwSp.SpID);
-                if (context.HasRight("3022"))
-                    str1 += string.Format(" <a class=\" btn btn-success btn-xs action-modal-Acctunchargelog\"  data-id=\"{0}\"><i class=\"fa fa-list-alt\"></i> 鍏呭�兼棩蹇�</a>", (object)gwSp.SpID);
                 if (gwSp.BalanceThreshold > 0 && !string.IsNullOrEmpty(gwSp.AlarmMobile))
                     str1 = str1 + (object)"<div class=\"text-danger\">" + (object)(gwSp.BalanceThreshold / 1000) + "鍏�(" + gwSp.AlarmMobile + ")</div>";
                 str1 += "</td>";
@@ -387,11 +387,17 @@
                 // str1 = str1 + "<td>" + this.GetStatusText(gwSp.Status);
                 str1 = str1 + "<td>" + this.GetStatusText(gwSp.Status, gwSp.SpID);
                 str1 += "</td>";
+                str1 += "<td>" + gwSp.CreateTime + "</td>";
                 str1 += "<td rowspan=\"1\" class=\"text-right\">";
                 if (context.HasRight("3023"))
                     str1 += string.Format(" <a class=\"btn-block btn btn-primary btn-xs action-modal-edit\" data-id=\"{0}\"><i class=\"fa fa-edit\"></i>  缂栬緫</a>", (object)gwSp.SpID);
-                str1 += string.Format(" <a class=\"btn-block btn btn-success btn-xs action-create-summary\" data-id=\"{0}\">璐﹀彿鎽樿</a>", (object)gwSp.SpID);
-
+                //str1 += string.Format(" <a class=\"btn-block btn btn-success btn-xs action-create-summary\" data-id=\"{0}\">璐﹀彿鎽樿</a>", (object)gwSp.SpID);
+                str1 = gwSp.Status != 0 ? str1 + string.Format("<a href=\"javascript:;\" data-spid=\"{0}\" data-status=\"0\" class=\"action-updateStatus btn btn-primary btn-xs\"><i class=\"fa fa-toggle-off\"></i>&nbsp;鍋滅敤</a> ", (object) gwSp.SpID ) : str1 + string.Format("<a href=\"javascript:;\" data-spid=\"{0}\" data-status=\"1\" class=\"action-updateStatus btn  btn-default btn-xs\"><i class=\"fa fa-toggle-on\"/></i>&nbsp;鍚敤</a> ", (object) gwSp.SpID );
+                if (context.HasRight("3021"))
+                    str1 += string.Format(" <a class=\"btn btn-xs btn-success action-modal-charge\"  data-id=\"{0}\"><i class=\"fa fa-cny\"></i> 鍏呭��</a>", (object)gwSp.SpID);
+                if (context.HasRight("3022"))
+                    str1 += string.Format(" <a class=\" btn btn-success btn-xs action-modal-Acctunchargelog\"  data-id=\"{0}\"><i class=\"fa fa-list-alt\"></i> 鍏呭�兼棩蹇�</a>", (object)gwSp.SpID);
+                
                 //if (context.HasRight("3024"))
                 //    str1 += string.Format(" <a class=\"btn-block btn btn-xs btn-default action-delete\"  data-id=\"{0}\"><i class=\"fa fa-trash\"></i> 鍒犻櫎</a>", (object)gwSp.SpID);
                 str1 += "</td>";
@@ -399,7 +405,7 @@
             }
         }
         else
-            str1 += "<tr><td colspan=\"14\" style=\"padding-left:5px; text-align: center;\">鏆傛棤淇℃伅</td></tr>";
+            str1 += "<tr><td colspan=\"17\" style=\"padding-left:5px; text-align: center;\">鏆傛棤淇℃伅</td></tr>";
         return new JsonPageResult(true, (object)new
         {
             Table = str1.ToString(),
@@ -446,7 +452,7 @@
         if (gwAp != null)
         {
             //return string.Format("{0}-{1}", (object)gwAp.ApID, (object)gwAp.ApName);//2021.2.24.wzp鍙樻洿,鍚庣画鍙互鍒犻櫎
-            return string.Format("鎺ュ叆鍗忚:{0}", (object)gwAp.ApName);
+            return string.Format("{0}", (object)gwAp.ApName);
         }
         return string.Empty;
     }
@@ -477,7 +483,7 @@
             return string.Empty;
         GwClient gwClient = this.ClientList.Find((Predicate<GwClient>)(client => client.ClientID == clientID));
         if (gwClient != null)
-            return string.Format("{0}<div class=\"text-muted\">{1}</div>", (object)gwClient.ClientID, (object)gwClient.ClientName);
+            return string.Format("{0}", (object)gwClient.Company);
         return string.Format("{0}", (object)clientID);
     }
 
@@ -498,8 +504,10 @@
     private string GetStatusText(int status, string spid)
     {
         if (status == 0)
-            return string.Format("<span class=\"action-updateStatus btn btn-xs btn-default\" data-status=\"1\" data-spid=\"{0}\">宸插仠鐢�</span>", (object)spid);
-        return string.Format("<span class=\"action-updateStatus btn btn-xs  btn-success \" data-status=\"0\" data-spid=\"{0}\">宸插惎鐢�</span>", (object)spid);
+                return string.Format("<span class='label label-default'>宸插仠鐢�</span>");
+            //return string.Format("<span class=\"action-updateStatus btn btn-xs btn-default\" data-status=\"1\" data-spid=\"{0}\">宸插仠鐢�</span>", (object)spid);
+        //return string.Format("<span class=\"action-updateStatus btn btn-xs  btn-success \" data-status=\"0\" data-spid=\"{0}\">宸插惎鐢�</span>", (object)spid);
+        return string.Format("<span class='label label-success'>宸插惎鐢�</span>");
     }
     //
 
@@ -525,10 +533,9 @@
         GwProduct gwProduct = this.ProductList.Find((Predicate<GwProduct>)(bean => productId.Equals(bean.Id) ));
         if (gwProduct != null)
         {
-            //return string.Format("{0}-{1}", (object)gwAp.ApID, (object)gwAp.ApName);//2021.2.24.wzp鍙樻洿,鍚庣画鍙互鍒犻櫎
             return string.Format("{0}", (object)gwProduct.Name);
         }
-        return string.Empty;
+        return productId;
     }
 
     private JsonPageResult LoadGwSpPageList(PageContext<SysUser> context)
@@ -598,6 +605,19 @@
         o.Signatures = context.GetString("Signatures");
         o.AuditingMode = context.GetInt("AuditingMode");
         o.DeductPercent = context.GetInt("DeductPercent");
+                        
+        o.SubPackageNum = context.GetInt("SubPackageNum");
+        o.SingleSubmitMinRestrict = context.GetInt("SingleSubmitMinRestrict");
+        o.IsDispalyPrice = context.GetInt("IsDispalyPrice");
+        o.DeductionMode = context.GetInt("DeductionMode");
+        o.IsSendAudit = context.GetInt("IsSendAudit");
+        o.BelowNumAudit = context.GetInt("BelowNumAudit");
+        o.AboveNumAudit = context.GetInt("AboveNumAudit");
+        o.IsCumulativeAudit = context.GetInt("IsCumulativeAudit");
+        o.CumulativeAuditNum = context.GetInt("CumulativeAuditNum");
+        o.CumulativeAuditTime = context.GetInt("CumulativeAuditTime");
+        o.IsSyncChildSendAudit = context.GetInt("IsSyncChildSendAudit");
+
         if (context.GetInt("RouterType", 1) == 1)
         {
             o.CMOPID = context.GetInt("CMOPID");
@@ -748,6 +768,18 @@
         o.Signatures = context.GetString("signatures");
         string string1 = context.GetString("SpID");
         int @int = context.GetInt("enabled");
+            
+        o.SubPackageNum = context.GetInt("SubPackageNum");
+        o.SingleSubmitMinRestrict = context.GetInt("SingleSubmitMinRestrict");
+        o.IsDispalyPrice = context.GetInt("IsDispalyPrice");
+        o.DeductionMode = context.GetInt("DeductionMode");
+        o.IsSendAudit = context.GetInt("IsSendAudit");
+        o.BelowNumAudit = context.GetInt("BelowNumAudit");
+        o.AboveNumAudit = context.GetInt("AboveNumAudit");
+        o.IsCumulativeAudit = context.GetInt("IsCumulativeAudit");
+        o.CumulativeAuditNum = context.GetInt("CumulativeAuditNum");
+        o.CumulativeAuditTime = context.GetInt("CumulativeAuditTime");
+        o.IsSyncChildSendAudit = context.GetInt("IsSyncChildSendAudit");
 
         o.VerCodeMode = context.GetInt("VerCodeMode");
         o.ProvincialNetworkMode = context.GetInt("ProvincialNetworkMode");
diff --git a/web/web/GwSp.aspx b/web/web/GwSp.aspx
index ecace87..3b3d847 100644
--- a/web/web/GwSp.aspx
+++ b/web/web/GwSp.aspx
@@ -124,7 +124,7 @@
 
             //鍏呭��
             $(document).on("click", ".action-modal-charge", function () {
-                var spID = $(this).data("id");  //璐﹀彿ID
+                var spID = $(this).data("id");  //鐭俊璐﹀彿
                 //window.open("gwOrderCreate.aspx?spId=" + spID, 'gwOrderCreate');
                 window.location.href = "gwOrderCreate.aspx?spId=" + spID;
             });
@@ -142,8 +142,15 @@
           //鏂板姞  
             $(document).on("click", ".action-updateStatus", function () {
                 var spid = $(this).attr("data-spid");
-                var status=$(this).attr("data-status");
-                mytek.confirm("鏄惁闇�瑕佷慨鏀硅璐︽埛鐘舵�侊紵", "鏄惁鎿嶄綔锛�", function (b) {
+                var status = $(this).attr("data-status");
+                var statusMsg = "";
+                if (status == 0) {
+                    statusMsg = "銆愬仠鐢ㄣ��";
+                }
+                else {
+                    statusMsg = "銆愬惎鐢ㄣ��";
+                }
+                mytek.confirm("鏄惁闇�瑕�" + statusMsg + "璇ヨ处鎴风姸鎬侊紵", "鏄惁鎿嶄綔锛�", function (b) {
                     if (b) {
                         $.post("gwsp.ashx", { action: "updateSpStatus", spid: spid,status:status }, function (r) {
                             mytek.alert(r.Message, r.OK, function () {
@@ -382,7 +389,7 @@
         <div class="ibox">
             <div class="form-group">
                 <div class="input-group m-b">
-                    <span class="input-group-addon">SP璐﹀彿</span>
+                    <span class="input-group-addon">鐭俊璐﹀彿</span>
                     <input type="text" name="spID" id="spID" class="form-control col-md-2" />
                 </div>
             </div>
@@ -409,14 +416,14 @@
             
             <div class="form-group">
                 <div class="input-group m-b">
-                    <span class="input-group-addon">閫氶亾ID</span>
+                    <span class="input-group-addon">閫氶亾鍚�</span>
                     <input type="text" name="opID" id="opID" class="form-control col-md-2" />
                 </div>
             </div>
 
             <div class="form-group">
                 <div class="input-group m-b">
-                    <span class="input-group-addon">鍏宠仈浜у搧ID</span>
+                    <span class="input-group-addon">鍏宠仈浜у搧鍚嶇О</span>
                         <select name="productId" id="productId" class="form-control">
                             <%=GetProductOptions("")%>
                         </select>
@@ -463,8 +470,6 @@
             <div class="form-group">
                 <div class="input-group m-b">
                     <input type="button" value="鏌ヨ" class="btn btn-primary action-query" />&nbsp;&nbsp;
-                    <input type="button" value="鎵归噺淇敼閫氶亾" class="btn btn-danger action-modal-op" />&nbsp;&nbsp;
-                    <input type="button" class="btn btn-info action-export" value="瀵煎嚭鏁版嵁" />&nbsp;&nbsp;
                     <input class="btn btn-warning  action-create" value="鍒涘缓鏂拌处鍙�" type="button" />
                 </div>
             </div>
@@ -472,6 +477,8 @@
     </div>
     </form>
     <div class="table-responsive">
+        <input type="button" value="鎵归噺淇敼閫氶亾" class="btn btn-danger action-modal-op" />&nbsp;&nbsp;
+        <input type="button" class="btn btn-info action-export" value="瀵煎嚭鏁版嵁" />&nbsp;&nbsp;
         <table class="table table-striped table-bordered table-hover" id="gwspTable">
             <thead>
                 <tr class="header">
@@ -479,10 +486,19 @@
                         <input type='checkbox' name='checkAll' id='checkAll' />
                     </th>
                     <th>
-                        SP璐﹀彿/鎺ュ叆鍗忚/褰掑睘瀹㈡埛
+                        鐭俊璐﹀彿
                     </th>
                     <th>
                         鍏宠仈浜у搧
+                    </th>
+                    <th>
+                        瀹㈡埛璐﹀彿
+                    </th>
+                    <th>
+                        鍏徃鍚嶇О
+                    </th>
+                    <th>
+                        鎺ュ叆鍗忚
                     </th>
                     <th>
                         閫氶亾
@@ -491,11 +507,20 @@
                         澶辫触琛ュ彂
                     </th>
                     <th>
+                        浠樿垂鏂瑰紡
+                    </th>
+                    <th>
+                        鍙傛暟鍗曚环锛堝厓/鏉★級
+                    </th>
+                    <th>
+                        浣欓锛堟�绘潯鏁�/鍩烘湰鏉℃暟/璧犻�佹潯鏁帮級
+                    </th>
                         <!-- add: yangzh by 2022-03-14 start
-                        鏉℃暟/浣欓/浠樿垂鏂瑰紡/鍗曚环/鍛婅
-                         -->
+                    <th>
+                        //鏉℃暟/浣欓/浠樿垂鏂瑰紡/鍗曚环/鍛婅
                         鍓╀綑鎬绘潯鏁�/鍩烘湰鏉℃暟/璧犻�佹潯鏁�/浠樿垂鏂瑰紡/鍗曚环/鍛婅
                     </th>
+                         -->
                     <th>
                         璐﹀彿閰嶇疆灞炴��
                     </th>
@@ -508,6 +533,9 @@
                     <th>
                         鐘舵��
                     </th>
+                    <th>
+                        婵�娲绘椂闂�
+                    </th>
                     <th colspan="4">
                         鎿嶄綔
                     </th>
diff --git a/web/web/GwSp.aspx.cs b/web/web/GwSp.aspx.cs
index 3ab21b3..bacd8d6 100644
--- a/web/web/GwSp.aspx.cs
+++ b/web/web/GwSp.aspx.cs
@@ -94,9 +94,9 @@
             }
 
             if (productId.Equals(bean.Id))
-                stringBuilder.AppendFormat("<option value=\"{0}\" selected>{0}-{1}</option>", (object)bean.Id, (object)bean.Name);
+                stringBuilder.AppendFormat("<option value=\"{0}\" selected>{1}</option>", (object)bean.Id, (object)bean.Name);
             else
-                stringBuilder.AppendFormat("<option value=\"{0}\">{0}-{1}</option>", (object)bean.Id, (object)bean.Name);
+                stringBuilder.AppendFormat("<option value=\"{0}\">{1}</option>", (object)bean.Id, (object)bean.Name);
         }
         return stringBuilder.ToString();
     }
diff --git a/web/web/GwStatis.aspx.cs b/web/web/GwStatis.aspx.cs
index 0fbfedb..85c8f51 100644
--- a/web/web/GwStatis.aspx.cs
+++ b/web/web/GwStatis.aspx.cs
@@ -148,7 +148,7 @@
             foreach (GwClient gwClient in this.ClientList)
             {
                 if (this.AppContext.HasRight("502"))
-                    stringBuilder.AppendFormat("<option value=\"{0}\" {2}>{0}-{1}</option>", (object)gwClient.ClientID, (object)gwClient.ClientName, gwClient.ClientID == this.SelectedClientID ? (object)"selected" : (object)"");
+                    stringBuilder.AppendFormat("<option value=\"{0}\" {2}>{0}-{1}</option>", (object)gwClient.ClientID, (object)gwClient.Company, gwClient.ClientID == this.SelectedClientID ? (object)"selected" : (object)"");
             }
         }
         return stringBuilder.ToString();
diff --git a/web/web/GwStatisV3.aspx.cs b/web/web/GwStatisV3.aspx.cs
index 8d91f33..c647f83 100644
--- a/web/web/GwStatisV3.aspx.cs
+++ b/web/web/GwStatisV3.aspx.cs
@@ -140,7 +140,7 @@
             foreach (GwClient gwClient in this.ClientList)
             {
                 if (this.AppContext.HasRight("502"))
-                    stringBuilder.AppendFormat("<option value=\"{0}\" {2}>{0}-{1}</option>", (object)gwClient.ClientID, (object)gwClient.ClientName, gwClient.ClientID == this.SelectedClientID ? (object)"selected" : (object)"");
+                    stringBuilder.AppendFormat("<option value=\"{0}\" {2}>{0}-{1}</option>", (object)gwClient.ClientID, (object)gwClient.Company, gwClient.ClientID == this.SelectedClientID ? (object)"selected" : (object)"");
             }
         }
         return stringBuilder.ToString();
diff --git a/web/web/Index.aspx b/web/web/Index.aspx
index aabf61e..d223646 100644
--- a/web/web/Index.aspx
+++ b/web/web/Index.aspx
@@ -218,6 +218,8 @@
                             <li><a href="SysUser.aspx" class="J_menuItem">绯荤粺璐﹀彿绠$悊</a> </li>
                             <li><a href="tablespace.aspx" class="J_menuItem">鏁版嵁搴撹〃绌洪棿</a> </li>
                             <li><a href="Setting.aspx" class="J_menuItem">绯荤粺鍙傛暟璁剧疆</a> </li>
+                            <li><a href="SysDictType.aspx" class="J_menuItem">瀛楀吀绫诲瀷绠$悊</a> </li>
+                            <li><a href="SysDictData.aspx" class="J_menuItem">瀛楀吀鏁版嵁绠$悊</a> </li>
 
                         </ul>
                     </li>
diff --git a/web/web/Session.ashx b/web/web/Session.ashx
index abb9f06..cb47d97 100644
--- a/web/web/Session.ashx
+++ b/web/web/Session.ashx
@@ -89,11 +89,17 @@
         string account = context.SessionObject.Account;
         if (string.IsNullOrEmpty(account))
             throw new ArgumentException("鑾峰彇璐︽埛淇℃伅鍑洪敊,璇烽噸鏂扮櫥褰曪紒");
+
         this.dao.GetUser(account);
         SysUser userInfo = this.dao.GetUserInfo(context.SessionObject.UserID);
+
+        string1 += userInfo.Salt;
+
         string str = userInfo.Password == DataHelper.MD5Hex(string1) ? userInfo.Password : string1;
         if (!string.Equals(context.SessionObject.Password, str))
             throw new ArgumentException("鍘熷瀵嗙爜涓嶆纭紝璇烽噸鏂拌緭鍏ワ紒");
+
+        string3 += userInfo.Salt;
         if (this.dao.UpdatePassword(context.SessionObject.UserID, str, DataHelper.MD5Hex(string3)))
             context.SessionObject.Password = DataHelper.MD5Hex(string3);
         return new JsonPageResult(true, (object) "瀵嗙爜鏇存柊鎴愬姛锛�");
@@ -129,6 +135,8 @@
 
         try
         {
+            user = this.dao.GetUser(string2);
+                string3 += user.Salt;
             if (!this.dao.CheckLogin(string2, string3, user))
                 return new JsonPageResult(false, (object)new
                 {
@@ -137,13 +145,13 @@
                 });
         }
         catch (Exception ex)
-        { 
-                return new JsonPageResult(false, (object)new
-                {
-                    Content = "寮傚父锛�"+ex.Message,
-                    Tstatus = num
-                });
-         }
+        {
+            return new JsonPageResult(false, (object)new
+            {
+                Content = "寮傚父锛�"+ex.Message,
+                Tstatus = num
+            });
+        }
         context.SessionObject = user;
         string clientIp = user.ClientIp;
         if (user.IsVerification == 1 && !context.ClientIP.Equals(clientIp))
diff --git a/web/web/SysDictData.ashx b/web/web/SysDictData.ashx
new file mode 100644
index 0000000..313c5aa
--- /dev/null
+++ b/web/web/SysDictData.ashx
@@ -0,0 +1,321 @@
+锘�<%@ WebHandler Language="C#" Class="SysDictDataHandler" %>
+using Common;
+using Dao;
+using Model;
+// using Newtonsoft.Json;
+//using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Web;
+using System.IO;
+using System.Diagnostics;
+
+public class SysDictDataHandler : PageHandler<SysUser>
+{
+    private SysDictDataDao _Dao = new SysDictDataDao();
+
+    private List<SysDictType> _SysDictTypeList;
+    private List<SysUser> _SysUserList;
+
+    public override JsonPageResult ProcessRequestInternal(PageContext<SysUser> context)
+    {
+        string @string = context.GetString("action");
+        switch (@string)
+        {
+            case "delete":
+                return this.Delete(context);    //鍒犻櫎
+            case "update":
+                return this.Update(context);    //淇敼
+            case "add":
+                return this.Add(context);       //娣诲姞
+            case "list":
+                return this.List(context);      //鏌ヨ
+            case "getByDictId":
+                return this.GetByDictId(context);      //鑾峰彇璁板綍淇℃伅
+            case "getByDictValue":
+                return this.GetByDictValue(context);      //鑾峰彇璁板綍淇℃伅
+            case "updateStatus":
+                return this.UpdateStatus(context);  //鍚敤鎴栧仠鐢�
+
+            default:
+                throw new Exception("Invalid Action=" + @string);
+        }
+    }
+
+    //鍔犺浇淇℃伅
+    private JsonPageResult List(PageContext<SysUser> context)
+    {
+        string dictLabel = context.GetString("dictLabel");
+        string dictType = context.GetString("dictType");
+
+        int recordCount = 0;
+        int pageSize = context.GetInt("pageSize", 50);
+        int pageIndex = context.GetInt("pageIndex", 1);
+
+        List<SysDictData> list = _Dao.LoadInfoList(dictLabel, dictType, pageSize, pageIndex, out recordCount);
+
+        string str1 = "";
+        if (list != null && list.Count > 0)
+        {
+
+            int num = 0;
+            foreach (SysDictData bean in list)
+            {
+                ++num;
+                str1 += "<tr>";
+                str1 += "<td>" + bean.DictValue + "</td>";
+                str1 += "<td>" + bean.DictLabel + "</td>";
+                str1 += "<td>" + bean.DictType + "</td>";
+                str1 += "<td>" + bean.DictSort + "</td>";
+                str1 += "<td>" + SysUserName(string.IsNullOrEmpty(bean.CreateBy)? 0: int.Parse(bean.CreateBy) ) + "</td>";
+                str1 += "<td>" + bean.CreateTime + "</td>";
+                str1 += "<td>" + (bean.Status == 1 ? "<span class='label label-primary'>姝e父</span>" : "<span class='label label-default'>鍋滅敤</span>") + "</td>";
+                str1 += "<td  class=\"text-center \">";
+                str1 = bean.Status != 0 ? str1 + string.Format("<a href=\"javascript:;\" data-id=\"{0}\" data-status=\"0\" class=\"action-update-status btn btn-default btn-xs\"><i class=\"fa fa-toggle-off\"></i>&nbsp;鍋滅敤</a> ", (object) bean.DictId ) : str1 + string.Format("<a href=\"javascript:;\" data-id=\"{0}\" data-status=\"1\" class=\"action-update-status btn  btn-primary btn-xs\"><i class=\"fa fa-toggle-on\"/></i>&nbsp;鍚敤</a> ", (object) bean.DictId );
+                str1 += string.Format("<a href=\"javascript:;\" data-id=\"{0}\" class=\"action-modal-edit btn  btn-success btn-xs\"><i class=\"fa fa-edit\"></i>&nbsp;缂栬緫</a> ", (object) bean.DictId);
+                str1 += string.Format("<a href=\"javascript:;\" data-id=\"{0}\" class=\"action-delete btn  btn-default btn-xs\"><i class=\"fa fa-trash\"></i>&nbsp;鍒犻櫎</a> ", (object) bean.DictId);
+                str1 += "</td>";
+                str1 += "</tr>";
+            }
+        }
+        else
+            str1 += "<tr><td colspan=\"8\" style=\"padding-left:5px; text-align: center;\">鏆傛棤淇℃伅</td></tr>";
+
+        return new JsonPageResult(true,  new
+        {
+            Table = str1.ToString(),
+            TotalCount = recordCount
+        });
+    }
+
+
+    //鍒犻櫎淇℃伅
+    private JsonPageResult Delete(PageContext<SysUser> context)
+    {
+        string dictId = context.GetString("dictId");
+        SysDictData sysDictData = new SysDictData();
+                
+        string updateBy = context.SessionObject.UserID.ToString();
+        sysDictData = new SysDictData();
+        sysDictData.DictId = dictId;
+        sysDictData.UpdateBy = updateBy;
+        sysDictData.UpdateTime = DateTime.Now;    //褰撳墠鏃堕棿
+
+        this._Dao.Delete(sysDictData);
+        return new JsonPageResult(true, "鍒犻櫎淇℃伅鎴愬姛锛�");
+
+    }
+
+    //娣诲姞
+    private JsonPageResult Add(PageContext<SysUser> context)
+    {
+        string dictValue = context.GetString("dictValue");
+        string dictLabel = context.GetString("dictLabel");
+        string dictType = context.GetString("dictType");
+        string dictSort = context.GetString("dictSort", "1");
+        string remark = context.GetString("remark", "");
+
+        if (string.IsNullOrEmpty(dictValue) ) {
+            throw new ArgumentException("瀛楀吀鏁版嵁閿�间笉鑳戒负绌猴紝璇疯緭鍏ワ紒");
+        }
+        if (string.IsNullOrEmpty(dictLabel) ) {
+            throw new ArgumentException("瀛楀吀鏁版嵁鏍囩涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        }
+        if (string.IsNullOrEmpty(dictType) ) {
+            throw new ArgumentException("瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        }
+
+        int status = 1; //璁剧疆榛樿鐘舵�侊細1-鍚敤
+            
+        DateTime nowTime = DateTime.Now;    //褰撳墠鏃堕棿
+
+        string creatBy = context.SessionObject.UserID.ToString();
+        DateTime createTime = nowTime;
+        string updateBy = context.SessionObject.UserID.ToString();
+        DateTime updateTime = nowTime;
+            
+        string dictId = DataConverter.getRandom(32);  //鑾峰彇鐢熸垚ID
+        this._Dao.Add(new SysDictData()
+        {
+            DictId = dictId,
+            DictValue = dictValue,
+            DictLabel = dictLabel,
+            DictType = dictType,
+            DictSort = int.Parse(dictSort),
+            //DelFlag = 0,
+            Status = status,
+            CreateBy = creatBy,
+            CreateTime = createTime,
+            UpdateBy = updateBy,
+            UpdateTime = updateTime,
+            Remark = remark
+
+        });
+        return new JsonPageResult(true, "淇℃伅娣诲姞鎴愬姛锛�");
+    }
+
+    //鏇存柊
+    private JsonPageResult Update(PageContext<SysUser> context)
+    {
+        string dictId = context.GetString("dictId");  //鑾峰彇鐢熸垚ID
+        string dictValue = context.GetString("dictValue");
+        string dictLabel = context.GetString("dictLabel");
+        string dictType = context.GetString("dictType");
+        string dictSort = context.GetString("dictSort", "1");
+        string remark = context.GetString("remark", "");
+            
+        if (string.IsNullOrEmpty(dictValue) ) {
+            throw new ArgumentException("瀛楀吀鏁版嵁閿�间笉鑳戒负绌猴紝璇疯緭鍏ワ紒");
+        }
+        if (string.IsNullOrEmpty(dictLabel) ) {
+            throw new ArgumentException("瀛楀吀鏁版嵁鏍囩涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        }
+        if (string.IsNullOrEmpty(dictType) ) {
+            throw new ArgumentException("瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        }
+        
+        int status = context.GetInt("status", 0);   //璁剧疆榛樿鐘舵�侊細1-鍚敤
+            
+        DateTime nowTime = DateTime.Now;    //褰撳墠鏃堕棿
+
+        
+        string updateBy = context.SessionObject.UserID.ToString();
+        DateTime updateTime = nowTime;
+
+        SysDictData sysDictData = _Dao.GetByDictId(dictId);
+        string creatBy = sysDictData.CreateBy;
+        DateTime createTime = sysDictData.CreateTime;
+
+        this._Dao.Update(new SysDictData()
+        {
+            DictId = dictId,
+            DictValue = dictValue,
+            DictLabel = dictLabel,
+            DictType = dictType,
+            DictSort = int.Parse(dictSort),
+            //DelFlag = 0,
+            Status = status,
+            CreateBy = creatBy,
+            CreateTime = createTime,
+            UpdateBy = updateBy,
+            UpdateTime = updateTime,
+            Remark = remark
+
+        });
+
+
+        return new JsonPageResult(true, "淇℃伅鏇存柊鎴愬姛锛�");
+    }
+
+    //鏍规嵁涓婚敭鑾峰彇淇℃伅
+    private JsonPageResult GetByDictId(PageContext<SysUser> context)
+    {
+        return new JsonPageResult(true, this._Dao.GetByDictId(context.GetString("dictId")));
+    }
+
+    //鏍规嵁涓婚敭鑾峰彇淇℃伅
+    private JsonPageResult GetByDictValue(PageContext<SysUser> context)
+    {
+        return new JsonPageResult(true, this._Dao.GetByDictValue(context.GetString("dictType"), context.GetString("dictValue")));
+    }
+
+    //鍔犺浇瀛楀吀绫诲瀷淇℃伅
+    private List<SysDictType> SysDictTypeAllList()
+    {
+        SysDictType bean = new SysDictType();
+        bean.Status = -1;
+
+        List<SysDictType> list = new SysDictTypeDao().getAllList(bean);
+
+        return list;
+    }
+
+    //鑾峰彇瀛楀吀绫诲瀷淇℃伅鍒楄〃
+    private List<SysDictType> SysDictTypeList
+    {
+        get
+        {
+            if (this._SysDictTypeList == null)
+            {
+                this._SysDictTypeList = this.SysDictTypeAllList();
+            }
+            return this._SysDictTypeList;
+        }
+    }
+
+    //涓婚敭ID杞崲鍚嶇О
+    private string SysDictTypeToName(string dictType)
+    {
+        if (this.SysDictTypeList == null)
+            return string.Empty;
+        SysDictType bean = this.SysDictTypeList.Find((Predicate<SysDictType>)(sysDictType => sysDictType.DictType == dictType));
+        if (bean != null)
+            return string.Format("{0}", (object)bean.DictName);
+        return string.Empty;
+    }
+
+    //鏇存柊淇℃伅鍚敤鎴栧仠鐢�
+    private JsonPageResult UpdateStatus(PageContext<SysUser> context)
+    {
+        string dictId = context.GetString("dictId");
+        int status = context.GetInt("status");
+        SysDictData sysDictData = new SysDictData();    
+        
+        string updateBy = context.SessionObject.UserID.ToString();
+        sysDictData.DictId = dictId;
+        sysDictData.Status = status;
+        sysDictData.UpdateBy = updateBy;
+        sysDictData.UpdateTime = DateTime.Now;    //褰撳墠鏃堕棿
+
+        this._Dao.UpdateStatus(sysDictData);
+        return new JsonPageResult(true, "鏇存柊淇℃伅鐘舵�佹垚鍔燂紒");
+
+    }
+        
+    //鑾峰彇绠$悊绔处鎴峰垪琛�
+    private List<SysUser> SysUserList
+    {
+        get
+        {
+            if (this._SysUserList == null)
+            {
+
+                using (UserDao sysUserDao = new UserDao())
+                {
+                    int recordCount = 0;
+                    int int1 = 999999999;
+                    int int2 = 1;
+                    this._SysUserList = sysUserDao.LoadInfoList(out recordCount, int1, int2);
+                }
+            }
+            return this._SysUserList;
+        }
+    }
+
+    //鍚敤鍋滅敤杞崲鍚嶇О
+    private string StatusToName(int status)
+    {
+        if (status == -1)
+            return string.Empty;
+        else if(status == 0)
+            return "<span class='label label-default'>鍋滅敤</span>";
+        else if(status == 1)
+            return "<span class='label label-primary'>姝e父</span>";
+
+        return string.Empty;
+    }
+
+    //绠$悊绔敤鎴稩D杞悕绉�
+    private string SysUserName(int userId)
+    {
+        if (this.SysUserList == null)
+            return string.Empty;
+        SysUser sysUser = this._SysUserList.Find((Predicate<SysUser>)(bean => bean.UserID == userId));
+        if (sysUser != null)
+            return string.Format("{0}", (object)sysUser.UserName);
+        return string.Empty;
+    }
+
+}
\ No newline at end of file
diff --git a/web/web/SysDictData.aspx b/web/web/SysDictData.aspx
new file mode 100644
index 0000000..f32fc0c
--- /dev/null
+++ b/web/web/SysDictData.aspx
@@ -0,0 +1,277 @@
+锘�<%@ Page Language="C#"  masterpagefile="~/Main.master"  AutoEventWireup="true" CodeFile="SysDictData.aspx.cs" Inherits="_SysDictData" %>
+<asp:Content runat="server" ID="Content1" ContentPlaceHolderID="head">
+    <script type="text/javascript" language="javascript">
+    $(document).ready(function() {
+        var pagination = new Pagination();
+        pagination.setPageIndex(1);
+        pagination.setPageSize(50);
+
+        function loadPageList() {
+            var dictLabel = $("#DictLabel").val();
+            var dictType = $("#DictType").val();
+            $.ajax({
+                url: "SysDictData.ashx",
+                type: "POST",
+                data: { action: "list", dictLabel: dictLabel, dictType: dictType, pageIndex: pagination.getPageIndex(), pageSize: pagination.getPageSize() },
+                success: function(result) {
+                    if (result.OK) {
+                        $("#sysDictDataTable tbody").html(result.Message.Table);
+                        pagination.setRecordCount(result.Message.TotalCount);
+                        $("#pagination").html(pagination.getHtml());
+                        $("[data-toggle='popover']").popover();
+                    } else {
+                        mytek.alert(result.Message, result.OK);
+                    }
+                }
+            });
+        }
+
+        $(document).on("click", ".action-modal-add", function() {
+            $("#sysDictDataDialog .modal-title").text("娣诲姞瀛楀吀鏁版嵁");
+            $("#sysDictDataDialog #action").val("add");
+            $("#sysDictDataDialog #dictId").val("");
+            $("#sysDictDataDialog #dictValue").val("").attr("readonly", false);
+            $("#sysDictDataDialog #dictLabel").val("");
+            $("#sysDictDataDialog #dictType").val("");
+            $("#sysDictDataDialog #dictSort").val(1);
+            $("#sysDictDataDialog #remark").val("");
+
+            $("#sysDictDataDialog .statusCss").hide();
+
+            $("#sysDictDataDialog").modal("show");
+        });
+
+        $("#sysDictDataForm").ajaxForm({
+            success: function(r) {
+                if (r.OK) {
+                    mytek.alert(r.Message, r.OK, function() {
+                        $("#sysDictDataDialog").modal("hide");
+                        loadPageList();
+                    });
+                } else {
+                    mytek.alert(r.Message, r.OK);
+                }
+            }
+        });
+
+        $(document).on("click", ".action-modal-edit", function() {
+            var dictId = $(this).data("id");
+            $("#sysDictDataDialog .modal-title").text("缂栬緫瀛楀吀鏁版嵁");
+
+            $.get("SysDictData.ashx", { "action": "getByDictId", dictId: dictId }, function(r) {
+                if (r.OK) {
+                    $("#sysDictDataDialog #action").val("update");
+                    $("#sysDictDataDialog #dictId").val(r.Message.DictId);
+                    $("#sysDictDataDialog #dictValue").val(r.Message.DictValue).attr("readonly", false);
+                    $("#sysDictDataDialog #dictLabel").val(r.Message.DictLabel);
+                    $("#sysDictDataDialog #dictType").val(r.Message.DictType);
+                    $("#sysDictDataDialog #dictSort").val(r.Message.DictSort);
+                    $("#sysDictDataDialog #status").val(r.Message.Status);
+                    $("#sysDictDataDialog #remark").val(r.Message.Remark);
+
+                    $("#sysDictDataDialog .statusCss").show();
+
+                    $("#sysDictDataDialog").modal("show");
+                }
+                else {
+                    mytek.alert(r.Message, r.OK);
+                }
+            }, "json");
+        });
+
+        $(document).on("click", ".action-update-status", function () {
+            //data鐨勫睘鎬у弬鏁颁笉鑳藉惈鏈夊ぇ鍐欏瓧姣嶃��
+            var dictId = $(this).data("id");
+            var status = $(this).data("status");
+            var statusStr = "";
+            if (status == 0) {
+                statusStr = "銆愬仠鐢ㄣ��";
+            }
+            else {
+                statusStr = "銆愬惎鐢ㄣ��";
+            }
+            mytek.confirm("鏄惁闇�瑕�" + statusStr + "璇ヤ俊鎭紵", "纭鏇存柊淇℃伅鐘舵�侊紝璇疯皑鎱庢搷浣滐紒", function (b) {
+                if (b) {
+                    $.post("SysDictData.ashx", { "action": "updateStatus", dictId: dictId, status: status }, function (r) {
+                        mytek.alert(r.Message, r.OK, function () {
+                            loadPageList();
+                        });
+                    });
+                }
+            });
+        });
+
+        $(document).on("click", ".action-delete", function() {
+            var dictId = $(this).data("id");
+            mytek.confirm("鏄惁闇�瑕佸垹闄よ淇℃伅锛�", "鏁版嵁鍒犻櫎鍚庡皢鏃犳硶鎭㈠锛岃璋ㄦ厧鎿嶄綔锛�", function(b) {
+                if (b) {
+                    $.post("SysDictData.ashx", { "action": "delete", dictId: dictId }, function(result) {
+                        mytek.alert(result.Message, result.OK, function() {
+                            loadPageList();
+                        });
+                    },
+                    "json");
+                }
+            });
+        });
+
+        $(document).on("click", ".action-btn-SysDictDataQuery", function() {
+            pagination.setPageIndex(1);
+            loadPageList();
+        });
+
+        $(document).on("click", "a[data-index]", function() {
+            pagination.setPageIndex($(this).attr("data-index"));
+            loadPageList();
+        });
+
+        //杩涘叆椤甸潰鏃舵墽琛屾煡璇�
+        loadPageList();
+
+    });
+    </script>
+ </asp:Content> 
+<asp:Content runat="server" ID="Content2" ContentPlaceHolderID="title">瀛楀吀鏁版嵁绠$悊</asp:Content> 
+<asp:Content ID="Content3" ContentPlaceHolderID="content" runat="Server">
+   
+    <form name="queryForm" method="get" action="SysDictData.aspx" id="queryForm" class="form-inline"
+        id="sysDictDataTable">
+        <div class="m-b">
+            <div class="form-group">
+                <div class="input-group">
+                    <span class="input-group-addon">瀛楀吀鏁版嵁鏍囩</span>
+                    <input type="text" name="DictLabel" id="DictLabel" class="form-control" />
+                </div>
+            </div>
+            <div class="form-group">
+                <div class="input-group">
+                    <span class="input-group-addon">瀛楀吀绫诲瀷</span>
+                    <select name="DictType" id="DictType" class="form-control">
+                        <%=GetSysDictTypeOptions("")%>
+                    </select>
+                </div>
+            </div>
+            <div class="form-group">
+                <div class="input-group">
+                    <input type="button" value="鏌ヨ" class="btn btn-primary action-btn-SysDictDataQuery" />&nbsp;&nbsp;&nbsp;
+                     <input class=" btn btn-warning action-modal-add" value="娣诲姞瀛楀吀鏁版嵁" type="button" />
+                </div>
+            </div>
+        </div>
+        <table class="table table-striped table-bordered table-hover" id="sysDictDataTable">
+            <thead>
+                <tr class="header">
+                    <th>瀛楀吀鏁版嵁閿��
+                    </th>
+                    <th>瀛楀吀鏁版嵁鏍囩
+                    </th>
+                    <th>瀛楀吀绫诲瀷鍚嶇О
+                    </th>
+                    <th>瀛楀吀鎺掑簭
+                    </th>
+                    <th>鍒涘缓鑰�
+                    </th>
+                    <th>鍒涘缓鏃堕棿
+                    </th>
+                    <th>鏄惁鍚敤
+                    </th>
+                    <th class="text-center">鎿嶄綔
+                    </th>
+                </tr>
+            </thead>
+            <tbody>
+            </tbody>
+        </table>
+    </form>
+    <div id="pagination">
+    </div>
+    <div class="footBar">
+      
+    </div>
+
+    <div class="modal inmodal fade" id="sysDictDataDialog" tabindex="-1" role="dialog" aria-hidden="true">
+        <div class="modal-dialog modal-lg">
+            <form class="form-horizontal" id="sysDictDataForm" name="sysDictDataForm" method="post" action="SysDictData.ashx">
+                <div class="modal-content ">
+                    <div class="modal-header">
+                        <input type="hidden" class="form-control" name="action" id="action" value="update" />
+                        <input type="hidden" class="form-control" name="dictId" id="dictId" value="" />
+                        <button type="button" class="close" data-dismiss="modal">
+                            <span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+                        <h4 class="modal-title">缂栬緫瀛楀吀鏁版嵁璧勬枡</h4>
+                    </div>
+                    <div class="modal-body">
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                瀛楀吀鏁版嵁閿�� <span style="color:red">*</span>
+                            </label>
+                            <div class="col-sm-4 ">
+                                <input type="text" class="form-control" name="dictValue" id="dictValue" value="" />
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                瀛楀吀鏁版嵁鏍囩 <span style="color:red">*</span>
+                            </label>
+                            <div class="col-sm-4 ">
+                                <input type="text" class="form-control" name="dictLabel" id="dictLabel" value="" />
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                瀛楀吀绫诲瀷 <span style="color:red">*</span>
+                            </label>
+                            <div class="col-sm-4 ">
+                                <select name="dictType" id="dictType" class="form-control">
+                                    <%=GetSysDictTypeOptions("")%>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                瀛楀吀鎺掑簭 <span style="color:red">*</span>
+                            </label>
+                            <div class="col-sm-4 ">         
+                                <input type="text" class="form-control" name="dictSort" id="dictSort" 
+                                    maxlength="8" value="" onkeyup="value=value.replace(/[^\d]/g,'')"
+                                    onpaste="value=value.replace(/[^\d]/g,'')" oncontextmenu="return false" />
+                            </div>
+                        </div>
+                        <div class="form-group statusCss">
+                            <label class="col-sm-2 control-label">
+                                鐘舵��</label>
+                            <div class="col-sm-4 ">
+                                <select id="status" name="status" class="form-control">
+                                    <option value="0" >鍋滅敤</option>
+                                    <option value="1" selected>姝e父</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                澶囨敞</label>
+                            <div class="col-sm-4">
+                                <textarea class="form-control" name="remark" id="remark" rows="4" ></textarea>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="modal-footer">
+                        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">
+                            鍙栨秷</button>&nbsp;&nbsp;
+                    <button class="btn btn-primary">
+                        淇濆瓨</button>
+                    </div>
+                </div>
+            </form>
+        </div>
+    </div>
+    
+    <!-- footBar -->
+    <div id="mask" class="mask">
+        <span></span>
+        <img src="img/spinning-circles.svg" alt="杞藉叆涓�..." />
+    </div>
+  </asp:Content> 
+
+         
+ 
diff --git a/web/web/SysDictData.aspx.cs b/web/web/SysDictData.aspx.cs
new file mode 100644
index 0000000..0f58b3f
--- /dev/null
+++ b/web/web/SysDictData.aspx.cs
@@ -0,0 +1,58 @@
+锘� 
+using Common;
+using Dao;
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Web;
+using System.Web.Profile;
+using System.Web.SessionState;
+
+/**
+ * 浜у搧绠$悊
+ * 
+ */
+public partial class _SysDictData : PageBase<SysUser>, IRequiresSessionState
+{
+    protected List<SysDictType> SysDictTypeList;
+
+    protected void Page_Load(object sender, EventArgs e)
+  {
+        //鏉冮檺鎺у埗
+        this.CheckRight("111", FailedOperation.ErrorMsgOnly);
+
+        //鑾峰彇瀛楀吀绫诲瀷
+        using (SysDictTypeDao sysDictTypeDao = new SysDictTypeDao()) {
+            SysDictType bean = new SysDictType();
+            bean.Status = -1;
+            this.SysDictTypeList = sysDictTypeDao.getAllList(bean);
+        }
+
+    }
+
+    //鑾峰彇浜у搧鍒嗙被淇℃伅
+    public string GetSysDictTypeOptions(string dictType)
+    {
+        StringBuilder stringBuilder = new StringBuilder();
+        if (this.SysDictTypeList.Count == 0)
+            return "<option value='0'>鏃�</option>";
+        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)"", (object)"鏃�");
+        foreach (SysDictType bean in this.SysDictTypeList)
+        {
+            //鐘舵�佸仠鐢ㄨ繃婊�
+            if (bean.Status == 0)
+            {
+                continue;
+            }
+
+            if (dictType.Equals(bean.DictType) )
+                stringBuilder.AppendFormat("<option value=\"{0}\" selected>{1}</option>", (object)bean.DictType, (object)bean.DictName);
+            else
+                stringBuilder.AppendFormat("<option value=\"{0}\">{1}</option>", (object)bean.DictType, (object)bean.DictName);
+        }
+        return stringBuilder.ToString();
+    }
+
+}
+ 
\ No newline at end of file
diff --git a/web/web/SysDictType.ashx b/web/web/SysDictType.ashx
new file mode 100644
index 0000000..81a9c7a
--- /dev/null
+++ b/web/web/SysDictType.ashx
@@ -0,0 +1,282 @@
+锘�<%@ WebHandler Language="C#" Class="SysDictTypeHandler" %>
+using Common;
+using Dao;
+using Model;
+// using Newtonsoft.Json;
+//using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Web;
+using System.IO;
+using System.Diagnostics;
+
+public class SysDictTypeHandler : PageHandler<SysUser>
+{
+    private SysDictTypeDao _Dao = new SysDictTypeDao();
+
+    private List<SysUser> _SysUserList;
+
+    public override JsonPageResult ProcessRequestInternal(PageContext<SysUser> context)
+    {
+        string @string = context.GetString("action");
+        switch (@string)
+        {
+            case "delete":
+                return this.Delete(context);    //鍒犻櫎
+            case "update":
+                return this.Update(context);    //淇敼
+            case "add":
+                return this.Add(context);       //娣诲姞
+            case "list":
+                return this.List(context);      //鏌ヨ
+            case "getByDictId":
+                return this.GetByDictId(context);      //鑾峰彇璁板綍淇℃伅
+            case "getByDictType":
+                return this.GetByDictType(context);      //鑾峰彇璁板綍淇℃伅
+            case "updateStatus":
+                return this.UpdateStatus(context);  //鍚敤鎴栧仠鐢�
+
+            default:
+                throw new Exception("Invalid Action=" + @string);
+        }
+    }
+
+    //鍔犺浇淇℃伅
+    private JsonPageResult List(PageContext<SysUser> context)
+    {
+        string dictName = context.GetString("dictName");
+
+        int recordCount = 0;
+        int pageSize = context.GetInt("pageSize", 50);
+        int pageIndex = context.GetInt("pageIndex", 1);
+
+        List<SysDictType> list = _Dao.LoadInfoList(dictName, pageSize, pageIndex, out recordCount);
+
+        string str1 = "";
+        if (list != null && list.Count > 0)
+        {
+
+            int num = 0;
+            foreach (SysDictType bean in list)
+            {
+                ++num;
+                str1 += "<tr>";
+                str1 += "<td>" + bean.DictType + "</td>";
+                str1 += "<td>" + bean.DictName + "</td>";
+                str1 += "<td>" + SysUserName(string.IsNullOrEmpty(bean.CreateBy)? 0: int.Parse(bean.CreateBy) ) + "</td>";
+                str1 += "<td>" + bean.CreateTime + "</td>";
+                str1 += "<td>" + (bean.Status == 1 ? "<span class='label label-primary'>姝e父</span>" : "<span class='label label-default'>鍋滅敤</span>") + "</td>";
+                str1 += "<td  class=\"text-center \">";
+                str1 = bean.Status != 0 ? str1 + string.Format("<a href=\"javascript:;\" data-id=\"{0}\" data-status=\"0\" class=\"action-update-status btn btn-default btn-xs\"><i class=\"fa fa-toggle-off\"></i>&nbsp;鍋滅敤</a> ", (object) bean.DictId ) : str1 + string.Format("<a href=\"javascript:;\" data-id=\"{0}\" data-status=\"1\" class=\"action-update-status btn  btn-primary btn-xs\"><i class=\"fa fa-toggle-on\"/></i>&nbsp;鍚敤</a> ", (object) bean.DictId );
+                str1 += string.Format("<a href=\"javascript:;\" data-id=\"{0}\" class=\"action-modal-edit btn  btn-success btn-xs\"><i class=\"fa fa-edit\"></i>&nbsp;缂栬緫</a> ", (object) bean.DictId);
+                str1 += string.Format("<a href=\"javascript:;\" data-id=\"{0}\" class=\"action-delete btn  btn-default btn-xs\"><i class=\"fa fa-trash\"></i>&nbsp;鍒犻櫎</a> ", (object) bean.DictId);
+                str1 += "</td>";
+                str1 += "</tr>";
+            }
+        }
+        else
+            str1 += "<tr><td colspan=\"6\" style=\"padding-left:5px; text-align: center;\">鏆傛棤淇℃伅</td></tr>";
+
+        return new JsonPageResult(true,  new
+        {
+            Table = str1.ToString(),
+            TotalCount = recordCount
+        });
+    }
+
+
+    //鍒犻櫎淇℃伅
+    private JsonPageResult Delete(PageContext<SysUser> context)
+    {
+        string dictId = context.GetString("dictId");
+        SysDictType sysDictType = new SysDictType();
+        sysDictType = _Dao.GetByDictId(dictId);
+        string dictType = sysDictType.DictType;
+
+        if (this._Dao.SysDictTypeUseCount(dictType) > 0)
+            throw new ArgumentException("褰撳墠瀛楀吀绫诲瀷宸插湪瀛楀吀鏁版嵁淇℃伅浣跨敤涓�,鏃犳硶鍒犻櫎锛�");
+                
+        string updateBy = context.SessionObject.UserID.ToString();
+        sysDictType = new SysDictType();
+        sysDictType.DictId = dictId;
+        sysDictType.UpdateBy = updateBy;
+        sysDictType.UpdateTime = DateTime.Now;    //褰撳墠鏃堕棿
+
+        this._Dao.Delete(sysDictType);
+        return new JsonPageResult(true, "鍒犻櫎淇℃伅鎴愬姛锛�");
+
+    }
+
+    //娣诲姞
+    private JsonPageResult Add(PageContext<SysUser> context)
+    {
+        string dictType = context.GetString("dictType");
+        string dictName = context.GetString("dictName");
+        string remark = context.GetString("remark", "");
+
+        if (string.IsNullOrEmpty(dictType) ) {
+            throw new ArgumentException("瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        }
+        if (string.IsNullOrEmpty(dictName) ) {
+            throw new ArgumentException("瀛楀吀鍚嶇О涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        }
+
+        int status = 1; //璁剧疆榛樿鐘舵�侊細1-鍚敤
+            
+        DateTime nowTime = DateTime.Now;    //褰撳墠鏃堕棿
+
+        string creatBy = context.SessionObject.UserID.ToString();
+        DateTime createTime = nowTime;
+        string updateBy = context.SessionObject.UserID.ToString();
+        DateTime updateTime = nowTime;
+            
+        string dictId = DataConverter.getRandom(32);  //鑾峰彇鐢熸垚ID
+        this._Dao.Add(new SysDictType()
+        {
+            DictId = dictId,
+            DictType = dictType,
+            DictName = dictName,
+            //DelFlag = 0,
+            Status = status,
+            CreateBy = creatBy,
+            CreateTime = createTime,
+            UpdateBy = updateBy,
+            UpdateTime = updateTime,
+            Remark = remark
+
+        });
+        return new JsonPageResult(true, "淇℃伅娣诲姞鎴愬姛锛�");
+    }
+
+    //鏇存柊
+    private JsonPageResult Update(PageContext<SysUser> context)
+    {
+        string dictId = context.GetString("dictId");  //鑾峰彇鐢熸垚ID
+        string dictType = context.GetString("dictType");
+        string dictName = context.GetString("dictName");
+        string remark = context.GetString("remark", "");
+
+        if (string.IsNullOrEmpty(dictType) ) {
+            throw new ArgumentException("瀛楀吀绫诲瀷缂栫爜涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        }
+        if (string.IsNullOrEmpty(dictName) ) {
+            throw new ArgumentException("瀛楀吀鍚嶇О涓嶈兘涓虹┖锛岃杈撳叆锛�");
+        }
+        
+        int status = context.GetInt("status", 0);   //璁剧疆榛樿鐘舵�侊細1-鍚敤
+            
+        DateTime nowTime = DateTime.Now;    //褰撳墠鏃堕棿
+
+        
+        string updateBy = context.SessionObject.UserID.ToString();
+        DateTime updateTime = nowTime;
+
+        SysDictType sysDictType = _Dao.GetByDictId(dictId);
+        string creatBy = sysDictType.CreateBy;
+        DateTime createTime = sysDictType.CreateTime;
+
+        this._Dao.Update(new SysDictType()
+        {
+            DictId = dictId,
+            DictType = dictType,
+            DictName = dictName,
+            //DelFlag = 0,
+            Status = status,
+            CreateBy = creatBy,
+            CreateTime = createTime,
+            UpdateBy = updateBy,
+            UpdateTime = updateTime,
+            Remark = remark
+
+        });
+
+
+        return new JsonPageResult(true, "淇℃伅鏇存柊鎴愬姛锛�");
+    }
+
+    //鏍规嵁涓婚敭鑾峰彇淇℃伅
+    private JsonPageResult GetByDictId(PageContext<SysUser> context)
+    {
+        return new JsonPageResult(true, this._Dao.GetByDictId(context.GetString("dictId")));
+    }
+
+    //鏍规嵁涓婚敭鑾峰彇淇℃伅
+    private JsonPageResult GetByDictType(PageContext<SysUser> context)
+    {
+        return new JsonPageResult(true, this._Dao.GetByDictType(context.GetString("dictType")));
+    }
+
+    //鏇存柊淇℃伅鍚敤鎴栧仠鐢�
+    private JsonPageResult UpdateStatus(PageContext<SysUser> context)
+    {
+        string dictId = context.GetString("dictId");
+        int status = context.GetInt("status");
+        SysDictType sysDictType = new SysDictType();
+        sysDictType = _Dao.GetByDictId(dictId);
+
+        string dictType = sysDictType.DictType;
+
+        if(status==0) {
+            if (this._Dao.SysDictTypeUseCount(dictType) > 0)
+                throw new ArgumentException("褰撳墠瀛楀吀绫诲瀷宸插湪瀛楀吀鏁版嵁淇℃伅浣跨敤涓�,鏃犳硶鍋滅敤锛�");
+        }       
+        
+        string updateBy = context.SessionObject.UserID.ToString();
+        sysDictType = new SysDictType();
+        sysDictType.DictId = dictId;
+        sysDictType.Status = status;
+        sysDictType.UpdateBy = updateBy;
+        sysDictType.UpdateTime = DateTime.Now;    //褰撳墠鏃堕棿
+
+        this._Dao.UpdateStatus(sysDictType);
+        return new JsonPageResult(true, "鏇存柊淇℃伅鐘舵�佹垚鍔燂紒");
+
+    }
+        
+    //鑾峰彇绠$悊绔处鎴峰垪琛�
+    private List<SysUser> SysUserList
+    {
+        get
+        {
+            if (this._SysUserList == null)
+            {
+
+                using (UserDao sysUserDao = new UserDao())
+                {
+                    int recordCount = 0;
+                    int int1 = 999999999;
+                    int int2 = 1;
+                    this._SysUserList = sysUserDao.LoadInfoList(out recordCount, int1, int2);
+                }
+            }
+            return this._SysUserList;
+        }
+    }
+
+    //鍚敤鍋滅敤杞崲鍚嶇О
+    private string StatusToName(int status)
+    {
+        if (status == -1)
+            return string.Empty;
+        else if(status == 0)
+            return "<span class='label label-default'>鍋滅敤</span>";
+        else if(status == 1)
+            return "<span class='label label-primary'>姝e父</span>";
+
+        return string.Empty;
+    }
+
+    //绠$悊绔敤鎴稩D杞悕绉�
+    private string SysUserName(int userId)
+    {
+        if (this.SysUserList == null)
+            return string.Empty;
+        SysUser sysUser = this._SysUserList.Find((Predicate<SysUser>)(bean => bean.UserID == userId));
+        if (sysUser != null)
+            return string.Format("{0}", (object)sysUser.UserName);
+        return string.Empty;
+    }
+
+}
\ No newline at end of file
diff --git a/web/web/SysDictType.aspx b/web/web/SysDictType.aspx
new file mode 100644
index 0000000..08a9fb5
--- /dev/null
+++ b/web/web/SysDictType.aspx
@@ -0,0 +1,240 @@
+锘�<%@ Page Language="C#"  masterpagefile="~/Main.master"  AutoEventWireup="true" CodeFile="SysDictType.aspx.cs" Inherits="_SysDictType" %>
+<asp:Content runat="server" ID="Content1" ContentPlaceHolderID="head">
+    <script type="text/javascript" language="javascript">
+    $(document).ready(function() {
+        var pagination = new Pagination();
+        pagination.setPageIndex(1);
+        pagination.setPageSize(50);
+
+        function loadPageList() {
+            var dictName = $("#DictName").val();
+            $.ajax({
+                url: "SysDictType.ashx",
+                type: "POST",
+                data: { action: "list", dictName: dictName, pageIndex: pagination.getPageIndex(), pageSize: pagination.getPageSize() },
+                success: function(result) {
+                    if (result.OK) {
+                        $("#sysDictTypeTable tbody").html(result.Message.Table);
+                        pagination.setRecordCount(result.Message.TotalCount);
+                        $("#pagination").html(pagination.getHtml());
+                        $("[data-toggle='popover']").popover();
+                    } else {
+                        mytek.alert(result.Message, result.OK);
+                    }
+                }
+            });
+        }
+
+        $(document).on("click", ".action-modal-add", function() {
+            $("#sysDictTypeDialog .modal-title").text("娣诲姞瀛楀吀绫诲瀷");
+            $("#sysDictTypeDialog #action").val("add");
+            $("#sysDictTypeDialog #dictId").val("");
+            $("#sysDictTypeDialog #dictType").val("").attr("readonly", false);
+            $("#sysDictTypeDialog #dictName").val("");
+            $("#sysDictTypeDialog #remark").val("");
+
+            $("#sysDictTypeDialog .statusCss").hide();
+
+            $("#sysDictTypeDialog").modal("show");
+        });
+
+        $("#sysDictTypeForm").ajaxForm({
+            success: function(r) {
+                if (r.OK) {
+                    mytek.alert(r.Message, r.OK, function() {
+                        $("#sysDictTypeDialog").modal("hide");
+                        loadPageList();
+                    });
+                } else {
+                    mytek.alert(r.Message, r.OK);
+                }
+            }
+        });
+
+        $(document).on("click", ".action-modal-edit", function() {
+            var dictId = $(this).data("id");
+            $("#sysDictTypeDialog .modal-title").text("缂栬緫瀛楀吀绫诲瀷");
+
+            $.get("SysDictType.ashx", { "action": "getByDictId", dictId: dictId }, function(r) {
+                if (r.OK) {
+                    $("#sysDictTypeDialog #action").val("update");
+                    $("#sysDictTypeDialog #dictId").val(r.Message.DictId);
+                    $("#sysDictTypeDialog #dictType").val(r.Message.DictType).attr("readonly", true);
+                    $("#sysDictTypeDialog #dictName").val(r.Message.DictName);
+                    $("#sysDictTypeDialog #status").val(r.Message.Status);
+                    $("#sysDictTypeDialog #remark").val(r.Message.Remark);
+
+                    $("#sysDictTypeDialog .statusCss").show();
+
+                    $("#sysDictTypeDialog").modal("show");
+                }
+                else {
+                    mytek.alert(r.Message, r.OK);
+                }
+            }, "json");
+        });
+
+        $(document).on("click", ".action-update-status", function () {
+            //data鐨勫睘鎬у弬鏁颁笉鑳藉惈鏈夊ぇ鍐欏瓧姣嶃��
+            var dictId = $(this).data("id");
+            var status = $(this).data("status");
+            var statusStr = "";
+            if (status == 0) {
+                statusStr = "銆愬仠鐢ㄣ��";
+            }
+            else {
+                statusStr = "銆愬惎鐢ㄣ��";
+            }
+            mytek.confirm("鏄惁闇�瑕�" + statusStr + "璇ヤ俊鎭紵", "纭鏇存柊淇℃伅鐘舵�侊紝璇疯皑鎱庢搷浣滐紒", function (b) {
+                if (b) {
+                    $.post("SysDictType.ashx", { "action": "updateStatus", dictId: dictId, status: status }, function (r) {
+                        mytek.alert(r.Message, r.OK, function () {
+                            loadPageList();
+                        });
+                    });
+                }
+            });
+        });
+
+        $(document).on("click", ".action-delete", function() {
+            var dictId = $(this).data("id");
+            mytek.confirm("鏄惁闇�瑕佸垹闄よ淇℃伅锛�", "鏁版嵁鍒犻櫎鍚庡皢鏃犳硶鎭㈠锛岃璋ㄦ厧鎿嶄綔锛�", function(b) {
+                if (b) {
+                    $.post("SysDictType.ashx", { "action": "delete", dictId: dictId }, function(result) {
+                        mytek.alert(result.Message, result.OK, function() {
+                            loadPageList();
+                        });
+                    },
+                    "json");
+                }
+            });
+        });
+
+        $(document).on("click", ".action-btn-SysDictTypeQuery", function() {
+            pagination.setPageIndex(1);
+            loadPageList();
+        });
+
+        $(document).on("click", "a[data-index]", function() {
+            pagination.setPageIndex($(this).attr("data-index"));
+            loadPageList();
+        });
+
+        //杩涘叆椤甸潰鏃舵墽琛屾煡璇�
+        loadPageList();
+
+    });
+    </script>
+ </asp:Content> 
+<asp:Content runat="server" ID="Content2" ContentPlaceHolderID="title">瀛楀吀绫诲瀷绠$悊</asp:Content> 
+<asp:Content ID="Content3" ContentPlaceHolderID="content" runat="Server">
+   
+    <form name="queryForm" method="get" action="SysDictType.aspx" id="queryForm" class="form-inline"
+        id="sysDictTypeTable">
+        <div class="m-b">
+            <div class="form-group">
+                <div class="input-group">
+                    <span class="input-group-addon">瀛楀吀绫诲瀷鍚嶇О</span>
+                    <input type="text" name="DictName" id="DictName" class="form-control" />
+                </div>
+            </div>
+            <div class="form-group">
+                <div class="input-group">
+                    <input type="button" value="鏌ヨ" class="btn btn-primary action-btn-SysDictTypeQuery" />&nbsp;&nbsp;&nbsp;
+                     <input class=" btn btn-warning action-modal-add" value="娣诲姞瀛楀吀绫诲瀷" type="button" />
+                </div>
+            </div>
+        </div>
+        <table class="table table-striped table-bordered table-hover" id="sysDictTypeTable">
+            <thead>
+                <tr class="header">
+                    <th>瀛楀吀绫诲瀷缂栫爜
+                    </th>
+                    <th>瀛楀吀绫诲瀷鍚嶇О
+                    </th>
+                    <th>鍒涘缓鑰�
+                    </th>
+                    <th>鍒涘缓鏃堕棿
+                    </th>
+                    <th>鏄惁鍚敤
+                    </th>
+                    <th class="text-center">鎿嶄綔
+                    </th>
+                </tr>
+            </thead>
+            <tbody>
+            </tbody>
+        </table>
+    </form>
+    <div id="pagination">
+    </div>
+    <div class="footBar">
+      
+    </div>
+
+    <div class="modal inmodal fade" id="sysDictTypeDialog" tabindex="-1" role="dialog" aria-hidden="true">
+        <div class="modal-dialog modal-lg">
+            <form class="form-horizontal" id="sysDictTypeForm" name="sysDictTypeForm" method="post" action="SysDictType.ashx">
+                <div class="modal-content ">
+                    <div class="modal-header">
+                        <input type="hidden" class="form-control" name="action" id="action" value="update" />
+                        <input type="hidden" class="form-control" name="dictId" id="dictId" value="" />
+                        <button type="button" class="close" data-dismiss="modal">
+                            <span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+                        <h4 class="modal-title">缂栬緫瀛楀吀绫诲瀷璧勬枡</h4>
+                    </div>
+                    <div class="modal-body">
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                瀛楀吀绫诲瀷缂栫爜 <span style="color:red">*</span>
+                            </label>
+                            <div class="col-sm-4 ">
+                                <input type="text" class="form-control" name="dictType" id="dictType" value="" />
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                瀛楀吀绫诲瀷鍚嶇О <span style="color:red">*</span>
+                            </label>
+                            <div class="col-sm-4 ">
+                                <input type="text" class="form-control" name="dictName" id="dictName" value="" />
+                            </div>
+                        </div>
+                        <div class="form-group statusCss">
+                            <label class="col-sm-2 control-label">
+                                鐘舵��</label>
+                            <div class="col-sm-4 ">
+                                <select id="status" name="status" class="form-control">
+                                    <option value="0" >鍋滅敤</option>
+                                    <option value="1" selected>姝e父</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="col-sm-2 control-label">
+                                澶囨敞</label>
+                            <div class="col-sm-4">
+                                <textarea class="form-control" name="remark" id="remark" rows="4" ></textarea>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="modal-footer">
+                        <button class="btn btn-default" data-dismiss="modal" aria-hidden="true">
+                            鍙栨秷</button>&nbsp;&nbsp;
+                    <button class="btn btn-primary">
+                        淇濆瓨</button>
+                    </div>
+                </div>
+            </form>
+        </div>
+    </div>
+    
+    <!-- footBar -->
+    <div id="mask" class="mask">
+        <span></span>
+        <img src="img/spinning-circles.svg" alt="杞藉叆涓�..." />
+    </div>
+  </asp:Content> 
+
+         
+ 
diff --git a/web/web/SysDictType.aspx.cs b/web/web/SysDictType.aspx.cs
new file mode 100644
index 0000000..0dad56c
--- /dev/null
+++ b/web/web/SysDictType.aspx.cs
@@ -0,0 +1,58 @@
+锘� 
+using Common;
+using Dao;
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Web;
+using System.Web.Profile;
+using System.Web.SessionState;
+
+/**
+ * 浜у搧绠$悊
+ * 
+ */
+public partial class _SysDictType : PageBase<SysUser>, IRequiresSessionState
+{
+    protected List<SysDictType> SysDictTypeList;
+
+    protected void Page_Load(object sender, EventArgs e)
+  {
+        //鏉冮檺鎺у埗
+        this.CheckRight("110", FailedOperation.ErrorMsgOnly);
+
+        //鑾峰彇瀛楀吀绫诲瀷
+        using (SysDictTypeDao sysDictTypeDao = new SysDictTypeDao()) {
+            SysDictType bean = new SysDictType();
+            bean.Status = -1;
+            this.SysDictTypeList = sysDictTypeDao.getAllList(bean);
+        }
+
+    }
+
+    //鑾峰彇浜у搧鍒嗙被淇℃伅
+    public string GetSysDictTypeOptions(string dictType)
+    {
+        StringBuilder stringBuilder = new StringBuilder();
+        if (this.SysDictTypeList.Count == 0)
+            return "<option value='0'>鏃�</option>";
+        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)"", (object)"鏃�");
+        foreach (SysDictType bean in this.SysDictTypeList)
+        {
+            //鐘舵�佸仠鐢ㄨ繃婊�
+            if (bean.Status == 0)
+            {
+                continue;
+            }
+
+            if (dictType.Equals(bean.DictType) )
+                stringBuilder.AppendFormat("<option value=\"{0}\" selected>{1}</option>", (object)bean.DictType, (object)bean.DictName);
+            else
+                stringBuilder.AppendFormat("<option value=\"{0}\">{1}</option>", (object)bean.DictType, (object)bean.DictName);
+        }
+        return stringBuilder.ToString();
+    }
+
+}
+ 
\ No newline at end of file
diff --git a/web/web/SysUser.ashx b/web/web/SysUser.ashx
index f1bae60..d5590f4 100644
--- a/web/web/SysUser.ashx
+++ b/web/web/SysUser.ashx
@@ -31,7 +31,10 @@
                 return this.UpdatePermission(context);
             case "updateStatus":
                 return this.UpdateStatus(context);
-                    
+            //淇敼瀵嗙爜
+            case "updatePwd":
+                return UpdatePwd(context);
+
             default:
                 throw new Exception("Invalid Action=" + @string);
         }
@@ -102,8 +105,11 @@
         int num = 0;
         if (string.IsNullOrEmpty(string1) || !Regex.IsMatch(string1, "\\w{3,}"))
             throw new ArgumentException("璐︽埛鑷冲皯3浣嶅彲瑙佸瓧绗︼紝璇烽噸鏂拌緭鍏ワ紒");
-        if (string.IsNullOrEmpty(string2) || string2.Length < 6)
-            throw new ArgumentException("璐︽埛瀵嗙爜鑷冲皯6浣嶏紝璇烽噸鏂拌緭鍏ワ紒");
+        if(int1<= 0 )
+        { 
+            if (string.IsNullOrEmpty(string2) || string2.Length < 6)
+                throw new ArgumentException("璐︽埛瀵嗙爜鑷冲皯6浣嶏紝璇烽噸鏂拌緭鍏ワ紒");
+        }
         if (string.IsNullOrEmpty(userName))
             throw new ArgumentException("璐︽埛鍚嶇О涓嶈兘涓虹┖锛岃杈撳叆锛�");
         if (string.IsNullOrEmpty(userType))
@@ -136,17 +142,24 @@
         sysUser.UserName = userName;
         sysUser.UserType = string.IsNullOrEmpty(userType) ? 0 : int.Parse(userType);
         sysUser.CreateTime = DateTime.Now;
-        if (int1 > 0)
-        {
-            SysUser userInfo = this._Dao.GetUserInfo(int1);
-            sysUser.Password = userInfo.Password == string2 ? userInfo.Password : DataHelper.MD5Hex(string2);
-            sysUser.IsEncryption = userInfo.Password == string2 ? userInfo.IsEncryption : 1;
-        }
-        else
-        {
-            sysUser.Password = DataHelper.MD5Hex(string2);
-            sysUser.IsEncryption = 1;
-        }
+
+        /**
+    //鑾峰彇鍞竴鏍囪瘑绗�
+    string salt = DataConverter.getRandom(6);
+    if (int1 > 0)
+    {
+        SysUser userInfo = this._Dao.GetUserInfo(int1);
+        sysUser.Password = userInfo.Password == string2 ? userInfo.Password : DataHelper.MD5Hex(string2);
+        sysUser.IsEncryption = userInfo.Password == string2 ? userInfo.IsEncryption : 1;
+    }
+    else
+    {
+        string2 += salt;
+        sysUser.Password = DataHelper.MD5Hex(string2);
+        sysUser.IsEncryption = 1;
+        sysUser.Salt = salt;
+    }**/
+
         sysUser.Email = string3;
         sysUser.Mobile = string4;
         sysUser.MobileFlag = int3;
@@ -156,6 +169,12 @@
         if (int1 > 0)
         {
             context.CheckRight("1042", FailedOperation.PromptOnly);
+            if (int1 > 0)
+            {
+                SysUser userInfo = this._Dao.GetUserInfo(int1);
+                sysUser.IsEncryption = userInfo.Password == string2 ? userInfo.IsEncryption : 1;
+            }
+            //edit:yangzh by 20220612 淇敼鏃朵笉鏇存柊瀵嗙爜
             this._Dao.Update(sysUser);
         }
         else
@@ -164,7 +183,25 @@
             if (this._Dao.Exists(string1))
                 throw new ArgumentException("璐︽埛宸茬粡瀛樺湪锛岃閲嶆柊杈撳叆锛�");
 
+
+            string password = "";
+            if(int1> 0 )
+            {
+                throw new ArgumentException("瀵嗙爜涓嶈兘涓虹┖锛岃閲嶆柊杈撳叆锛�");
+            }
+
+            //鑾峰彇鍞竴鏍囪瘑绗�
+            string salt = DataConverter.getRandom(6);
+
+            string2 += salt;
+            password = DataHelper.MD5Hex(string2);
+
+            sysUser.IsEncryption = 1;
+            sysUser.Salt = salt;
+            sysUser.Password = password;
+
             this._Dao.Add(sysUser);
+
         }
         return new JsonPageResult(true, (object) "璐︽埛淇濆瓨鎴愬姛锛�");
     }
@@ -177,10 +214,40 @@
         int status = context.GetInt("status");
 
         SysUser sysUser = new SysUser();
-            sysUser.UserID = userId;
-            sysUser.Status = status;
+        sysUser.UserID = userId;
+        sysUser.Status = status;
         this._Dao.UpdateStatus(sysUser);
         return new JsonPageResult(true, "鏇存柊淇℃伅鐘舵�佹垚鍔燂紒");
 
     }
+
+    //淇敼瀵嗙爜
+    private JsonPageResult UpdatePwd(PageContext<Model.SysUser> context)
+    {
+        string account = context.GetString("account");
+        string newPwd = context.GetString("newPwd");
+        int userID = 0;
+
+        if (string.IsNullOrEmpty(account))
+        {
+            throw new ArgumentException("绯荤粺璐﹀彿鍙傛暟寮傚父锛�");
+        }
+
+        if (string.IsNullOrEmpty(newPwd) || !System.Text.RegularExpressions.Regex.IsMatch(newPwd, @"[a-zA-Z0-9]{4,10}"))
+        {
+            throw new ArgumentException("鐧诲綍瀵嗙爜涓嶈兘涓虹┖锛屼笖蹇呴』涓�4-10浣嶈嫳鏂囨垨鏁板瓧瀛楃缁勫悎锛�");
+        }
+        string salt = "";
+        SysUser sysUser = _Dao.GetUser(account);
+
+        salt = sysUser.Salt==null? "": sysUser.Salt.ToString();
+        newPwd += salt;
+
+        //瀵嗙爜MD5鍔犲瘑锛�
+        newPwd = DataHelper.MD5Hex(newPwd);
+
+        _Dao.UpdatePwd(account, newPwd );
+
+        return new JsonPageResult(true, (object)"淇敼瀵嗙爜鎴愬姛锛�");
+    }
 }
diff --git a/web/web/SysUser.aspx b/web/web/SysUser.aspx
index 8524a6c..5697391 100644
--- a/web/web/SysUser.aspx
+++ b/web/web/SysUser.aspx
@@ -57,13 +57,14 @@
                             //html.push("<td>" + (this.Status == 1 ? "<a href='javascript:;' class='btn btn-primary btn-xs action-update-status' data-id=" + this.UserID + " data-status=0 ><i class='fa fa-toggle-off'></i>&nbsp;鍚敤</a>" : "<a href='javascript:;' class='btn btn-default btn-xs action-update-status' data-id=" + this.UserID + " data-status=1 ><i class='fa fa-toggle-on'></i>鍋滅敤</a>") + "</td>");
                             html.push("<td class='text-right' >");
                             if (this.Status == 0) {
-                                html.push("<a href='javascript:;' class='btn btn-primary btn-xs action-update-status' data-id=" + this.UserID + " data-status=1 ><i class='fa fa-toggle-off'></i>鍚敤</a>&nbsp;&nbsp;" );
+                                html.push("<a href='javascript:;' class='btn btn-primary btn-xs action-update-status' data-id=" + this.UserID + " data-status=1 ><i class='fa fa-toggle-off'></i>鍚敤</a>&nbsp;" );
                             }
                             else {
-                                html.push("<a href='javascript:;' class='btn btn-default btn-xs action-update-status' data-id=" + this.UserID + " data-status=0 ><i class='fa fa-toggle-on'></i>鍋滅敤</a>&nbsp;&nbsp;");
+                                html.push("<a href='javascript:;' class='btn btn-default btn-xs action-update-status' data-id=" + this.UserID + " data-status=0 ><i class='fa fa-toggle-on'></i>鍋滅敤</a>&nbsp;");
                             }
-                            html.push("<a href='javascript:;' class='btn btn-success btn-xs action-edit' data-id='" + this.UserID + "'><i class='fa fa-edit'></i>&nbsp;缂栬緫</a>&nbsp;&nbsp;");
-                            html.push("<a href='javascript:;' data-id='" + this.UserID + "' class='action-permission  btn btn-info btn-xs'><i class='fa fa-edit'></i>&nbsp;鏉冮檺</a>&nbsp;&nbsp;");
+                            html.push("<a href='javascript:;' class='btn btn-success btn-xs action-edit' data-id='" + this.UserID + "'><i class='fa fa-edit'></i>&nbsp;缂栬緫</a>&nbsp;");
+                            html.push("<a href='javascript:;' data-id='" + this.Account + "' class='action-modal-updatePwd  btn btn-primary btn-xs'><i class='fa fa-edit'></i>&nbsp;淇敼瀵嗙爜</a>&nbsp;");
+                            html.push("<a href='javascript:;' data-id='" + this.UserID + "' class='action-permission  btn btn-info btn-xs'><i class='fa fa-edit'></i>&nbsp;鏉冮檺</a>&nbsp;");
                             html.push("<a href='javascript:;' data-id='" + this.UserID + "' class='action-delete   btn btn-default btn-xs'><i class='fa fa-trash'></i>&nbsp;鍒犻櫎</a>");
                             html.push("</td>");
                             html.push("</tr>");
@@ -146,13 +147,18 @@
                 $("#userDialog .modal-title").html("鍒涘缓璐︽埛");
                 $("#userDialog").data("id", 0);
                 $("#userDialog #account").val("");
-                $("#userDialog #password").val("");
+                //$("#userDialog #password").val("");
                 $("#userDialog #userName").val("");
                 $("#userDialog #userType").val("");
                 $("#userDialog #mobile").val("");
                 $("#userDialog #email").val("");
                 $("#userDialog input[name=isVerification]").iCheck("uncheck");
                 $("#userDialog #clientIp").val("");
+
+                //鍒锋柊涓�娆¢殢鏈哄瘑鐮�
+                $("#userDialog #password").val(randomString(8));
+                $(".pwdCss").show();
+
                 $("#userDialog").modal("show");
             });
 
@@ -221,7 +227,10 @@
                     var user = result.Message;
                     $("#userDialog").data("id", id);
                     $("#userDialog #account").val(user.Account);
-                    $("#userDialog #password").val(user.Password);
+                    //$("#userDialog #password").val(user.Password);
+                    $("#userDialog #password").val("");
+                    //缂栬緫鏃跺瘑鐮佹闅愯棌
+                    $(".pwdCss").hide();
                     $("#userDialog #userName").val(user.UserName);
                     $("#userDialog #userType").val(user.UserType);
                     $("#userDialog #mobile").val(user.Mobile);
@@ -236,6 +245,130 @@
 
             loadUserList();
 
+        });
+
+        //鐢熸垚闅忔満鐮�
+        function randomString(len) {
+            len = len || 32;
+            var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';    /****榛樿鍘绘帀浜嗗鏄撴贩娣嗙殑瀛楃oOLl,9gq,Vv,Uu,I1****/
+            var maxPos = $chars.length;
+            var pwd = '';
+            for (i = 0; i < len; i++) {
+                pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
+            }
+            return pwd;
+        }
+
+        //娣诲姞绯荤粺璐﹀彿锛氱敓鎴愬瘑鐮�
+        $(document).on("click", ".action-generate-password", function () {
+            $("#password").val(randomString(8));
+        });
+
+        //娣诲姞绯荤粺璐﹀彿锛氬鍒跺瘑鐮�
+        $(document).on("click", ".action-copyPwd", function () {
+            var value = $("#password").val();
+            if (value == "") {
+                mytek.alert("璇风敓鎴愬瘑鐮侊紒");
+                return false;
+            }
+            // for ie
+            if (window.clipboardData) {
+                window.clipboardData.clearData();
+                window.clipboardData.setData('text', value);
+            }
+            // for modern browser
+            else if (document.execCommand) {
+                var element = document.createElement('SPAN');
+                element.textContent = value;
+                document.body.appendChild(element);
+                if (document.selection) {
+                    var range = document.body.createTextRange();
+                    range.moveToElementText(element);
+                    range.select();
+                } else if (window.getSelection) {
+                    var range = document.createRange();
+                    range.selectNode(element);
+                    window.getSelection().removeAllRanges();
+                    window.getSelection().addRange(range);
+                }
+                document.execCommand('copy');
+                element.remove ? element.remove() : element.removeNode(true);
+            }
+            mytek.alert("澶嶅埗鎴愬姛锛�", false);
+
+        });
+
+        //淇敼瀵嗙爜锛氭墦寮�鐣岄潰
+        $(document).on("click", ".action-modal-updatePwd", function () {
+            //$("#updatePwdDialog .modal-title").text("淇敼瀹㈡埛璧勬枡");
+            $("#updatePwdDialog input[name=action]").val("updatePwd");
+            var account = $(this).data("id");
+
+            $("#updatePwdDialog input[name='account']").val(account);
+            $("#updatePwdDialog #newPwd").val("");
+
+            $("#updatePwdDialog").modal("show");
+
+        });
+
+        //淇敼瀵嗙爜锛氱敓鎴愬瘑鐮�
+        $(document).on("click", ".action-generate-newPwd", function () {
+            $("#newPwd").val(randomString(8));
+        });
+
+        //淇敼瀵嗙爜锛氬鍒跺瘑鐮�
+        $(document).on("click", ".action-copyNewPwd", function () {
+            var value = $("#newPwd").val();
+            if (value == "") {
+                mytek.alert("璇风敓鎴愬瘑鐮侊紒");
+                return false;
+            }
+
+            // for ie
+            if (window.clipboardData) {
+                window.clipboardData.clearData();
+                window.clipboardData.setData('text', value);
+            }
+            // for modern browser
+            else if (document.execCommand) {
+                var element = document.createElement('SPAN');
+                element.textContent = value;
+                document.body.appendChild(element);
+                if (document.selection) {
+                    var range = document.body.createTextRange();
+                    range.moveToElementText(element);
+                    range.select();
+                } else if (window.getSelection) {
+                    var range = document.createRange();
+                    range.selectNode(element);
+                    window.getSelection().removeAllRanges();
+                    window.getSelection().addRange(range);
+                }
+                document.execCommand('copy');
+                element.remove ? element.remove() : element.removeNode(true);
+            }
+            mytek.alert("澶嶅埗鎴愬姛锛�", false);
+
+        });
+
+        /**
+        //闈㈡澘椤垫彁浜わ細闅愯棌闈㈡澘锛堢櫧鍚嶅崟锛岄粦鍚嶅崟锛屼慨鏀瑰瘑鐮侊級
+        $("#blackForm, #whiteForm").ajaxForm({
+            success: function (r) {
+                mytek.alert(r.Message, r.OK, function () {
+                    $("#whiteDialog, #blackDialog").modal("hide");
+                });
+            }
+        });
+        **/
+
+        //闈㈡澘椤垫彁浜わ細閲嶆柊鍔犺浇鍒楄〃
+        $("#updatePwdForm").ajaxForm({
+            success: function (r) {
+                mytek.alert(r.Message, r.OK, function () {
+                    r.OK && (window.location.reload());
+                });
+            }
         });
 
     </script>
@@ -260,11 +393,15 @@
                             <input type="text" name="account" id="account" value="" class="form-control" />
                         </div>
                     </div>
-                    <div class="form-group">
+                    <div class="form-group pwdCss">
                         <label class="col-sm-2 control-label">
                             瀵嗙爜 <span style="color:red">*</span></label>
-                        <div class="col-sm-10">
+                        <div class="col-sm-4">
                             <input type="password" name="password" id="password" value="" class="form-control" />
+                        </div>
+                        <div class="col-sm-6">
+                            <a class="btn btn-xs btn-primary action-generate-password ">鐢熸垚瀵嗙爜</a>
+                            <a class="btn btn-xs btn-success action-copyPwd " >澶嶅埗瀵嗙爜</a>
                         </div>
                     </div>
                     <div class="form-group">
@@ -374,8 +511,50 @@
             </div>
         </div>
     </div>
-    <form name="DefaultForm" method="post" action="GwSpUpdate.aspx" id="DefaultForm">
-    <div class="listCanvas">
+
+    
+    <!--閲嶇疆瀵嗙爜鎴栦慨鏀瑰瘑鐮� -->
+    <div class="modal inmodal fade" id="updatePwdDialog" tabindex="-1" role="dialog" aria-hidden="true">
+        <form name="updatePwdForm" method="post" action="sysuser.ashx?action=updatePwd" id="updatePwdForm"
+            class="form-horizontal">
+            <div class="modal-dialog modal-lg">
+                <div class="modal-content ">
+                    <div class="modal-header">
+                        <button type="button" class="close" data-dismiss="modal">
+                            <span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
+                        <h4 class="modal-title">绯荤粺璐﹀彿瀵嗙爜淇敼
+                        </h4>
+                        璇峰厛鎵ц銆愮敓鎴愬瘑鐮併�戝悗锛屽啀鎵ц銆愬鍒跺瘑鐮併�戙��
+                    </div>
+                    <div class="modal-body">
+                        <input type="hidden" value="" name="account" />
+                        <div class="form-group">
+                            <label class="control-label  col-sm-2">
+                                鐧诲綍瀵嗙爜 <span style="color:red">*</span>
+                            </label>
+                            <div class="col-sm-4">
+                                <input type="password" name="newPwd" id="newPwd" value="" class="form-control" />
+                            </div>
+                            <div class="col-sm-6">
+                                <a class="btn btn-xs btn-primary action-generate-newPwd ">鐢熸垚瀵嗙爜</a>
+                                <a class="btn btn-xs btn-success action-copyNewPwd " >澶嶅埗瀵嗙爜</a>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="modal-footer">
+                        <button class="btn btn-warning" data-dismiss="modal" aria-hidden="true">
+                            鍙栨秷</button>&nbsp;&nbsp;
+                    <button class="btn btn-primary action-save-pwd">
+                        淇濆瓨</button>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </div>
+
+    <!--form name="DefaultForm" method="post" action="GwSpUpdate.aspx" id="DefaultForm" -->
+    <div class="listCanvas">        
+        <button class="btn btn-warning action-create "> 鍒涘缓璐︽埛</button>
         <table id="mainTable" class="table table-striped table-bordered table-hover">
             <thead>
                 <tr>
@@ -412,7 +591,7 @@
                     <th>
                         鐘舵��
                     </th>
-                    <th style="width: 240px;">
+                    <th style="width: 320px;">
                         鎿嶄綔
                     </th>
                 </tr>
@@ -423,7 +602,7 @@
     </div>
     <div id="pagination">
     </div>
-    </form>
+    <!--
     <div class="row">
         <div class="col-sm-7">
             <div class="ibox float-e-margins">
@@ -432,6 +611,7 @@
             </div>
         </div>
     </div>
+    -->
     <div>
         <h5>
         </h5>
diff --git a/web/web/gwspupdate.aspx b/web/web/gwspupdate.aspx
index 21e9c7b..7d1d8e4 100644
--- a/web/web/gwspupdate.aspx
+++ b/web/web/gwspupdate.aspx
@@ -15,13 +15,13 @@
     <link href="css/style.min862f.css?v=4.1.0" rel="stylesheet" /><link href="css/plugins/sweetalert/sweetalert.css" rel="stylesheet" />
     <link href="css/plugins/datapicker/datepicker3.css" rel="stylesheet" /><link href="css/jquery.numberedtextarea.css" rel="stylesheet" />
     <script src="js/loading.js" type="text/javascript"></script>
-    <script src="js/jquery.min.js?v=2.1.4"></script>
-    <script src="js/json.js"></script>
-    <script src="js/bootstrap.min.js?v=3.3.6"></script>
-    <script src="js/content.min.js?v=1.0.0"></script>
-    <script src="js/plugins/iCheck/icheck.min.js"></script>
-    <script src="js/plugins/sweetalert/sweetalert.min.js"></script>
-    <script src="js/plugins/datapicker/bootstrap-datepicker.js"></script>
+    <script type="text/javascript" src="js/jquery.min.js?v=2.1.4"></script>
+    <script type="text/javascript" src="js/json.js"></script>
+    <script type="text/javascript" src="js/bootstrap.min.js?v=3.3.6"></script>
+    <script type="text/javascript" src="js/content.min.js?v=1.0.0"></script>
+    <script type="text/javascript" src="js/plugins/iCheck/icheck.min.js"></script>
+    <script type="text/javascript" src="js/plugins/sweetalert/sweetalert.min.js"></script>
+    <script type="text/javascript" src="js/plugins/datapicker/bootstrap-datepicker.js"></script>
     
     <!--涓嬮潰杩欓噷鐨凧S鍦ㄨ皟璇曠殑鏃跺�欒娉ㄦ剰涓�涓嬶紝鍓嶉潰闇�瑕佸姞/web/ 渚嬪 src="/web/js/jquery-loading.js" -->
     <!--鍙戝竷鐗堟湰鐨勬椂鍊欙紝涓嶉渶瑕佸姞/web/-->
@@ -64,16 +64,16 @@
             }
         })(jQuery);
 
-       $(document).ready(function(){
-            $(".icheck-me").iCheck({checkboxClass:"icheckbox_square-green",radioClass:"iradio_square-green",});
-            $(".input-group.date").datepicker({todayBtn:"linked",keyboardNavigation:!1,forceParse:!1,calendarWeeks:!0,autoclose:!0});
-            $("[data-toggle='tooltip']").tooltip();
-            $("[data-toggle=popover]").popover()
-       });
     </script>
     
     <script>
-       	$(document).ready(function () {
+        $(document).ready(function () {
+
+            $(".icheck-me").iCheck({ checkboxClass: "icheckbox_square-green", radioClass: "iradio_square-green", });
+            $(".input-group.date").datepicker({ todayBtn: "linked", keyboardNavigation: !1, forceParse: !1, calendarWeeks: !0, autoclose: !0 });
+            $("[data-toggle='tooltip']").tooltip();
+            $("[data-toggle=popover]").popover()
+
             $(".action-back").on("click",function(){
                 history.go(-1);
             });
@@ -234,9 +234,40 @@
                 $("#MoreParamsTable").toggle();
             });
 
+            //鐢熸垚瀵嗙爜
             $(".generatorPassword").on("click",function(){
                 var forTarget = $("#" + $(this).attr("for"));
                 forTarget.val(randomString(6));
+            });
+
+            //澶嶅埗瀵嗙爜
+            $(document).on("click", ".copyPwd", function () {
+                var value = $("#Password").val();
+                // for ie
+                if (window.clipboardData) {
+                    window.clipboardData.clearData();
+                    window.clipboardData.setData('text', value);
+                }
+                // for modern browser
+                else if (document.execCommand) {
+                    var element = document.createElement('SPAN');
+                    element.textContent = value;
+                    document.body.appendChild(element);
+                    if (document.selection) {
+                        var range = document.body.createTextRange();
+                        range.moveToElementText(element);
+                        range.select();
+                    } else if (window.getSelection) {
+                        var range = document.createRange();
+                        range.selectNode(element);
+                        window.getSelection().removeAllRanges();
+                        window.getSelection().addRange(range);
+                    }
+                    document.execCommand('copy');
+                    element.remove ? element.remove() : element.removeNode(true);
+                }
+                mytek.alert("澶嶅埗鎴愬姛锛�", false);
+
             });
 
             toggleTarget($("#AuditingMode")[0].value == 1 || $("#AuditingMode")[0].value == 2, "#deductSpan");
@@ -433,7 +464,8 @@
                  $(".action-modal-body").html(summary.join("\r\n"));
 //               mytek.alert(summary.join("\r\n"),"success");
             }
-               
+
+            //淇敼淇濆瓨
             $(".action-save").on("click",function(){
                 $(this).parents("form").ajaxSubmit({
                     success: function(r){
@@ -448,9 +480,48 @@
                         }
                     }
                 });
-            }); 
+            });
+                  //鍒濆鍖栨樉绀烘垨闅愯棌
+                  $("#advancedShow").show();
+                  $("#advancedHide").hide();
+                  $("#advancedSet").hide();
+
+                  //鏄剧ず楂樼骇鍙傛暟閰嶇疆锛歛dvancedDisplay
+                  $("#advancedShow").on("click", function () {
+                      $("#advancedShow").hide();
+                      $("#advancedHide").show();
+                      $("#advancedSet").show();
+                  });
+                  //闅愯棌楂樼骇鍙傛暟閰嶇疆锛歛dvancedDisplay
+                  $("#advancedHide").on("click", function () {
+                      $("#advancedHide").hide();
+                      $("#advancedShow").show();
+                      $("#advancedSet").hide();
+                  });
+
+            //鏄惁鍙戦�佸鏍�
+            $('#IsSendAuditSpan').delegate($("input:radio[name='IsSendAudit']"),"ifChecked", function () {
+                var checkValue = $("input:radio[name='IsSendAudit']:checked").val();
+                if (checkValue == 0) {
+                    $("#IsSendAuditBlock").hide();
+                } else {
+                    $("#IsSendAuditBlock").show();
+                }
+            });
+
+            //鏄惁绱瀹℃牳
+            $('#IsCumulativeAuditSpan').delegate($("input:radio[name='IsCumulativeAudit']"), "ifChecked", function () {
+                var checkValue = $("input:radio[name='IsCumulativeAudit']:checked").val();
+                if (checkValue == 0) {
+                    $("#IsCumulativeAuditBlock").hide();
+                } else {
+                    $("#IsCumulativeAuditBlock").show();
+                }
+            });
+
        	});
 
+        //鎵╁睍鍙�
         function mySpIDAccessCode(obj) {    
             obj.value = obj.value.replace(/[^0-9]/g, '');
         }
@@ -474,7 +545,7 @@
                 <th>
                     鐘舵��
                 </th>
-                <td colspan="3">
+                <td >
                     
                     <select name="Status" id="Status">
                         <option value="0" <%if(GwSp.Status==0){ %>selected<%} %>>鍋滅敤</option>
@@ -482,12 +553,10 @@
                     </select>
                     
                 </td>
-            </tr>
-            <tr>
                 <th>
                     鍏宠仈浜у搧:
                 </th>
-                <td colspan="3">
+                <td >
                      
                     <select name="ProductId" id="ProductId" disabled="disabled">
                         <%=GetProductOptions(GwSp.ProductId)%>
@@ -500,14 +569,13 @@
             </tr>
             <tr>
                 <th>
-                    SPID:
+                    鐭俊璐﹀彿:
                 </th>
                 <td>
                      
                     <%if (!string.IsNullOrEmpty(this.SpID))
                       { %>
-                    <%=GwSp.SpID%>
-                    <input type="hidden" name="SpID" id="SpID" maxlength="6" value="<%=GwSp.SpID%>" />
+                    <input type="text" name="SpID" id="SpID" maxlength="6" value="<%=GwSp.SpID%>" readonly="readonly" />
                     <input type="hidden" name="Action" id="Action" maxlength="6" value="update" />
                     <%}
                       else
@@ -515,7 +583,7 @@
                     <input type="hidden" name="Action" id="Action" maxlength="6" value="add" />
                     <input type="text" name="SpID" id="SpID" maxlength="6" value="" />
                     <%} %>
-                    <span class="highlight">*</span> 6浣嶆暟瀛楋紝濡�922001
+                    <span class="highlight">*</span> <!--6浣嶆暟瀛楋紝濡�922001 -->
                     
                     
                 </td>
@@ -570,20 +638,9 @@
             </tr>
             <tr>
                 <th>
-                    鎺ュ叆鐮侀壌鏉冩ā寮�:
-                </th>
-                <td colspan="3">
-                    <select name="accessCodeMode" id="accessCodeMode">
-                        <option value="0" selected>铏氭嫙鎺ュ叆妯″紡(鎺ュ叆鐐圭殑鎺ュ叆鐮�+缃戝叧璐﹀彿鎵╁睍鍙�)</option>
-                        <option value="1" >閫氶亾鐩磋繛妯″紡(涓婄骇閫氶亾鎺ュ叆鐮�+缃戝叧璐﹀彿鎵╁睍鍙�, 閫氶亾鐩磋繛妯″紡涓嬬兢鍙戙�佸娴佺瓥鐣ャ�侀�氶亾缁勪笉鍙敤)</option>
-                    </select>
-                </td>
-            </tr>
-            <tr>
-                <th>
                     瀵兼祦绛栫暐锛�
                 </th>
-                <td colspan="3">
+                <td >
                   
                     
                      <select name="DiverterID" id="DiverterID">
@@ -593,15 +650,6 @@
                     
                     <span class="highlight DiverterIDhighlight">*</span>
                 </td>
-            </tr>
-            <tr>
-                <th>楠岃瘉鐮佸垎娴侊細</th>
-                <td><input type="checkbox" value="1" name="VerCodeMode" id="VerCodeMode" <%=GwSp.VerCodeMode==1? "checked":"" %> />&nbsp;鏄惁鍒嗘祦楠岃瘉鐮佺被鐭俊(楠岃瘉鐮�/鏍¢獙鐮�...)</td>
-                <th>鐪佺綉鍒嗘祦锛�</th>
-                <td><input type="checkbox" value="1" name="ProvincialNetworkMode" id="ProvincialNetworkMode" <%=GwSp.ProvincialNetworkMode==1? "checked":"" %> />&nbsp;鏄惁鍚敤鐪佺綉鍒嗘祦</td>
-            </tr>
-            
-            <tr>
                 <th>
                     瀹㈡埛鎺ュ叆鍗忚: &nbsp;&nbsp;
                 </th>
@@ -610,28 +658,6 @@
                     <select name="ApID" id="ApID">
                         <%=GetAPOptions(GwSp.ApID)%>
                     </select>
-                    
-                    
-                </td>
-                <th>
-                    闀跨煭淇″悎骞舵ā寮忥細&nbsp;&nbsp;
-                </th>
-                <td>
-                    <select name="CombinationMode" id="CombinationMode">
-                      
-              <%   
-                  
-                 __w.Write("<option value=\"0\" ");       
-                if (this.GwSp.CombinationMode == 0)
-                   __w.Write("selected");
-                 __w.Write(">涓嶅悎骞�</option>\r\n   <option value=\"1\" ");
-               if (this.GwSp.CombinationMode == 1)
-                   __w.Write("selected");
-               __w.Write(">鍚堝苟鍒嗘潯鐭俊(鍚堝苟瀹㈡埛鎻愪氦甯DHI澶寸殑鐭俊)</option>\r\n    ");
-        %> 
-                    </select>
-                    
-                    
                     
                     
                 </td>
@@ -653,20 +679,29 @@
                         <div style="padding: 5px">
                             绉诲姩锛�<select name="CMOPID" id="CMOPID">
                                  <%=GetOpOptions(GwSp.CMOPID)%>
-                            </select>&nbsp;&nbsp; 鎵╁睍鍙傛暟锛�<input type="text" name="CMparams" id="CMparams" maxlength="600"
+                            </select>
+                            <!--
+                            &nbsp;&nbsp; 鎵╁睍鍙傛暟锛�<input type="text" name="CMparams" id="CMparams" maxlength="600"
                                 value="<%=GwSp.CMextparms%>" style="width: 50%;" />
+                            -->
                         </div>
                         <div style="padding: 5px">
                             鑱旈�氾細<select name="UNOPID" id="UNOPID">
                                  <%=GetOpOptions(GwSp.UNOPID)%>
-                             </select>&nbsp;&nbsp; 鎵╁睍鍙傛暟锛�<input type="text" name="CDparams" id="CDparams" maxlength="600"
+                             </select>
+                            <!--
+                            &nbsp;&nbsp; 鎵╁睍鍙傛暟锛�<input type="text" name="CDparams" id="CDparams" maxlength="600"
                                 value="<%=GwSp.CUextparams%>" style="width: 50%;" />
+                                -->
                         </div>
                         <div style="padding: 5px">
                             鐢典俊锛�<select name="CTOPID" id="CTOPID"> 
                                    <%=GetOpOptions(GwSp.CTOPID)%>
-                            </select>&nbsp;&nbsp; 鎵╁睍鍙傛暟锛�<input type="text" name="CTparams" id="CTparams" maxlength="600"
+                            </select>
+                            <!--
+                            &nbsp;&nbsp; 鎵╁睍鍙傛暟锛�<input type="text" name="CTparams" id="CTparams" maxlength="600"
                                 value="<%=GwSp.CTextparams%>" style="width: 50%;" />
+                                -->
                         </div>
                     </div>
                     <div class="router-type-span router-type-span-3">
@@ -698,328 +733,84 @@
                 <th>
                     瀵嗙爜:
                 </th>
-                <td colspan="3">
-                    <input type="text" name="Password" id="Password" style="width: 150px;" maxlength="50"
+                <td >
+                    <input type="password" name="Password" id="Password" style="width: 150px;" maxlength="50"
                         value="<%=GwSp.Password%>" />
                     <a href="javascript:;" class="generatorPassword" for="Password">鐢熸垚瀵嗙爜</a>
+                    &nbsp;&nbsp;<a href="javascript:;" class="copyPwd" >澶嶅埗瀵嗙爜</a>
                 </td>
+                    <th>
+                        鍗曚环:
+                    </th>
+                    <td>
+                        <input type="text" name="Price" id="Price" style="width: 50px;" maxlength="5" value="<%=(double)GwSp.Price/1000%>"
+                            onkeyup="value=value.replace(/[^\d\.]/g,'')" onpaste="value=value.replace(/[^\d\.]/g,'')"
+                            oncontextmenu="return false" />
+                        鍏�/鏉�<span class="highlight">*</span>
+                    </td>
             </tr>
-            <tr>
-                <th>
-                    鏄惁鍏佽鎵╁睍瀛愬彿:
-                </th>
-                <td>
-                    <select name="extnoExteNsionMode" id="extnoExteNsionMode">
-                   
-                        <option value="0" <%if(GwSp.ExtnoExtensionMode==0){ %>selected<%} %>>鍏佽瀹㈡埛鍦ㄦ墿灞曞彿鍚庣户缁墿灞曞瓙鍙�</option>
-                        <option value="1" <%if(GwSp.ExtnoExtensionMode==1){ %>selected<%} %>>绂佹瀹㈡埛鍦ㄦ墿灞曞彿鍚庣户缁墿灞曞瓙鍙凤紙鐭俊涓嶅啀鏍¢獙鎵╁睍鍙凤紝鑰屼娇鐢ㄥ浐瀹氱殑鎵╁睍鍙疯繘琛屼笅鍙戯級</option>
-                    </select>
-                    
-                </td>
-                <th>
-                    鎵╁睍鍙�:
-                </th>
-                <td>
-                    &nbsp;<input type="text" name="AccessCode" id="AccessCode" style="width: 150px;"
-                        maxlength="16" onkeyup="mySpIDAccessCode(this)" value="<%=GwSp.AccessCode%>" />
-                    <span class="highlight"></span>鍙兘濉暟瀛�
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    瀹㈡埛绔疘P:
-                </th>
-                <td>
-                    <input type="text" name="ClientIp" id="ClientIp" style="width: 250px;" maxlength="500"
-                        value="<%=GwSp.ClientIp%>" />
-                    0.0.0.0 琛ㄧず涓嶉檺鍒跺鎴风IP鍦板潃锛屽涓狪P 鐢ㄨ嫳鏂囩珫绾库�渱鈥濋殧寮�
-                </td>
-                <th>
-                    瀹㈡埛绔鍙�:
-                </th>
-                <td>
-                    <input type="text" name="ClientPort" id="ClientPort" style="width: 50px;" maxlength="5"
-                        value="<%=GwSp.ClientPort%>" onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                        oncontextmenu="return false" />&nbsp;濡備笉闄愬畾瀹㈡埛绔彛锛屽垯榛樿0
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    鍗曚环:
-                </th>
-                <td>
-                    <input type="text" name="Price" id="Price" style="width: 50px;" maxlength="5" value="<%=(double)GwSp.Price/1000%>"
-                        onkeyup="value=value.replace(/[^\d\.]/g,'')" onpaste="value=value.replace(/[^\d\.]/g,'')"
-                        oncontextmenu="return false" />
-                    鍏�/鏉�<span class="highlight">*</span>
-                </td>
-                <th>
-                    浼樺厛绾�:
-                </th>
-                <td>
-                    <select name="Priority" id="Priority">
+                <tr>
+                    <th>
+                        浣欓鍛婅闃堝�硷細
+                    </th>
+                    <td>
+                        <!--
+                        <input type="text" name="BalanceThreshold" id="BalanceThreshold" style="width: 200px;"
+                            maxlength="10" value="<%=GwSp.BalanceThreshold/1000%>" onkeyup="value=value.replace(/[^\d]/g,'')"
+                            onpaste="value=value.replace(/[^\d]/g,'')" oncontextmenu="return false" />
+                        鍏�-->                    
+                        <input type="text" name="BalanceThreshold" id="BalanceThreshold" style="width: 200px;"
+                            maxlength="10" value="<%=GwSp.BalanceThreshold%>" onkeyup="value=value.replace(/[^\d]/g,'')"
+                            onpaste="value=value.replace(/[^\d]/g,'')" oncontextmenu="return false" />
+                        鏉�
+                    </td>
+                    <th>
+                        浣欓鍛婅鍙风爜:
+                    </th>
+                    <td>
+                        <!--
+                        <input type="text" name="AlarmMobile" id="AlarmMobile" style="width: 200px;" maxlength="50"
+                            value="<!%=GwSp.AlarmMobile%>" />-->                    
+                        <textarea class="form-control" name="AlarmMobile" id="AlarmMobile" rows="4"><%=GwSp.AlarmMobile%></textarea>
+                        <div class="text-muted">澶氫釜鍙风爜鏃讹紝姣忚涓�涓彿鐮併��</div>
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        闂ㄩ檺(璐﹀彿鎻愪氦閫熷害):
+                    </th>
+                    <td>
+                        <input type="text" name="Threshold" id="Threshold" style="width: 50px;" maxlength="5"
+                            value="<%=GwSp.Threshold%>" onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                            oncontextmenu="return false" />鏉�/姣忕 <span class="highlight">*</span>
+                    </td>
+                    <!--
+                    <th>
+                        浠樿垂鏂瑰紡:
+                    </th>
+                    <td>
+                        <select name="ChargeType" id="ChargeType">
                       
+                             <option value="1" <--%if(GwSp.ChargeType==1){ %>selected<--%} %>>棰勪粯璐�</option>
+                            <option value="2" <--%if(GwSp.ChargeType==2){ %>selected<--%} %>>鍚庝粯璐�</option>
                         
-                        <option value="-2" <%if(GwSp.Priority==-2){ %>selected<%} %>>鏈�浣�</option>
-                        <option value="-1" <%if(GwSp.Priority==-1){ %>selected<%} %>>浣�</option>
-                        <option value="0" <%if(GwSp.Priority==0){ %>selected<%} %>>鏅��</option>
-                        <option value="1" <%if(GwSp.Priority==1){ %>selected<%} %>>楂�</option>
-                        <option value="2" <%if(GwSp.Priority==2){ %>selected<%} %>>鏈�楂�</option>
-                        
-                    </select>
-                    <span class="highlight">*</span>
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    浣欓鍛婅闃堝�硷細
-                </th>
-                <td>
-                    <input type="text" name="BalanceThreshold" id="BalanceThreshold" style="width: 200px;"
-                        maxlength="10" value="<%=GwSp.BalanceThreshold/1000%>" onkeyup="value=value.replace(/[^\d]/g,'')"
-                        onpaste="value=value.replace(/[^\d]/g,'')" oncontextmenu="return false" />
-                    鍏�
-                </td>
-                <th>
-                    浣欓鍛婅鍙风爜:
-                </th>
-                <td>
-                    <input type="text" name="AlarmMobile" id="AlarmMobile" style="width: 200px;" maxlength="50"
-                        value="<%=GwSp.AlarmMobile%>" />
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    闂ㄩ檺(璐﹀彿鎻愪氦閫熷害):
-                </th>
-                <td>
-                    <input type="text" name="Threshold" id="Threshold" style="width: 50px;" maxlength="5"
-                        value="<%=GwSp.Threshold%>" onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                        oncontextmenu="return false" />鏉�/姣忕 <span class="highlight">*</span>
-                </td>
-                <!--
-                <th>
-                    浠樿垂鏂瑰紡:
-                </th>
-                <td>
-                    <select name="ChargeType" id="ChargeType">
+                        </select>
+                        <span class="highlight">*</span>
+                    </td>
+                    -->
+                    <th>
+                        鏄惁鑷姩杩旇繕:
+                    </th>
+                    <td>
+                        <select name="IsAutoReturn" id="IsAutoReturn">
                       
-                         <option value="1" <--%if(GwSp.ChargeType==1){ %>selected<--%} %>>棰勪粯璐�</option>
-                        <option value="2" <--%if(GwSp.ChargeType==2){ %>selected<--%} %>>鍚庝粯璐�</option>
+                             <option value="0" <%if(GwSp.IsAutoReturn==0){ %>selected<%} %>>鍚�</option>
+                            <option value="1" <%if(GwSp.IsAutoReturn==1){ %>selected<%} %>>鏄�</option>
                         
-                    </select>
-                    <span class="highlight">*</span>
-                </td>
-                -->
-                <th>
-                    鏄惁鑷姩杩旇繕:
-                </th>
-                <td>
-                    <select name="IsAutoReturn" id="IsAutoReturn">
-                      
-                         <option value="0" <%if(GwSp.IsAutoReturn==0){ %>selected<%} %>>鍚�</option>
-                        <option value="1" <%if(GwSp.IsAutoReturn==1){ %>selected<%} %>>鏄�</option>
-                        
-                    </select>
-                    <span class="highlight">*</span>
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    鏈�澶ц繛鎺ユ暟锛�
-                </th>
-                <td>
-                    <input type="text" name="MaxConnCount" id="MaxConnCount" style="width: 150px;" maxlength="2"
-                        onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                        oncontextmenu="return false" value="<%=GwSp.MaxConnCount%>" />
-                </td>
-                <th>
-                    鍏佽鏃舵:
-                </th>
-                <td>
-                    <input type="text" name="TimePermitting" id="TimePermitting" style="width: 150px;"
-                        maxlength="50" value="<%=GwSp.TimePermitting%>" />
-                    &nbsp;鏍煎紡濡傦細(08:00-19:00)
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    鍏ㄥ眬榛戝悕鍗� 锛�
-                </th>
-                <td>
-                    <select id="BlackMode" name="BlackMode">
-                      
-                        <option value="1" <%if(GwSp.BlackMode==1){ %>selected<%} %>>鐢熸晥</option>
-                        <option value="0" <%if(GwSp.BlackMode==0){ %>selected<%} %>>涓嶇敓鏁�</option>
-                        
-                    </select>
-                </td>
-                <th>鏄惁鍚敤鎼哄彿杞綉</th>
-                <td>
-                    <select id="TransferFlag" name="TransferFlag">
-                        <option value="0" <%if(GwSp.TransferFlag==0){ %>selected<%} %>>鍚敤</option>
-                        <option value="1" <%if(GwSp.TransferFlag==1){ %>selected<%} %>>涓嶅惎鐢�</option>
-                    </select>
-                </td>
-
-            </tr>
-            <tr>
-                <th>
-                    鍗曞彿鐮佷笅鍙戞鏁�
-                </th>
-                <td colspan="3" id="McExpression">
-                    <div>
-                        <input style="width: 50px;" type="text" name="MCPM1" id="MCPM1" maxlength="4" value="<%__w.Write(this.McCount(0, this.GwSp.McExpression));%>"
-                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                            oncontextmenu="return false" />鏉�/1鍒嗛挓;
-                        <input style="width: 50px;" type="text" name="MCPM2" id="MCPM2" maxlength="4" value="<%__w.Write(this.McCount(1, this.GwSp.McExpression));%>"
-                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                            oncontextmenu="return false" />鏉�/5鍒嗛挓;
-                        <input style="width: 50px;" type="text" name="MCPM3" id="MCPM3" maxlength="4" value="<%__w.Write(this.McCount(2, this.GwSp.McExpression));%>"
-                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                            oncontextmenu="return false" />鏉�/10鍒嗛挓;
-                        <input style="width: 50px;" type="text" name="MCPM4" id="MCPM4" maxlength="4" value="<%__w.Write(this.McCount(3, this.GwSp.McExpression));%>"
-                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                            oncontextmenu="return false" />鏉�/鍗婂皬鏃�;
-                        <input style="width: 50px;" type="text" name="MCPM5" id="MCPM5" maxlength="4" value="<%__w.Write(this.McCount(4, this.GwSp.McExpression));%>"
-                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                            oncontextmenu="return false" />鏉�/1灏忔椂;
-                        <input style="width: 50px;" type="text" name="MCPM6" id="MCPM6" maxlength="4" value="<%__w.Write(this.McCount(5, this.GwSp.McExpression));%>"
-                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                            oncontextmenu="return false" />鏉�/2灏忔椂;
-                        <input style="width: 50px;" type="text" name="MCPM7" id="MCPM7" maxlength="4" value="<%__w.Write(this.McCount(6, this.GwSp.McExpression));%>"
-                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                            oncontextmenu="return false" />鏉�/4灏忔椂;
-                        <input style="width: 50px;" type="text" name="MCPM8" id="MCPM8" maxlength="4" value="<%__w.Write(this.McCount(7, this.GwSp.McExpression));%>"
-                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                            oncontextmenu="return false" />鏉�/12灏忔椂;
-                        <input style="width: 50px;" type="text" name="MCPM9" id="MCPM9" maxlength="4" value="<%__w.Write(this.McCount(8, this.GwSp.McExpression));%>"
-                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
-                            oncontextmenu="return false" />鏉�24灏忔椂;
-                    </div>
-                    <div class="text-muted">
-                        涓洪浂鏃惰〃绀鸿鏉′欢涓嶇敓鏁�</div>
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    寮哄埗绛惧悕
-                </th>
-                <td colspan="3">
-                    <span class="highlight" style="margin-left: 5px;">鍙檺浜嶴MS57/SOAP57鍗忚</span>
-                    <div style="margin-top: 5px; margin-left: 5px;">
-                        <select name="ForceSignFlag" id="ForceSignFlag" style="width: 70px;">
-                        
-                            
-                            <option value="0" <%if(GwSp.ForceSignFlag==0){ %>selected<%} %>>鍋滅敤</option>
-                            <option value="1" <%if(GwSp.ForceSignFlag==1){ %>selected<%} %>>鍓嶇疆</option>
-                            <option value="2" <%if(GwSp.ForceSignFlag==2){ %>selected<%} %>>鍚庣疆</option>
-                        </select>&nbsp;&nbsp;&nbsp;绛惧悕锛�<input type="text" name="ForceSign" id="ForceSign"
-                            value="<%=GwSp.ForceSign%>" style="width: 40%" />
-                    </div>
-                </td>
-            </tr>
-            <tr>
-                <th>
-                    鍚敤绛惧悕
-                </th>
-                <td colspan="3">
-                    <select id="signatureMode" name="signatureMode">
-                    
-                         <option value="2" <%if(GwSp.SignatureMode==2){ %>selected<%} %>>鏍℃鍓嶇疆绛惧悕</option>
-                         <option value="1" <%if(GwSp.SignatureMode==1){ %>selected<%} %>>鏍℃鍚庣疆绛惧悕</option>
-                         <option value="0" <%if(GwSp.SignatureMode==0){ %>selected<%} %>>涓嶆牎妫�绛惧悕</option>
-                         
-                         
-                       
-                    </select>
-                    <span class="highlight"></span>绛惧悕锛屾瘡琛屼竴涓鍚嶏紝绛惧悕蹇呴』甯︹�溿�愩�戔�濓紝绛惧悕鍚庨潰鍙互璺熸墿灞曞彿瀹炵幇涓�瀹竴绛撅紝鍏朵腑鎵╁睍鍙峰繀椤讳互瀹㈡埛璐﹀彿鎵╁睍鍙峰紑澶达紱渚嬪鈥溿�愮鍚�1銆�1234鈥�
-                </td>
-            </tr>
-            <tr style="display: none;" id="signatures-msg">
-                <th>
-                    鎶ュ绛惧悕:
-                </th>
-                <td colspan="3">
-                    <textarea name="signatures" id="signatures" style="width: 100%" cols="100" rows="8"><%__w.Write(this.GwSp.Signatures); %></textarea>
-                </td>
-            </tr>
-            <tr>
-                <th>鏄惁寮�鍚唴瀹规姤澶� 锛�
-                </th>
-                <td colspan="3">
-                    <select id="enabled" name="enabled">
-                        <%     
-                            __w.Write("<option value=\"1\" ");
-                            if (this.GetGwspEnabled(this.GwSp.SpID) == 1)
-                                __w.Write("selected");
-                            __w.Write(">寮�鍚厤瀹″唴瀹规姤澶�</option>\r\n   <option value=\"0\" ");
-                            if (this.GetGwspEnabled(this.GwSp.SpID) == 0)
-                                __w.Write("selected");
-                            __w.Write(">鍏抽棴鍏嶅鍐呭鎶ュ</option>\r\n   ");
-                        %>
-                    </select><span class="highlight"></span>鍏嶅鏍告姤澶囧唴瀹癸紝姣忚涓�鏉″唴瀹癸紝鈥�*鈥� 鍙蜂唬鏇� 0-10涓瓧绗︼紝鍗曡鎶ュ闀垮害涓嶈瓒呰繃70瀛�
-                </td>
-            </tr>
-            <tr style="display: none;" id="control_patterncontent">
-                <th>
-                    鍐呭鎶ュ:
-                </th>
-                <td colspan="3">
-                    <textarea name="patternContent" id="patternContent" style="width: 100%" cols="100"
-                        rows="8"><%__w.Write(this.GetGwspCtpattern(this.GwSp.SpID)); %></textarea>
-                </td>
-            </tr>
-
-            <!-- 鑷姩琛ュ彂閰嶇疆 -->
-            <tr>
-                <th>鏄惁寮�鍚嚜鍔ㄨˉ鍙戯細
-                </th>
-                <td colspan="3">
-                    <select id="resendEnabled" name="resendEnabled">
-                        <%     
-                            __w.Write("<option value=\"1\" ");
-                            if (this.GwSp.RESEND_STATUS == 1)
-                                __w.Write("selected");
-                            __w.Write(">寮�鍚け璐ヨ嚜鍔ㄨˉ鍙�</option>\r\n   <option value=\"0\" ");
-                            if (this.GwSp.RESEND_STATUS == 0)
-                                __w.Write("selected");
-                            __w.Write(">鍏抽棴澶辫触鑷姩琛ュ彂</option>\r\n   ");
-                        %>
-                    </select><span class="highlight"></span>寮�鍚嚜鍔ㄨˉ鍙戝姛鑳斤紝澶辫触鐨勫彿鐮佷細鑷姩浠庡凡閰嶇疆鐨勫け璐ヨˉ鍙戦�氶亾鍙戦�佷竴娆�
-                </td>
-            </tr>
-            <!--鑷姩琛ュ彂閫氶亾缁勯厤缃樉绀�-->
-          <%--  <tr  style="display: none;" id="control_resendContent">
-                <th>
-                    閫氶亾缁勪俊鎭細
-                </th>
-                <td colspan="3">
-                    <div>
-                        <div style="padding: 5px">
-                            <label class="control-label ">
-                                绉诲姩-琛ュ彂閫氶亾缁�</label>
-                            <select name="ReSendCmGroupID" id="ReSendCmGroupID">
- 
-                             <%=GetOpGroupOptions(GwSp.RESEND_CM_GROUPID) %>
-                             </select></div>
-                        <div style="padding: 5px">
-                            <label class="control-label ">
-                                鑱旈��-琛ュ彂閫氶亾缁�</label>
-                            <select name="ReSendCuGroupID" id="ReSendCuGroupID">
-                            
-                             <%=GetOpGroupOptions(GwSp.RESEND_CU_GROUPID)%>
-                                </select></div>
-                        <div style="padding: 5px">
-                            <label class="control-label">
-                                鐢典俊-琛ュ彂閫氶亾缁�</label>
-                            <select name="ReSendCtGroupID" id="ReSendCtGroupID">
-                            <%=GetOpGroupOptions(GwSp.RESEND_CT_GROUPID)%>
-                             </select></div>
-                    </div>
-                </td>
-            </tr>--%>
-            <!-- 鑷姩琛ュ彂閰嶇疆-end -->
+                        </select>
+                        <span class="highlight">*</span>
+                    </td>
+                </tr>
 
             <tr>
                 <th>
@@ -1030,6 +821,367 @@
                 </td>
             </tr>
         </table>
+        <!-- 楂樼骇鍙傛暟閰嶇疆锛氬紑濮� -->
+        <a href="javascript:;" id="advancedShow" ><b>楂樼骇鍙傛暟閰嶇疆[鏄剧ず]</b></a>
+        <a href="javascript:;" id="advancedHide" ><b>楂樼骇鍙傛暟閰嶇疆[闅愯棌]</b></a>
+        <div id="advancedSet" >
+            <table class="table table-striped table-bordered table-hover">
+                <tr>
+                    <th>
+                        鏄惁鍏佽鎵╁睍瀛愬彿:
+                    </th>
+                    <td>
+                        <select name="extnoExteNsionMode" id="extnoExteNsionMode">
+                   
+                            <option value="0" <%if(GwSp.ExtnoExtensionMode==0){ %>selected<%} %>>鍏佽瀹㈡埛鍦ㄦ墿灞曞彿鍚庣户缁墿灞曞瓙鍙�</option>
+                            <option value="1" <%if(GwSp.ExtnoExtensionMode==1){ %>selected<%} %>>绂佹瀹㈡埛鍦ㄦ墿灞曞彿鍚庣户缁墿灞曞瓙鍙凤紙鐭俊涓嶅啀鏍¢獙鎵╁睍鍙凤紝鑰屼娇鐢ㄥ浐瀹氱殑鎵╁睍鍙疯繘琛屼笅鍙戯級</option>
+                        </select>
+                    
+                    </td>
+                    <th>
+                        鎵╁睍鍙�:
+                    </th>
+                    <td>
+                        &nbsp;<input type="text" name="AccessCode" id="AccessCode" style="width: 150px;"
+                            maxlength="16" onkeyup="mySpIDAccessCode(this)" value="<%=GwSp.AccessCode%>" />
+                        <span class="highlight"></span>鍙兘濉暟瀛�
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        闀跨煭淇″悎骞舵ā寮忥細&nbsp;&nbsp;
+                    </th>
+                    <td>
+                        <select name="CombinationMode" id="CombinationMode">                      
+                          <%                     
+                             __w.Write("<option value=\"0\" ");       
+                            if (this.GwSp.CombinationMode == 0)
+                               __w.Write("selected");
+                             __w.Write(">涓嶅悎骞�</option>\r\n   <option value=\"1\" ");
+                           if (this.GwSp.CombinationMode == 1)
+                               __w.Write("selected");
+                           __w.Write(">鍚堝苟鍒嗘潯鐭俊(鍚堝苟瀹㈡埛鎻愪氦甯DHI澶寸殑鐭俊)</option>\r\n    ");
+                            %> 
+                        </select>
+                    </td>
+                    <th>
+                        浼樺厛绾�:
+                    </th>
+                    <td>
+                        <select name="Priority" id="Priority">
+                      
+                        
+                            <option value="-2" <%if(GwSp.Priority==-2){ %>selected<%} %>>鏈�浣�</option>
+                            <option value="-1" <%if(GwSp.Priority==-1){ %>selected<%} %>>浣�</option>
+                            <option value="0" <%if(GwSp.Priority==0){ %>selected<%} %>>鏅��</option>
+                            <option value="1" <%if(GwSp.Priority==1){ %>selected<%} %>>楂�</option>
+                            <option value="2" <%if(GwSp.Priority==2){ %>selected<%} %>>鏈�楂�</option>
+                        
+                        </select>
+                        <span class="highlight">*</span>
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        瀹㈡埛绔疘P:
+                    </th>
+                    <td>
+                        <input type="text" name="ClientIp" id="ClientIp" style="width: 250px;" maxlength="500"
+                            value="<%=GwSp.ClientIp%>" />
+                        0.0.0.0 琛ㄧず涓嶉檺鍒跺鎴风IP鍦板潃锛屽涓狪P 鐢ㄨ嫳鏂囩珫绾库�渱鈥濋殧寮�
+                    </td>
+                    <th>
+                        鏈�澶ц繛鎺ユ暟锛�
+                    </th>
+                    <td>
+                        <input type="text" name="MaxConnCount" id="MaxConnCount" style="width: 150px;" maxlength="2"
+                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                            oncontextmenu="return false" value="<%=GwSp.MaxConnCount%>" />
+                    </td>
+                </tr>
+                    <!--
+                <tr>
+                    <th>
+                        瀹㈡埛绔鍙�:
+                    </th>
+                    <td>
+                        <input type="text" name="ClientPort" id="ClientPort" style="width: 50px;" maxlength="5"
+                            value="<!%=GwSp.ClientPort%>" onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                            oncontextmenu="return false" />&nbsp;濡備笉闄愬畾瀹㈡埛绔彛锛屽垯榛樿0
+                    </td>
+                    <th>
+                        鍏佽鏃舵:
+                    </th>
+                    <td>
+                        <input type="text" name="TimePermitting" id="TimePermitting" style="width: 150px;"
+                            maxlength="50" value="<!%=GwSp.TimePermitting%>" />
+                        &nbsp;鏍煎紡濡傦細(08:00-19:00)
+                    </td>
+                </tr>
+                    -->
+                <tr>
+                    <th>
+                        鍏ㄥ眬榛戝悕鍗� 锛�
+                    </th>
+                    <td>
+                        <select id="BlackMode" name="BlackMode">
+                      
+                            <option value="1" <%if(GwSp.BlackMode==1){ %>selected<%} %>>鐢熸晥</option>
+                            <option value="0" <%if(GwSp.BlackMode==0){ %>selected<%} %>>涓嶇敓鏁�</option>
+                        
+                        </select>
+                    </td>
+                    <th>鏄惁鍚敤鎼哄彿杞綉</th>
+                    <td>
+                        <select id="TransferFlag" name="TransferFlag">
+                            <option value="0" <%if(GwSp.TransferFlag==0){ %>selected<%} %>>鍚敤</option>
+                            <option value="1" <%if(GwSp.TransferFlag==1){ %>selected<%} %>>涓嶅惎鐢�</option>
+                        </select>
+                    </td>
+
+                </tr>
+                <tr>
+                    <th>
+                        鍗曞彿鐮佷笅鍙戞鏁�
+                    </th>
+                    <td colspan="3" id="McExpression">
+                        <div>
+                            <input style="width: 50px;" type="text" name="MCPM1" id="MCPM1" maxlength="4" value="<%__w.Write(this.McCount(0, this.GwSp.McExpression));%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />鏉�/1鍒嗛挓;
+                            <input style="width: 50px;" type="text" name="MCPM2" id="MCPM2" maxlength="4" value="<%__w.Write(this.McCount(1, this.GwSp.McExpression));%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />鏉�/5鍒嗛挓;
+                            <input style="width: 50px;" type="text" name="MCPM3" id="MCPM3" maxlength="4" value="<%__w.Write(this.McCount(2, this.GwSp.McExpression));%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />鏉�/10鍒嗛挓;
+                            <input style="width: 50px;" type="text" name="MCPM4" id="MCPM4" maxlength="4" value="<%__w.Write(this.McCount(3, this.GwSp.McExpression));%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />鏉�/鍗婂皬鏃�;
+                            <input style="width: 50px;" type="text" name="MCPM5" id="MCPM5" maxlength="4" value="<%__w.Write(this.McCount(4, this.GwSp.McExpression));%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />鏉�/1灏忔椂;
+                            <input style="width: 50px;" type="text" name="MCPM6" id="MCPM6" maxlength="4" value="<%__w.Write(this.McCount(5, this.GwSp.McExpression));%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />鏉�/2灏忔椂;
+                            <input style="width: 50px;" type="text" name="MCPM7" id="MCPM7" maxlength="4" value="<%__w.Write(this.McCount(6, this.GwSp.McExpression));%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />鏉�/4灏忔椂;
+                            <input style="width: 50px;" type="text" name="MCPM8" id="MCPM8" maxlength="4" value="<%__w.Write(this.McCount(7, this.GwSp.McExpression));%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />鏉�/12灏忔椂;
+                            <input style="width: 50px;" type="text" name="MCPM9" id="MCPM9" maxlength="4" value="<%__w.Write(this.McCount(8, this.GwSp.McExpression));%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />鏉�24灏忔椂;
+                        </div>
+                        <div class="text-muted">
+                            涓洪浂鏃惰〃绀鸿鏉′欢涓嶇敓鏁�</div>
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        寮哄埗绛惧悕
+                    </th>
+                    <td colspan="3">
+                        <!--<span class="highlight" style="margin-left: 5px;">鍙檺浜嶴MS57/SOAP57鍗忚</span>-->
+                        <span class="highlight" style="margin-left: 5px;">鍙檺浜嶩TTP鍗忚</span>
+                        <div style="margin-top: 5px; margin-left: 5px;">
+                            <select name="ForceSignFlag" id="ForceSignFlag" style="width: 70px;">
+                        
+                            
+                                <option value="0" <%if(GwSp.ForceSignFlag==0){ %>selected<%} %>>鍋滅敤</option>
+                                <option value="1" <%if(GwSp.ForceSignFlag==1){ %>selected<%} %>>鍓嶇疆</option>
+                                <option value="2" <%if(GwSp.ForceSignFlag==2){ %>selected<%} %>>鍚庣疆</option>
+                            </select>&nbsp;&nbsp;&nbsp;绛惧悕锛�<input type="text" name="ForceSign" id="ForceSign"
+                                value="<%=GwSp.ForceSign%>" style="width: 40%" />
+                        </div>
+                    </td>
+                </tr>
+                <tr>
+                    <th>
+                        鍚敤绛惧悕
+                    </th>
+                    <td colspan="3">
+                        <select id="signatureMode" name="signatureMode">
+                    
+                             <option value="2" <%if(GwSp.SignatureMode==2){ %>selected<%} %>>鏍℃鍓嶇疆绛惧悕</option>
+                             <option value="1" <%if(GwSp.SignatureMode==1){ %>selected<%} %>>鏍℃鍚庣疆绛惧悕</option>
+                             <option value="0" <%if(GwSp.SignatureMode==0){ %>selected<%} %>>涓嶆牎妫�绛惧悕</option>
+                         
+                         
+                       
+                        </select>
+                        <span class="highlight"></span>绛惧悕锛屾瘡琛屼竴涓鍚嶏紝绛惧悕蹇呴』甯︹�溿�愩�戔�濓紝绛惧悕鍚庨潰鍙互璺熸墿灞曞彿瀹炵幇涓�瀹竴绛撅紝鍏朵腑鎵╁睍鍙峰繀椤讳互瀹㈡埛璐﹀彿鎵╁睍鍙峰紑澶达紱渚嬪鈥溿�愮鍚�1銆�1234鈥�
+                    </td>
+                </tr>
+                <tr style="display: none;" id="signatures-msg">
+                    <th>
+                        鎶ュ绛惧悕:
+                    </th>
+                    <td colspan="3">
+                        <textarea name="signatures" id="signatures" style="width: 100%" cols="100" rows="8"><%__w.Write(this.GwSp.Signatures); %></textarea>
+                    </td>
+                </tr>
+                <tr>
+                    <th>鏄惁寮�鍚唴瀹规姤澶� 锛�
+                    </th>
+                    <td colspan="3">
+                        <select id="enabled" name="enabled">
+                            <%     
+                                __w.Write("<option value=\"1\" ");
+                                if (this.GetGwspEnabled(this.GwSp.SpID) == 1)
+                                    __w.Write("selected");
+                                __w.Write(">寮�鍚厤瀹″唴瀹规姤澶�</option>\r\n   <option value=\"0\" ");
+                                if (this.GetGwspEnabled(this.GwSp.SpID) == 0)
+                                    __w.Write("selected");
+                                __w.Write(">鍏抽棴鍏嶅鍐呭鎶ュ</option>\r\n   ");
+                            %>
+                        </select><span class="highlight"></span>鍏嶅鏍告姤澶囧唴瀹癸紝姣忚涓�鏉″唴瀹癸紝鈥�*鈥� 鍙蜂唬鏇� 0-10涓瓧绗︼紝鍗曡鎶ュ闀垮害涓嶈瓒呰繃70瀛�
+                    </td>
+                </tr>
+                <tr style="display: none;" id="control_patterncontent">
+                    <th>
+                        鍐呭鎶ュ:
+                    </th>
+                    <td colspan="3">
+                        <textarea name="patternContent" id="patternContent" style="width: 100%" cols="100"
+                            rows="8"><%__w.Write(this.GetGwspCtpattern(this.GwSp.SpID)); %></textarea>
+                    </td>
+                </tr>
+
+                <!-- 鑷姩琛ュ彂閰嶇疆 -->
+                <tr>
+                    <th>鏄惁寮�鍚嚜鍔ㄨˉ鍙戯細
+                    </th>
+                    <td colspan="3">
+                        <select id="resendEnabled" name="resendEnabled">
+                            <%     
+                                __w.Write("<option value=\"1\" ");
+                                if (this.GwSp.RESEND_STATUS == 1)
+                                    __w.Write("selected");
+                                __w.Write(">寮�鍚け璐ヨ嚜鍔ㄨˉ鍙�</option>\r\n   <option value=\"0\" ");
+                                if (this.GwSp.RESEND_STATUS == 0)
+                                    __w.Write("selected");
+                                __w.Write(">鍏抽棴澶辫触鑷姩琛ュ彂</option>\r\n   ");
+                            %>
+                        </select><span class="highlight"></span>寮�鍚嚜鍔ㄨˉ鍙戝姛鑳斤紝澶辫触鐨勫彿鐮佷細鑷姩浠庡凡閰嶇疆鐨勫け璐ヨˉ鍙戦�氶亾鍙戦�佷竴娆�
+                    </td>
+                </tr>
+                <!--鑷姩琛ュ彂閫氶亾缁勯厤缃樉绀�-->
+              <%--  <tr  style="display: none;" id="control_resendContent">
+                    <th>
+                        閫氶亾缁勪俊鎭細
+                    </th>
+                    <td colspan="3">
+                        <div>
+                            <div style="padding: 5px">
+                                <label class="control-label ">
+                                    绉诲姩-琛ュ彂閫氶亾缁�</label>
+                                <select name="ReSendCmGroupID" id="ReSendCmGroupID">
+ 
+                                 <%=GetOpGroupOptions(GwSp.RESEND_CM_GROUPID) %>
+                                 </select></div>
+                            <div style="padding: 5px">
+                                <label class="control-label ">
+                                    鑱旈��-琛ュ彂閫氶亾缁�</label>
+                                <select name="ReSendCuGroupID" id="ReSendCuGroupID">
+                            
+                                 <%=GetOpGroupOptions(GwSp.RESEND_CU_GROUPID)%>
+                                    </select></div>
+                            <div style="padding: 5px">
+                                <label class="control-label">
+                                    鐢典俊-琛ュ彂閫氶亾缁�</label>
+                                <select name="ReSendCtGroupID" id="ReSendCtGroupID">
+                                <%=GetOpGroupOptions(GwSp.RESEND_CT_GROUPID)%>
+                                 </select></div>
+                        </div>
+                    </td>
+                </tr>--%>
+                <!-- 鑷姩琛ュ彂閰嶇疆-end -->
+                
+                <tr>
+                    <th>
+                        鎺ュ叆鐮侀壌鏉冩ā寮�:
+                    </th>
+                    <td colspan="3">
+                        <select name="accessCodeMode" id="accessCodeMode">
+                            <option value="0" selected>铏氭嫙鎺ュ叆妯″紡(鎺ュ叆鐐圭殑鎺ュ叆鐮�+缃戝叧璐﹀彿鎵╁睍鍙�)</option>
+                            <option value="1" >閫氶亾鐩磋繛妯″紡(涓婄骇閫氶亾鎺ュ叆鐮�+缃戝叧璐﹀彿鎵╁睍鍙�, 閫氶亾鐩磋繛妯″紡涓嬬兢鍙戙�佸娴佺瓥鐣ャ�侀�氶亾缁勪笉鍙敤)</option>
+                        </select>
+                    </td>
+                </tr>
+                <tr>
+                    <th>楠岃瘉鐮佸垎娴侊細</th>
+                    <td><input type="checkbox" value="1" name="VerCodeMode" id="VerCodeMode" <%=GwSp.VerCodeMode==1? "checked":"" %> />&nbsp;鏄惁鍒嗘祦楠岃瘉鐮佺被鐭俊(楠岃瘉鐮�/鏍¢獙鐮�...)</td>
+                    <th>鐪佺綉鍒嗘祦锛�</th>
+                    <td><input type="checkbox" value="1" name="ProvincialNetworkMode" id="ProvincialNetworkMode" <%=GwSp.ProvincialNetworkMode==1? "checked":"" %> />&nbsp;鏄惁鍚敤鐪佺綉鍒嗘祦</td>
+                </tr>
+                <tr>
+                    <th>鍒嗗寘鏉℃暟锛�</th>
+                    <td>
+                        <input type="text" name="SubPackageNum" id="SubPackageNum" style="width: 50px;" maxlength="10" value="<%=(double)GwSp.SubPackageNum%>"
+                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                            oncontextmenu="return false" />
+                        鏉�<span class="highlight">*</span>&nbsp;琛ㄧず鍚庡彴鏁版嵁鍒嗗寘鏁伴噺锛屼笉鑳戒负0锛屽惁鍒欐病鍔炴硶鍒嗗寘锛岄粯璁�4000涓彿鐮佷竴涓暟鎹寘,寤鸿鍦�2000鑷�5000</td>
+                    <th>鐭俊鍗曟鎻愪氦鏈�灏忛檺鍒讹細</th>
+                    <td>
+                        <input type="text" name="SingleSubmitMinRestrict" id="SingleSubmitMinRestrict" style="width: 50px;" maxlength="10" value="<%=(double)GwSp.SingleSubmitMinRestrict%>"
+                            onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                            oncontextmenu="return false" />
+                        &nbsp;榛樿0琛ㄧず涓嶉檺鍒讹紝鍚敤闄愬埗鍚庡皬浜庤鎻愪氦鏉℃暟鐨勫皢琚嫆缁濄��</td>
+                </tr>
+                <tr>
+                    <th>鏄惁鏄剧ず鍗曚环锛�</th>
+                    <td>
+                        <input type="radio" class="icheck-me" name="IsDispalyPrice" value="0" <%=(GwSp.IsDispalyPrice==0 ? "checked":"")%> /><label>鍚�</label>
+                        <input type="radio" class="icheck-me" name="IsDispalyPrice" value="1" <%=(GwSp.IsDispalyPrice==1 ? "checked":"")%> /><label>鏄�</label>
+                        </td>
+                    <th>鎵h垂鏂瑰紡锛�</th>
+                    <td>
+                        <input type="radio" class="icheck-me" name="DeductionMode" value="1" <%=(GwSp.DeductionMode==1 ? "checked":"")%>/><label>鎻愪氦閲�</label>
+                        <input type="radio" class="icheck-me" name="DeductionMode" value="2" <%=(GwSp.DeductionMode==2 ? "checked":"")%> /><label>鎴愬姛閲�</label>
+                        </td>
+                </tr>
+                <tr>
+                    <th>鍙戦�佹槸鍚﹀鏍革細</th>
+                    <td colspan="3">
+                        <span id="IsSendAuditSpan">
+                        <input type="radio" class="icheck-me" name="IsSendAudit" value="0" <%=(GwSp.IsSendAudit==0 ? "checked":"")%> /><label>鍚�</label>
+                        <input type="radio" class="icheck-me" name="IsSendAudit" value="1" <%=(GwSp.IsSendAudit==1 ? "checked":"")%> /><label>鏄�</label>
+                        </span>
+                        <br />
+                        <div id="IsSendAuditBlock" >
+                            浣庝簬锛�<input type="text" name="BelowNumAudit" id="BelowNumAudit" style="width: 50px;" maxlength="10" value="<%=(double)GwSp.BelowNumAudit%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />
+                            &nbsp;鏉¢渶瑕佸鏍�
+                            <br />
+                            澶т簬锛�<input type="text" name="AboveNumAudit" id="AboveNumAudit" style="width: 50px;" maxlength="10" value="<%=(double)GwSp.AboveNumAudit%>"
+                                onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                oncontextmenu="return false" />
+                            &nbsp;鏉¢渶瑕佸鏍�
+                            <br />                            
+                            <span id="IsCumulativeAuditSpan">
+                            鏄惁绱瀹℃牳锛�<input type="radio" class="icheck-me" name="IsCumulativeAudit" value="0" <%=(GwSp.IsCumulativeAudit==0 ? "checked":"")%> /><label>鍚�</label>
+                            <input type="radio" class="icheck-me" name="IsCumulativeAudit" value="1" <%=(GwSp.IsCumulativeAudit==1 ? "checked":"")%> /><label>鏄�</label>
+                            &nbsp;&nbsp;鐢ㄤ簬瀹㈡埛姣忔鎻愪氦鍑犳潯鐨勬儏鍐�
+                            </span>
+                            <br />
+                            <div id="IsCumulativeAuditBlock">
+                                绱鏉℃暟锛�<input type="text" name="CumulativeAuditNum" id="CumulativeAuditNum" style="width: 50px;" maxlength="10" value="<%=(double)GwSp.CumulativeAuditNum%>"
+                                    onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                    oncontextmenu="return false" />
+                                &nbsp;绱鏃堕棿锛�<input type="text" name="CumulativeAuditTime" id="CumulativeAuditTime" style="width: 50px;" maxlength="10" value="<%=(double)GwSp.CumulativeAuditTime%>"
+                                    onkeyup="value=value.replace(/[^\d]/g,'')" onpaste="value=value.replace(/[^\d]/g,'')"
+                                    oncontextmenu="return false" />灏忔椂锛堣〃绀轰粠褰撳墠浠诲姟鐨勫墠澶氬皯灏忔椂寮�濮嬭绠楋級
+                            </div>
+                        </div>
+                    </td>
+                </tr>
+            </table>
+        </div>            
+        <!-- 楂樼骇鍙傛暟閰嶇疆锛氱粨鏉� -->
+
         <div style="padding: 10px; text-align: right;">
             <a class="btn btn-primary action-save" href="javascript:;">淇濆瓨</a> <a class="btn btn-default  action-back"
                 href="javascript:;">杩斿洖</a>
diff --git a/web/web/gwspupdate.aspx.cs b/web/web/gwspupdate.aspx.cs
index 512c294..75f2237 100644
--- a/web/web/gwspupdate.aspx.cs
+++ b/web/web/gwspupdate.aspx.cs
@@ -79,6 +79,18 @@
                 this.GwSp.AccessCodeMode = 0;
                 this.GwSp.ExtnoExtensionMode = 0;
                 this.GwSp.CombinationMode = 0;
+
+                this.GwSp.SubPackageNum = 4000;
+                this.GwSp.SingleSubmitMinRestrict = 0;
+                this.GwSp.IsDispalyPrice = 0;
+                this.GwSp.DeductionMode = 1;
+                this.GwSp.IsSendAudit = 0;
+                this.GwSp.BelowNumAudit = 0;
+                this.GwSp.AboveNumAudit = 0;
+                this.GwSp.IsCumulativeAudit = 0;
+                this.GwSp.CumulativeAuditNum = 0;
+                this.GwSp.CumulativeAuditTime = 0;
+                this.GwSp.IsSyncChildSendAudit = 0;
             }
         }
 
@@ -202,7 +214,7 @@
             else
             {
                 foreach (GwClient gwClient in list)
-                    str = !(clientId == gwClient.ClientID) ? str + string.Format("<option value=\"{0}\">{1}</option>", (object)gwClient.ClientID, (object)gwClient.ClientName) : str + string.Format("<option value=\"{0}\" selected>{1}</option>", (object)gwClient.ClientID, (object)gwClient.ClientName);
+                    str = !(clientId == gwClient.ClientID) ? str + string.Format("<option value=\"{0}\">{1}</option>", (object)gwClient.ClientID, (object)gwClient.Company) : str + string.Format("<option value=\"{0}\" selected>{1}</option>", (object)gwClient.ClientID, (object)gwClient.Company);
             }
             return str;
         }
@@ -243,7 +255,7 @@
         StringBuilder stringBuilder = new StringBuilder();
         if (this.GwProductList.Count == 0)
             return "<option value='0'>鏃�</option>";
-        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)0, (object)"鏃�");
+        stringBuilder.AppendFormat("<option value=\"{0}\" >{1}</option>", (object)"", (object)"鏃�");
         foreach (GwProduct bean in this.GwProductList)
         {
             //鍋滅敤鐨勪骇鍝佸垎绫讳笉鍐嶆樉绀�
@@ -258,9 +270,9 @@
             }
 
             if (productId.Equals(bean.Id))
-                stringBuilder.AppendFormat("<option value=\"{0}\" selected>{0}-{1}</option>", (object)bean.Id, (object)bean.Name);
+                stringBuilder.AppendFormat("<option value=\"{0}\" selected>{1}</option>", (object)bean.Id, (object)bean.Name);
             else
-                stringBuilder.AppendFormat("<option value=\"{0}\">{0}-{1}</option>", (object)bean.Id, (object)bean.Name);
+                stringBuilder.AppendFormat("<option value=\"{0}\">{1}</option>", (object)bean.Id, (object)bean.Name);
         }
         return stringBuilder.ToString();
     }

--
Gitblit v1.9.1