DHDHSoftware/DHSoftware/Views/RBACWindow.cs
2025-03-28 10:16:28 +08:00

201 lines
8.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 AntdUI;
using DH.Commons.Base;
using DH.Commons.Models;
using DHSoftware.Views;
namespace DHSoftware
{
public partial class RBACWindow : Window
{
public RBACWindow()
{
InitializeComponent();
menu1.SelectChanged += Menu1_SelectChanged;
}
/// <summary>
/// 窗体对象实例
/// </summary>
private static RBACWindow _instance;
internal static RBACWindow Instance
{
get
{
if (_instance == null || _instance.IsDisposed)
_instance = new RBACWindow();
return _instance;
}
}
private void Menu1_SelectChanged(object sender, MenuSelectEventArgs e)
{
MenuItem clickedItem = e.Value;
if (clickedItem != null)
{
if (clickedItem.PARENTITEM == null)
{
return;
}
switch (clickedItem.PARENTITEM.Text)
{
case "用户管理":
foreach (var tab in tabs1.Pages)
{
if (tab is AntdUI.TabPage existingTab && existingTab.Text == $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}")
{
tabs1.SelectedTab = existingTab;
return;
}
}
CameraBase? CameraBase = ConfigModel.CameraBaseList.Where(c => c.CameraName == clickedItem.Text).FirstOrDefault();
if (CameraBase == null)
{
CameraBase = new CameraBase();
}
UserControl control = null;
control = new CameraControl(this, CameraBase);
if (control != null)
{
//容器添加控件需要调整dpi
control.Dock = DockStyle.Fill;
AutoDpi(control);
AntdUI.TabPage tabPage = new AntdUI.TabPage()
{
Text = $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}",
ReadOnly = false,
};
tabPage.Controls.Add(control);
tabs1.Pages.Add(tabPage);
tabs1.SelectedTab = tabPage;
}
break;
case "角色管理":
// 检查是否已存在同名 TabPage
foreach (var tab in tabs1.Pages)
{
if (tab is AntdUI.TabPage existingTab && existingTab.Text == $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}")
{
tabs1.SelectedTab = existingTab;
return;
}
}
DetectionConfig? detectionConfig = ConfigModel.DetectionList.Where(c => c.Name == clickedItem.Text).FirstOrDefault();
if (detectionConfig == null)
{
detectionConfig = new DetectionConfig();
}
UserControl control1 = null;
control1 = new DetectControl(this, detectionConfig);
if (control1 != null)
{
//容器添加控件需要调整dpi
control1.Dock = DockStyle.Fill;
AutoDpi(control1);
AntdUI.TabPage tabPage = new AntdUI.TabPage()
{
Text = $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}",
ReadOnly = false,
};
tabPage.Controls.Add(control1);
tabs1.Pages.Add(tabPage);
tabs1.SelectedTab = tabPage;
}
break;
case "权限管理":
foreach (var tab in tabs1.Pages)
{
if (tab is AntdUI.TabPage existingTab && existingTab.Text == $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}")
{
tabs1.SelectedTab = existingTab; // 直接跳转到已存在的 TabPage
return;
}
}
//先获取是否存在该名称的配置
//如果没有新建项
PLCBase? pLCBase = ConfigModel.PLCBaseList.Where(c => c.PLCName == clickedItem.Text).FirstOrDefault();
if (pLCBase == null)
{
pLCBase = new PLCBase();
}
UserControl control2 = null;
control = new MotionControl(this, pLCBase);
if (control != null)
{
//容器添加控件需要调整dpi
control.Dock = DockStyle.Fill;
AutoDpi(control);
AntdUI.TabPage tabPage = new AntdUI.TabPage()
{
Text = $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}",
ReadOnly = false,
};
tabPage.Controls.Add(control);
tabs1.Pages.Add(tabPage);
tabs1.SelectedTab = tabPage;
}
break;
case "其他设置":
foreach (var tab in tabs1.Pages)
{
if (tab is AntdUI.TabPage existingTab && existingTab.Text == $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}")
{
tabs1.SelectedTab = existingTab; // 直接跳转到已存在的 TabPage
return;
}
}
if (clickedItem.Text == "全局设置")
{
//先获取是否存在该名称的配置
//如果没有新建项
GlobalConfig? global = ConfigModel
.GlobalList.FirstOrDefault();
if (global == null)
{
global = new GlobalConfig();
}
UserControl control3 = null;
control = new GlobalControl(this, global);
if (control != null)
{
//容器添加控件需要调整dpi
control.Dock = DockStyle.Fill;
AutoDpi(control);
AntdUI.TabPage tabPage = new AntdUI.TabPage()
{
Text = $"{clickedItem.PARENTITEM.Text}-{clickedItem.Text}",
ReadOnly = false,
};
tabPage.Controls.Add(control);
tabs1.Pages.Add(tabPage);
tabs1.SelectedTab = tabPage;
}
}
break;
}
}
}
}
}