2025-09-04 18:28:02 +08:00

198 lines
10 KiB
C#
Raw Permalink 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 Newtonsoft.Json;
using SWS.CAD.ViewModels;
using SWS.Commons;
using SWS.Model;
using System.Windows;
using System.Windows.Controls;
using Telerik.Windows.Controls;
namespace SWS.CAD.Views
{
/// <summary>
/// Drawing.xaml 的交互逻辑
/// </summary>
public partial class LeftPanel : UserControl
{
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;
string tag = (sender as TextBox).Tag.ToString();
var x = DataContext as LeftPanelViewModel;
// 执行搜索操作
x.SearchTree(tag, searchText);
}
/// <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;
if (clickedItem != null && clickedItem.DataContext is Model.TreeModel treeNode)
{
// 设置当前选中的节点
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)
{
//状态为发布时:不能检入、检出、释放、修订、发布、编辑属性
IsEnabledCheckIn = IsEnabledCheckOut = IsEnabledFree = IsEnabledPublish = IsEnabledEditProperty = false;
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;
if (clickedItem != null && clickedItem.DataContext is Model.TreeModel treeNode)
{
// 设置当前选中的节点
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 });
}
else
{
contextMenu.Items.Add(new MenuItem { Header = "刷新", Command = x.Command_RefreshHistoryDwg, CommandParameter = treeNode });
}
// 打开右键菜单
contextMenu.IsOpen = true;
}
}
}
}