宜昌华友成品库管理软件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

253 lines
8.6 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data;
namespace SiaSun.LMS.WPFClient.UC
{
/// <summary>
/// ucStatusFlowActionsPanel.xaml 的交互逻辑
/// </summary>
public partial class ucStatusFlowActionsPanel : UserControl
{
public delegate void ExecuteUpdateEventHandler();
public event ExecuteUpdateEventHandler U_ExecuteUpdate;
const string strFlowTpye = "SYS_ROLE-FLOW_ACTION";
#region -----定义属性
string strFlowType = string.Empty;
DataRow rowSource = null;
DataTable tableAction = null;
int intRoleID = 0;
bool boolAddLog = false;
/// <summary>
/// 是否添加日志
/// </summary>
public bool U_AddLog
{
get { return boolAddLog; }
set { boolAddLog = value; }
}
/// <summary>
/// 角色编号
/// </summary>
public int U_ROLE_ID
{
get { return intRoleID; }
set { intRoleID = value; }
}
/// <summary>
/// 流程类型
/// </summary>
public string U_FLOW_TYPE
{
get { return strFlowType; }
set { strFlowType = value; }
}
/// <summary>
/// 当前流程的数据源的行
/// </summary>
public DataRow U_FLOW_SOURCE_ROW
{
get { return rowSource; }
set { rowSource = value; }
}
/// <summary>
/// 所有动作列表
/// </summary>
public DataTable U_DataSource
{
get { return tableAction; }
set { tableAction = value; }
}
#endregion
public ucStatusFlowActionsPanel()
{
InitializeComponent();
}
/// <summary>
/// 初始化控件
/// </summary>
public void U_InitControl()
{
//清空所有项
this.panelActions.Children.Clear();
//判断数据源是否空
if (tableAction == null)
return;
//参数值列表
List<string> listParamValue = new List<string>();
try
{
//获得参数值信息
IList<SiaSun.LMS.Model.FLOW_PARA> listFLOW_PARA = MainApp._I_FlowService.FlowGetParameters(strFlowType);
foreach (SiaSun.LMS.Model.FLOW_PARA mFLOW_PARA in listFLOW_PARA)
{
if (mFLOW_PARA.FLOW_PARA_CODE.Length > 0)
{
listParamValue.Add(rowSource[mFLOW_PARA.FLOW_PARA_CODE].ToString());
}
}
//添加当前操作用户
listParamValue.Add(MainApp._USER.USER_ID.ToString());
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
return;
}
try
{
//获得关系实例
Model.SYS_RELATION mSYS_RELATION = MainApp._I_SystemService.RELATION_GetModel(strFlowTpye);
if (mSYS_RELATION == null)
{
MainApp._MessageDialog.Show("Relation.CheckRelationType", new object[] { strFlowTpye });
return;
}
//获得该角色下得所有操作
IList<Model.SYS_RELATION_LIST> listRELATION_LIST = MainApp._I_SystemService.RELATION_LIST_GetList_ID1(mSYS_RELATION.RELATION_ID, MainApp._ROLE.ROLE_ID);
if (listRELATION_LIST.Count == 0)
return;
//遍历所有节点,添加显示按钮
foreach (DataRow rowAction in tableAction.Rows)
{
//判断该节点是否在管理列表中
if (listRELATION_LIST.Count(r => r.RELATION_ID2 == Convert.ToInt32(rowAction["FLOW_ACTION_ID"])) > 0)
{
Button btnAction = new Button();
btnAction.Margin = new Thickness(5, 5, 5, 5);
btnAction.Padding = new Thickness(5, 0, 5, 0);
this.panelActions.Children.Add(btnAction);
//设置显示文本
btnAction.Content = rowAction["FLOW_ACTION_NAME"].ToString();
//获得动作实例
btnAction.Tag = string.Format(rowAction["FLOW_ACTION_EVENT"].ToString(), listParamValue.ToArray());
//设置图标
if (!rowAction.IsNull("FLOW_ACTION_IMAGE") && !string.IsNullOrEmpty(rowAction["FLOW_ACTION_IMAGE"].ToString()))
{
string strImagePath = MainApp._APP_PATH + @"@Images\" + rowAction["FLOW_ACTION_IMAGE"].ToString();
if (System.IO.File.Exists(strImagePath))
{
//获得图像路径
System.Windows.Media.Imaging.BitmapImage imageURI = new System.Windows.Media.Imaging.BitmapImage();
imageURI.BeginInit();
imageURI.UriSource = new Uri(strImagePath, UriKind.Relative);
imageURI.EndInit();
ImageBrush imageBrush = new ImageBrush();
imageBrush.ImageSource = imageURI;
if (imageBrush != null)
{
btnAction.Background = imageBrush;
}
}
}
}
}
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex.Message);
}
}
//点击按钮处理事件
private void panelActions_Click(object sender, RoutedEventArgs e)
{
try
{
Button btnAction = e.OriginalSource as Button;
if (btnAction == null)
return;
if (MainApp._MessageDialog.ShowDialog(Enum.MessageConverter.ConfirmExecute, btnAction.Content.ToString()) == Sid.Windows.Controls.TaskDialogResult.Ok)
{
MainWindow.mainWin.Cursor = Cursors.Wait;
string sResult = string.Empty;
//动态执行动作关联的代码
bool bResult = MainApp.EVENT_Execute(btnAction.Tag.ToString(), out sResult);
//判断结果
if (bResult)
{
//判断是否添加日志
if (boolAddLog)
{
//添加日志
//MainApp._I_BaseService.AddLog(this.GetLogMessage(btnAction.Content.ToString(), btnAction.Tag.ToString()));
}
}
else
{
MainApp._MessageDialog.ShowException(sResult);
}
//执行事件后刷新
if (U_ExecuteUpdate != null)
{
U_ExecuteUpdate();
}
}
}
catch (Exception ex)
{
MainApp._MessageDialog.ShowException(ex);
}
finally
{
MainWindow.mainWin.Cursor = Cursors.Arrow;
}
}
/// <summary>
/// 获得消息记录
/// </summary>
private string GetLogMessage(string MessageHeader, string ExecuteMethodName)
{
StringBuilder strMessage = new StringBuilder();
strMessage.Append(string.Format("用户:{0}.", MainApp._USER.USER_NAME));
strMessage.Append(string.Format("操作:{0}.", MessageHeader));
strMessage.Append(string.Format("调用方法:{0}.", ExecuteMethodName));
return strMessage.ToString();
}
/// <summary>
/// 清空
/// </summary>
public void U_Clear()
{
this.panelActions.Children.Clear();
}
}
}