|
|
|
|
using Prism.Commands;
|
|
|
|
|
using Prism.Events;
|
|
|
|
|
using Prism.Regions;
|
|
|
|
|
using Prism.Services.Dialogs;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Collections.ObjectModel;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Windows.Threading;
|
|
|
|
|
using Txgy.EWS.Client.Common;
|
|
|
|
|
using Txgy.EWS.Client.IBLL;
|
|
|
|
|
using Txgy.EWS.Client.Models;
|
|
|
|
|
using Unity;
|
|
|
|
|
|
|
|
|
|
namespace BaseModule.ViewModels
|
|
|
|
|
{
|
|
|
|
|
public class UserManagementViewModel : PageViewModelBase
|
|
|
|
|
{
|
|
|
|
|
public ObservableCollection<UserInfoModel> Users { get; set; } = new ObservableCollection<UserInfoModel>();
|
|
|
|
|
|
|
|
|
|
IUnityContainer _unityContainer;
|
|
|
|
|
IDialogService _dialogService;
|
|
|
|
|
IUserBLL _userBLL;
|
|
|
|
|
IRoleBLL _roleBLL;
|
|
|
|
|
public UserManagementViewModel(
|
|
|
|
|
IRegionManager regionManager,
|
|
|
|
|
IUnityContainer unityContainer,
|
|
|
|
|
IEventAggregator ea,
|
|
|
|
|
IDialogService dialogService,
|
|
|
|
|
IUserBLL userBLL,
|
|
|
|
|
IRoleBLL roleBLL)
|
|
|
|
|
: base(regionManager, unityContainer, ea)
|
|
|
|
|
{
|
|
|
|
|
this.PageTitle = "系统用户管理";
|
|
|
|
|
_userBLL = userBLL;
|
|
|
|
|
_roleBLL = roleBLL;
|
|
|
|
|
_unityContainer = unityContainer;
|
|
|
|
|
_dialogService = dialogService;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void Refresh()
|
|
|
|
|
{
|
|
|
|
|
this.ShowLoading();
|
|
|
|
|
Users.Clear();
|
|
|
|
|
Task.Run(async () =>
|
|
|
|
|
{
|
|
|
|
|
var users = await _userBLL.GetAll();
|
|
|
|
|
foreach (var item in users)
|
|
|
|
|
{
|
|
|
|
|
UserInfoModel model = new UserInfoModel
|
|
|
|
|
{
|
|
|
|
|
Index = users.IndexOf(item) + 1,
|
|
|
|
|
UserId = item.UserId,
|
|
|
|
|
UserName = item.UserName,
|
|
|
|
|
UserIcon = System.Configuration.ConfigurationManager.AppSettings["api_domain"].ToString() + item.UserIcon,
|
|
|
|
|
Age = item.Age,
|
|
|
|
|
Password = item.Password,
|
|
|
|
|
RealName = item.RealName
|
|
|
|
|
};
|
|
|
|
|
// 获取用户对应的所有角色
|
|
|
|
|
var roles = await _roleBLL.GetAllByUserId(item.UserId);
|
|
|
|
|
roles?.ForEach(r => model.Roles.Add(new RoleModel { RoleId = r.roleId, RoleName = r.roleName, State = r.state }));
|
|
|
|
|
|
|
|
|
|
model.EditCommand = new DelegateCommand<object>(EditItem);
|
|
|
|
|
model.DeleteCommand = new DelegateCommand<object>(DeleteItem);
|
|
|
|
|
model.RoleCommand = new DelegateCommand<object>(SetRoles);
|
|
|
|
|
model.PwdCommand = new DelegateCommand<object>(SetPassword);
|
|
|
|
|
|
|
|
|
|
_unityContainer.Resolve<Dispatcher>().Invoke(() =>
|
|
|
|
|
{
|
|
|
|
|
Users.Add(model);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.HideLoading();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void AddItem()
|
|
|
|
|
{
|
|
|
|
|
DialogParameters param = new DialogParameters();
|
|
|
|
|
param.Add("type", 0);// 新增
|
|
|
|
|
|
|
|
|
|
ShowEditDialog(param);
|
|
|
|
|
}
|
|
|
|
|
public override bool CanExcute()
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
private void EditItem(object obj)
|
|
|
|
|
{
|
|
|
|
|
DialogParameters param = new DialogParameters();
|
|
|
|
|
param.Add("type", 1);// 编辑
|
|
|
|
|
param.Add("model", obj as UserInfoModel);
|
|
|
|
|
|
|
|
|
|
ShowEditDialog(param);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ShowEditDialog(DialogParameters param)
|
|
|
|
|
{
|
|
|
|
|
_dialogService.ShowDialog(
|
|
|
|
|
"AddUserDialog",
|
|
|
|
|
param,
|
|
|
|
|
new Action<IDialogResult>(result =>
|
|
|
|
|
{
|
|
|
|
|
if (result != null && result.Result == ButtonResult.OK)
|
|
|
|
|
{
|
|
|
|
|
System.Windows.MessageBox.Show("数据已保存", "提示");
|
|
|
|
|
this.Refresh();
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async void DeleteItem(object obj)
|
|
|
|
|
{
|
|
|
|
|
if (System.Windows.MessageBox.Show("是否确定删除此用户信息?", "提示", System.Windows.MessageBoxButton.YesNo, System.Windows.MessageBoxImage.Question) == System.Windows.MessageBoxResult.Yes)
|
|
|
|
|
{
|
|
|
|
|
var model = obj as UserInfoModel;
|
|
|
|
|
if (model != null)
|
|
|
|
|
await _userBLL.ChangeState(model.UserId, 0);
|
|
|
|
|
|
|
|
|
|
this.Refresh();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SetRoles(object obj)
|
|
|
|
|
{
|
|
|
|
|
DialogParameters param = new DialogParameters();
|
|
|
|
|
param.Add("userId", (obj as UserInfoModel).UserId);// Dialog进行数据保存,知道对哪个用户进行操作
|
|
|
|
|
param.Add("roles", (obj as UserInfoModel).Roles.Select(r => r.RoleId).ToList());
|
|
|
|
|
|
|
|
|
|
_dialogService.ShowDialog(
|
|
|
|
|
"ModifyRolesDialog",
|
|
|
|
|
param,
|
|
|
|
|
new Action<IDialogResult>(result =>
|
|
|
|
|
{
|
|
|
|
|
if (result != null && result.Result == ButtonResult.OK)
|
|
|
|
|
{
|
|
|
|
|
System.Windows.MessageBox.Show("角色分配完成", "提示");
|
|
|
|
|
this.Refresh();
|
|
|
|
|
}
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void SetPassword(object obj)
|
|
|
|
|
{
|
|
|
|
|
this.ShowLoading("正在重置....");
|
|
|
|
|
Task.Run(async () =>
|
|
|
|
|
{
|
|
|
|
|
await _userBLL.ResetPassword((obj as UserInfoModel).UserId);
|
|
|
|
|
System.Windows.MessageBox.Show("密码已重置", "提示");
|
|
|
|
|
this.HideLoading();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|