forked from wenjy/HighWayIot
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
289 lines
10 KiB
C#
289 lines
10 KiB
C#
using HighWayIot.Log4net;
|
|
using HighWayIot.Winform.Business;
|
|
using HighWayIot.Winform.UserControlPages;
|
|
using HighWayIot.Winform.UserControlPages.MaterialConfigPages;
|
|
using HighWayIot.Winform.UserControlPages.ParamConfigPages;
|
|
using HighWayIot.Winform.UserControlPages.SysConfigPages;
|
|
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 static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
|
|
|
namespace HighWayIot.Winform.MainForm
|
|
{
|
|
public partial class BaseForm : Form
|
|
{
|
|
/// <summary>
|
|
/// 日志实例
|
|
/// </summary>
|
|
private static LogHelper logger = LogHelper.Instance;
|
|
|
|
/// <summary>
|
|
/// 用户控件列表
|
|
/// </summary>
|
|
List<UserControl> UserControls = new List<UserControl>();
|
|
|
|
/// <summary>
|
|
/// 权限配置类
|
|
/// </summary>
|
|
RoleBusiness roleBusiness = new RoleBusiness();
|
|
|
|
public BaseForm()
|
|
{
|
|
InitializeComponent();
|
|
Init();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 初始化类
|
|
/// </summary>
|
|
public void Init()
|
|
{
|
|
logger.Info("主页面已启动");
|
|
TimeDisplayTimer.Start();
|
|
NowLoginUserName.Text = RoleBusiness.LoginUserName;
|
|
UserPanelSwitch(typeof(MonitorMainPage), "监控主页面");
|
|
RoleControl();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 系统退出
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void SysQuitStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
Application.Exit();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 注销
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void LogoutStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
Application.Restart();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 菜单事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void StripMenuItemClick(object sender, EventArgs e)
|
|
{
|
|
if (sender is ToolStripMenuItem item && sender != null)
|
|
{
|
|
ToolStripMenuItem button = item;
|
|
switch (button.Text)
|
|
{
|
|
case "角色管理":
|
|
UserPanelSwitch(typeof(RoleConfigPage), button.Text);
|
|
break;
|
|
case "用户管理":
|
|
UserPanelSwitch(typeof(UserConfigPage), button.Text);
|
|
break;
|
|
case "操作日志":
|
|
UserPanelSwitch(typeof(OperateConfigPage), button.Text);
|
|
break;
|
|
case "报警日志":
|
|
UserPanelSwitch(typeof(AlarmConfigPage), button.Text);
|
|
break;
|
|
case "监控主页面":
|
|
UserPanelSwitch(typeof(MonitorMainPage), button.Text);
|
|
break;
|
|
case "PLC测试页面":
|
|
UserPanelSwitch(typeof(TestPage), button.Text);
|
|
break;
|
|
case "班时间维护":
|
|
UserPanelSwitch(typeof(ShiftTimePage), button.Text);
|
|
break;
|
|
case "物料管理":
|
|
UserPanelSwitch(typeof(MaterialConfigPage), button.Text);
|
|
break;
|
|
case "物料类型管理":
|
|
UserPanelSwitch(typeof(MaterialTypeConfigPage), button.Text);
|
|
break;
|
|
case "配方管理":
|
|
UserPanelSwitch(typeof(RecipeConfigPage), button.Text);
|
|
break;
|
|
case "日报表":
|
|
UserPanelSwitch(typeof(DailyReportPage), button.Text);
|
|
break;
|
|
case "机台物料信息绑定":
|
|
UserPanelSwitch(typeof(EquipMaterialBindingPage), button.Text);
|
|
break;
|
|
case "生产排程":
|
|
UserPanelSwitch(typeof(ProductionScheduling), button.Text);
|
|
break;
|
|
case "RFID参数配置":
|
|
UserPanelSwitch(typeof(RFIDParamSettingPage), button.Text);
|
|
break;
|
|
case "设备参数配置":
|
|
UserPanelSwitch(typeof(EquipParamSettingPage), button.Text);
|
|
break;
|
|
case "":
|
|
break;
|
|
default:
|
|
MessageBox.Show("找不到按钮!");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 切换前端页面,动态创建
|
|
/// </summary>
|
|
/// <param name="userControlType">Usercontrol类型</param>
|
|
/// <param name="tag">名称标签</param>
|
|
private void UserPanelSwitch(Type userControlType, string tag)
|
|
{
|
|
bool flag = false;
|
|
foreach (UserControl us in UserControls)
|
|
{
|
|
if (us.GetType() == userControlType)
|
|
{
|
|
flag = true;
|
|
//如果在标签页里,切换选项卡
|
|
if (UserControlTabs.Contains(us) || us.Tag.ToString() == tag)
|
|
{
|
|
try
|
|
{
|
|
foreach (Control control in this.UserControlTabs.Controls)
|
|
{
|
|
if (control is TabPage page)
|
|
{
|
|
if (page.Text == tag)
|
|
{
|
|
UserControlTabs.SelectedTab = page;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (ArgumentNullException ex)
|
|
{
|
|
logger.Error("找不到相关标签页!请重启程序!", ex);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error("标签页未知错误!", ex);
|
|
}
|
|
}
|
|
//如果不在标签页里
|
|
else
|
|
{
|
|
TabPage tabPage = new TabPage(tag);
|
|
us.Parent = tabPage;
|
|
UserControlTabs.TabPages.Add(tabPage);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
if (!flag)
|
|
{
|
|
try
|
|
{
|
|
// 动态创建新的 UserControl 实例
|
|
object obj = Activator.CreateInstance(userControlType);
|
|
if (obj is UserControl newControl)
|
|
{
|
|
newControl.Tag = tag;
|
|
UserControls.Add(newControl); // 将新实例添加到列表
|
|
TabPage tabPage = new TabPage(tag);
|
|
|
|
newControl.Parent = tabPage;
|
|
newControl.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
|
newControl.Dock = DockStyle.Fill;
|
|
UserControlTabs.TabPages.Add(tabPage);
|
|
UserControlTabs.SelectedTab = tabPage;
|
|
}
|
|
else
|
|
{
|
|
throw new InvalidOperationException($"类型 {userControlType.Name} 不是有效的 UserControl 类型");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
logger.Error("无法创建用户控件实例", ex);
|
|
MessageBox.Show($"无法创建用户控件实例:{ex.Message}", "错误");
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 关闭当前选择的子窗口按钮
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void CloseButton_Click(object sender, EventArgs e)
|
|
{
|
|
// 删除时判断是否还存在TabPage
|
|
if (UserControlTabs.SelectedIndex > -1)
|
|
{
|
|
string selectedStr = UserControlTabs.SelectedTab.Text;
|
|
//使用TabControl控件的TabPages属性的Remove方法移除指定的选项卡
|
|
UserControlTabs.TabPages.Remove(UserControlTabs.SelectedTab);
|
|
//删除列表里的实例
|
|
UserControls.RemoveAll(x => x.Tag.ToString() == selectedStr);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 走不动道小时钟
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
private void TimeDisplayTimer_Tick(object sender, EventArgs e)
|
|
{
|
|
TimeStripLabel.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
|
|
}
|
|
|
|
/// <summary>
|
|
/// 权限控制
|
|
/// </summary>
|
|
private void RoleControl()
|
|
{
|
|
foreach(ToolStripMenuItem i in MainMenu.Items)
|
|
{
|
|
TraverseMenuitem(i);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 递归遍历MenuItem
|
|
/// </summary>
|
|
/// <param name="item"></param>
|
|
private void TraverseMenuitem(ToolStripMenuItem item)
|
|
{
|
|
item.Enabled = roleBusiness.PageIsAccess(item.Text);
|
|
//if(UserControls.Where(x => x.Tag == item.Text))
|
|
foreach (ToolStripMenuItem i in item.DropDownItems)
|
|
{
|
|
TraverseMenuitem(i);
|
|
}
|
|
}
|
|
|
|
private void DeviceDataManageToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void DataRefreshTimer_Tick(object sender, EventArgs e)
|
|
{
|
|
//一读
|
|
|
|
//判断结果
|
|
|
|
//哪个工位读到了哪个工位写
|
|
|
|
}
|
|
}
|
|
}
|