using DevExpress.Utils.DragDrop; using DevExpress.XtraEditors; using Yw; using Yw.Vmo; using Yw.WinFrmUI; namespace HStation.WinFrmUI { public partial class UserMgrPage : DocumentPage { public UserMgrPage() { InitializeComponent(); this.gridView1.SetNormalView(30); // this.gridView2.SetNormalView(30); this.gridView3.SetNormalView(30); this.PageTitle.Caption = "用户管理"; this.PageTitle.SvgImageSize = new Size(24, 24); } private List _allBindingList = null;//数据绑定列表 private List _userRoleHaveViewModelList = new();//角色和用户关系 private List _userLoginAccountViewModelList = new(); /// /// 初始化数据源 /// public override void InitialDataSource() { InitialData(); } //初始化数据 private async void InitialData() { var overlay = this.ShowOverlay(); var allList = await BLLFactory.Instance.GetByCorpID(LoginUserInfo.CorpID); _allBindingList = new List(); if (allList != null && allList.Count > 0) { foreach (var item in allList) { var vm = new UserViewModel(item); _allBindingList.Add(vm); } } this.UserViewModelBindingSource.DataSource = _allBindingList; this.UserViewModelBindingSource.ResetBindings(false); this.userRoleHaveViewModelBindingSource.DataSource = _userRoleHaveViewModelList; this.userRoleHaveViewModelBindingSource.ResetBindings(false); this.userAccountViewModelBindingSource.DataSource = _userLoginAccountViewModelList; this.userAccountViewModelBindingSource.ResetBindings(false); overlay.Close(); SetDragEnable(this.barCkDrag.Checked); } /// /// 刷新数据 /// public override void RefreshData() { base.RefreshData(); InitialData(); } //添加 private void Add() { if (_allBindingList == null) { TipFormHelper.ShowError("数据初始化失败!"); return; } var dlg = new AddUserDlg(); dlg.ReloadDataEvent += (rhs) => { _allBindingList.Add(new UserViewModel(rhs)); this.UserViewModelBindingSource.ResetBindings(false); TipFormHelper.ShowSucceed("添加成功!"); }; dlg.ShowDialog(); } //编辑 private void Edit() { var vm = GetCurrentViewModel(); if (vm == null) { return; } var dlg = new EditUserDlg(); dlg.ReloadDataEvent += (rhs) => { vm.Reset(rhs); this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle); TipFormHelper.ShowSucceed("更新成功"); }; dlg.SetBindingData(vm.Vmo); dlg.ShowDialog(); } //删除 private async void Delete() { var vm = GetCurrentViewModel(); if (vm == null) { return; } var result = XtraMessageBox.Show("请问确认删除当前数据吗?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes; if (!result) { return; } var bol = await BLLFactory.Instance.DeleteByID(vm.ID); if (!bol) { TipFormHelper.ShowError("删除失败!"); return; } _allBindingList.Remove(vm); this.UserViewModelBindingSource.ResetBindings(false); TipFormHelper.ShowSucceed("删除成功!"); } //查看 private void View() { var vm = GetCurrentViewModel(); if (vm == null) { return; } var dlg = new ViewUserDlg(); dlg.SetBindingData(vm); dlg.ShowDialog(); } //上移 private async void Up() { var vm = GetCurrentViewModel(); if (vm == null) { return; } var rowHandle = this.gridView1.FocusedRowHandle; if (rowHandle == 0) { TipFormHelper.ShowWarn("上移失败!"); return; } var current = this.gridView1.GetRow(rowHandle) as UserViewModel; if (current == null) { return; } var prevHandle = rowHandle - 1; var prev = this.gridView1.GetRow(prevHandle) as UserViewModel; if (prev == null) { return; } var sorters = new List(); sorters.Add(new Yw.Vmo.Sorter() { ID = current.ID, SortCode = prev.SortCode }); sorters.Add(new Yw.Vmo.Sorter() { ID = prev.ID, SortCode = current.SortCode }); var bol = await BLLFactory.Instance.UpdateSorter(sorters); if (!bol) { TipFormHelper.ShowError("上移失败!"); return; } var sortCode = current.SortCode; current.SortCode = prev.SortCode; prev.SortCode = sortCode; _allBindingList = _allBindingList.OrderBy(x => x.SortCode).ToList(); this.UserViewModelBindingSource.DataSource = _allBindingList; this.UserViewModelBindingSource.ResetBindings(false); this.gridView1.FocusedRowHandle = prevHandle; } //下移 private async void Down() { var vm = GetCurrentViewModel(); if (vm == null) { return; } var rowHandle = this.gridView1.FocusedRowHandle; if (rowHandle == _allBindingList.Count - 1) { TipFormHelper.ShowWarn("下移失败!"); return; } var current = this.gridView1.GetRow(rowHandle) as UserViewModel; if (current == null) { return; } var nextHandle = rowHandle + 1; var next = this.gridView1.GetRow(nextHandle) as UserViewModel; if (next == null) { return; } var sorters = new List(); sorters.Add(new Yw.Vmo.Sorter() { ID = current.ID, SortCode = next.SortCode }); sorters.Add(new Yw.Vmo.Sorter() { ID = next.ID, SortCode = current.SortCode }); var bol = await BLLFactory.Instance.UpdateSorter(sorters); if (!bol) { TipFormHelper.ShowError("下移失败!"); return; } var sortCode = current.SortCode; current.SortCode = next.SortCode; next.SortCode = sortCode; _allBindingList = _allBindingList.OrderBy(x => x.SortCode).ToList(); this.UserViewModelBindingSource.DataSource = _allBindingList; this.UserViewModelBindingSource.ResetBindings(false); this.gridView1.FocusedRowHandle = nextHandle; } #region 当前 //获取当前 private UserViewModel GetCurrentViewModel() { if (_allBindingList == null) { TipFormHelper.ShowError("数据初始化错误!"); return null; } if (_allBindingList.Count < 1) { TipFormHelper.ShowInfo("无数据!"); return null; } var vm = this.gridView1.GetCurrentViewModel(_allBindingList); if (vm == null) { TipFormHelper.ShowWarn("请选择数据行!"); return null; } return vm; } #endregion 当前 #region Ribbon //添加 private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { Add(); } //编辑 private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { Edit(); } //删除 private void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { Delete(); } //详细信息 private void barBtnInfo_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { View(); } //上移 private void barBtnUp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { Up(); } //下移 private void barBtnDown_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { Down(); } //查询 private void barBtnSearch_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.gridView1.OptionsFind.AlwaysVisible = !this.gridView1.OptionsFind.AlwaysVisible; } //刷新 private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { this.RefreshData(); } #endregion Ribbon private async void dragDropEvents1_DragDrop(object sender, DevExpress.Utils.DragDrop.DragDropEventArgs e) { var indexs = e.Data as int[]; if (indexs == null || indexs.Length < 1) { e.Handled = true; return; } var sourceIndex = indexs[0]; var sourceObj = this.gridView1.GetRow(sourceIndex) as UserViewModel; if (sourceObj == null) { e.Handled = true; return; } var destIndex = this.gridView1.GetRowHandleByCP(e.Location); if (destIndex < 0) { e.Handled = true; return; } var destObj = this.gridView1.GetRow(destIndex) as UserViewModel; if (destObj == null) { e.Handled = true; return; } var sorters = new List(); if (e.InsertType == InsertType.Before) { sorters.Add(new Yw.Vmo.Sorter() { ID = sourceObj.ID, SortCode = destObj.SortCode }); _allBindingList.ForEach(x => { if (x.SortCode >= destObj.SortCode) { if (x != sourceObj) { sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 }); } } }); } else if (e.InsertType == InsertType.After) { sorters.Add(new Yw.Vmo.Sorter() { ID = sourceObj.ID, SortCode = destObj.SortCode + 1 }); _allBindingList.ForEach(x => { if (x.SortCode > destObj.SortCode) { if (x != sourceObj) { sorters.Add(new Yw.Vmo.Sorter() { ID = x.ID, SortCode = x.SortCode + 1 }); } } }); } else { e.Handled = true; return; } var bll = BLLFactory.Instance; var bol = await bll.UpdateSorter(sorters); if (!bol) { e.Handled = true; return; } _allBindingList.ForEach(x => { var sorter = sorters.Find(t => t.ID == x.ID); if (sorter != null) { x.SortCode = sorter.SortCode; } }); } private void barCkDrag_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { SetDragEnable(this.barCkDrag.Checked); } //设置拖拽可用性 private void SetDragEnable(bool allowArag) { var be = this.behaviorManager1.GetBehavior(this.gridView1); be.Properties.AllowDrag = allowArag; } /// /// 编辑管理类型 /// private void BtnEditAdminType_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var row = this.GetCurrentViewModel(); if (row == null) return; var dlg = new UpdateAdminTypeDlg(); dlg.SetBingingData(row.ID, row.AdminType); dlg.ShowDialog(); } private async void flyoutPanel1_ButtonClick(object sender, DevExpress.Utils.FlyoutPanelButtonClickEventArgs e) { if (e.Button.Caption.Equals("关闭")) { flyoutPanel1.HidePopup(); } if (e.Button.Caption.Equals("保存")) { var vm = GetCurrentViewModel(); if (vm == null) { return; } var userRoleInput = new SetUserRoleInputVmo(); userRoleInput.UserID = vm.ID; userRoleInput.RoleIds = new List(); foreach (var item in _userRoleHaveViewModelList) { if (item.Have) { userRoleInput.RoleIds.Add(item.ID); } } var bol = await BLLFactory.Instance.Set(userRoleInput); if (bol) { TipFormHelper.ShowSucceed("设置成功!"); } else { TipFormHelper.ShowError("设置失败!"); } flyoutPanel1.HidePopup(); } } //单元格点击事件 private async void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { var vm = GetCurrentViewModel(); if (vm == null) { return; } if (e.Column == this.colRole) { _userRoleHaveViewModelList.Clear(); var allUserHaveList = await BLLFactory.Instance.GetAuthorizeRoleList(vm.ID); foreach (var item in allUserHaveList) { _userRoleHaveViewModelList.Add(new UserRoleHaveViewModel(item)); } this.userRoleHaveViewModelBindingSource.ResetBindings(false); flyoutPanel1.ShowPopup(); } if (e.Column == this.colAccount) { _userLoginAccountViewModelList.Clear(); var allLoginAccountList = await BLLFactory.Instance.GetByUserID(vm.ID); foreach (var item in allLoginAccountList) { _userLoginAccountViewModelList.Add(new UserAccountViewModel(item)); } this.userAccountViewModelBindingSource.ResetBindings(false); flyoutPanel2.ShowPopup(); } } /// /// 账户单元格点击事件 /// private async void gridView3_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e) { var vm = this.gridView3.GetCurrentViewModel(_userLoginAccountViewModelList); if (vm == null) { return; } if (e.Column == this.colResetPwd) { if (XtraMessageBox.Show($"确认重置密码吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) != DialogResult.OK) return; var userVm = GetCurrentViewModel(); var loginAccount = await BLLFactory.Instance.GetByUserID(userVm.ID); if (loginAccount == null || loginAccount.Count == 0) return; var bll = new Yw.BLL.UserLoginAccount(); if (!await bll.ResetSystemLoginPwd(vm.ID)) { XtraMessageBox.Show("重置失败!"); return; } // var model = bll.GetByID(row.UserID); // row.Reset(model); this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle); XtraMessageBox.Show("重置成功!"); } if (e.Column == this.colEditPwd) { var dlg = new UpdatePwdDlg(); dlg.SetBindingData(vm.ID); dlg.ShowDialog(); } } private void flyoutPanel2_ButtonClick(object sender, DevExpress.Utils.FlyoutPanelButtonClickEventArgs e) { if (e.Button.Caption.Equals("关闭")) { flyoutPanel2.HidePopup(); } } //使用状态 private void BtnEditStatus_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { var vm = GetCurrentViewModel(); if (vm == null) { return; } var dlg = new SetUseStatusDlg(); dlg.SetBindingData((Yw.Model.eUseStatus)vm.UseStatus); dlg.ReloadDataEvent += async (status) => { var bol = await BLLFactory.Instance.UpdateUseStatus(vm.ID, status); if (bol) { vm.UseStatus = status; this.gridView1.RefreshRow(this.gridView1.FocusedRowHandle); return true; } return false; }; dlg.ShowDialog(); } } }