1927 lines
83 KiB
C#
1927 lines
83 KiB
C#
/******************************
|
||
* 说明:登录界面
|
||
* 创建人:龚宇超
|
||
* 创建日期:2017-08-08
|
||
* 修改人:
|
||
* 修改日期:
|
||
* 修改备注:
|
||
* 版本:1.0.0.0
|
||
******************************/
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Windows.Forms;
|
||
using Lskj.Control.Model;
|
||
using Lskj.Business;
|
||
using Lskj.Control;
|
||
using Lskj.Data;
|
||
using Lskj.Util;
|
||
using Lskj.Core;
|
||
using Lskj.Main.Properties;
|
||
using Lskj.Model;
|
||
using DevExpress.XtraEditors.Controls;
|
||
using Lskj.Business.Impl;
|
||
using DevExpress.LookAndFeel;
|
||
using Lskj.AutoUpdate;
|
||
using System.Net;
|
||
using System.Xml;
|
||
using Lskj.Main.Model;
|
||
using System.IO;
|
||
using System.Text.RegularExpressions;
|
||
using DevExpress.XtraGrid.Columns;
|
||
using Xilium.CefGlue;
|
||
using Lskj.Control.ZKFinger;
|
||
using libzkfpcsharp;
|
||
using System.Reflection;
|
||
using System.Diagnostics;
|
||
using static Lskj.Control.Model.StaticControl;
|
||
using System.Runtime.InteropServices;
|
||
|
||
namespace Lskj.Main
|
||
{
|
||
/// <summary>
|
||
/// 登录界面
|
||
/// </summary>
|
||
public partial class FrmLogin : Form
|
||
{
|
||
private bool isLoginByAd = false;
|
||
private string m_UpdateIP = "";
|
||
private byte[] g_KeyValue = { 212, 61, 139, 3, 54, 70, 213, 254 };
|
||
/// <summary>
|
||
/// 是否鼠标按下
|
||
/// </summary>
|
||
private bool _isMouseDown;
|
||
public bool isLoginFinger = false;
|
||
System.Threading.Thread captureThread;
|
||
/// <summary>
|
||
/// 记录窗口位置
|
||
/// </summary>
|
||
private Point _mousePostion;
|
||
private DataTable _ledgerTable;
|
||
private DataTable _userTable;
|
||
Regex regex = new Regex(@"(?=.*[0-9]) #必须包含数字
|
||
(?=.*[a-zA-Z]) #必须包含小写或大写字母
|
||
(?=.*[^a-zA-Z0-9]) #必须包含符号
|
||
.{8,18} #至少8个字符,最多18个字符
|
||
", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace);
|
||
|
||
private bool isPlaintextPwd;
|
||
|
||
private string DisplayName = "UserName";
|
||
public FrmLogin()
|
||
{
|
||
InitializeComponent();
|
||
//启动时自动更新
|
||
if (SystemInfo.Instance.UpdateAtStartup && !string.IsNullOrWhiteSpace(SystemInfo.Instance.UpdateAddress))
|
||
{
|
||
WaitForm.ShowForm(ResourceKeys.AutoUpdating);
|
||
this.StartAutoUpdate();
|
||
}
|
||
}
|
||
#region 方法相关
|
||
/// <summary>
|
||
/// <para>说明:登陆时验证信息</para>
|
||
/// <para>创建人:王一帆</para>
|
||
/// <para>创建日期:2020-12-10 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private int XlValid()
|
||
{
|
||
int Rtn = 0;
|
||
try
|
||
{
|
||
DataRow dr = BaseImpl.GetVeriSystemTab();
|
||
if (dr != null)
|
||
{
|
||
ERPInfo.Instance.ClientName = dr["ClientName"].ToString() + " (注:软件维护截止时间:2020-9-21)";
|
||
ERPInfo.Instance.bSmartClientIsOK = dr["hasCommunicationClient"].ToString() == "1";
|
||
m_UpdateIP = dr["UpdateIP"].ToString().Trim();
|
||
ERPInfo.Instance.SkinName = dr["SkinPath"].ToString();
|
||
//在这用线程检测路径是否正确,不能阻塞主程序流程
|
||
if (m_UpdateIP != string.Empty)
|
||
{
|
||
ThreadFun dd = new ThreadFun(CheckDirectoryExist);
|
||
ThreadHelper.AddProcedure(dd);
|
||
}
|
||
if (dr["coid"].ToString() == "9090")
|
||
{
|
||
if (DateTime.Now < DateTime.Parse("2014-12-01"))
|
||
return Rtn;
|
||
}
|
||
string ValidateCodeE = "", ValidateCodeT = "";
|
||
int CodeELen = 0, CodeTLen = 0;
|
||
|
||
StringBuilder sb1 = new StringBuilder();
|
||
StringBuilder sb2 = new StringBuilder();
|
||
if (DelphiHelper.GetValidateCode(ref sb1, ref CodeELen, ref sb2, ref CodeTLen) == false)
|
||
throw new Exception("");
|
||
|
||
ValidateCodeE = sb1.ToString().Substring(0, CodeELen);//jY3vY7lfEs8=
|
||
sb1.Clear();
|
||
sb1.Append(ValidateCodeE);
|
||
|
||
ValidateCodeT = sb2.ToString().Substring(0, CodeTLen);//k3b5LNPzWeIK4gqggtYZ1A==
|
||
sb2.Clear();
|
||
sb2.Append(ValidateCodeT);
|
||
|
||
string GclientName = dr["clientname"].ToString();
|
||
int Gtagid = int.Parse(dr["UserTagid"].ToString());
|
||
if (Gtagid == 1)
|
||
{
|
||
string Guserid = Publentry.XGetDate(new StringBuilder().Append(Publentry.Decrypt_Des(sb1, g_KeyValue)));
|
||
//FindPassWord(Guserid, "", "");
|
||
}
|
||
else
|
||
{
|
||
string endstr = Publentry.XGetDate(new StringBuilder(Publentry.Decrypt_Des(sb1, g_KeyValue)));
|
||
ERPInfo.Instance.ClientName = dr["ClientName"].ToString() + " (注:软件维护截止时间:" + endstr + ")";
|
||
if (DateTime.Parse(Publentry.XGetDate(new StringBuilder(Publentry.Decrypt_Des(sb1, g_KeyValue)))) < DateTime.Now)
|
||
{
|
||
Rtn = 1;
|
||
MessageUtil.Show("软件已经达到的最后期限请与朗速软件联系!");
|
||
return 1;
|
||
//Publentry.XGetDate(new StringBuilder(Publentry.Decrypt_Des(sb1, g_KeyValue))) "2099-12-31" string
|
||
}
|
||
string GEndDate = Publentry.Decrypt_Des(sb2, g_KeyValue);
|
||
if (DateTime.Parse(GEndDate) < DateTime.Now)
|
||
{
|
||
Rtn = 1;
|
||
MessageUtil.Show("软件已过期请与朗速软件公司联系");
|
||
return 1;
|
||
}
|
||
if (DateTime.Parse(GEndDate) < DateTime.Now.AddDays(7))
|
||
{
|
||
TimeSpan ts = DateTime.Parse(GEndDate) - DateTime.Now;
|
||
MessageUtil.Show("你软件维护周期时间还剩 " + ts.ToString() + " 天,请速与管理员联系");
|
||
return 1;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Rtn = 5;
|
||
MessageBox.Show("软件数据被人为破坏导致软件不能正常运行请与朗速软件公司联系");
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
Rtn = 1;
|
||
MessageBox.Show("软件数据破坏,请与朗速软件公司联系" + ex.Message);
|
||
}
|
||
return Rtn;
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:在这用线程检测路径是否正确,不能阻塞主程序流程</para>
|
||
/// <para>创建人:王一帆</para>
|
||
/// <para>创建日期:2020-12-10 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private void CheckDirectoryExist()
|
||
{
|
||
string strDir = "\\\\" + m_UpdateIP + "\\update";
|
||
if (Directory.Exists(strDir))
|
||
ERPInfo.Instance.UpdateIP = m_UpdateIP;
|
||
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:设置帐套信息</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-09 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private void SetLedgers()
|
||
{
|
||
// 获取帐套信息
|
||
try
|
||
{
|
||
_ledgerTable = MainImpl.GetLedgerList();
|
||
cbLedger.Properties.Items.Clear();
|
||
|
||
if (_ledgerTable.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow item in _ledgerTable.Rows)
|
||
{
|
||
cbLedger.Properties.Items.Add(item["ShowName"]);
|
||
}
|
||
if (!string.IsNullOrEmpty(DBConfig.Instance.DataBase))
|
||
{
|
||
DataRow ledRow = _ledgerTable.Rows.Cast<DataRow>().FirstOrDefault(x => DBConfig.Instance.DataBase.Equals(x["DBname"] + ""));
|
||
cbLedger.Text = ledRow != null ? ledRow["ShowName"] + "" : _ledgerTable.Rows[0]["ShowName"] + "";
|
||
}
|
||
else
|
||
if (!string.IsNullOrEmpty(DBConfig.Instance.DataBook))//数据库连接参数配置类的帐套
|
||
{
|
||
DataRow ledRow = _ledgerTable.Rows.Cast<DataRow>().FirstOrDefault(x => DBConfig.Instance.DataBook.Equals(x["ShowName"] + ""));
|
||
cbLedger.Text = ledRow != null ? ledRow["ShowName"] + "" : _ledgerTable.Rows[0]["ShowName"] + "";
|
||
}
|
||
else
|
||
{
|
||
cbLedger.Text = _ledgerTable.Rows[0]["ShowName"] + "";
|
||
}
|
||
|
||
//this.StartLedger(cbLedger.EditValue + "");
|
||
}
|
||
else
|
||
{
|
||
cbLedger.Enabled = false;
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{
|
||
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:设置系统用户</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-09 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private void SetUsers()
|
||
{
|
||
string arg = string.Empty;
|
||
if (this.language.Visible)
|
||
{
|
||
BaseImpl.HasExistsColumn("P_EmployeeTab", "useLanguage", "nvarchar(50)");
|
||
arg = " ,useLanguage";
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrWhiteSpace(SystemInfo.Instance.LoginUsername)&& BaseImpl.HasExistsColumn("P_EmployeeTab", SystemInfo.Instance.LoginUsername))
|
||
{
|
||
this.DisplayName= SystemInfo.Instance.LoginUsername;
|
||
arg+= " ,"+ this.DisplayName;
|
||
}
|
||
|
||
//if (BaseImpl.HasExistsColumn("P_EmployeeTab", "DefaultLedger"))
|
||
// arg += ",DefaultLedger";
|
||
BaseImpl.HasExistsColumn("P_SystemTab", "LoginPopupFlag", "int");
|
||
lueUserName.Focus();
|
||
lueUserName.ValueField = lueUserName.ValueMember = "UserId";
|
||
lueUserName.TextMember = this.DisplayName;
|
||
lueUserName.SourceSQL = string.Format("select EmployeeId UserId,LoginAccount UserCode,EmployeeName UserName {0} from P_EmployeeTab WHERE sign=0 and UseFlag=1", arg);
|
||
|
||
if (SystemInfo.Instance.DisplayUserCode)
|
||
{
|
||
lueUserName.SourceSQL = string.Format("select EmployeeId UserId,LoginAccount UserCode,EmployeeName UserName, LoginAccount 工号 {0} from P_EmployeeTab WHERE sign=0 and UseFlag=1", arg);
|
||
_userTable = MainImpl.GetEmployeeListNew();
|
||
}
|
||
else
|
||
{
|
||
_userTable = MainImpl.GetEmployeeList();
|
||
}
|
||
|
||
lueUserName.DataSource = _userTable;
|
||
|
||
|
||
lueUserName.AutoShowPopup = "1".Equals(BaseImpl.GetResult("SELECT LoginPopupFlag FROM P_SystemTab") + "");
|
||
DataRow[] rowItems = _userTable.Select(" "+ DisplayName + " = '" + DBConfig.Instance.LoginName + "'");
|
||
DataRow[] rowItemsUserCode = _userTable.Select(" UserCode = '" + DBConfig.Instance.LoginName + "'");
|
||
if (rowItems != null && rowItems.Length > 0)
|
||
{
|
||
lueUserName.EditValue = rowItems[0][lueUserName.ValueField] + "";
|
||
StateFlushed();
|
||
}
|
||
else if (rowItemsUserCode != null && rowItemsUserCode.Length > 0)
|
||
{
|
||
lueUserName.Text = DBConfig.Instance.LoginName;
|
||
StateFlushed();
|
||
}
|
||
else if (_userTable.Columns.Contains("AD_Id") && !string.IsNullOrEmpty(DBConfig.Instance.LoginName))
|
||
{
|
||
rowItems = _userTable.Select(" AD_Id = '" + DBConfig.Instance.LoginName + "'");
|
||
if (rowItems != null && rowItems.Length > 0)
|
||
{
|
||
lueUserName.Text = rowItems[0]["AD_Id"] + "";
|
||
StateFlushed();
|
||
}
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:设置delphi参数</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2018-03-12 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private void SetDelphiDllParams()
|
||
{
|
||
try
|
||
{
|
||
StringBuilder sb1 = new StringBuilder();
|
||
sb1.Append(ERPInfo.Instance.UserName);
|
||
|
||
StringBuilder sb2 = new StringBuilder();
|
||
sb2.Append(ERPInfo.Instance.WindowName);
|
||
|
||
StringBuilder sb3 = new StringBuilder();
|
||
sb3.Append(ERPInfo.Instance.SkinName);
|
||
|
||
//给delphi库设置参数(用户id、子系统id、操作员名称、计算机名称)
|
||
DelphiHelper.Delphi_SetParams(Convert.ToInt32(ERPInfo.Instance.UserId), Convert.ToInt32(ERPInfo.Instance.SubSysId), sb1, sb2, sb3);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
LogHelper.Instance.WriteError(ex);
|
||
//LogUtil.WriteError("设置delphi参数错误", ex);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:启动自动更新</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2018-02-23 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private void StartAutoUpdate()
|
||
{
|
||
if (string.IsNullOrEmpty(SystemInfo.Instance.UpdateAddress))
|
||
{
|
||
MessageUtil.Show(ResourceKeys.UpdateAddressIsNull);
|
||
return;
|
||
}
|
||
string verDesp = string.Empty;
|
||
if (BaseImpl.HasExistsTable("p_ErpProUpdateInfo"))
|
||
{
|
||
string sqlValue = "select top 1 verDesp from p_ErpProUpdateInfo order by updateDate desc";
|
||
verDesp = SqlHelper.ExecuteString("verDesp", sqlValue);
|
||
|
||
}
|
||
|
||
bool isUpdateSucess = false;
|
||
IAutoUpdater updater = new AutoUpdater(SystemInfo.Instance.UpdateAddress, true,false, verDesp);
|
||
try
|
||
{
|
||
updater.Update();
|
||
isUpdateSucess = true;
|
||
}
|
||
catch (WebException ex)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.ServerConnectionFault + "\r\n" + ex);
|
||
}
|
||
catch (XmlException ex)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.DownLoadUpdateXmlFault + "\r\n" + ex);
|
||
}
|
||
catch (NotSupportedException ex)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.UpdateXmlSettingFault + "\r\n" + ex);
|
||
}
|
||
catch (ArgumentException ex)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.DownLoadUpdateFileFault + "\r\n" + ex);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.UpdateError + "\r\n" + ex);
|
||
LogHelper.Instance.WriteError(ex);
|
||
LogUtil.WriteError("更新失败!", ex);
|
||
}
|
||
finally
|
||
{
|
||
if (!isUpdateSucess)
|
||
{
|
||
try
|
||
{
|
||
updater.RollBack();
|
||
}
|
||
catch (Exception)
|
||
{
|
||
}
|
||
}
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:启动小平台</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2018-02-23 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private void StartSmallClient()
|
||
{
|
||
try
|
||
{
|
||
if (File.Exists(PubUtil.AbsolutelySmallClientPath))
|
||
{
|
||
//WinHelper.WinExec(PubUtil.AbsolutelySmallClientPath + " " + ERPInfo.Instance.UserId + " " + ERPInfo.Instance.Password);
|
||
|
||
string[] args = new string[2];
|
||
args[0] = ERPInfo.Instance.UserId;
|
||
args[1] = ERPInfo.Instance.Password;
|
||
WinHelper.StartProcess(PubUtil.AbsolutelySmallClientPath, args);
|
||
}
|
||
else
|
||
{
|
||
MessageUtil.Show(this.chkClient.Text + ResourceKeys.FileNotFound);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:开始登录</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2018-03-05 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private bool StartLogin()
|
||
{
|
||
bool isLoginSucess = false;
|
||
string userId = lueUserName.EditValue + "";
|
||
string userName = lueUserName.Text.Trim();
|
||
string password = txtPassword.Text.Trim();
|
||
string LoginAccount = string.Empty;
|
||
string ErrorLogText = string.Empty;//日志记录信息
|
||
// 设置登录用户信息
|
||
bool isConstraint = chkLogin.Checked;
|
||
if (string.IsNullOrWhiteSpace(userName))
|
||
{
|
||
MessageUtil.Show(ResourceKeys.UserNameNotNull);
|
||
return isLoginSucess;
|
||
}
|
||
|
||
try
|
||
{
|
||
// 默认有可能有空
|
||
DataTable table = MainImpl.GetEmployeeList();//获取员工信息存到表中
|
||
WaitForm.ShowForm(ResourceKeys.Logining);//验证登录后的加载框上输出的信息
|
||
#region Ad域判断打开
|
||
BaseResponse responseinfo = new BaseResponse();
|
||
int loginResult = 0;
|
||
bool isAd = false;
|
||
if (LoginByAD(lueUserName.Text, password, ref responseinfo))
|
||
{
|
||
DataTable dataTable = SqlHelper.ExecuteDataTable(string.Format("EXEC[P_Login_pr] '','','{0}','',5", lueUserName.Text));
|
||
if (dataTable.Rows.Count > 0)
|
||
{
|
||
userId = dataTable.Rows[0]["employeeid"] + "";
|
||
DataRow[] datas = table.Select("UserId=" + userId);//找到userId为当前的用户
|
||
if (datas.Count() > 0)
|
||
{
|
||
//ad域登录成功,就记录当前输入的账号密码,后面替换后的不记录
|
||
IniHelper.Write(DBConfig.Instance.ServerName + lueUserName.Text, AESUtil.Encrypt(chkRemPwd.Checked + "^" + password));
|
||
isAd = true;
|
||
|
||
DataRow data = datas[0];
|
||
userId = data["UserId"] + "";
|
||
userName = data["UserName"] + "";
|
||
LoginAccount = data["UserCode"] + "";
|
||
password = data["Password"] + "";
|
||
ERPInfo.Instance.LoginResult = true;
|
||
isLoginByAd = true;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MessageUtil.Show("无对应的ad域关联数据");
|
||
return isLoginSucess;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(responseinfo.msg))
|
||
{
|
||
MessageUtil.Show(responseinfo.msg);
|
||
return isLoginSucess;
|
||
}
|
||
DataRow[] drRows = table.Select(""+DisplayName+"='" + userName + "' or UserCode='" + userName + "'");//找到所有UserNAme或UserCode为xxx的用户
|
||
if ((drRows == null) || (drRows.Count() < 1))
|
||
{
|
||
MessageUtil.Show(ResourceKeys.NameOrPasswordError);
|
||
return isLoginSucess;
|
||
}
|
||
//找到多个操作员
|
||
if (drRows.Count() > 1)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.DuplicatedNameError);
|
||
return isLoginSucess;
|
||
}
|
||
DataRow drRow = drRows[0];
|
||
//DataRow drRow = table.Rows.Cast<DataRow>().FirstOrDefault(x => userName.Equals(x["UserName"] + ""));
|
||
if (drRow != null)
|
||
{
|
||
userId = drRow["UserId"] + "";
|
||
userName = drRow["UserName"] + "";
|
||
LoginAccount = drRow["UserCode"] + "";
|
||
}
|
||
else
|
||
{
|
||
userId = "";
|
||
}
|
||
if (string.IsNullOrWhiteSpace(userId))
|
||
{
|
||
MessageUtil.Show(ResourceKeys.UserNotFound);
|
||
return isLoginSucess;
|
||
}
|
||
//检查软件有效性
|
||
//if (XlValid() != 0)
|
||
//{
|
||
// ERPInfo.Instance.LoginResult = false;
|
||
// MessageUtil.Show("检查软件有效性失败.");
|
||
// Application.Exit();
|
||
// return false;
|
||
//}
|
||
ERPInfo.Instance.LoginResult = true;
|
||
// 检查Mac地址
|
||
if (SystemInfo.Instance.MacEnabled)
|
||
{
|
||
int result = MainImpl.CheckMacAddress(ERPInfo.Instance.MacAddress, userId);
|
||
MainImpl.LoginAfterRegister(ERPInfo.Instance.MacAddress, userId);
|
||
if (result == 0)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.LoginFault + ResourceKeys.UnKownMacAddress);
|
||
return isLoginSucess;
|
||
}
|
||
if (result == -1)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.LoginFault + ResourceKeys.UnKownMacAddressTable);
|
||
return isLoginSucess;
|
||
}
|
||
}
|
||
if (SystemInfo.Instance.IsEncrypt)
|
||
{
|
||
int[] keyHandles = ERPInfo.Instance.keyHandles = new int[8];
|
||
int[] keyNumber = ERPInfo.Instance.keyNumber = new int[8];
|
||
string appId = DBConfig.Instance.ServerName;
|
||
int frtn = SmartX1Api.SmartX1Find(appId, keyHandles, keyNumber);
|
||
int keyHandle = ERPInfo.Instance.keyHandles[0];
|
||
int uPin1 = Convert.ToInt32("0x987F6BCD", 16);
|
||
int uPin2 = Convert.ToInt32("0xE193C5B2", 16);
|
||
int uPin3 = Convert.ToInt32("0xD507CC28", 16);
|
||
int uPin4 = Convert.ToInt32("0x4B125AF6", 16);
|
||
int rtn = SmartX1Api.SmartX1Open(keyHandle, uPin1, uPin2, uPin3, uPin4);
|
||
if (rtn == 0)
|
||
{
|
||
//string writeKey = string.Format("{0}_{1}", DBConfig.Instance.ServerName, DBConfig.Instance.DataBase);
|
||
//int length = 256;
|
||
//byte[] readBuffer = new byte[length];
|
||
//int readRtn = SmartX1Api.SmartX1ReadPage(keyHandle, 1, 0, ref length, readBuffer);
|
||
//if (readRtn == 0)
|
||
//{
|
||
// Dictionary<string, string> readKeysValues = new Dictionary<string, string>();
|
||
// string readVerifyStr = Encoding.Default.GetString(readBuffer);
|
||
// string[] readVerifyStrArray = readVerifyStr.Replace("\0", "").Split(';');//获取多个账套设置
|
||
// foreach (string readVerify in readVerifyStrArray)
|
||
// {
|
||
// string[] readKeyValue = readVerify.Split('^');//获取单个账套
|
||
// if (readKeyValue.Length == 2)
|
||
// {
|
||
// readKeysValues.Add(readKeyValue[0], readKeyValue[1]);
|
||
// }
|
||
// }
|
||
// if (readKeysValues.ContainsKey(writeKey))//如果存在当前账套
|
||
// {
|
||
// string[] verifyArray = readKeysValues[writeKey].Split('^');
|
||
// if (!verifyArray.Contains(userId))
|
||
// {
|
||
// MessageUtil.Show("当前人员未拥有登录权限");
|
||
// return false;
|
||
// }
|
||
// }
|
||
// else
|
||
// {
|
||
// MessageUtil.Show("当前人员未拥有登录权限");
|
||
// return false;
|
||
// }
|
||
//}
|
||
//else
|
||
//{
|
||
// MessageUtil.Show("U盾数据获取失败,请重试或联系管理员");
|
||
// return false;
|
||
//}
|
||
}
|
||
else
|
||
{
|
||
MessageUtil.Show("U盾数据获取失败,请重试或联系管理员");
|
||
return false;
|
||
}
|
||
}
|
||
|
||
// 判断mac地址
|
||
if (!MainImpl.CheckingMacAddress(userId))
|
||
{
|
||
MessageUtil.Show(ResourceKeys.MacAddressError + ",当前地址:" + ERPInfo.Instance.MacAddress);
|
||
System.Windows.Forms.Clipboard.SetText(ERPInfo.Instance.MacAddress);
|
||
return false;
|
||
}
|
||
loginResult = MainImpl.Login(userId, password, isConstraint);
|
||
}
|
||
#endregion
|
||
switch (loginResult)
|
||
{
|
||
case 0://登录成功
|
||
//记录登录人员macAdress
|
||
if (!MainImpl.HasExistsColumn("p_employeetab", "MacAdress"))
|
||
{
|
||
BaseImpl.ExecSqlValue("alter table p_employeetab add MacAdress varchar(100)");
|
||
}
|
||
BaseImpl.ExecSqlValue(string.Format("update p_employeetab set MacAdress = '{0}' where employeeid='{1}'", ERPInfo.Instance.MacAddress, userId));
|
||
if (!MainImpl.HasExistsColumn("p_employeetab", "ClientIp"))
|
||
{
|
||
BaseImpl.ExecSqlValue("alter table p_employeetab add ClientIp varchar(100)");
|
||
}
|
||
BaseImpl.ExecSqlValue(string.Format("update p_employeetab set ClientIp = '{0}' where employeeid='{1}'", ERPInfo.Instance.LoginIPV4, userId));
|
||
|
||
//更改系统日期格式
|
||
if (SystemInfo.Instance.AutoSystemDataFormat)
|
||
{
|
||
FormatSystemDatetime formatSystemDatetime = new FormatSystemDatetime();
|
||
formatSystemDatetime.SetDateTimeFormat();
|
||
}
|
||
// 设置皮肤
|
||
string skinName = MainImpl.GetUserSkin(userId);
|
||
skinName = string.IsNullOrEmpty(skinName) ? ERPInfo.Instance.SkinName : skinName;
|
||
UserLookAndFeel.Default.SetSkinStyle(skinName);
|
||
if (!isAd)
|
||
{
|
||
//2025-02-20 改成存输入的名字(工号),避免重名的问题
|
||
IniHelper.Write(DBConfig.Instance.ServerName + lueUserName.Text, AESUtil.Encrypt(chkRemPwd.Checked + "^" + password));
|
||
}
|
||
//设置登录人电话
|
||
string phone = MainImpl.GetUserPhone(userId);
|
||
ERPInfo.Instance.SeriesId = SystemInfo.Instance.seriesid;
|
||
ERPInfo.Instance.UserLinkPhone = phone;
|
||
ERPInfo.Instance.UserId = userId;
|
||
ERPInfo.Instance.UserName = userName;
|
||
ERPInfo.Instance.Password = isLoginByAd ? password : SHAHelper.EncryptPassword(password);
|
||
ERPInfo.Instance.SkinName = skinName;
|
||
ERPInfo.Instance.AccountBook = cbLedger.Text;
|
||
ERPInfo.Instance.LoginAccount = LoginAccount;
|
||
ERPInfo.Instance.InPassWord = password;
|
||
ERPInfo.Instance.PrimitiveBrowser = SystemInfo.Instance.PrimitiveBrowser;
|
||
if (BaseImpl.HasExistsColumn("p_formmenuconfigtab", "SingleOpenMode")) ERPInfo.Instance.SingleOpenMode = true;
|
||
|
||
|
||
DBConfig.Instance.LoginName = isLoginByAd ? lueUserName.Text.Trim() : lueUserName.Text;
|
||
DBConfig.Instance.NoticeUserID = userId;
|
||
DBConfig.Instance.NoticeUserName = userName;
|
||
DBConfig.Instance.NoticeClient = chkNotice.Checked;
|
||
DBConfig.Instance.UpdateSet = chkUpdate.Checked;
|
||
DBConfig.Instance.SmallClient = chkClient.Checked;
|
||
DBConfig.Instance.DataBook = cbLedger.Text;
|
||
DBConfig.Instance.WriteConfig();
|
||
if (userName.Equals("管理员") && !string.IsNullOrWhiteSpace(ERPInfo.Instance.LoginAccount) && !isAd)
|
||
{
|
||
ERPInfo.Instance.Password = SqlHelper.ExecuteString("Password", "select Password from P_EmployeeTab where LoginAccount='" + ERPInfo.Instance.LoginAccount + "'");
|
||
//ERPInfo.Instance.Password = password;
|
||
}
|
||
|
||
ERPInfo.Instance.LanguageName = this.language.Text;
|
||
LanguageTranslation.GetLanguageComparisonTable();//获取翻译表数据
|
||
if (!string.IsNullOrWhiteSpace(ERPInfo.Instance.LanguageName) && !ERPInfo.Instance.LanguageName.Equals("中文"))
|
||
{
|
||
Localizer.Active = new XtraLocalizer();
|
||
DevExpress.XtraGrid.Localization.GridLocalizer.Active = new XtraGridLocalizer();
|
||
}
|
||
|
||
|
||
this.SetDelphiDllParams(); // 设置调用delphi参数
|
||
|
||
bool isStartMain = true;
|
||
bool isVerfyPassword = SystemInfo.Instance.VerfyPasswordStrength ? !regex.IsMatch(password) : false;
|
||
if ((SystemInfo.Instance.ForceUpdatePassword && (string.IsNullOrEmpty(password) || password.Equals("123456"))) || isVerfyPassword)
|
||
{
|
||
// 弹出修改密码窗口
|
||
FrmPassword frmPassword = new FrmPassword();
|
||
frmPassword.UserId = userId;
|
||
frmPassword.UserName = userName;
|
||
DialogResult result = frmPassword.ShowDialog();
|
||
isStartMain = result == DialogResult.OK;
|
||
}
|
||
//清空临时文件
|
||
PubUtil.ClearFilesInDirectory(PubUtil.ImageDownloadPath);
|
||
|
||
if (isStartMain)
|
||
{
|
||
// 检查自动升级
|
||
if (chkUpdate.Checked && !SystemInfo.Instance.UpdateAtStartup)
|
||
{
|
||
WaitForm.ShowForm(ResourceKeys.AutoUpdating);
|
||
this.StartAutoUpdate();
|
||
}
|
||
// 启动小平台
|
||
if (chkClient.Checked)
|
||
{
|
||
this.StartSmallClient();
|
||
}
|
||
// 启动消息通知平台
|
||
if (chkNotice.Checked)
|
||
{
|
||
this.StartNotice();
|
||
}
|
||
//加载外部exe
|
||
if (!string.IsNullOrEmpty(SystemInfo.Instance.IsLoadExe))
|
||
{
|
||
//LoadExe();
|
||
//System.Threading.Thread thread = new System.Threading.Thread(LoadExe);
|
||
//thread.Start();
|
||
}
|
||
this.DialogResult = DialogResult.OK;
|
||
//记录登录日志
|
||
LogUtil.WriteDebug("", "登录软件", "进入操作", "系统登录");
|
||
this.Close();
|
||
isLoginSucess = true;
|
||
}
|
||
break;
|
||
case 1: // 密码不正确
|
||
ErrorLogText = string.Format("登录用户Id:{0}\r\n登录用户名称:{1}\r\n输入密码:{2}", userId, userName, password);
|
||
LogUtil.WriteDebug("", "登录失败", ErrorLogText, "");
|
||
MessageUtil.Show(ResourceKeys.NameOrPasswordError);
|
||
break;
|
||
case 2: // 已有此用户登录
|
||
MessageUtil.Show(ResourceKeys.AlreadyLogin);
|
||
break;
|
||
case -2:
|
||
MessageUtil.Show(ResourceKeys.MultiFailedLogin);
|
||
break;
|
||
case -1: // 登录失败
|
||
default:
|
||
//ErrorLogText = string.Format("登录用户Id:{0}\r\n登录用户名称:{1}\r\n输入密码:{2}", userId, userName, password);
|
||
//LogUtil.WriteDebug("", "登录失败", ErrorLogText, "");
|
||
MessageUtil.Show(ResourceKeys.LoginFault);
|
||
break;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.LoginFault + "\r\n" + ex.Message);
|
||
LogUtil.WriteError(ResourceKeys.UserLogin, ex);
|
||
}
|
||
finally
|
||
{
|
||
WaitForm.HideForm();
|
||
}
|
||
return isLoginSucess;
|
||
}
|
||
private bool StartLoginByFinger(string userId)
|
||
{
|
||
bool isLoginSucess = false;
|
||
string LoginAccount = string.Empty;
|
||
string userName = "";
|
||
string password = "";
|
||
// 设置登录用户信息
|
||
bool isConstraint = chkLogin.Checked;
|
||
try
|
||
{
|
||
// 默认有可能有空
|
||
DataTable table = MainImpl.GetEmployeeList();//获取员工信息存到表中
|
||
WaitForm.ShowForm(ResourceKeys.Logining);//验证登录后的加载框上输出的信息
|
||
BaseResponse responseinfo = new BaseResponse();
|
||
int loginResult = 0;
|
||
|
||
if (!string.IsNullOrEmpty(responseinfo.msg))
|
||
{
|
||
MessageUtil.Show(responseinfo.msg);
|
||
return isLoginSucess;
|
||
}
|
||
DataRow[] drRows = table.Select("UserId='" + userId + "'");
|
||
if ((drRows == null) || (drRows.Count() < 1))
|
||
{
|
||
MessageUtil.Show(ResourceKeys.NameOrPasswordError);
|
||
return isLoginSucess;
|
||
}
|
||
//找到多个操作员
|
||
if (drRows.Count() > 1)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.DuplicatedNameError);
|
||
return isLoginSucess;
|
||
}
|
||
DataRow drRow = drRows[0];
|
||
//DataRow drRow = table.Rows.Cast<DataRow>().FirstOrDefault(x => userName.Equals(x["UserName"] + ""));
|
||
if (drRow != null)
|
||
{
|
||
userId = drRow["UserId"] + "";
|
||
userName = drRow["UserName"] + "";
|
||
password = drRow["Password"] + "";
|
||
LoginAccount = drRow["UserCode"] + "";
|
||
}
|
||
else
|
||
{
|
||
userId = "";
|
||
}
|
||
if (string.IsNullOrWhiteSpace(userId))
|
||
{
|
||
MessageUtil.Show(ResourceKeys.UserNotFound);
|
||
return isLoginSucess;
|
||
}
|
||
//检查软件有效性
|
||
//if (XlValid() != 0)
|
||
//{
|
||
// ERPInfo.Instance.LoginResult = false;
|
||
// MessageUtil.Show("检查软件有效性失败.");
|
||
// Application.Exit();
|
||
// return false;
|
||
//}
|
||
ERPInfo.Instance.LoginResult = true;
|
||
// 检查Mac地址
|
||
if (SystemInfo.Instance.MacEnabled)
|
||
{
|
||
int result = MainImpl.CheckMacAddress(ERPInfo.Instance.MacAddress, userId);
|
||
MainImpl.LoginAfterRegister(ERPInfo.Instance.MacAddress, userId);
|
||
if (result == 0)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.LoginFault + ResourceKeys.UnKownMacAddress);
|
||
return isLoginSucess;
|
||
}
|
||
if (result == -1)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.LoginFault + ResourceKeys.UnKownMacAddressTable);
|
||
return isLoginSucess;
|
||
}
|
||
}
|
||
loginResult = 0;
|
||
switch (loginResult)
|
||
{
|
||
case 0: // 登录成功
|
||
//更改系统日期格式
|
||
if (SystemInfo.Instance.AutoSystemDataFormat)
|
||
{
|
||
FormatSystemDatetime formatSystemDatetime = new FormatSystemDatetime();
|
||
formatSystemDatetime.SetDateTimeFormat();
|
||
}
|
||
// 设置皮肤
|
||
string skinName = MainImpl.GetUserSkin(userId);
|
||
skinName = string.IsNullOrEmpty(skinName) ? ERPInfo.Instance.SkinName : skinName;
|
||
UserLookAndFeel.Default.SetSkinStyle(skinName);
|
||
//IniHelper.Write(DBConfig.Instance.ServerName + userName, AESUtil.Encrypt(chkRemPwd.Checked + "^" + password));
|
||
//设置登录人电话
|
||
string phone = MainImpl.GetUserPhone(userId);
|
||
ERPInfo.Instance.UserLinkPhone = phone;
|
||
ERPInfo.Instance.UserId = userId;
|
||
ERPInfo.Instance.UserName = userName;
|
||
ERPInfo.Instance.Password = password;
|
||
ERPInfo.Instance.SkinName = skinName;
|
||
ERPInfo.Instance.AccountBook = cbLedger.Text;
|
||
ERPInfo.Instance.LoginAccount = LoginAccount;
|
||
ERPInfo.Instance.InPassWord = AESUtil.Decrypt(password);
|
||
ERPInfo.Instance.PrimitiveBrowser = SystemInfo.Instance.PrimitiveBrowser;
|
||
DBConfig.Instance.LoginName = isLoginByAd ? "" : userName;
|
||
DBConfig.Instance.NoticeUserID = userId;
|
||
DBConfig.Instance.NoticeUserName = userName;
|
||
DBConfig.Instance.NoticeClient = chkNotice.Checked;
|
||
DBConfig.Instance.UpdateSet = chkUpdate.Checked;
|
||
DBConfig.Instance.SmallClient = chkClient.Checked;
|
||
DBConfig.Instance.DataBook = cbLedger.Text;
|
||
DBConfig.Instance.WriteConfig();
|
||
if (userName.Equals("管理员") && !string.IsNullOrWhiteSpace(ERPInfo.Instance.LoginAccount))
|
||
{
|
||
password = SqlHelper.ExecuteString("Password", "select Password from P_EmployeeTab where LoginAccount='" + ERPInfo.Instance.LoginAccount + "'");
|
||
ERPInfo.Instance.Password = password;
|
||
}
|
||
|
||
ERPInfo.Instance.LanguageName = this.language.Text;
|
||
LanguageTranslation.GetLanguageComparisonTable();//获取翻译表数据
|
||
this.SetDelphiDllParams(); // 设置调用delphi参数
|
||
|
||
bool isStartMain = true;
|
||
bool isVerfyPassword = SystemInfo.Instance.VerfyPasswordStrength ? !regex.IsMatch(password) : false;
|
||
if ((SystemInfo.Instance.ForceUpdatePassword && (string.IsNullOrEmpty(password) || password.Equals("123456"))) || isVerfyPassword)
|
||
{
|
||
// 弹出修改密码窗口
|
||
FrmPassword frmPassword = new FrmPassword();
|
||
frmPassword.UserId = userId;
|
||
frmPassword.UserName = userName;
|
||
DialogResult result = frmPassword.ShowDialog();
|
||
isStartMain = result == DialogResult.OK;
|
||
}
|
||
if (isStartMain)
|
||
{
|
||
// 检查自动升级
|
||
if (chkUpdate.Checked && !SystemInfo.Instance.UpdateAtStartup)
|
||
{
|
||
WaitForm.ShowForm(ResourceKeys.AutoUpdating);
|
||
this.StartAutoUpdate();
|
||
}
|
||
// 启动小平台
|
||
if (chkClient.Checked)
|
||
{
|
||
this.StartSmallClient();
|
||
}
|
||
// 启动消息通知平台
|
||
if (chkNotice.Checked)
|
||
{
|
||
this.StartNotice();
|
||
}
|
||
this.DialogResult = DialogResult.OK;
|
||
//记录登录日志
|
||
LogUtil.WriteDebug("", "登录软件", "进入操作", "系统登录");
|
||
this.Close();
|
||
isLoginSucess = true;
|
||
}
|
||
break;
|
||
case 1: // 密码不正确
|
||
MessageUtil.Show(ResourceKeys.NameOrPasswordError);
|
||
break;
|
||
case 2: // 已有此用户登录
|
||
MessageUtil.Show(ResourceKeys.AlreadyLogin);
|
||
break;
|
||
case -1: // 登录失败
|
||
default:
|
||
MessageUtil.Show(ResourceKeys.LoginFault);
|
||
break;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.LoginFault + "\r\n" + ex.Message);
|
||
LogUtil.WriteError(ResourceKeys.UserLogin, ex);
|
||
}
|
||
finally
|
||
{
|
||
WaitForm.HideForm();
|
||
}
|
||
return isLoginSucess;
|
||
}
|
||
/// <summary>
|
||
/// 使用AD域登录
|
||
/// <para>创建日期:2023-3-30 </para>
|
||
/// <para>修改人:王一帆</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
private bool LoginByAD(string LoginAccount, string Pwd, ref BaseResponse responseinfo)
|
||
{
|
||
if (ADUtil.ADLogin == null)
|
||
{
|
||
ADUtil.ADLogin = SystemInfo.Instance.adlogin;
|
||
ADUtil.ADPath = SystemInfo.Instance.ADPath;
|
||
ADUtil.ADUser = SystemInfo.Instance.ADUser;
|
||
ADUtil.ADPwd = SystemInfo.Instance.ADPwd;
|
||
if (string.IsNullOrEmpty(ADUtil.ADPath))
|
||
{
|
||
//responseinfo.msg = "AD域配置不正确,请检查!";
|
||
return false;
|
||
}
|
||
}
|
||
if (ADUtil.ADLogin == true)
|
||
{
|
||
LoginResult result = ADUtil.LoginByAccount(LoginAccount, Pwd);
|
||
responseinfo.success = true;
|
||
if (result != LoginResult.LOGIN_USER_OK)
|
||
{
|
||
responseinfo.success = false;
|
||
switch (result)
|
||
{
|
||
case LoginResult.LOGIN_USER_ACCOUNT_INACTIVE: responseinfo.msg = "登录失败,用户账号被禁用!"; break;
|
||
case LoginResult.LOGIN_USER_PASSWORD_INCORRECT: responseinfo.msg = "登录失败,用户密码不正确!"; break;
|
||
case LoginResult.LOGIN_USER_DOESNT_EXIST: responseinfo.msg = "登录失败,用户不存在!"; break;
|
||
}
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:打开消息通知</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期: </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
private void StartNotice()
|
||
{
|
||
FormHelper.StartProcess("Ls_Notice", new string[] { ERPInfo.Instance.UserId, ERPInfo.Instance.UserName, ERPInfo.Instance.Password });
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:帐套</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2019-11-11 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="typeName">Name of the type.</param>
|
||
private void StartLedger(string ledgerValue)
|
||
{
|
||
DataRow focusRow = _ledgerTable.Rows.Cast<DataRow>().FirstOrDefault(x => ledgerValue.Equals(x["ShowName"] + ""));
|
||
if (focusRow != null)
|
||
{
|
||
string serverIP = focusRow["IP"] + "";
|
||
string dbName = focusRow["DBName"] + "";
|
||
string dataBook = focusRow["ShowName"] + "";
|
||
|
||
if (string.IsNullOrWhiteSpace(serverIP) || string.IsNullOrWhiteSpace(dbName))
|
||
{
|
||
MessageUtil.Show(ResourceKeys.UnSetServerAddress);
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
DBConfig.Instance.DataBook = dataBook;
|
||
DBConfig.Instance.ServerName = serverIP;
|
||
DBConfig.Instance.DataBase = dbName;
|
||
|
||
if (!DBConfig.Instance.CreateConnection(DBConfig.Instance.Connection))
|
||
{
|
||
MessageUtil.Show(ResourceKeys.ServerAddressFault);
|
||
return;
|
||
}
|
||
else
|
||
{
|
||
if (DelphiHelper.Delphi_Init(new StringBuilder(DBConfig.Instance.GetDelphiConnection(DBConfig.Instance.dephiConnection))) == 0)
|
||
{
|
||
MessageUtil.Show(ResourceKeys.UnConnectServer + "[By Delphi]");
|
||
return;
|
||
}
|
||
ERPInfo.Instance.AccountBook = ResourceKeys.CurrentAccountBook + ledgerValue;
|
||
SystemInfo.RefreshSystemParam();
|
||
this.SetLanguage();
|
||
this.SetUsers();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 事件相关
|
||
/// <summary>
|
||
/// <para>说明:登录界面加载时</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-08 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
||
private void OnLoginLoad(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
string file = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SystemResources.ini");
|
||
if (File.Exists(file))
|
||
{
|
||
string configFlag = IniHelper.Read("SystemResources.ini", "FrmConfigFlag");
|
||
if (configFlag.Equals("1"))
|
||
this.btnSetConfig.Text = "服务器直连";
|
||
else
|
||
this.btnSetConfig.Text = "数据库连接";
|
||
}
|
||
else
|
||
{
|
||
this.btnSetConfig.Text = "数据库连接";
|
||
File.Create(file);
|
||
}
|
||
BaseImpl.HasExistsColumn("P_SystemTab", "BsAttachFlag", "int default(0)");
|
||
this.chkUpdate.Checked = DBConfig.Instance.UpdateSet;
|
||
this.chkClient.Checked = DBConfig.Instance.SmallClient;
|
||
this.chkNotice.Checked = DBConfig.Instance.NoticeClient;
|
||
if (SystemInfo.Instance.AllowForgetPwd)
|
||
{
|
||
this.forgetPwd.Visible = true;//允许修改密码
|
||
}
|
||
if (SystemInfo.Instance.ViewPwd)
|
||
{
|
||
this.checkPwd.Visible = true;//查看密码明文
|
||
}
|
||
if (SystemInfo.Instance.AutomaticUpdates)
|
||
{
|
||
this.chkUpdate.Checked = true;
|
||
this.chkUpdate.Enabled = false;//启用自动更新禁止修改
|
||
}
|
||
if (SystemInfo.Instance.AutoCheckedNotice)
|
||
{
|
||
this.chkNotice.Checked = true;
|
||
}
|
||
if (SystemInfo.Instance.StartMessageBox)
|
||
{
|
||
this.chkNotice.Checked = true;
|
||
this.chkNotice.Enabled = false;//消息通知禁止修改
|
||
}
|
||
if (SystemInfo.Instance.DisableRememberPassword)
|
||
{
|
||
this.chkRemPwd.Checked = false;//记住密码取消勾选
|
||
this.chkRemPwd.Enabled = false;//记住密码禁止修改
|
||
}
|
||
|
||
if (SystemInfo.Instance.HiddenIntelligentClient || SystemInfo.Instance.HiddenNotification || SystemInfo.Instance.HiddenServerSetting)
|
||
{
|
||
List<System.Windows.Forms.Control> controls = new List<System.Windows.Forms.Control>();
|
||
//隐藏 智能客户端
|
||
if (SystemInfo.Instance.HiddenIntelligentClient)
|
||
{
|
||
this.chkClient.Visible = false;
|
||
}
|
||
//隐藏 消息通知
|
||
if (SystemInfo.Instance.HiddenNotification)
|
||
{
|
||
this.chkNotice.Checked = false;
|
||
this.chkNotice.Visible = false;
|
||
}
|
||
//隐藏 设置服务器
|
||
if (SystemInfo.Instance.HiddenServerSetting)
|
||
{
|
||
this.pictureBox1.Visible = false;
|
||
this.btnSetConfig.Visible = false;
|
||
}
|
||
int X = this.chkUpdate.Location.X + this.chkUpdate.Width + 10;
|
||
//controls.Add(this.chkUpdate);
|
||
controls.Add(this.chkClient);
|
||
controls.Add(this.chkNotice);
|
||
controls.Add(this.pictureBox1);
|
||
foreach (System.Windows.Forms.Control item in controls)
|
||
{
|
||
if (item.Visible)
|
||
{
|
||
item.Location = new Point(X, item.Location.Y);
|
||
X = item.Location.X + item.Width + 10;
|
||
if (item is PictureBox) this.btnSetConfig.Location = new Point(item.Location.X + item.Width, this.btnSetConfig.Location.Y);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
this.BackgroundImage = BitMapHelper.getBitmap(BitMapEnum.loginbg);
|
||
this.lblCopyright.Text = string.IsNullOrEmpty(SystemInfo.Instance.CopyRight) ? this.lblCopyright.Text : SystemInfo.Instance.CopyRight;
|
||
if (SystemInfo.Instance.IsShowVersion)
|
||
{
|
||
string version = string.Format(" Version:{0}", Assembly.GetExecutingAssembly().GetName().Version + "");
|
||
string updateTimeStr = IniHelper.Read("ApplicationUpdateTime");
|
||
string updateTime = string.Format("更新时间:{0}", updateTimeStr);
|
||
this.lblCopyright.Text += string.Format("{0}", version);
|
||
if (!string.IsNullOrEmpty(updateTimeStr))
|
||
{
|
||
this.upDateTimeLab.Visible = true;
|
||
this.upDateTimeLab.Text = string.Format("{0}", updateTime);
|
||
}
|
||
else
|
||
{
|
||
this.upDateTimeLab.Visible = false;
|
||
}
|
||
}
|
||
//设置语言
|
||
this.SetLanguage();
|
||
this.SetLedgers();
|
||
this.SetUsers();
|
||
|
||
//弹出提示框
|
||
if (SystemInfo.Instance.LoginAnnouncement)
|
||
{
|
||
if (BaseImpl.HasExistsTable("p_ErpProUpdateInfo")&& BaseImpl.HasExistsColumn("p_ErpProUpdateInfo", "AnnouncementDisplay"))
|
||
{
|
||
bool result = "1".Equals(BaseImpl.GetResult("select 1 from p_ErpProUpdateInfo where AnnouncementDisplay=1 order by updateDate desc") + "");
|
||
if (result)
|
||
{
|
||
FrmAnnouncement frmAnnouncement = new FrmAnnouncement();
|
||
frmAnnouncement.ShowDialog();
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
//LogUtil.WriteError(ResourceKeys.LoginModuleName, ex);
|
||
MessageUtil.Show(ResourceKeys.CheckDataFault);
|
||
}
|
||
finally
|
||
{
|
||
//SplashForm.HideForm();
|
||
this.TopMost = false;
|
||
if (SystemInfo.Instance.IsFingerLogin)
|
||
{
|
||
if (StaticControl.fingerHelper != null)
|
||
{
|
||
StaticControl.fingerHelper.Close();
|
||
StaticControl.fingerHelper = null;
|
||
}
|
||
FingerHelper.FreeSensor();
|
||
StaticControl.fingerHelper = new FingerHelper();
|
||
captureThread = new System.Threading.Thread(new System.Threading.ThreadStart(DoCapture));
|
||
captureThread.IsBackground = true;
|
||
captureThread.Start();
|
||
}
|
||
}
|
||
}
|
||
private void DoCapture()
|
||
{
|
||
while (!isLoginFinger)
|
||
{
|
||
try
|
||
{
|
||
int cbCapTmp = 2048;
|
||
int ret = zkfp2.AcquireFingerprint(StaticControl.fingerHelper.mDevHandle, StaticControl.fingerHelper.FPBuffer, StaticControl.fingerHelper.CapTmp, ref cbCapTmp);
|
||
if (ret == zkfp.ZKFP_ERR_OK)
|
||
{
|
||
string employeeid = StaticControl.fingerHelper.Compare();
|
||
if (!string.IsNullOrWhiteSpace(employeeid))
|
||
{
|
||
this.Invoke(new Action(() =>
|
||
{
|
||
bool isSucess = StartLoginByFinger(employeeid);
|
||
if (isSucess)
|
||
{
|
||
isLoginFinger = true;
|
||
captureThread.Abort();
|
||
if (StaticControl.fingerHelper != null)
|
||
{
|
||
StaticControl.fingerHelper.Close();
|
||
StaticControl.fingerHelper = null;
|
||
}
|
||
FingerHelper.FreeSensor();
|
||
}
|
||
}));
|
||
}
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{
|
||
}
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:关闭程序</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-10 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
||
private void OnColseClick(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
DialogResult result = MessageUtil.Show(ResourceKeys.IsExit, MessageBoxButtons.YesNo);
|
||
if (result == DialogResult.Yes)
|
||
{
|
||
Process[] p = Manager.GetApplicationProcesses();
|
||
foreach (Process item in p)
|
||
{
|
||
try
|
||
{
|
||
item.Kill();
|
||
}
|
||
catch (Exception)
|
||
{
|
||
}
|
||
}
|
||
Application.Exit();
|
||
//Process.GetCurrentProcess().Kill();
|
||
//Environment.Exit(0);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:设置服务器地址</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-11 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
||
private void OnSetConfigClick(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
FrmConfigSet frmConfigSet = new FrmConfigSet();
|
||
//FrmConfig config = new FrmConfig();
|
||
//DialogResult result = config.ShowDialog();
|
||
DialogResult result = frmConfigSet.ShowDialog();
|
||
string nConfigFlag = IniHelper.Read("SystemResources.ini", "FrmConfigFlag");
|
||
if (nConfigFlag.Equals("1"))
|
||
this.btnSetConfig.Text = "服务器直连";
|
||
else
|
||
this.btnSetConfig.Text = "数据库连接";
|
||
if (result == DialogResult.OK)
|
||
{
|
||
this.SetLanguage();
|
||
this.SetLedgers();
|
||
this.SetUsers();
|
||
SystemInfo.RefreshSystemParam();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// LogUtil.WriteError(ResourceKeys.LoginModuleName, ex);
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:登录</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-12 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
||
private void OnLoginClick(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
bool isSucess = this.StartLogin();
|
||
if (isSucess && SystemInfo.Instance.IsFingerLogin)
|
||
{
|
||
isLoginFinger = true;
|
||
captureThread.Abort();
|
||
if (StaticControl.fingerHelper != null)
|
||
{
|
||
StaticControl.fingerHelper.Close();
|
||
StaticControl.fingerHelper = null;
|
||
}
|
||
FingerHelper.FreeSensor();
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:切换帐套</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-15 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="DevExpress.XtraEditors.Controls.ClosedEventArgs"/> instance containing the event data.</param>
|
||
private void OnLedgerClosed(object sender, ClosedEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
WaitForm.ShowForm(ResourceKeys.ServerConnecting);
|
||
string ledgerValue = cbLedger.EditValue + "";
|
||
this.StartLedger(ledgerValue);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
// LogUtil.WriteError(ResourceKeys.LoginModuleName, ex);
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
finally
|
||
{
|
||
WaitForm.HideForm();
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:鼠标离开时</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-12 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
||
private void OnLoginMouseLeave(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
btnLogin.BackgroundImage = Resources.login_btn;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:鼠标移动时</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-12 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="MouseEventArgs"/> instance containing the event data.</param>
|
||
private void OnLoginMouseMove(object sender, MouseEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
btnLogin.BackgroundImage = Resources.login_btn_select;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:清空选中</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-12-06 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="KeyEventArgs"/> instance containing the event data.</param>
|
||
private void OnUserNameKeyDown(object sender, KeyEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (e.KeyCode == Keys.Back)
|
||
{
|
||
this.lueUserName.EditValue = null;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:清空EditValue值</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-12-06 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
||
private void OnUserNameTextChanged(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (string.IsNullOrEmpty(this.lueUserName.Text))
|
||
{
|
||
this.lueUserName.EditValue = null;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:回车登录</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2018-03-05 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="KeyEventArgs"/> instance containing the event data.</param>
|
||
private void OnPasswordKeyDown(object sender, KeyEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (e.KeyCode == Keys.Enter)
|
||
{
|
||
bool isSucess = this.StartLogin();
|
||
if (isSucess && SystemInfo.Instance.IsFingerLogin)
|
||
{
|
||
isLoginFinger = true;
|
||
captureThread.Abort();
|
||
if (StaticControl.fingerHelper != null)
|
||
{
|
||
StaticControl.fingerHelper.Close();
|
||
StaticControl.fingerHelper = null;
|
||
}
|
||
FingerHelper.FreeSensor();
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:打开日志</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2018-06-01 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The sender.</param>
|
||
/// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
|
||
private void OnLogClick(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
if (File.Exists(PubUtil.SystemUpdateLogPath))
|
||
{
|
||
System.Diagnostics.Process.Start("notepad.exe", PubUtil.SystemUpdateLogPath);
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 窗口拖动行为
|
||
/// <summary>
|
||
/// <para>说明:鼠标按下</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-14 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="MouseEventArgs"/> instance containing the event data.</param>
|
||
private void plTop_MouseDown(object sender, MouseEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
base.OnMouseDown(e);
|
||
System.Windows.Forms.Control control = (System.Windows.Forms.Control)sender;
|
||
Point mousePoint = control.PointToClient(System.Windows.Forms.Control.MousePosition);
|
||
_mousePostion = new Point(mousePoint.X, mousePoint.Y);
|
||
_isMouseDown = true;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:鼠标放开</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-14 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="MouseEventArgs"/> instance containing the event data.</param>
|
||
private void plTop_MouseUp(object sender, MouseEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
base.OnMouseUp(e);
|
||
_isMouseDown = false;
|
||
//this.Focus();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
/// <summary>
|
||
/// <para>说明:鼠标移动</para>
|
||
/// <para>创建人:龚宇超</para>
|
||
/// <para>创建日期:2017-08-14 </para>
|
||
/// <para>修改人:</para>
|
||
/// <para>修改日期:</para>
|
||
/// <para>修改备注:</para>
|
||
/// <para>版本:1.0</para>
|
||
/// </summary>
|
||
/// <param name="sender">The source of the event.</param>
|
||
/// <param name="e">The <see cref="MouseEventArgs"/> instance containing the event data.</param>
|
||
private void plTop_MouseMove(object sender, MouseEventArgs e)
|
||
{
|
||
try
|
||
{
|
||
base.OnMouseMove(e);
|
||
if (_isMouseDown && e.Button == MouseButtons.Left)
|
||
{
|
||
this.Location = new Point(Location.X + (e.X - _mousePostion.X), Location.Y + (e.Y - _mousePostion.Y));
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
#endregion
|
||
/// <summary>
|
||
/// 用户值改变事件
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void OnEditValueChanged(object sender, EventArgs e)
|
||
{
|
||
try
|
||
{
|
||
StateFlushed();
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
string Message = ErrorMessage.PromptErrorMessage(ex);
|
||
MessageUtil.Show(Message, ex.Message);
|
||
}
|
||
|
||
}
|
||
/// <summary>
|
||
/// 用户值改变方法
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
public void StateFlushed()
|
||
{
|
||
string UserName = lueUserName.Text.Trim();
|
||
bool isClear = true;
|
||
|
||
//if (dataRow != null && dataTable.Columns.Contains("DefaultLedger"))
|
||
//{
|
||
// string DefaultLedger= dataRow["DefaultLedger"] + "";
|
||
//}
|
||
|
||
if (this.language.Visible)
|
||
{
|
||
DataTable dataTable = this.lueUserName.DataSource as DataTable;
|
||
DataRow[] array = dataTable.Select(""+DisplayName+"='" + UserName + "'");
|
||
DataRow dataRow = array.Length > 0 ? array[0] : null;
|
||
if (dataRow != null && !string.IsNullOrWhiteSpace(dataRow["useLanguage"] + ""))
|
||
{
|
||
this.language.Text = dataRow["useLanguage"] + "";
|
||
}
|
||
|
||
}
|
||
|
||
|
||
if (!string.IsNullOrEmpty(UserName) && !SystemInfo.Instance.DisableRememberPassword)
|
||
{
|
||
string[] PwdState = AESUtil.Decrypt(IniHelper.Read(DBConfig.Instance.ServerName + UserName)).Split('^');
|
||
if (PwdState.Count() >= 2)
|
||
{
|
||
chkRemPwd.Checked = Convert.ToBoolean(PwdState[0]);
|
||
if (chkRemPwd.Checked)
|
||
{
|
||
this.txtPassword.Text = PwdState[1];
|
||
if (PwdState.Count() > 2) this.txtPassword.Text = string.Join("^", PwdState.Skip(1));
|
||
isClear = false;
|
||
this.lueUserName.Text = UserName;
|
||
this.txtPassword.Focus();
|
||
}
|
||
}
|
||
}
|
||
|
||
if (SystemInfo.Instance.AccountSwitchingRestrictions > 0)
|
||
{
|
||
DataTable dataTable = this.lueUserName.DataSource as DataTable;
|
||
DataRow[] array = dataTable.Select("" + DisplayName + "='" + UserName + "'");
|
||
DataRow dataRow = array.Length > 0 ? array[0] : null;
|
||
if (dataRow != null)
|
||
{
|
||
int uid = int.Parse(dataRow["UserId"] + "");
|
||
if (uid <= SystemInfo.Instance.AccountSwitchingRestrictions)
|
||
{
|
||
this.cbLedger.Enabled = true;
|
||
}
|
||
else
|
||
{
|
||
this.cbLedger.Enabled = false;
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
if (isClear)
|
||
{
|
||
chkRemPwd.Checked = false;
|
||
this.txtPassword.Text = string.Empty;
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 指纹识别监视
|
||
/// </summary>
|
||
/// <param name="m"></param>
|
||
protected override void WndProc(ref Message m)
|
||
{
|
||
base.WndProc(ref m);//调用父类方法,以确保其他功能正常
|
||
switch (m.WParam.ToInt32())
|
||
{
|
||
//指纹识别改变事件
|
||
case 7:
|
||
if (SystemInfo.Instance.IsFingerLogin)
|
||
{
|
||
if (StaticControl.fingerHelper != null)
|
||
{
|
||
StaticControl.fingerHelper.Close();
|
||
StaticControl.fingerHelper = null;
|
||
}
|
||
FingerHelper.FreeSensor();
|
||
StaticControl.fingerHelper = new FingerHelper();
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 登录界面显示时设置焦点
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void FrmLogin_Shown(object sender, EventArgs e)
|
||
{
|
||
if (!string.IsNullOrWhiteSpace(this.txtPassword.Text))
|
||
{
|
||
this.txtPassword.Focus();
|
||
}
|
||
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 设置语言
|
||
/// </summary>
|
||
private void SetLanguage()
|
||
{
|
||
try
|
||
{
|
||
//return;
|
||
this.language.Visible = false;
|
||
this.language.Properties.Items.Clear();
|
||
DataTable allLanguage = LanguageTranslation.GetAllLanguage();
|
||
if (allLanguage != null && allLanguage.Rows.Count > 1)
|
||
{
|
||
this.language.Visible = true;
|
||
foreach (DataRow item in allLanguage.Rows)
|
||
{
|
||
if (!(item["COLUMN_NAME"] + "").Equals("id", StringComparison.InvariantCultureIgnoreCase)) this.language.Properties.Items.Add(item["COLUMN_NAME"]);
|
||
}
|
||
this.language.SelectedIndex = 0;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 语言框选中改变
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void Language_SelectedValueChanged(object sender, EventArgs e)
|
||
{
|
||
string nConfigFlag = IniHelper.Read("SystemResources.ini", "FrmConfigFlag");
|
||
string btnSetConfigText = "设置服务器";
|
||
if (nConfigFlag.Equals("1"))
|
||
btnSetConfigText = "服务器直连";
|
||
else
|
||
btnSetConfigText = "数据库连接";
|
||
|
||
|
||
if (this.language.Text.Equals("中文"))
|
||
{
|
||
this.chkLogin.Text = "强制登录";
|
||
this.chkRemPwd.Text = "记住密码";
|
||
this.chkUpdate.Text = "自动升级";
|
||
this.chkClient.Text = "智能客户端";
|
||
this.chkNotice.Text = "消息通知";
|
||
this.btnSetConfig.Text = btnSetConfigText;
|
||
|
||
string updateTimeStr = IniHelper.Read("ApplicationUpdateTime");
|
||
string updateTime = string.Format("更新时间:{0}", updateTimeStr);
|
||
this.upDateTimeLab.Text = string.Format("{0}", updateTime);
|
||
|
||
}
|
||
else
|
||
{
|
||
DataTable dataTable = LanguageTranslation.GetLoginLanguage(this.language.Text);//获取翻译表数据
|
||
if (dataTable != null && dataTable.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow item in dataTable.Rows)
|
||
{
|
||
if ("强制登录".Equals(item["中文"] + "")) this.chkLogin.Text = item[this.language.Text] + "";
|
||
if ("记住密码".Equals(item["中文"] + "")) this.chkRemPwd.Text = item[this.language.Text] + "";
|
||
if ("自动升级".Equals(item["中文"] + "")) this.chkUpdate.Text = item[this.language.Text] + "";
|
||
if ("智能客户端".Equals(item["中文"] + "")) this.chkClient.Text = item[this.language.Text] + "";
|
||
if ("消息通知".Equals(item["中文"] + "")) this.chkNotice.Text = item[this.language.Text] + "";
|
||
|
||
if (btnSetConfigText.Equals(item["中文"] + "")) this.btnSetConfig.Text = item[this.language.Text] + "";
|
||
|
||
if ("更新时间".Equals(item["中文"] + ""))
|
||
{
|
||
string updateTimeStr = IniHelper.Read("ApplicationUpdateTime");
|
||
string updateTime = string.Format("{0}:{1}", item[this.language.Text] + "", updateTimeStr);
|
||
this.upDateTimeLab.Text = string.Format("{0}", updateTime);
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
/// <summary>
|
||
/// 忘记密码点击时
|
||
/// </summary>
|
||
/// <param name="sender"></param>
|
||
/// <param name="e"></param>
|
||
private void OnForgetPwdClick(object sender, EventArgs e)
|
||
{
|
||
using (BaseForm baseForm = new BaseForm())
|
||
{
|
||
FrmWebBrowser frmWebBrowser = new FrmWebBrowser();
|
||
frmWebBrowser.Dock = DockStyle.Fill;
|
||
baseForm.Controls.Add(frmWebBrowser);
|
||
baseForm.Text = "忘记密码";
|
||
baseForm.Size = new Size(1000, 600);
|
||
string forgetPwdUrl = "";
|
||
if (SystemInfo.Instance.OAUrl.EndsWith("/"))
|
||
{
|
||
forgetPwdUrl = $"{SystemInfo.Instance.OAUrl}lserp_v8/index.html?verify=1";
|
||
}
|
||
else
|
||
{
|
||
forgetPwdUrl = $"{SystemInfo.Instance.OAUrl}/lserp_v8/index.html?verify=1";
|
||
}
|
||
frmWebBrowser.FrmLoad(forgetPwdUrl, 1, false);
|
||
baseForm.ShowDialog();
|
||
}
|
||
}
|
||
|
||
private void OnCheckPwdClick(object sender, EventArgs e)
|
||
{
|
||
if (isPlaintextPwd)
|
||
{
|
||
//加密
|
||
txtPassword.Properties.PasswordChar = '*';
|
||
checkPwd.Image = Properties.Resources.密码显示; // 睁眼图标
|
||
toolTip.SetToolTip(checkPwd, "显示密码");
|
||
}
|
||
else
|
||
{
|
||
//明文显示
|
||
txtPassword.Properties.PasswordChar = '\0';
|
||
checkPwd.Image = Properties.Resources.密码不显示; // 睁眼图标
|
||
toolTip.SetToolTip(checkPwd, "隐藏密码");
|
||
}
|
||
isPlaintextPwd = !isPlaintextPwd;
|
||
}
|
||
}
|
||
}
|