using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using XHandler.Class; using DataEntity.User; using XImagingXhandler.XDAL; using XHandler.View.MethodProperty; namespace XHandler.View.User { /// /// EditAuthority.xaml 的交互逻辑 /// public partial class EditAuthority : UserControl { public event EventHandler closeEvent; public event EventHandler saveOkEvent; string ID; RoleTab roleModel; MenuTree menuTrees = new MenuTree(); public EditAuthority() { InitializeComponent(); } public EditAuthority(string id) { InitializeComponent(); ID = id; roleModel = UserDB.GetARoleTab(ID); this.DataContext = roleModel; List statusList = GetStatusList(); comboxStatus.ItemsSource = statusList; GetAuthorityTrees(roleModel); tv.ItemsSource = menuTrees.Children; } public List GetStatusList() { List list = new List(); string disable = XImagingXhandler.XDAL.UserStatusEnum.DisablEnum.GetDescription(); list.Add(disable); string enable = XImagingXhandler.XDAL.UserStatusEnum.EnableEnum.GetDescription(); list.Add(enable); return list; } private List GetAuthorityTrees(RoleTab role) { List treeList = new List(); List menuList = UserDB.GetAllMenuTab(); var parentList = menuList.Where(s => s.level == 0).OrderBy(x => x.sequence).ToList(); var childList = menuList.Where(s => s.level == 1).ToList(); foreach (var menu in parentList) { MenuTree m = new MenuTree(menu); menuTrees.Children.Add(m); int a = 0; if (m.Name == "设备管理") a = 0; AddSubMenu(m, childList); } return treeList; } private void AddSubMenu(MenuTree parentMenu, List list) { if (!string.IsNullOrEmpty(parentMenu.ChildrenId)) { string[] strAry = parentMenu.ChildrenId.Split(','); foreach (string str in strAry) { var sub = list.Where(s => s.menu_id == str).FirstOrDefault(); MenuTree menuTree = new MenuTree(sub); bool isCheck = false; if (roleModel.menu_id.Contains(sub.menu_id)) { isCheck = true; } parentMenu.CreateTreeWithChildren(menuTree, isCheck); AddSubMenu(menuTree, list); } } else { if (roleModel.menu_id.Contains(parentMenu.Id)) parentMenu.IsChecked = true; else parentMenu.IsChecked = false; } } private void UserControl_Loaded(object sender, RoutedEventArgs e) { Storyboard storyboard = new Storyboard(); DoubleAnimation doubleAnimation = new DoubleAnimation(0, 600, new Duration(TimeSpan.FromSeconds(0.25))); Storyboard.SetTarget(doubleAnimation, border);//Target对象 Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Width"));//Target属性 storyboard.Children.Add(doubleAnimation); ObjectAnimationUsingKeyFrames showAnimation = new ObjectAnimationUsingKeyFrames(); showAnimation.BeginTime = TimeSpan.FromSeconds(0); Storyboard.SetTarget(showAnimation, border); Storyboard.SetTargetProperty(showAnimation, new PropertyPath("(UIElement.Visibility)")); DiscreteObjectKeyFrame closeKeyFrame = new DiscreteObjectKeyFrame(Visibility.Visible, TimeSpan.FromSeconds(0.01)); showAnimation.KeyFrames.Add(closeKeyFrame); storyboard.Children.Add(showAnimation); storyboard.Begin(); if (roleModel.dataauthority == "0") radioBtnSelf.IsChecked = true; else radioBtnAll.IsChecked = true; comboxStatus.SelectedIndex = Convert.ToInt16(roleModel.type); } private void root_PreviewMouseDown(object sender, MouseButtonEventArgs e) { if (e.OriginalSource is Grid) { Grid grid = e.OriginalSource as Grid; if (grid.Name == "root") Button_Click(this, null); } } private void Button_Click(object sender, RoutedEventArgs e) { if (EventResponseController.Instance.CanExecute() == false) return; Storyboard storyboard = new Storyboard(); DoubleAnimation doubleAnimation = new DoubleAnimation(600, 0, new Duration(TimeSpan.FromSeconds(0.25))); Storyboard.SetTarget(doubleAnimation, border);//Target对象 Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Width"));//Target属性 storyboard.Children.Add(doubleAnimation); ObjectAnimationUsingKeyFrames showAnimation = new ObjectAnimationUsingKeyFrames(); showAnimation.BeginTime = TimeSpan.FromSeconds(0); Storyboard.SetTarget(showAnimation, border); Storyboard.SetTargetProperty(showAnimation, new PropertyPath("(UIElement.Visibility)")); DiscreteObjectKeyFrame closeKeyFrame = new DiscreteObjectKeyFrame(Visibility.Collapsed, TimeSpan.FromSeconds(0.26)); showAnimation.KeyFrames.Add(closeKeyFrame); storyboard.Children.Add(showAnimation); storyboard.Completed += delegate { closeEvent?.Invoke(this, EventArgs.Empty); }; storyboard.Begin(); } private void comboxStatus_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (comboxStatus.SelectedIndex < 0) return; roleModel.type = comboxStatus.SelectedIndex.ToString(); } private void radioBtnSelf_Checked(object sender, RoutedEventArgs e) { if (radioBtnSelf.IsChecked == true) roleModel.dataauthority = "0"; } private void radioBtnAll_Checked(object sender, RoutedEventArgs e) { if (radioBtnAll.IsChecked == true) roleModel.dataauthority = "1"; } private void btnCancel_Click(object sender, RoutedEventArgs e) { if (EventResponseController.Instance.CanExecute() == false) return; Button_Click(this, null); } private void btnSave_Click(object sender, RoutedEventArgs e) { if (EventResponseController.Instance.CanExecute() == false) return; string ids = ""; foreach (var item in menuTrees.Children) { string id = GetSelectedAuthorityIDs(item); if (!string.IsNullOrEmpty(id)) { if (string.IsNullOrEmpty(ids)) ids = id; else ids += "," + id; } } roleModel.menu_id = ids; roleModel.remarks = textboxRemark.Text.Trim(); roleModel.modifytime = UserManagerment.currentUser.username; roleModel.modifytime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); int model = UserDB.UpdateRoleIntodb(roleModel);//rolesBLL.Update(roleModel); if (model != 0) { PlsToolTipWin plsToolTipWin = new PlsToolTipWin(Properties.UserResource.strModifyRoleSuccess); plsToolTipWin.WindowStartupLocation = WindowStartupLocation.CenterScreen; plsToolTipWin.Height = 450; plsToolTipWin.Width = 600; plsToolTipWin.btnCancel.Visibility = Visibility.Hidden; SolidColorBrush mybtn1_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(0, 0, 0, 0)); plsToolTipWin.Background = (System.Windows.Media.Brush)mybtn1_Brush; plsToolTipWin.ShowDialog(); } else { PlsToolTipWin plsToolTipWin = new PlsToolTipWin(Properties.UserResource.strModifyRoleFailed); plsToolTipWin.WindowStartupLocation = WindowStartupLocation.CenterScreen; plsToolTipWin.Height = 450; plsToolTipWin.Width = 600; plsToolTipWin.btnCancel.Visibility = Visibility.Hidden; SolidColorBrush mybtn1_Brush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(0, 0, 0, 0)); plsToolTipWin.Background = (System.Windows.Media.Brush)mybtn1_Brush; plsToolTipWin.ShowDialog(); } ButtonOK_Click(this, null); } private string GetSelectedAuthorityIDs(MenuTree tree) { string ret = ""; if (tree.IsChecked == false) return ret; else { if (tree.Children.Count == 0) { if (tree.IsChecked == true) { ret = tree.Id; return ret; } } else { foreach (var item in tree.Children) { string id = GetSelectedAuthorityIDs(item); if (!string.IsNullOrEmpty(id)) { if (string.IsNullOrEmpty(ret)) ret = id; else ret += "," + id; } } return ret; } } return ret; } private void ButtonOK_Click(object sender, RoutedEventArgs e) { if (EventResponseController.Instance.CanExecute() == false) return; Storyboard storyboard = new Storyboard(); DoubleAnimation doubleAnimation = new DoubleAnimation(600, 0, new Duration(TimeSpan.FromSeconds(0.25))); Storyboard.SetTarget(doubleAnimation, border);//Target对象 Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Width"));//Target属性 storyboard.Children.Add(doubleAnimation); ObjectAnimationUsingKeyFrames showAnimation = new ObjectAnimationUsingKeyFrames(); showAnimation.BeginTime = TimeSpan.FromSeconds(0); Storyboard.SetTarget(showAnimation, border); Storyboard.SetTargetProperty(showAnimation, new PropertyPath("(UIElement.Visibility)")); DiscreteObjectKeyFrame closeKeyFrame = new DiscreteObjectKeyFrame(Visibility.Collapsed, TimeSpan.FromSeconds(0.26)); showAnimation.KeyFrames.Add(closeKeyFrame); storyboard.Children.Add(showAnimation); storyboard.Completed += delegate { saveOkEvent?.Invoke(this, EventArgs.Empty); }; storyboard.Begin(); } } }