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/Business5.cpp         |  688 +++++++++++++++++++++++++
 jrj/project/business/Affair/message.business.cpp  |  427 +++++++++++++++
 jrj/project/business/Affair/ProcessManagement.cpp |  180 ++++++
 jrj/project/business/Affair/message.supplier.cpp  |  230 ++++++++
 jrj/ext-jrj/ext-jrj.vcxproj                       |   12 
 jrj/ext-jrj/ext-jrj.vcxproj.filters               |   33 -
 6 files changed, 1,537 insertions(+), 33 deletions(-)

diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj
index 15dd1c5..09e92ed 100644
--- a/jrj/ext-jrj/ext-jrj.vcxproj
+++ b/jrj/ext-jrj/ext-jrj.vcxproj
@@ -292,6 +292,18 @@
   <ItemGroup>
     <ClCompile Include="..\jarch.impl\JStringImpl.cpp" />
     <ClCompile Include="..\project\analysis\DataVanalysisWin.cpp" />
+    <ClCompile Include="..\project\business\Affair\Business5.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\project\business\Affair\message.business.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\project\business\Affair\message.supplier.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\project\business\Affair\ProcessManagement.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+    </ClCompile>
     <ClCompile Include="..\project\business\AP\APBank.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
diff --git a/jrj/ext-jrj/ext-jrj.vcxproj.filters b/jrj/ext-jrj/ext-jrj.vcxproj.filters
index e08ed52..947c30e 100644
--- a/jrj/ext-jrj/ext-jrj.vcxproj.filters
+++ b/jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -136,9 +136,6 @@
     <Filter Include="jarch.impl">
       <UniqueIdentifier>{4d691658-8fdc-4c09-8cfa-d8fa62419ef3}</UniqueIdentifier>
     </Filter>
-    <Filter Include="jarch\module">
-      <UniqueIdentifier>{ee1bdbb1-df9a-4db8-8212-b40535f8b9e9}</UniqueIdentifier>
-    </Filter>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="framework.h">
@@ -1471,36 +1468,6 @@
     </ClCompile>
     <ClCompile Include="..\project\business\PO\paymentmethod.cpp">
       <Filter>project\business\PO</Filter>
-    </ClCompile>
-    <ClCompile Include="JModule.cpp">
-      <Filter>jarch\module</Filter>
-    </ClCompile>
-    <ClCompile Include="JType.cpp">
-      <Filter>jarch\module</Filter>
-    </ClCompile>
-    <ClCompile Include="JArgument.cpp">
-      <Filter>jarch\module</Filter>
-    </ClCompile>
-    <ClCompile Include="JField.cpp">
-      <Filter>jarch\module</Filter>
-    </ClCompile>
-    <ClCompile Include="JMethod.cpp">
-      <Filter>jarch\module</Filter>
-    </ClCompile>
-    <ClCompile Include="JParam.cpp">
-      <Filter>jarch\module</Filter>
-    </ClCompile>
-    <ClCompile Include="JValue.cpp">
-      <Filter>jarch\module</Filter>
-    </ClCompile>
-    <ClCompile Include="JLiteral.cpp">
-      <Filter>jarch\module</Filter>
-    </ClCompile>
-    <ClCompile Include="JBinaryOp.cpp">
-      <Filter>jarch\module</Filter>
-    </ClCompile>
-    <ClCompile Include="JVariant.cpp">
-      <Filter>jarch\module</Filter>
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
diff --git a/jrj/project/business/Affair/Business5.cpp b/jrj/project/business/Affair/Business5.cpp
new file mode 100644
index 0000000..0441872
--- /dev/null
+++ b/jrj/project/business/Affair/Business5.cpp
@@ -0,0 +1,688 @@
+#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) Business5Win :  public xframe
+	{
+	public:
+		xdwgrid	dw_list;
+		xdwgrid dw_processed;
+		xdwgrid dw_message;
+		xdwgrid dw_outbox;
+		xdwgrid dw_Recovery;
+		xnode	m_agentNode;	//Agent Condition
+		xtreeview tv_folder;
+		
+		int		hMessage;
+		int		hTask;
+	
+		xstring 	agentFor;
+		xstring    selectname;
+		xwin		sheet;
+
+	public:
+		Business5Win(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static Business5Win* CreateInstance(void* implPtr, void* hWnd)
+		{
+			Business5Win* pWin = new Business5Win(implPtr, (HWND)hWnd);
+			return pWin;
+		}
+
+		int SetAgent()
+		{
+			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"[@for='"+agentFor+L"']/*");
+				if(agent)
+				{
+					xstring s = agent.xml();
+					m_agentNode =  SetAgentNode (anode,s);
+					//FillGoodsCarList();
+				}
+			}
+			return 1;
+		}
+
+		//焦点激活处理函数
+		int OnSetFocus(TEvent* evt, LPARAM param)
+		{
+			//重置工具条
+			SetAgent();
+			return 1;
+		}
+		int RetrieveData()
+		{
+			xml x;
+			if(selectname == L"已处理任务")
+			{
+				 x = ViewObject::RetrieveData(L"/sale/data/business/list/processedtask");
+				dw_processed.Retrieve(x);
+				dw_processed.Redraw();
+				dw_processed.SetReadOnly(true);
+			}else if(selectname == L"收件箱")
+			{
+				xstring UserNO= publiccode::GetUser().no;
+				
+				x = ViewObject::RetrieveData(L"/sale/data/business/list/inbox");
+				
+				dw_message.Retrieve(x);
+				dw_message.Redraw();
+				dw_message.SetReadOnly(true);
+			}
+			else if(selectname == L"发件箱")
+			{
+				x = ViewObject::RetrieveData(L"/sale/data/business/list/outbox");
+				dw_outbox.Retrieve(x);
+				dw_outbox.Redraw();
+				dw_outbox.SetReadOnly(true);
+			}
+			else if(selectname == L"回收箱")
+			{
+				x = ViewObject::RetrieveData(L"/sale/data/business/list/Recovery");
+				dw_Recovery.Retrieve(x);
+				dw_Recovery.Redraw();
+				dw_Recovery.SetReadOnly(true);
+			}
+			AdjustTip();
+			return 1;
+		}
+		int OnDelete()
+		{
+			int MB_OKCANCEL = 1;
+			int IDOK  = 1;
+			int ret =MessageBox(GetHWND(),L"确认删除消息?",L"提示",MB_OKCANCEL);
+			if(ret == IDOK)
+			{
+				KXMLDOMElement ele = dw_message.GetRowElement(dw_message.GetRow());
+				xstring TaskID = ele.getAttribute(L"guid");
+				xml x = ViewObject::RetrieveData(L"/sale/data/business/message/delete",L"TaskID",TaskID);
+				xstring status = x.xml();
+				if(status.find(L"ok") == 1)
+				{
+					alert(L"删除成功");
+					RetrieveData();
+				}else
+				{
+					alert(L"删除失败");
+				}
+				
+			}
+			return 1;
+		}
+		
+		int OnUpdateRecovery()
+		{
+			int MB_OKCANCEL = 1;
+			int IDOK  = 1;
+			int ret =MessageBox(GetHWND(),L"确认恢复消息?",L"提示",MB_OKCANCEL);
+			if(ret == IDOK)
+			{
+				KXMLDOMElement ele = dw_Recovery.GetRowElement(dw_Recovery.GetRow());
+				xstring TaskID = ele.getAttribute(L"guid");
+				xml x = ViewObject::RetrieveData(L"/sale/data/business/Recovery/UpdateRecovery",L"TaskID",TaskID);
+				xstring status = x.xml();
+				if(status.find(L"ok") == 1)
+				{
+					alert(L"恢复成功");
+					RetrieveData();
+				}else
+				{
+					alert(L"恢复失败");
+				}
+				
+			}
+			return 1;
+		}
+				
+		int OnDeleteRecovery()
+		{
+			int MB_OKCANCEL = 1;
+			int IDOK  = 1;
+			int ret =MessageBox(GetHWND(),L"确认彻底删除消息?",L"提示",MB_OKCANCEL);
+			if(ret == IDOK)
+			{
+				KXMLDOMElement ele = dw_Recovery.GetRowElement(dw_Recovery.GetRow());
+				xstring TaskID = ele.getAttribute(L"guid");
+				xml x = ViewObject::RetrieveData(L"/sale/data/business/Recovery/DeleteRecovery",L"TaskID",TaskID);
+				xstring status = x.xml();
+				if(status.find(L"ok") == 1)
+				{
+					alert(L"删除成功");
+					RetrieveData();
+				}else
+				{
+					alert(L"删除失败");
+				}
+				
+			}
+			return 1;
+		}
+				
+		int OnAdd()
+		{
+			OpenWindow(L"dev:xpage[message.business.vx]");
+			if(selectname == L"发件箱" || selectname == L"草稿箱") RetrieveData();	
+			return 1;
+		}
+				
+				
+		//命令发布函数
+		int OnCmdDispatch(xstring comdid)
+		{
+			int ret = 0;
+			if(comdid.find(L"action:",0)>=0)
+			{
+				ret =SendMessage(GetHWND(),0x401,(LPARAM)comdid,0);
+			}
+			if(comdid==L"xmRefreshTask")
+			{
+				trace(L"\r\n----refresh task--------");
+				SendMessage(GetHWND(),0x401,(LPARAM)comdid,0);
+				return 1;
+			}
+			if(comdid==L"xmRefresh")
+			{
+				trace(L"\r\n----refresh--------");
+				ret =SendMessage(GetHWND(),0x401, (LPARAM)comdid,0);
+			}
+			if(comdid == L"xmRertieve")
+			{
+				RetrieveData();
+				ret = 1;
+			}
+			if(comdid==L"xmAdd")
+			{
+				OnAdd();
+				ret = 1;
+			}
+			if(comdid == L"xmDelete")
+			{
+				OnDelete();
+				ret = 1;
+			}
+			if(comdid == L"UpdateRecovery")
+			{
+				OnUpdateRecovery();
+				ret = 1;
+			}
+			if(comdid == L"DeleteRecovery")
+			{
+				OnDeleteRecovery();
+				ret = 1;
+			}
+			if(comdid == L"xmImage")
+			{
+				int row = dw_message.GetRow();
+				xstring PriceID = dw_message.GetItemString(row,L"EntityID");
+				xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/PriceList/GetSkunoByPriceID",L"PriceID",PriceID);
+				KXMLDOMNodeList items = x.selectNodes(L"data/Item");
+				KXMLDOMNode t = items.item(0);
+				xstring skunos =  t.selectSingleNode(L"skuno").text();
+				xaserverarg arg_pic;
+		
+				arg_pic.AddArg(L"SKUNoList",skunos);
+#if 0
+				arg_pic.AddArg(L"ParentWindow", GetHWND());
+#endif // 0
+
+				
+
+				arg_pic.AddArg(L"OpenFlag",L"1");
+				OpenWindow(L"dev:xpage[SKU.PictureView.Product3.vx]",arg_pic );	
+				return 1;
+			}
+			else if(comdid == L"xmSearchOne")
+			{
+				OnSearchOne();
+				return 1;
+			}
+			else if(comdid == L"xmSearchTwo")
+			{
+				OnSearchTwo();
+				return 1;
+			}
+			else if(comdid==L"Lognew")
+			{
+				xstring EntityID = dw_processed.GetItemString(dw_processed.GetRow(),L"EntityID");
+				//alert(EntityID);
+	
+				xaserverarg args;
+										
+				args.AddArg(L"EntityID",EntityID);
+				//OpenWindow(L"dev:xpage[workflow.actionlog.vx]",cast(args as int));	
+				OpenWindow(L"dev:xpage[workflow.actionlog_vd.vx]",args);
+			
+			
+				
+			}
+			return ret;
+		}
+		
+			
+		int OnSearchOne()
+		{
+			xstring searchStr=L"";
+			xaserverarg arg;
+									
+			arg.AddArg(L"text", searchStr);
+			OpenWindow(L"dev:xpage[search.dialog.vx]", arg);
+			xstring str = arg.GetArgString(L"text");
+			if(str != searchStr)
+			{
+				searchStr = str;
+				dw_message.Filter(L"*",searchStr);
+				return 1;
+			}
+			return 1;
+		}
+			
+		int OnSearchTwo()
+		{
+			xstring searchStr=L"";
+			xaserverarg arg;
+									
+			arg.AddArg(L"text", searchStr);
+			OpenWindow(L"dev:xpage[search.dialog.vx]", arg);
+			xstring str = arg.GetArgString(L"text");
+			if(str != searchStr)
+			{
+				searchStr = str;
+				dw_Recovery.Filter(L"*",searchStr);
+				return 1;
+			}
+			return 1;
+		}
+		
+		//命令处理事件
+		int OnXCommand(TEvent* evt, LPARAM param)
+		{
+			return OnCmdDispatch(evt->xcommand.pStrID);
+		}
+		
+		
+		//查找当前树项的顶级目录
+		HTREEITEM LookupTopFolder(HTREEITEM hItem)
+		{
+			HTREEITEM hRoot = tv_folder.GetRootItem();
+			while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
+			return hItem;
+		}
+
+		int ResetAgent(xstring agentAsk)
+		{
+			if(agentFor != agentAsk)
+			{
+				agentFor = agentAsk;
+				m_agentNode = 0;
+				SetAgent();
+			}
+			return 1;
+		}
+		
+		int OnTreeSelChanged(TEvent* evt, LPARAM p)
+		{
+			NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+			HTREEITEM hItem = nmtv.itemNew.hItem;
+			HTREEITEM hTopItem = LookupTopFolder(hItem);
+			
+			xstring data = tv_folder.GetItemData(hItem);
+			trace(L"\r\n"+data);
+			//KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
+			//if(e)trace(e.xml());
+
+			xstring name = tv_folder.GetItemLabel(hTopItem);
+			selectname = tv_folder.GetItemLabel(hItem);
+			if(selectname == L"待处理任务")
+			{
+				SwitchLayer(L"sheet2",L"frame");
+				sheet = GetChildWin(L"sheet2");
+				ResetAgent(L"business1");
+			}else if(selectname == L"已处理任务")
+			{
+				SwitchLayer(L"sheet3",L"frame");
+				RetrieveData();
+				ResetAgent(L"business2");
+			}else if(selectname == L"收件箱")
+			{
+				SwitchLayer(L"sheet4",L"frame");
+				RetrieveData();
+				ResetAgent(L"business3");
+			}else if(selectname == L"发件箱")
+			{
+				SwitchLayer(L"sheet5",L"frame");
+				RetrieveData();
+				ResetAgent(L"business2");
+			}
+			else if(selectname == L"事务")
+			{
+				SwitchLayer(L"sheet1",L"frame");
+			}else if(selectname == L"回收箱")
+			{
+				SwitchLayer(L"sheet6",L"frame");
+				RetrieveData();
+				ResetAgent(L"business5");
+			}
+			return 1;
+		}
+		int OnRowChanged(TEvent* evt, int p)
+		{
+			//fixed one event only one process
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+			int row = hdr.row;
+			KXMLDOMElement ele;
+			if(selectname == L"已处理任务")
+				 ele = dw_processed.GetRowElement(row);
+			else if(selectname == L"收件箱")
+			{
+				ele = dw_message.GetRowElement(row);
+				xstring Subject = dw_message.GetItemString(row,L"Subject");
+				if(Subject.find(L"价格单") == -1)
+				{
+					ResetAgent(L"business3");
+				}else{
+					ResetAgent(L"business4");
+				}
+			}
+			else if(selectname == L"回收箱")
+			{
+				ele = dw_Recovery.GetRowElement(row);
+				xstring SubjectOne = dw_Recovery.GetItemString(row,L"Subject");
+			}
+			else if(selectname == L"发件箱")
+				ele = dw_outbox.GetRowElement(row);
+			xaserverarg arg;
+				
+			trace(ele.xml());
+			arg.AddArg(L"content",ele.xml());
+			xml doc=new xml;			
+			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;
+			//trace(doc.xml());
+			htmlctrl ht = GetControl(L"taskinfo");
+			ht.SetContent(doc.xml());
+			ht.Redraw();
+			return 1;
+		}
+		int OnItemAskStyle(TEvent* evt, int p)
+		{
+			int DMS_CSSSTYLE = 0x8;
+			ref DWASKSTYLENMHDR hdr = trust(evt.pnmh as ref DWASKSTYLENMHDR);
+			int row = hdr.row;
+			int col = hdr.col;
+			xstring colname = hdr.colname;
+			int rows = dw_message.GetRowCount();
+			if(row < 1 || row > rows)
+			{
+				return 1;
+			}
+			if(colname==L"flowName" || colname==L"Process" || colname==L"sender" ||
+			colname==L"SendDate"||colname==L"processer"||colname==L"ProcessedDate"||
+			colname==L"Subject"||colname==L"Content")
+			{
+				xstring ReadedFlag = dw_message.GetItemString(row,L"ReadedFlag");
+				if(ReadedFlag != L"Y")
+				{
+					hdr.mask =  DMS_CSSSTYLE;
+					//hdr.cssstyle = L"color:#cccccc";
+					hdr.cssstyle = L"font-weight:700";
+					
+				}
+			}
+			
+			return 1;
+		}
+				
+		int OnDWClick(TEvent* evt, int p)
+		{
+			xstring UserNO=publiccode::GetUser().no;
+			if(UserNO !=L"00701")
+			{
+				DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+				xstring value = hdr.data;
+				xstring colname = hdr.colname;
+				int row = hdr.row;
+				KXMLDOMElement ele = dw_message.GetRowElement(row);
+				xstring TaskID = ele.getAttribute(L"guid");
+				xstring ReadedFlag = dw_message.GetItemString(row,L"ReadedFlag");
+				xstring flowName = dw_message.GetItemString(row,L"flowName");
+				if(ReadedFlag != L"Y")
+				{
+					xml x = ViewObject::RetrieveData(L"/sale/data/business/message/read",L"TaskID",TaskID);
+					dw_message.SetItemString(row,L"ReadedFlag",L"Y");
+					if(ReadedFlag != L"Y" && flowName == L"价格单共享")
+					{
+						xml x1 = ViewObject::RetrieveData(L"/sale/data/business/Recovery/MessageStatus",L"TaskID",TaskID);
+					}
+					dw_message.Redraw();
+					//RetrieveData();
+				}
+				AdjustTip();
+			}
+			return 1;
+		}
+					
+		int OpenShowroom1(TEvent* evt, int p)
+			{
+				DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+				xstring value = hdr.data;
+				xstring colname = hdr.colname;
+				int row = hdr.row;
+				KXMLDOMElement ele = dw_outbox.GetRowElement(row);
+				xstring TaskID = ele.getAttribute(L"guid");
+				xstring Category = dw_outbox.GetItemString(row,L"flowName");
+				if(Category==L"普通"){
+					xaserverarg arg2;
+						
+					if(dw_outbox.GetRowCount() < 1) return 1;
+					KXMLDOMElement ele1 = dw_outbox.GetRowElement(dw_outbox.GetRow());
+					arg2.AddArg(L"EntityID",dw_outbox.GetItemString(dw_outbox.GetRow(),L"EntityID"));
+					arg2.AddArg(L"id",ele1.getAttribute(L"guid"));
+					OpenWindow(L"dev:xpage[message.business.vx]",arg2);
+					return 1;
+				}
+				return 1;
+			}
+				
+		int OpenShowroom(TEvent* evt, int p)
+		{
+				DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+				xstring value = hdr.data;
+				xstring colname = hdr.colname;
+				int row = hdr.row;
+				KXMLDOMElement ele = dw_message.GetRowElement(row);
+				xstring TaskID = ele.getAttribute(L"guid");
+				xstring Category = dw_message.GetItemString(row,L"Category");
+				if(Category==L"货号申请"){
+					int p1 ;
+					OpenWindow(L"dev:xpage[UserProductApply.vx]", p1);
+				}
+				if(Category==L"普通"){
+					xaserverarg arg2;
+						
+					if(dw_message.GetRowCount() < 1) return 1;
+					KXMLDOMElement ele1 = dw_message.GetRowElement(dw_message.GetRow());
+					arg2.AddArg(L"EntityID",dw_message.GetItemString(dw_message.GetRow(),L"EntityID"));
+					arg2.AddArg(L"id",ele1.getAttribute(L"guid"));
+					OpenWindow(L"dev:xpage[message.business.vx]", arg2);
+					return 1;
+				}
+				else if(Category==L"报价单共享")
+				{
+					if(dw_message.GetRowCount() < 1) return 1;
+					xstring No = dw_message.GetItemString(dw_message.GetRow(),L"No");
+					OpenWindow(L"dev:xpage[EnquiryEx.quote.vx]",cast(No as int));
+				}
+				if(Category==L"SupplierV3")
+				{
+					xaserverarg arg;
+						
+					if(dw_message.GetRowCount() < 1) return 1;
+					arg.AddArg(L"EntityID",dw_message.GetItemString(dw_message.GetRow(),L"EntityID"));
+					//OpenWindow(L"dev:xpage[maint.Owner.Supplier.v3.vx]",cast(arg as int));
+					arg.AddArg(L"config",L"/sale/view/SupplierV3/config/supplier/open");
+					OpenWindow(L"dev:xpage[maintex.Owner.Supplier.v3.vx]",arg);
+				}
+				if(Category==L"供应商回退")
+				{
+					xaserverarg arg1;
+						
+					if(dw_message.GetRowCount() < 1) return 1;
+					arg1.AddArg(L"EntityID",dw_message.GetItemString(dw_message.GetRow(),L"EntityID"));
+					OpenWindow(L"dev:xpage[maint.Owner.Supplier.v3.vx]",arg1);
+				}
+				return 1;
+			}
+		int OnAttachEvent()
+		{
+			//绑定工具条点击事件
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&Business5Win::OnXCommand);
+			//获取焦点事件,用于重置工具条
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&Business5Win::OnSetFocus);
+			//树选择
+			AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&Business5Win::OnTreeSelChanged);
+			AttachEvent(L"dw_processed",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
+			AttachEvent(L"dw_message",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
+			AttachEvent(L"dw_outbox",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
+			AttachEvent(L"dw_Recovery",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
+			AttachEvent(L"dw_message",L"DWV_ASKSTYLE", (FEvent)&Business5Win::OnItemAskStyle);
+			AttachEvent(L"dw_message",L"DWV_CLICKED", (FEvent)&Business5Win::OnDWClick);
+			AttachEvent(L"dw_message",L"DWV_DOUBLECLICKED", (FEvent)&Business5Win::OpenShowroom);
+			AttachEvent(L"dw_outbox",L"DWV_DOUBLECLICKED", (FEvent)&Business5Win::OpenShowroom1);
+			
+			return 1;
+		}
+		
+		
+		int  OnRetrieve()
+		{
+			
+			return 1;
+		}
+		
+		int  InitialFolder()
+		{
+			KXMLDOMElement xframeElement =  GetElement();
+			KXMLDOMElement e =  xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
+			
+			//KXMLDOMElement e =  xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/data/item[@name='"+L"']");
+			//trace(e.xml());
+			if(e)
+				ExpandChildFolder(0,e);
+			return 1;
+		}
+		
+		int  ExpandChildFolder(int hItem, KXMLDOMElement pElement)
+		{
+			KXMLDOMNodeList nlist = pElement.selectNodes(L"Item");
+			int len = nlist.length();
+			for (int i = 0; i < len; i++)
+			{	
+				KXMLDOMElement e = nlist.item(i);
+				xstring name = e.getAttribute(L"name");
+				xstring sImage = e.getAttribute(L"image");
+				xstring child = e.getAttribute(L"child");
+				int image = 15;
+				if(sImage) image = sImage.toInt();
+				int h= tv_folder.InsertChildItem(tv_folder.GetId(),hItem,name, trust(e as int),image);
+				if(child !=L"no" ) tv_folder.SetItemChild(h,1);
+				ExpandChildFolder(h,e);
+			}
+			return 1;				
+		}
+		
+		int AdjustTip()
+		{
+			xml x = ViewObject::RetrieveData(L"/sale/data/business/list/AdjustTipNotify");
+			KXMLDOMNodeList nlist = x.selectNodes(L"/data/Item"); 
+			KXMLDOMNode t = nlist.item(0);
+			xstring informationQuantity =t.selectSingleNode(L"informationQuantity").text();
+			tv_folder.SetItemLabel(hMessage, L"消息"+L"(L"+informationQuantity+L")L");
+			
+			xml x1 = ViewObject::RetrieveData(L"/sale/data/business/list/AdjustTipTask");
+			//alert(x1.xml());
+			KXMLDOMNodeList nlist1 = x1.selectNodes(L"/data/Item");
+			KXMLDOMNode t1= nlist1.item(0);
+			xstring informationQuantityTask =t1.selectSingleNode(L"informationQuantityTask").text();
+			tv_folder.SetItemLabel(hTask, L"任务"+L"(L"+informationQuantityTask+L")L");
+			
+			/*select count(*) from bpm_task where typ='notify' and  process='N' 
+			and charindex('|'+'00303'+'|','|' + rtrim(receiver) +'|')>=1*/
+			return 1;
+		}
+		
+		int onload()
+		{
+			agentFor = L"business";
+			OnAttachEvent();
+			dw_list = GetControl(L"dw_list");
+			dw_processed = GetControl(L"dw_processed");
+			dw_processed.openUrl(L"/sale/view/Business3/template/processedtask");
+			dw_processed.SetColumnState(L"EntityID",false);
+			dw_processed.SetColumnState(L"Category",false);
+
+			dw_message = GetControl(L"dw_message");
+			dw_message.openUrl(L"/sale/view/Business3/template/message");
+			dw_message.SetAskStyle(true);
+			dw_message.SetColumnState(L"EntityID",false);
+			dw_message.SetColumnState(L"Category",false);
+			dw_message.SetColumnState(L"ReadedFlag",false);
+			
+			dw_outbox = GetControl(L"dw_outbox");
+			dw_outbox.openUrl(L"/sale/view/Business3/template/outbox");
+			dw_outbox.SetColumnState(L"EntityID",false);
+			
+			dw_Recovery = GetControl(L"dw_Recovery");
+			dw_Recovery.openUrl(L"/sale/view/Business3/template/message");
+			dw_Recovery.SetColumnState(L"EntityID",false);
+			dw_Recovery.SetColumnState(L"Category",false);
+			dw_Recovery.SetColumnState(L"ReadedFlag",false);
+			dw_Recovery.SetColumnState(L"No",false);
+			
+			
+			tv_folder = GetControl(L"tv_folder");
+			tv_folder.SetLineAtRoot(true);
+			sheet = GetChildWin(L"sheet1");
+			
+			int hItem = tv_folder.GetRootItem();
+			tv_folder.ExpandItem(hItem);
+			int hcItem =tv_folder.GetChildItem(hItem);
+			hTask = hcItem;
+			tv_folder.ExpandItemAll(hcItem);
+			tv_folder.ItemFocus(tv_folder.GetChildItem(hcItem));
+			hcItem = tv_folder.GetNextItem(hcItem);
+			hMessage = hcItem;
+			tv_folder.ExpandItemAll(hcItem);
+			
+			AdjustTip();
+			
+			return 1;
+		}
+		
+		int onloaded()
+		{
+			SetAgent();	
+			
+			
+			return 1;
+		}		
+	};
\ No newline at end of file
diff --git a/jrj/project/business/Affair/ProcessManagement.cpp b/jrj/project/business/Affair/ProcessManagement.cpp
new file mode 100644
index 0000000..61d753a
--- /dev/null
+++ b/jrj/project/business/Affair/ProcessManagement.cpp
@@ -0,0 +1,180 @@
+#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) ProcessManagement :  public xframe
+	{
+	public:
+		xdwgrid	dw_list;
+		xnode	m_agentNode;	//Agent Condition
+		
+	public:
+		ProcessManagement(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static ProcessManagement* CreateInstance(void* implPtr, void* hWnd)
+		{
+			ProcessManagement* pWin = new ProcessManagement(implPtr, (HWND)hWnd);
+			return pWin;
+		}
+		int SetAgent()
+		{
+			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 OnCmdDispatch(xstring comdid)
+		{	
+			
+			if(comdid == L"xmDelete")
+			{
+				int MB_OKCANCEL = 1;
+				int IDOK  = 1;
+				int ret =MessageBox(GetHWND(),L"确认删除流程?",L"提示",MB_OKCANCEL);
+				if(ret == IDOK)
+				{
+					int row = dw_list.GetRow();
+					xstring TaskID = dw_list.GetItemString(row,L"TaskID");
+				
+				
+					xml x = ViewObject::RetrieveData(L"/sale/data/business/DelProcessManagement",L"TaskID",TaskID);
+					xstring status = x.xml();
+					if(status.find(L"ok") == 1)
+					{
+						alert(L"删除成功");
+						dw_list.DeleteRow(row);
+					}else
+					{
+						alert(L"删除失败");
+					}
+				
+				}
+				return 1;
+				
+			}
+			else if (comdid == L"xmRefresh")
+			{
+				OnRetrieve();
+			}
+			else if (comdid == L"AA")
+			{
+				AA();
+			}
+			return 0;
+		}
+		int AA()
+		{		
+		
+				//xstring FobUnitPriceEx=dw_cell.GetItemString(row,colFOBPrice);
+			xstring FobUnitPriceEx=L"$123.0";
+			if(FobUnitPriceEx==L"$") FobUnitPriceEx=L"123";
+			//alert(FobUnitPriceEx.find(L"$").toString());
+			if(FobUnitPriceEx.find(L"$") >=0) FobUnitPriceEx=FobUnitPriceEx.right(FobUnitPriceEx.length() - 1);
+			trace(FobUnitPriceEx);
+		}
+		//触发鼠标离开后tran事件,通过查找某个参数得到对应的列			
+		int OnBaseItemChanged(TEvent* evt, int p)
+		{
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+			xstring colname=hdr.colname;
+			xstring value = hdr.data;
+			
+			xstring dwname = L"dw_list";
+			if(value != L"")
+			{
+				KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='"+dwname+L"']/trans[@for='"+colname+L"']");
+				ViewObject::TransData(nlist, dw_list, hdr.row, colname, value);
+			}
+
+			return 1;
+		}
+			
+		
+		//命令处理事件
+		int OnXCommand(TEvent* evt, LPARAM param)
+		{
+			return OnCmdDispatch(evt->xcommand.pStrID);
+		}
+			
+		
+		
+		int OnAttachEvent()
+		{
+			//绑定工具条点击事件
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&ProcessManagement::OnXCommand);
+			//获取焦点事件,用于重置工具条
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&ProcessManagement::OnSetFocus);
+			AttachEvent(L"dw_list",L"DWV_ITEMCHANGED", (FEvent)&ProcessManagement::OnBaseItemChanged);
+			return 1;
+		}
+			
+
+		int  OnRetrieve()
+		{
+			xml x;
+			xaserverarg arg;
+			if (getUrl(L"/sale/data/business/ProcessManagement",arg.GetString(),x)!=1)
+			{
+				trace(x.text());
+				return -1;
+			}else	
+			{
+				dw_list.Retrieve(x);
+				dw_list.Redraw();
+				dw_list.SetReadOnly(true);
+				dw_list.SetSelectionMode(1);
+			}
+			return 1;
+		}
+	
+		int onload()
+		{
+			dw_list = GetControl(L"dw_list");
+			dw_list.openUrl(L"/sale/view/Business3/template/ProcessManagement");
+			dw_list.SetColumnState(L"TaskID",false);
+			
+			OnRetrieve();
+			
+			OnAttachEvent();	
+			
+			return 1;
+		}
+		
+		int onloaded()
+		{
+			SetAgent();
+			
+			
+			
+			return 1;
+		}		
+	};
\ No newline at end of file
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
diff --git a/jrj/project/business/Affair/message.supplier.cpp b/jrj/project/business/Affair/message.supplier.cpp
new file mode 100644
index 0000000..f53db45
--- /dev/null
+++ b/jrj/project/business/Affair/message.supplier.cpp
@@ -0,0 +1,230 @@
+#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) SupplierMessageWin :  public xframe
+	{
+	public:
+		xdwtable dw_base;
+		//xdwgrid	dw_list;
+		xnode	m_agentNode;	//Agent Condition
+	public:
+		SupplierMessageWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+	public:
+		static SupplierMessageWin* CreateInstance(void* implPtr, void* hWnd)
+		{
+			SupplierMessageWin* pWin = new SupplierMessageWin(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 UpLoad(xstring name)
+		{
+			xstring str = name.mid(0,2);
+			str = str.toUpper();
+			int ret1 = xaserver::Upload(L"supplier"+str, name+L".jpg", GetHWND(),L"",false);
+			return ret1;
+		}				
+	
+		int OnItemClick(TEvent* evt, int p)
+		{
+			DWNMHDR& hdr1 = *(DWNMHDR*)evt->notify.pnmh;
+			xstring colname1= hdr1.colname;
+			
+			DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+			xstring value = hdr.data;
+			xaserverarg arg;
+			
+			
+			if(value == L"上传附件")
+			{
+				xstring strguid = publiccode::GetGuid();
+				//alert(strguid);
+				int ret1 = UpLoad(strguid);
+				if(ret1  == -1)
+					return -1;
+				
+				if(ret1  == 0)
+				{
+					alert(L"上传附件失败");
+					return -1;
+				}
+				else
+				{	
+					alert(L"上传附件成功");
+					xstring strimage=dw_base.GetItemString(1,L"ImageList1");
+					//alert(strimage);					
+					if(strimage==L"")
+						strimage=L"<ImageList></ImageList>";
+					xml y;
+					
+					y.loadXML(strimage);
+
+					KXMLDOMElement ele= y.documentElement();
+				
+					xml x;
+					
+					xstring xx = L"<ImageList><image>"+strguid+L".jpg</image></ImageList>";
+					x.loadXML(xx);
+					KXMLDOMElement e=  x.selectSingleNode(L"//image");							
+					ele.appendChild(e);					
+					dw_base.SetItemString(1,L"ImageList1",ele.xml());
+					dw_base.Redraw();
+				}	
+			}
+					
+			if(value == L"查看")
+			{	
+				arg.AddArg(L"src",dw_base.GetItemString(1,L"ImageList1"));
+				
+				openUrl(L"/sale/view/SupplierV3/xpage/supplierattachment/picture", arg);
+					
+				dw_base.SetItemString(1,L"ImageList1",arg.GetArgString(L"src"));
+			}
+			
+			return 1;
+		}
+		
+		int GetEntityData(xaserverarg arg)
+		{
+			xml x;
+			
+			dw_base.DwUpdateAllTo(x);
+			arg.AddArg(L"EntityData",x.xml());
+			
+			return 1;
+		}
+		
+		xaserverarg GetArg(xstring comdid)
+		{
+			if(comdid.find(L":")>=0)
+			{
+				xaserverarg arg = comdid.mid(comdid.find(L":")+1,64).toInt();
+				return arg;
+			}
+			return 0;
+		}
+			
+		int GetEntityInfo(xaserverarg arg)
+		{
+			arg.AddArg(L"EntityName",L"Supplier");
+			arg.AddArg(L"EntityID",dw_base.GetGuid(1));
+			return 1;
+		}
+			
+		//命令发布函数
+		int OnCmdDispatch(xstring comdid)
+		{
+			if(comdid.find(L"GetEntityInfo:")==0) return GetEntityInfo(GetArg(comdid));
+			else if(comdid.find(L"GetEntityData:")==0) return GetEntityData(GetArg(comdid));
+			else if(comdid==L"xmAddRow") return OnAddRow();
+			else if(comdid==L"xmDeleteRow") return OnDeleteRow();
+			return 0;
+		}
+		
+		//命令处理事件
+		int OnXCommand(TEvent* evt, LPARAM param)
+		{
+			return OnCmdDispatch(evt->xcommand.pStrID);
+		}
+		
+		int OnAttachEvent()
+		{
+			//绑定工具条点击事件
+			AttachEvent(L"WM_XCOMMAND", (FEvent)&SupplierMessageWin::OnXCommand);
+			//获取焦点事件,用于重置工具条
+			AttachEvent(L"WM_SETFOCUS", (FEvent)&SupplierMessageWin::OnSetFocus);
+			AttachEvent(L"dw_base",L"DWV_CLICKED", (FEvent)&SupplierMessageWin::OnItemClick);
+		}
+		
+		int OnAddRow()
+		{
+			xdwtable dw_obj = dw_base.FindDwTable(L"item");
+			dw_obj.InsertRow(0);
+			return 1;
+		}
+
+		int OnDeleteRow()
+		{
+			xdwtable dw_obj = dw_base.GetCurTable();
+			dw_obj.DeleteRow(0);
+			return 1;
+		}
+		
+		/*
+		int  OnRetrieve()
+		{
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			xaserverarg arg = new xaserverarg;
+				
+			arg.AddArg(L"xxx",L"xxx");
+			if (getUrl(L"",arg.GetString(),x)!=1)
+			{
+				trace(x.text());
+				return -1;
+			}else	
+			{
+				//dw_list.Retrieve(x);
+				//dw_list.Redraw();
+			}
+			return 1;
+		}
+		*/
+		
+		int onload()
+		{
+			dw_base = GetControl(L"dw_base");
+			dw_base.openUrl(L"/sale/view/SupplierV3/template/supplier/simplebase");
+			dw_base.SetColHeaderHeight(0);
+			dw_base.SetRowSelectorWidth(0);
+			//dw_base.SetHScrollState(false);
+			//dw_base.SetVScrollState(false);
+		
+			OnAttachEvent();	
+			
+			return 1;
+		}
+		
+		int onloaded()
+		{
+			SetAgent();			
+			
+			return 1;
+		}		
+	};
\ No newline at end of file

--
Gitblit v1.9.3