qin
2025-03-14 ef1fc8b0eeea6972964d8c62dfef7819bea49d1a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
using DevExpress.XtraEditors;
using HStation.WinFrmUI;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Yw;
using Yw.WinFrmUI;
 
namespace PBS.Desktop
{
    public partial class SystemLoginCtrl : DevExpress.XtraEditors.XtraUserControl, ILogin
    {
        public SystemLoginCtrl()
        {
            InitializeComponent();
            this.layoutControl1.SetupLayoutControl();
        }
 
        /// <summary>
        /// 登录开始事件
        /// </summary>
        public event Action LoginStartEvent;
 
        /// <summary>
        /// 登录取消事件
        /// </summary>
        public event Action LoginCancelEvent;
 
        /// <summary>
        /// 登录完成事件
        /// </summary>
        public event Action<Yw.Dto.UserLoginOutput> LoginEndEvet;
 
        private bool _isInitialized = false;//初始化
        private const string _software = "YW_PBS_DESKTOP";//软件编码
 
        /// <summary>
        /// 初始化
        /// </summary>
        public void Initial()
        {
            if (_isInitialized)
            {
                return;
            }
            _isInitialized = true;
 
            try
            {
                var settings = new UserLoginSettings();
                this.txtLoginName.EditValue = settings.LoginName;
                if (settings.ExpireTime != null && settings.ExpireTime.Value > DateTime.Now)
                {
                    this.txtLoginPwd.EditValue = settings.Password;
                    this.ckRemember.Checked = true;
                }
            }
            catch
            {
            }
        }
 
        //取消登录
        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.LoginCancelEvent?.Invoke();
        }
 
        //登录
        private void btnLogin_Click(object sender, EventArgs e)
        {
            Login();
        }
 
        //
        private void txtLoginName_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                this.txtLoginPwd.Focus();
            }
        }
 
        //
        private void txtLoginPwd_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                Login();
            }
        }
 
        //验证
        private bool Valid()
        {
            this.dxErrorProvider1.ClearErrors();
            var loginName = this.txtLoginName.Text.Trim();
            if (string.IsNullOrEmpty(loginName))
            {
                this.dxErrorProvider1.SetError(this.txtLoginName, "请输入用户名称");
                return false;
            }
            var loginPwd = this.txtLoginPwd.Text.Trim();
            if (string.IsNullOrEmpty(loginPwd))
            {
                this.dxErrorProvider1.SetError(this.txtLoginPwd, "请输入密码");
                return false;
            }
            return true;
        }
 
        //登录
        private async void Login()
        {
            if (!Valid())
            {
                return;
            }
 
            // 用户登录
            this.LoginStartEvent?.Invoke();
            var loginName = this.txtLoginName.Text.Trim();
            var loginPwd = this.txtLoginPwd.Text.Trim();
            var result = await BLLFactory<Yw.BLL.UserLogin>.Instance.LoginSoftwareStandardBySystemAccount(loginName, loginPwd, _software, null);
            var settings = new UserLoginSettings();
            settings.LoginName = loginName;
            settings.Password = null;
            settings.ExpireTime = DateTime.Now;
            if (this.ckRemember.Checked)
            {
                settings.Password = loginPwd;
                settings.ExpireTime = DateTime.Now.AddMonths(1);
            }
            settings.Save();
            this.LoginEndEvet?.Invoke(result);
        }
    }
}