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