198 lines
10 KiB
C#
Raw Normal View History

2025-08-15 16:34:31 +08:00
using Newtonsoft.Json;
using SWS.CAD.ViewModels;
2025-09-04 18:28:02 +08:00
using SWS.Commons;
using SWS.Model;
2025-08-15 16:34:31 +08:00
using System.Windows;
using System.Windows.Controls;
using Telerik.Windows.Controls;
namespace SWS.CAD.Views
{
/// <summary>
/// Drawing.xaml 的交互逻辑
/// </summary>
public partial class LeftPanel : UserControl
{
2025-09-04 18:28:02 +08:00
2025-08-15 16:34:31 +08:00
public LeftPanel(LeftPanelViewModel viewModel)
{
InitializeComponent();
DataContext = viewModel;
//this.radTreeView.AddHandler(RadMenuItem.ClickEvent, new RoutedEventHandler(OnContextMenuClick));
}
RadTreeViewItem clickedElement;
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
var x = DataContext as LeftPanelViewModel;
x.onWindow_loaded(null);
}
/// <summary>
/// 搜索栏
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
string searchText = (sender as TextBox).Text;
2025-09-04 18:28:02 +08:00
string tag = (sender as TextBox).Tag.ToString();
2025-08-15 16:34:31 +08:00
var x = DataContext as LeftPanelViewModel;
2025-09-04 18:28:02 +08:00
// 执行搜索操作
x.SearchTree(tag, searchText);
2025-08-15 16:34:31 +08:00
}
/// <summary>
/// 右键事件触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void RadTreeView_PreviewMouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
// 获取点击的树节点
var clickedItem = e.OriginalSource as FrameworkElement;
2025-09-04 18:28:02 +08:00
if (clickedItem != null && clickedItem.DataContext is Model.TreeModel treeNode)
2025-08-15 16:34:31 +08:00
{
// 设置当前选中的节点
var treeView = sender as RadTreeView;
if (treeView != null)
{
treeView.SelectedItem = treeNode; // 这里设置选中的节点
}
// 获取右键菜单
var contextMenu = TreeItemContextMenu;
contextMenu.Items.Clear(); // 清空现有菜单项
var x = DataContext as LeftPanelViewModel;
// 根据节点类型动态生成菜单项
if (treeNode.NodeType == "0")
{
contextMenu.Items.Add(new MenuItem { Header = "新建图纸", Command = x.Command_CreateDwg, CommandParameter = treeNode });
contextMenu.Items.Add(new MenuItem { Header = "编辑目录属性", Command = x.Command_EditDrawingCatalogue, CommandParameter = treeNode });
}
else if (treeNode.NodeType == "1")
{
#region
bool IsEnabledCheckIn = false; //检入
bool IsEnabledCheckOut = false;//检出
bool IsEnabledFree = false;//释放
bool IsEnabledRevise = false;//修订
bool IsEnabledPublish = false;//发布
bool IsEnabledEditProperty = false;//编辑属性
string userName = string.Empty;//图纸被占用人的名称
ec_drawing_file dwgObj = JsonConvert.DeserializeObject<ec_drawing_file>(treeNode.NodeExtData.ToString());
if (dwgObj.IsPublish == 1)
{
//状态为发布时:不能检入、检出、释放、修订、发布、编辑属性
2025-09-04 18:28:02 +08:00
IsEnabledCheckIn = IsEnabledCheckOut = IsEnabledFree = IsEnabledPublish = IsEnabledEditProperty = false;
2025-08-15 16:34:31 +08:00
IsEnabledRevise = true;
}
else
{
if (treeNode.CheckInOutStatus == 0)
{
//状态为检入时:可以检出、发布 不能检入、释放、修订、编辑属性
IsEnabledCheckOut = IsEnabledPublish = true;
IsEnabledCheckIn = IsEnabledFree = IsEnabledRevise = IsEnabledEditProperty = false;
}
else if (treeNode.CheckInOutStatus == 1)
{
//状态为自己检出时:可以检入、释放、编辑属性 ;不能检出 、修订、发布
IsEnabledCheckIn = IsEnabledFree = IsEnabledEditProperty = true;
IsEnabledCheckOut = IsEnabledRevise = IsEnabledPublish = false;
}
else if (treeNode.CheckInOutStatus == 2)
{
//状态为别人检出时:不能检入、检出、释放、修订、发布、编辑属性
IsEnabledCheckIn = IsEnabledCheckOut = IsEnabledFree = IsEnabledRevise = IsEnabledPublish = IsEnabledEditProperty = false;
userName = GlobalObject.GetUserNameById(dwgObj.CheckOutUserID);
userName = string.IsNullOrEmpty(userName) ? "" : " " + userName + "占用";
}
}
#endregion
contextMenu.Items.Add(new MenuItem { Header = "打开图纸", Command = x.Command_OpenDwg, CommandParameter = treeNode });
contextMenu.Items.Add(new MenuItem { Header = "删除图纸", Command = x.Command_DeleteDwg, CommandParameter = treeNode });
contextMenu.Items.Add(new MenuItem { Header = "编辑属性", Command = x.Command_EditPropertyDwg, CommandParameter = treeNode, IsEnabled = IsEnabledEditProperty });
contextMenu.Items.Add(new MenuItem { Header = "浏览所在文件夹", Command = x.Command_OpenDwgFileFolder, CommandParameter = treeNode });
contextMenu.Items.Add(new Separator());//右键菜单分隔线
contextMenu.Items.Add(new MenuItem { Header = "上移", Command = x.Command_UpDwg, CommandParameter = treeNode });
contextMenu.Items.Add(new MenuItem { Header = "下移", Command = x.Command_DownDwg, CommandParameter = treeNode });
contextMenu.Items.Add(new Separator());//右键菜单分隔线
contextMenu.Items.Add(new MenuItem { Header = "生成文件材料表", Command = x.Command_GenerateFileMaterial, CommandParameter = treeNode });
contextMenu.Items.Add(new Separator());//右键菜单分隔线
contextMenu.Items.Add(new MenuItem { Header = "检出" + userName, Command = x.Command_CheckOutDwg, CommandParameter = treeNode, IsEnabled = IsEnabledCheckOut });
contextMenu.Items.Add(new MenuItem { Header = "检入", Command = x.Command_CheckInDwg, CommandParameter = treeNode, IsEnabled = IsEnabledCheckIn });
contextMenu.Items.Add(new MenuItem { Header = "释放", Command = x.Command_FreeDwg, CommandParameter = treeNode, IsEnabled = IsEnabledFree });
contextMenu.Items.Add(new Separator());//右键菜单分隔线
contextMenu.Items.Add(new MenuItem { Header = "修订", Command = x.Command_ReviseDwg, CommandParameter = treeNode, IsEnabled = IsEnabledRevise });
contextMenu.Items.Add(new MenuItem { Header = "发布", Command = x.Command_PublishDwg, CommandParameter = treeNode, IsEnabled = IsEnabledPublish });
contextMenu.Items.Add(new Separator());//右键菜单分隔线
contextMenu.Items.Add(new MenuItem { Header = "检入记录", Command = x.Command_CheckInRecordDwg, CommandParameter = treeNode });
contextMenu.Items.Add(new MenuItem { Header = "检入审核", Command = x.Command_CheckInAuditDwg, CommandParameter = treeNode });
contextMenu.Items.Add(new MenuItem { Header = "发布记录", Command = x.Command_PublishRecordDwg, CommandParameter = treeNode });
contextMenu.Items.Add(new MenuItem { Header = "操作记录", Command = x.Command_OperateRecordDwg, CommandParameter = treeNode });
contextMenu.Items.Add(new Separator());//右键菜单分隔线
}
else
{
}
// 打开右键菜单
contextMenu.IsOpen = true;
}
}
/// <summary>
/// Tab切换
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void RadTabControl_SelectionChanged(object sender, RadSelectionChangedEventArgs e)
{
var tabObj = (sender as RadTabControl);
var x = DataContext as LeftPanelViewModel;
x.TabChanged(tabObj.SelectedIndex);
}
private void treeDwgHistory_PreviewMouseRightButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
// 获取点击的树节点
var clickedItem = e.OriginalSource as FrameworkElement;
2025-09-04 18:28:02 +08:00
if (clickedItem != null && clickedItem.DataContext is Model.TreeModel treeNode)
2025-08-15 16:34:31 +08:00
{
// 设置当前选中的节点
var treeView = sender as RadTreeView;
if (treeView != null)
{
treeView.SelectedItem = treeNode; // 这里设置选中的节点
}
// 获取右键菜单
var contextMenu = TreeItemContextMenu;
contextMenu.Items.Clear(); // 清空现有菜单项
var x = DataContext as LeftPanelViewModel;
// 根据节点类型动态生成菜单项
if (treeNode.NodeType == "99")
{
contextMenu.Items.Add(new MenuItem { Header = "打开图纸", Command = x.Command_ReadOnlyOpenDwg, CommandParameter = treeNode });
2025-09-04 18:28:02 +08:00
}
2025-08-15 16:34:31 +08:00
else
{
contextMenu.Items.Add(new MenuItem { Header = "刷新", Command = x.Command_RefreshHistoryDwg, CommandParameter = treeNode });
}
// 打开右键菜单
contextMenu.IsOpen = true;
}
}
}
}