use "xcontrol.vframe.vbusiness.vd"
|
use "xbase.vframe.vbusiness.vd"
|
use "base.view.vd"
|
|
unit trade
|
[
|
class MessageBusinessWin : public xframe
|
{
|
//xdwgrid dw_list;
|
xdwtable dw_base;
|
xnode m_agentNode; //Agent Condition
|
xwin sheet;
|
bool readonly;
|
string MessageID;
|
string bill;
|
|
int SetAgent()
|
{
|
return 1;
|
|
string xfNodeAgentArea = "agentarea";
|
xnode anode = GetAgentNode(xfNodeAgentArea);
|
if(m_agentNode)
|
{
|
SetAgentNodeContent (anode,m_agentNode);
|
}
|
else
|
{
|
msxml::IXMLDOMElement xframeElement = GetElement();
|
msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
|
if(agent)
|
{
|
string s = agent.xml;
|
m_agentNode = SetAgentNodeContent (anode,s);
|
}
|
}
|
return 1;
|
}
|
|
//½¹µã¼¤»î´¦Àíº¯Êý
|
int OnSetFocus(ref TEvent evt,int param)
|
{
|
//ÖØÖù¤¾ßÌõ
|
SetAgent();
|
return 1;
|
}
|
|
int OnItemChanged(ref TNotifyEvent evt,int p)
|
{
|
ref DWNMHDR hdr = trust(evt.pnmh as ref DWNMHDR);
|
string colname=hdr.colname;
|
string value = hdr.data;
|
int row = hdr.row;
|
|
if(colname=="Category")
|
{
|
if(value=="¹©Ó¦ÉÌÉêÇë")
|
{
|
dw_base.SetItemString(1,"Receiver","fdp-011");
|
dw_base.SetItemString(1,"Subject","ÇëÌí¼Ó");
|
}
|
return 1;
|
|
bool changed = false;
|
xml x = ViewObject::RetrieveData("/sale/data/business/message/maint","typ",value);
|
if(x)
|
{
|
string xpage_ = x.GetXmlDoc().documentElement.getAttribute("xpage");
|
string templaterpt = x.GetXmlDoc().documentElement.getAttribute("template");
|
if(xpage_ !="")
|
{
|
string s = "<hbox name='agent'>";
|
s += "<xpage url='" + xpage_ + "' name='contentex'/>";
|
s += "</hbox>";
|
SetAgentNodeContent (GetAgentNode("agent"),s);
|
SwitchLayer("sheet2","frame");
|
sheet = GetChildWin("contentex");
|
changed = true;
|
}
|
}
|
if(!changed)
|
{
|
sheet = 0;
|
SwitchLayer("sheet1","frame");
|
}
|
}
|
|
return 1;
|
}
|
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(string comdid)
|
{
|
if(comdid=="xmSend")
|
{
|
if(!readonly) OnSend();
|
return 1;
|
}
|
else if(comdid=="xmSave")
|
{
|
if(!readonly) OnSave();
|
return 1;
|
}
|
else if(comdid=="xmCancel")
|
{
|
CloseWindow();
|
return 1;
|
}
|
if(sheet && comdid !="")
|
{
|
int ret = win32::SendMessage(sheet.GetHWND(),0x401,comdid,0);
|
if(ret) return ret;
|
}
|
|
return 0;
|
}
|
|
//ÃüÁî´¦Àíʼþ
|
int OnXCommand(ref TXCommandEvent evt,int param)
|
{
|
return OnCmdDispatch(evt.pStrID);
|
}
|
|
|
int OnDWClick(ref TNotifyEvent evt,int p)
|
{
|
ref DWNMHDR hdr = trust(evt.pnmh as ref DWNMHDR);
|
string value = hdr.data;
|
string colname = hdr.colname;
|
if (value == "ÊÕ¼þÈË:")
|
{
|
|
xaserverarg arg2 = new xaserverarg;
|
arg2.setNativePointer(arg2.CreateInstance());
|
xaserverarg parg2 = GetParam();
|
OpenWindow("dev:xpage[UserGroupPersonSelect.vx]",cast(arg2 as int));
|
|
if(arg2.GetArgString("comdid")=="xmOk")
|
{
|
string data = arg2.GetArgString("data");
|
xml x2 = new xml;
|
x2.setNativePointer(xml::CreateInstance());
|
x2.LoadXml(data);
|
msxml::IXMLDOMNodeList nodes = x2.GetXmlDoc().selectNodes("/root/item");
|
trace(x2.GetXml());
|
|
int len = nodes.length;
|
|
string Names = "";
|
for(int i=0;i<len; i++)
|
{
|
msxml::IXMLDOMElement t= nodes.item(i);
|
|
if(t.getAttribute("Name"))
|
{
|
string Name = t.getAttribute("Name");
|
if(Names=="")
|
Names = Name;
|
else if(Names.find(Name) < 0) Names+=";"+Name;
|
}
|
}
|
dw_base.SetItemString(1,"Receiver",Names);
|
}
|
return 1;
|
}
|
|
}
|
|
int OnAttachEvent()
|
{
|
//°ó¶¨¹¤¾ßÌõµã»÷ʼþ
|
AttachEvent("WM_XCOMMAND",OnXCommand);
|
//»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
|
AttachEvent("WM_SETFOCUS",OnSetFocus);
|
|
AttachEvent("dw_base","DWV_ITEMCHANGED",OnItemChanged);
|
AttachEvent("dw_base","DWV_CLICKED",OnDWClick);
|
|
return 1;
|
}
|
|
int OnSave()
|
{
|
xml x = new xml;
|
x.setNativePointer(xml::CreateInstance());
|
xaserverarg arg1 = MakeArg("scriptbox");
|
string murl = "/sale/data/Business/message/update";
|
if(MessageID=="") murl = "/sale/data/Business/message/add2";
|
if(url::get(murl, arg1.GetString(),x)!=1)
|
{
|
alert("error1:\r\n"+x.GetXmlDoc().text);
|
return 1;
|
}
|
if(MessageID=="") MessageID= dw_base.GetGuid(1);
|
alert("Òѱ£´æµ½²Ý¸åÏä");
|
return 1;
|
|
xaserverarg arg = new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
if(sheet)
|
{
|
int val = cast(arg as int);
|
win32::SendMessage(sheet.GetHWND(),0x401,"GetEntityData:"+val.toString(),0);
|
string data = arg.GetArgString("EntityData");
|
murl = "/sale/data/Business/message/attach/update";
|
arg1.AddArg("url","message/attach");
|
arg1.AddArg("content",data);
|
arg1.AddArg("param",MessageID);
|
if(url::get(murl, arg1.GetString(),x)!=1)
|
{
|
alert("error2:\r\n"+x.GetXmlDoc().text);
|
return 1;
|
}
|
}
|
return 1;
|
}
|
|
int OnSend()
|
{
|
xml x = new xml;
|
x.setNativePointer(xml::CreateInstance());
|
//xaserverarg arg1 = MakeArg("outbox");
|
xaserverarg arg1 = MakeArg("inbox");
|
string murl = "/sale/data/Business/message/update";
|
if(MessageID=="") murl = "/sale/data/Business/message/add2";
|
|
trace(arg1.GetString());
|
|
if(url::get(murl, arg1.GetString(),x)!=1)
|
{
|
alert("error1:\r\n"+x.GetXmlDoc().text);
|
return 1;
|
}
|
if(MessageID=="") MessageID= dw_base.GetGuid(1);
|
alert("·¢ËÍÍê³É");
|
CloseWindow();
|
|
return 1;
|
|
xaserverarg arg = new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
if(sheet)
|
{
|
int val = cast(arg as int);
|
win32::SendMessage(sheet.GetHWND(),0x401,"GetEntityData:"+val.toString(),0);
|
string data = arg.GetArgString("EntityData");
|
murl = "/sale/data/Business/message/attach/update";
|
arg1.AddArg("url","message/attach");
|
arg1.AddArg("content",data);
|
arg1.AddArg("param",MessageID);
|
if(url::get(murl, arg1.GetString(),x)!=1)
|
{
|
alert("error2:\r\n"+x.GetXmlDoc().text);
|
return 1;
|
}
|
}
|
return 1;
|
}
|
|
xaserverarg MakeArg(string folder)
|
{
|
//ThingImpl:AddMessage($MessageID,$Folder,$EntityNo, $EntityID, $Subject, $Category, $Reciever, $Content)
|
//ThingImpl:UpdateMessage($MessageID,$Folder,$EntityNo, $EntityID, $Subject, $Category, $Reciever, $Content)
|
|
xaserverarg arg = new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
|
if(MessageID=="")
|
{
|
dw_base.SetGuid(1,ViewObject::GetGuid());
|
arg.AddArg("MessageID", dw_base.GetGuid(1));
|
arg.AddArg("EntityID", dw_base.GetGuid(1));
|
}
|
else
|
{
|
arg.AddArg("MessageID", MessageID);
|
arg.AddArg("EntityID", MessageID);
|
}
|
|
arg.AddArg("Folder", folder);
|
arg.AddArg("EntityNo", dw_base.GetItemString(1,"EntityNo"));
|
arg.AddArg("Subject", dw_base.GetItemString(1,"Subject"));
|
arg.AddArg("Category", dw_base.GetItemString(1,"Category"));
|
arg.AddArg("Reciever", dw_base.GetItemString(1,"Receiver"));
|
arg.AddArg("Note", dw_base.GetItemString(1,"Note"));
|
//arg.AddArg("Content", dw_base.GetItemString(1,"Content"));
|
arg.AddArg("Content",GetControl("content").GetText());
|
arg.AddArg("Content2",bill);
|
return arg;
|
}
|
|
int OnRetrieve()
|
{
|
xml x = new xml;
|
x.setNativePointer(xml::CreateInstance());
|
xaserverarg arg = new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("id",MessageID);
|
if (getUrl("/sale/data/business/list/fetch",arg.GetString(),x)!=1)
|
{
|
trace(x.GetXmlDoc().text);
|
return -1;
|
}else
|
{
|
dw_base.Retrieve(x);
|
dw_base.Redraw();
|
if(readonly) dw_base.SetReadOnly(true);
|
|
if(x.GetXmlDoc().selectSingleNode("root/Content"))
|
{
|
string str = x.GetXmlDoc().selectSingleNode("root/Content").text;
|
str = str.replace("\n","\r\n");
|
GetControl("content").SetText(str);
|
}
|
//alert(x.GetXml());
|
if(x.GetXmlDoc().selectSingleNode("root/Content2"))
|
{
|
|
string str2 = x.GetXmlDoc().selectSingleNode("root/Content2").text;
|
string tm="";
|
string EntityID="";
|
string Category="";
|
int pos = str2.find("EntityID=");
|
if(pos >= 0)
|
{
|
tm = str2.mid(pos+"EntityID=".length(),64);
|
if(tm.find(" ")>0) tm = tm.left(tm.find(" "));
|
EntityID=tm;
|
}
|
pos = str2.find("Category=");
|
if(pos >= 0)
|
{
|
tm = str2.mid(pos+"Category=".length(),64);
|
if(tm.find(" ")>0) tm = tm.left(tm.find(" "));
|
Category=tm;
|
}
|
trace("EntityID:"+EntityID);
|
trace("Category:"+Category);
|
if(EntityID != "" && Category != "")
|
{
|
string eleStr = "<row EntityID='"+EntityID+"'";
|
eleStr += " category='" + Category + "'/>";
|
bill = "EntityID="+EntityID+" Category=" + Category;
|
ShowDetail(eleStr);
|
}
|
}
|
}
|
return 1;
|
}
|
|
int ShowDetail(string eleStr)
|
{
|
xaserverarg arg=new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("content",eleStr);
|
xml doc=new xml;
|
doc.setNativePointer(xml::CreateInstance());
|
if(getUrl("/sale/data/vpage/vstart/task",arg.GetString(),doc)!=1)
|
{
|
trace("error->:"+doc.GetXml());
|
return 0;
|
}
|
if(doc.GetXml() == "")
|
return -1;
|
|
htmlctrl ht = GetControl("taskinfo");
|
ht.SetContent(doc.GetXml());
|
ht.Redraw();
|
|
return 1;
|
}
|
|
int onload()
|
{
|
dw_base = GetControl("dw_base");
|
dw_base.openUrl("/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,"Category","ÆÕͨ");
|
|
OnAttachEvent();
|
|
readonly = false;
|
MessageID = "";
|
bill = "";
|
|
SetAgent();
|
if(GetParam())
|
{
|
xaserverarg arg = GetParam();
|
MessageID = arg.GetArgString("id");
|
if(arg.GetArgString("readonly")=="1") readonly=true;
|
OnRetrieve();
|
|
if(arg.GetArgString("EntityID")!="")
|
{
|
string str = "<row EntityID='"+arg.GetArgString("EntityID")+"'";
|
str += " category='" + arg.GetArgString("EntityName")+"'/>";
|
bill = "EntityID="+arg.GetArgString("EntityID")+" Category=" + arg.GetArgString("EntityName");
|
ShowDetail(str);
|
}
|
}
|
|
return 1;
|
}
|
|
int onloaded()
|
{
|
|
return 1;
|
}
|
};
|
]
|