From bb4dc0fab56e542e784311f95ae6d7e7dd785a8f Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期二, 29 十月 2024 17:10:33 +0800
Subject: [PATCH] update

---
 jrj/project/business/Affair/message.business.cpp |  427 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 427 insertions(+), 0 deletions(-)

diff --git a/jrj/project/business/Affair/message.business.cpp b/jrj/project/business/Affair/message.business.cpp
new file mode 100644
index 0000000..1589db3
--- /dev/null
+++ b/jrj/project/business/Affair/message.business.cpp
@@ -0,0 +1,427 @@
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <xcontrol/xcell.hpp>
+
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+	class  __declspec(dllexport) MessageBusinessWin :  public xframe
+	{
+	public:
+		//xdwgrid	dw_list;
+		xdwtable dw_base;
+		xnode	m_agentNode;	//Agent Condition
+		xwin		sheet;
+		bool      readonly;
+		xstring  	MessageID;
+		xstring 	bill;
+	
+	public:
+		MessageBusinessWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static MessageBusinessWin* CreateInstance(void* implPtr, void* hWnd)
+		{
+			MessageBusinessWin* pWin = new MessageBusinessWin(implPtr, (HWND)hWnd);
+			return pWin;
+		}
+		int SetAgent()
+		{
+			return 1;
+	
+			xstring xfNodeAgentArea  = L"agentarea";
+			xnode anode = GetAgentNode(xfNodeAgentArea);
+			if(m_agentNode)
+			{
+				SetAgentNode (anode,m_agentNode);
+			}
+			else
+			{
+				KXMLDOMElement xframeElement =  GetElement();
+				KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*");
+				if(agent)
+				{
+					xstring s = agent.xml();
+					m_agentNode =  SetAgentNode (anode,s);
+				}
+			}
+			return 1;
+		}
+
+		//焦点激活处理函数
+		int OnSetFocus(TEvent* evt, LPARAM param)
+		{
+			//重置工具条
+			SetAgent();
+			return 1;
+		}
+
+		int OnItemChanged(TEvent* evt, int p)
+		{
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+			xstring colname=hdr.colname;
+			xstring value = hdr.data;
+			int row = hdr.row;
+			
+			if(colname==L"Category")
+			{
+				if(value==L"供应商申请")
+				{
+					dw_base.SetItemString(1,L"Receiver",L"fdp-011");
+					dw_base.SetItemString(1,L"Subject",L"请添加");
+				}
+				return 1;
+			
+				bool changed = false;
+				xml x = ViewObject::RetrieveData(L"/sale/data/business/message/maint",L"typ",value);
+				if(x)
+				{
+					xstring xpage_ = x.documentElement().getAttribute(L"xpage");
+					xstring templaterpt = x.documentElement().getAttribute(L"template");
+					if(xpage_ !=L"")
+					{
+						xstring s = L"<hbox name='agent'>";
+						s += L"<xpage  url='" + xpage_ + L"'   name='contentex'/>";
+						s += L"</hbox>";
+						SetAgentNode (GetAgentNode(L"agent"),s);
+						SwitchLayer(L"sheet2",L"frame");
+						sheet = GetChildWin(L"contentex");
+						changed = true;
+					}
+				}
+				if(!changed)
+				{
+					sheet  = 0;
+					SwitchLayer(L"sheet1",L"frame");
+				}
+			}
+				
+			return 1;
+		}
+				
+		//命令发布函数
+		int OnCmdDispatch(xstring comdid)
+		{
+			if(comdid==L"xmSend")
+			{
+				if(!readonly) OnSend();
+				return 1;
+			}
+			else if(comdid==L"xmSave")
+			{
+				if(!readonly) OnSave();
+				return 1;
+			}
+			else if(comdid==L"xmCancel")
+			{
+				CloseWindow();
+				return 1;
+			}
+			if(sheet && comdid !=L"")
+			{
+				int ret =SendMessage(GetHWND(),0x401,(LPARAM)comdid,0);
+				if(ret) return ret;
+			}
+					
+			return 0;
+		}
+		
+		//命令处理事件
+		int OnXCommand(TEvent* evt, LPARAM param)
+		{
+			return OnCmdDispatch(evt->xcommand.pStrID);
+		}
+		
+			
+		int OnDWClick(TEvent* evt, int p)
+		{
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+			xstring value = hdr.data;
+			xstring colname = hdr.colname;
+			if (value == L"收件人:")
+			{
+			
+				xaserverarg arg2 ;
+				xaserverarg parg2 = GetArg();
+				OpenWindow(L"dev:xpage[UserGroupPersonSelect.vx]",arg2);
+				
+				if(arg2.GetArgString(L"comdid")==L"xmOk")
+				{
+					xstring data = arg2.GetArgString(L"data");
+					xml x2;
+					
+					x2.loadXML(data);
+					KXMLDOMNodeList nodes = x2.selectNodes(L"/root/item");
+					trace(x2.xml());
+					
+					int len = nodes.length();
+				
+					xstring Names = L"";
+					for(int i=0;i<len; i++)
+					{
+						KXMLDOMElement t= nodes.item(i);
+						
+						if(t.getAttribute(L"Name"))
+						{
+							xstring Name = t.getAttribute(L"Name");
+							if(Names==L"") 
+								Names = Name;
+							else if(Names.find(Name) < 0) Names+=L";"+Name;
+						}
+					}
+					dw_base.SetItemString(1,L"Receiver",Names);		
+				}
+				return 1;
+			}
+			
+		}
+							
+		int OnAttachEvent()
+		{
+			//绑定工具条点击事件
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&MessageBusinessWin::OnXCommand);
+			//获取焦点事件,用于重置工具条
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&MessageBusinessWin::OnSetFocus);
+			
+			AttachEvent(L"dw_base",L"DWV_ITEMCHANGED", (FEvent)&MessageBusinessWin::OnItemChanged);
+			AttachEvent(L"dw_base",L"DWV_CLICKED", (FEvent)&MessageBusinessWin::OnDWClick);
+			
+			return 1;
+		}
+		
+		int OnSave()
+		{
+			xml x ;
+			
+			xaserverarg arg1 = MakeArg(L"scriptbox");
+			xstring murl = L"/sale/data/Business/message/update"; 
+			if(MessageID==L"") murl = L"/sale/data/Business/message/add2"; 
+			if(xurl::get(murl, arg1.GetString(),x)!=1)
+			{
+				alert((xstring)L"error1:\r\n"+x.text());
+				return 1;
+			}
+			if(MessageID==L"") MessageID= dw_base.GetGuid(1);
+			alert(L"已保存到草稿箱");
+			return 1;
+			
+			xaserverarg arg;
+			
+			if(sheet)
+			{
+				
+				SendMessage(sheet.GetHWND(),0x401,L"GetEntityData:"+arg,0);
+				xstring data = arg.GetArgString(L"EntityData");
+				murl = L"/sale/data/Business/message/attach/update";
+				arg1.AddArg(L"url",L"message/attach");
+				arg1.AddArg(L"content",data);
+				arg1.AddArg(L"param",MessageID);
+				if(xurl::get(murl, arg1.GetString(),x)!=1)
+				{
+					alert((xstring)L"error2:\r\n"+x.text());
+					return 1;
+				}
+			}
+			return 1;
+		}
+		
+		int OnSend()
+		{
+			xml x ;
+			//xaserverarg arg1 = MakeArg(L"outbox");
+			xaserverarg arg1 = MakeArg(L"inbox");
+			xstring murl = L"/sale/data/Business/message/update"; 
+			if(MessageID==L"") murl = L"/sale/data/Business/message/add2"; 
+				
+			trace(arg1.GetString());
+				
+			if(xurl::get(murl, arg1.GetString(),x)!=1)
+			{
+				alert((xstring)L"error1:\r\n"+x.text());
+				return 1;
+			}
+			if(MessageID==L"") MessageID= dw_base.GetGuid(1);
+			alert(L"发送完成");
+			CloseWindow();
+			
+			return 1;
+			
+			xaserverarg arg;
+			
+			if(sheet)
+			{
+				
+				SendMessage(sheet.GetHWND(),0x401,L"GetEntityData:"+arg,0);
+				xstring data = arg.GetArgString(L"EntityData");
+				murl = L"/sale/data/Business/message/attach/update";
+				arg1.AddArg(L"url",L"message/attach");
+				arg1.AddArg(L"content",data);
+				arg1.AddArg(L"param",MessageID);
+				if(xurl::get(murl, arg1.GetString(),x)!=1)
+				{
+					alert((xstring)L"error2:\r\n"+x.text());
+					return 1;
+				}
+			}
+			return 1;
+		}
+				
+		xaserverarg MakeArg(xstring folder)
+		{
+			//ThingImpl:AddMessage($MessageID,$Folder,$EntityNo, $EntityID, $Subject, $Category, $Reciever, $Content)
+			//ThingImpl:UpdateMessage($MessageID,$Folder,$EntityNo, $EntityID, $Subject, $Category, $Reciever, $Content)
+				
+			xaserverarg arg;
+			
+			
+			if(MessageID==L"")
+			{
+				dw_base.SetGuid(1,ViewObject::GetGuid());
+				arg.AddArg(L"MessageID", dw_base.GetGuid(1));
+				arg.AddArg(L"EntityID", dw_base.GetGuid(1));
+			}
+			else
+			{
+				arg.AddArg(L"MessageID", MessageID);
+				arg.AddArg(L"EntityID", MessageID);
+			}
+			
+			arg.AddArg(L"Folder", folder);
+			arg.AddArg(L"EntityNo", dw_base.GetItemString(1,L"EntityNo"));
+			arg.AddArg(L"Subject", dw_base.GetItemString(1,L"Subject"));
+			arg.AddArg(L"Category", dw_base.GetItemString(1,L"Category"));
+			arg.AddArg(L"Reciever", dw_base.GetItemString(1,L"Receiver"));
+			arg.AddArg(L"Note", dw_base.GetItemString(1,L"Note"));
+			//arg.AddArg(L"Content", dw_base.GetItemString(1,L"Content"));
+			arg.AddArg(L"Content",xcontrol(GetControl(L"sle_search")).GetText());
+			arg.AddArg(L"Content2",bill);
+			return arg;
+		}
+			
+		int  OnRetrieve()
+		{
+			xml x;
+			
+			xaserverarg arg;
+				
+			arg.AddArg(L"id",MessageID);
+			if (getUrl(L"/sale/data/business/list/fetch",arg.GetString(),x)!=1)
+			{
+				trace(x.text());
+				return -1;
+			}else	
+			{
+				dw_base.Retrieve(x);
+				dw_base.Redraw();
+				if(readonly) dw_base.SetReadOnly(true);
+			
+				if(x.selectSingleNode(L"root/Content"))
+				{
+					xstring str = x.selectSingleNode(L"root/Content").text();
+					str = str.replace(L"\n",L"\r\n");
+					GetControl(L"content").SetText(str);
+				}
+				//alert(x.xml());
+				if(x.selectSingleNode(L"root/Content2"))
+				{
+					
+					xstring str2 = x.selectSingleNode(L"root/Content2").text();
+					xstring tm=L"";
+					xstring EntityID=L"";
+					xstring Category=L"";
+					int pos = str2.find(L"EntityID=L");
+					if(pos >= 0)
+					{
+						tm = str2.mid(pos + L"EntityID=L".length(),64);
+						if(tm.find(L" ")>0) tm = tm.left(tm.find(L" "));
+						EntityID=tm;
+					}
+					pos = str2.find(L"Category=L");
+					if(pos >= 0)
+					{
+						tm = str2.mid(pos+L"Category=L".length(),64);
+						if(tm.find(L" ")>0) tm = tm.left(tm.find(L" "));
+						Category=tm;
+					}
+					trace(L"EntityID:"+EntityID);
+					trace(L"Category:"+Category);
+					if(EntityID != L"" && Category != L"")
+					{
+						xstring eleStr = L"<row EntityID='"+EntityID+L"'";
+						eleStr += L" category='" + Category + L"'/>";
+						bill = L"EntityID=L"+EntityID+L" Category=L" + Category;
+						ShowDetail(eleStr);
+					}
+				}
+			}
+			return 1;
+		}
+
+		int ShowDetail(xstring eleStr)
+		{
+			xaserverarg arg;
+				
+			arg.AddArg(L"content",eleStr);
+			xml doc;
+						
+			if(getUrl(L"/sale/data/vpage/vstart/task",arg.GetString(),doc)!=1)
+			{
+				trace((xstring)L"error->:"+doc.xml());
+				return 0;
+			}
+			if(doc.xml() == L"")
+				return -1;
+			
+			htmlctrl ht = GetControl(L"taskinfo");
+			ht.SetContent(doc.xml());
+			ht.Redraw();
+			
+			return 1;
+		}
+			
+		int onload()
+		{
+			SetArg();
+			dw_base = GetControl(L"dw_base");
+			dw_base.openUrl(L"/sale/view/business3/template/message/maint");
+			dw_base.SetColHeaderHeight(0);
+			dw_base.SetRowSelectorWidth(0);
+			dw_base.SetHScrollState(false);
+			dw_base.SetVScrollState(false);
+			
+			dw_base.SetItemString(1,L"Category",L"普通");
+		
+			OnAttachEvent();	
+			
+			readonly = false;
+			MessageID = L"";
+			bill = L"";
+			
+			SetAgent();			
+			if(GetWinParam())
+			{
+				xaserverarg arg = GetArg();
+				MessageID = arg.GetArgString(L"id");
+				if(arg.GetArgString(L"readonly")==L"1") readonly=true;
+				OnRetrieve();
+			
+				if(arg.GetArgString(L"EntityID")!=L"")
+				{
+					xstring str = L"<row EntityID='"+arg.GetArgString(L"EntityID")+L"'";
+					str += L" category='" + arg.GetArgString(L"EntityName")+L"'/>";
+					bill = L"EntityID=L"+arg.GetArgString(L"EntityID")+L" Category=L" + arg.GetArgString(L"EntityName");
+					ShowDetail(str);
+				}
+			}
+			
+			return 1;
+		}
+		
+		int onloaded()
+		{
+			
+			return 1;
+		}		
+	};
\ No newline at end of file

--
Gitblit v1.9.3