263 lines
12 KiB
C#
263 lines
12 KiB
C#
using AIMS.Infrastructure.CA;
|
||
using AIMSExtension;
|
||
using DCSoft.Writer;
|
||
using DCSoft.Writer.Controls;
|
||
using DCSoft.Writer.Dom;
|
||
using DocumentManagement.UI;
|
||
using HelperDB;
|
||
using System;
|
||
using System.CodeDom.Compiler;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Windows.Forms;
|
||
using System.Xml.Linq;
|
||
|
||
namespace DocumentManagement
|
||
{
|
||
public class EventCodeCompiler
|
||
{
|
||
public CompilerResults cr;
|
||
|
||
public Type type;
|
||
|
||
private ElementEventTemplate eet;
|
||
|
||
public bool IsLoad = false;
|
||
private XTextInputFieldElement SelElement;
|
||
private string SelElementName;
|
||
private string SelElementValue;
|
||
|
||
public EventCodeCompiler(ref WriterControl myEditControl, string strMouseClickEvent, string strContentChangedEvent)
|
||
{
|
||
eet = new ElementEventTemplate();
|
||
eet.MouseClick += new ElementMouseEventHandler(eetChk_MouseClick);
|
||
eet.MouseDblClick += Eet_MouseDblClick;
|
||
eet.KeyUp += Eet_KeyUp;
|
||
eet.ContentChanged += new ContentChangedEventHandler(eet_ContentChanged);
|
||
myEditControl.GlobalEventTemplate_Element = eet;
|
||
eet.ContentChanging += Eet_ContentChanging;
|
||
|
||
|
||
}
|
||
|
||
private void Eet_ContentChanging(object eventSender, ContentChangingEventArgs args)
|
||
{
|
||
if (eventSender is XTextInputFieldElement xife&& args.InsertingElements is { })
|
||
{
|
||
var txtAll = args.InsertingElements.Select(c => c.Text).ToList();
|
||
var txt = string.Concat(txtAll);
|
||
if (txtAll.Any(c=>c.Contains("<22>")))
|
||
{
|
||
|
||
var clip = Clipboard.GetText()?.Trim();
|
||
xife.Text = clip;
|
||
args.Cancel = true;
|
||
return;
|
||
args.InsertingElements.Clear();
|
||
args.InsertingElements.Add(new XTextStringElement() { Text = clip });
|
||
}
|
||
//byte[] originalBytes = Encoding.UTF8.GetBytes(txt); // 这里使用 UTF8 是假设或猜测
|
||
//string decodedString = Encoding.GetEncoding("GB2312").GetString(originalBytes); // 用其他编码尝试解码
|
||
|
||
//byte[] originalBytes2 = Encoding.GetEncoding("GB2312").GetBytes(txt); // 这里使用 UTF8 是假设或猜测
|
||
//string decodedString2 = Encoding.UTF8.GetString(originalBytes2); // 用其他编码尝试解码
|
||
}
|
||
}
|
||
|
||
private void Eet_KeyUp(object eventSender, ElementKeyEventArgs args)
|
||
{
|
||
// 判断 Ctrl 键是否被按下
|
||
if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
|
||
{
|
||
// 判断 V 键是否被按下
|
||
if (args.KeyCode == Keys.V)
|
||
{
|
||
// Ctrl+V 被按下,执行相应的操作
|
||
MessageBox.Show("Ctrl+V was pressed!");
|
||
}
|
||
}
|
||
if (args.KeyCode == Keys.V && args.Control == true)
|
||
{
|
||
if ((eventSender as XTextDocument).CurrentInputField != null)
|
||
{
|
||
var element = (eventSender as XTextDocument).CurrentInputField;
|
||
if (element != null)
|
||
{
|
||
var etxt = element.Text;
|
||
|
||
element.Text = element.Text.Replace("\r", "").Replace("\n", "");
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
public CompilerErrorCollection Errors { get { return cr.Errors; } }
|
||
|
||
void eet_ContentChanged(object eventSender, ContentChangedEventArgs args)
|
||
{
|
||
if (IsLoad)
|
||
{
|
||
if (args.Element is XTextInputFieldElement)
|
||
{
|
||
var element = args.Element as XTextInputFieldElement;
|
||
if (SelElementName != null && SelElementName == element.Name && SelElementValue == element.Text)
|
||
return;
|
||
SelElement = element;
|
||
SelElementName = element.Name;
|
||
SelElementValue = element.Text;
|
||
DocumentExtension.SetCocumentValueText(element.WriterControl.Document.FileName, element.WriterControl.Document, element);
|
||
}
|
||
else if (eventSender is XTextRadioBoxElement)
|
||
{
|
||
var element = args.Element as XTextRadioBoxElement;
|
||
DocumentExtension.SetCocumentValue(element.WriterControl.Document.FileName, element.WriterControl.Document);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
void eetChk_MouseClick(object eventSender, ElementMouseEventArgs args)
|
||
{
|
||
//if (args.Element is XTextCheckBoxElement || args.Element is XTextRadioBoxElement)
|
||
//{
|
||
// try
|
||
// {
|
||
// Object rslt = type.InvokeMember(
|
||
// "MouseClickEvent",
|
||
// BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static,
|
||
// null,
|
||
// null, // for static class
|
||
// new object[] { args.Element });
|
||
// }
|
||
// catch (Exception exp)
|
||
// {
|
||
// MessageBox.Show(exp.StackTrace + ":" + exp.Message);
|
||
// }
|
||
// //var doc = myEditControl.Document;
|
||
// //var element = args.Element;
|
||
|
||
//}
|
||
}
|
||
|
||
private void Eet_MouseDblClick(object eventSender, ElementMouseEventArgs args)
|
||
{
|
||
eet.MouseDblClick -= Eet_MouseDblClick;
|
||
if (IsLoad)
|
||
if (args.Element is XTextInputFieldElement)
|
||
{
|
||
var element = args.Element as XTextInputFieldElement;
|
||
if (element != null && element.Name == "Pacs")
|
||
{
|
||
var patientId = element.WriterControl.Document.Fields.ToArray().Where(x => x is XTextInputFieldElement
|
||
&& (x as XTextInputFieldElement).ID == "KB20180604104209620").FirstOrDefault();
|
||
ShowPacsText showPacsText = new ShowPacsText();
|
||
showPacsText.element = element;
|
||
showPacsText.PatientNo = patientId.Text;
|
||
showPacsText.ShowDialog();
|
||
//element.WriterControl.Parent as ucDocument.
|
||
}
|
||
else
|
||
{
|
||
DocumentExtension.SetCocumentValueText2(element.WriterControl.Document.FileName, element.WriterControl.Document, element);
|
||
}
|
||
}
|
||
else if (eventSender is XTextImageElement)
|
||
{
|
||
if ((eventSender as XTextImageElement).Alt == "双击选择图片")
|
||
{
|
||
OpenFileDialog openFileDialogEmpImage = new OpenFileDialog();
|
||
openFileDialogEmpImage.Filter = "*.bmp|*.bmp|*.png|*.png|*.jpg|*.jpg|*.tiff|*.tiff";//图片格式
|
||
if (openFileDialogEmpImage.ShowDialog() == DialogResult.OK)
|
||
{
|
||
try
|
||
{
|
||
string empUpLoadPictureRealPos = openFileDialogEmpImage.FileName;//实际的文件路径+文件名
|
||
String[] empImageData = empUpLoadPictureRealPos.Split('.');
|
||
//empImageData[1]:是上传的图片的后缀名
|
||
string empUpLoadPictureFormat = empImageData[1];
|
||
//赋值图片
|
||
(eventSender as XTextImageElement).Image = new DCSoft.Drawing.XImageValue(Image.FromFile(empUpLoadPictureRealPos));
|
||
(eventSender as XTextImageElement).Title = empImageData[0];
|
||
(eventSender as XTextImageElement).EditorRefreshView();
|
||
}
|
||
catch
|
||
{
|
||
MessageBox.Show("您选择的图片不能被读取或文件类型不对!", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
frmSelectPersonDoc personDoc = new frmSelectPersonDoc();
|
||
personDoc.PersonType = (eventSender as XTextImageElement).Alt == null ? "麻醉医生" : (eventSender as XTextImageElement).Alt;
|
||
DialogResult dialogResult = personDoc.ShowDialog();
|
||
if (dialogResult == DialogResult.OK)
|
||
if (personDoc.SelectPersonData > 0)
|
||
{
|
||
int PersonId = personDoc.SelectPersonData;
|
||
DataTable Person = GetPerson(PersonId);
|
||
if (Person != null && Person.Rows.Count > 0)
|
||
{
|
||
string Id = Person.Rows[0][3].ToString();
|
||
string Name = Person.Rows[0][0].ToString();
|
||
string Contact = Person.Rows[0][1].ToString();
|
||
string SignatureStr = Person.Rows[0][2].ToString();
|
||
|
||
|
||
if (SignatureStr == null || SignatureStr == "")
|
||
SignatureStr = new SignManage().GetSignStr(args.WriterControl.SaveDocumentToString("txt"), args.WriterControl.Document.FileName, Id, Name, Contact);
|
||
|
||
if (SignatureStr != null && SignatureStr != "")
|
||
{
|
||
DCSoft.Drawing.XImageValue img = new DCSoft.Drawing.XImageValue();
|
||
img.ImageDataBase64String = SignatureStr;
|
||
(eventSender as XTextImageElement).Image = img;
|
||
//(eventSender as XTextImageElement).Alt = "麻醉医生";
|
||
(eventSender as XTextImageElement).Title = PersonId.ToString();
|
||
(eventSender as XTextImageElement).EditorRefreshView();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//清空图片
|
||
(eventSender as XTextImageElement).Image = null;
|
||
(eventSender as XTextImageElement).Alt = "麻醉医生";
|
||
(eventSender as XTextImageElement).Title = "";
|
||
(eventSender as XTextImageElement).EditorRefreshView();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//清空图片
|
||
(eventSender as XTextImageElement).Image = null;
|
||
(eventSender as XTextImageElement).Alt = "麻醉医生";
|
||
(eventSender as XTextImageElement).Title = "";
|
||
(eventSender as XTextImageElement).EditorRefreshView();
|
||
}
|
||
|
||
//属性赋值判断
|
||
// (eventSender as XTextImageElement).Image.Value==null 判断是否有图片 是否签名
|
||
// (eventSender as XTextImageElement).Alt =="签名" 改为已签名或签名ID
|
||
// (eventSender as XTextImageElement).Title =="标题" 存储对应ca人员介质
|
||
// (eventSender as XTextImageElement).ID =="image3" 标识Id用于定位赋值图片
|
||
}
|
||
}
|
||
eet.MouseDblClick += Eet_MouseDblClick;
|
||
}
|
||
public DataTable GetPerson(int SelectPersonData)
|
||
{
|
||
DataTable Person = new DataTable();
|
||
string sql = "select Name,SignatureIndex,SignatureStr,id from Person where id=" + SelectPersonData;
|
||
Person = DBHelper.GetDataTable(sql);
|
||
return Person;
|
||
}
|
||
}
|
||
}
|