From 59014e96b8ead79f8e885c54ae02f3facec15f8d Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期五, 28 六月 2024 14:48:05 +0800 Subject: [PATCH] add print and workflow --- jrj/project/printview/Template.Print.Dialog.cpp | 595 ++++++++++++++++ jrj/project/workflow/workflow.chkdlg_vd.cpp | 76 ++ jrj/project/printview/Template.Print.ViewEx.cpp | 1217 ++++++++++++++++++++++++++++++++ jrj/project/workflow/workflow.actionlog_vd.cpp | 70 + jrj/ext-jrj/ext-jrj.vcxproj | 14 jrj/project/printview/Maint.Template.PrintEx.cpp | 107 ++ jrj/project/workflow/workflow.actionlog.cpp | 66 + jrj/project/workflow/workflow.chkdlg.cpp | 68 + 8 files changed, 2,211 insertions(+), 2 deletions(-) diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj index 49ca2cc..1dba532 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj +++ b/jrj/ext-jrj/ext-jrj.vcxproj @@ -151,8 +151,8 @@ <OptimizeReferences>true</OptimizeReferences> <GenerateDebugInformation>true</GenerateDebugInformation> <EnableUAC>false</EnableUAC> - <AdditionalLibraryDirectories>D:\xclient64r</AdditionalLibraryDirectories> - <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies> + <AdditionalLibraryDirectories>D:\xclient64r\sdk\lib</AdditionalLibraryDirectories> + <AdditionalDependencies>xarch.shape.lib;xarch.base.lib;xarch.util.lib;xarch.network.lib;xarch.xframe.lib;xarch.xcontrol.lib;xoffice.xcell.lib;xoffice.xgrid.lib;xoffice.xreport.lib;shlwapi.lib;$(CoreLibraryDependencies);%(AdditionalDependencies)</AdditionalDependencies> </Link> <PostBuildEvent> <Command>copy $(OutDirFullPath)ext-jrj.dll D:\xclient64r\ext\ext-jrj.dll</Command> @@ -250,20 +250,25 @@ </ClCompile> <ClCompile Include="..\project\business\HR\AdministrativeDepartment.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\HR\AdministrativeDepartmentFolder.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\HR\BlankExcelTemplate.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\HR\GraduationSchool.cpp" /> <ClCompile Include="..\project\business\HR\GraduationSchoolWin.vx.cpp" /> <ClCompile Include="..\project\business\HR\ManpowerFile.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\HR\ManpowerFileWindow.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\Product.list.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> @@ -287,18 +292,23 @@ </ClCompile> <ClCompile Include="..\project\business\SO\delivery.base.maint.so.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\SO\maint.Document.SO3.v3.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\SO\paymentterm.base.maint.so.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\SO\Product.Select.SO.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\SO\select.item.so.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="..\project\business\Supplier.maint.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> diff --git a/jrj/project/printview/Maint.Template.PrintEx.cpp b/jrj/project/printview/Maint.Template.PrintEx.cpp new file mode 100644 index 0000000..7ec0627 --- /dev/null +++ b/jrj/project/printview/Maint.Template.PrintEx.cpp @@ -0,0 +1,107 @@ +class MaintTemplatePrintWin : public xframe + { + xcell cell; + xnode m_agentNode; //Agent Condition + string args; + + int SetAgent() + { + 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 SendCtrlCmd(xcontrol xc, string cmd) + { + win32::SendMessage(xc.GetId(),0x401,cmd,0); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(string comdid) + { + if(comdid.left(3) == "IK_") + { + string cmd = comdid.mid(3, comdid.length()); + SendCtrlCmd(GetControl("cell"),cmd); + return 1; + } + else if(comdid=="xmFileOpen") + { + cell.OpenFile(); + cell.Redraw(); + return 1; + } + else if(comdid=="xmFileSave") + { + cell.SaveFile(); + return 1; + } + else if(comdid=="xmFileSaveAs") + { + cell.SaveFileAs(); + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int param) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent("WM_SETFOCUS",OnSetFocus); + } + + int onload() + { + cell = GetControl("cell"); + SetAgent(); + + OnAttachEvent(); + + if(GetParam()) + { + args = GetParam(); + cell.openUrl("/sale/data/SysPrintTemplate/getdevxsl",args); + } + else + args =""; + + return 1; + } + + int onloaded() + { + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/printview/Template.Print.Dialog.cpp b/jrj/project/printview/Template.Print.Dialog.cpp new file mode 100644 index 0000000..a243a8b --- /dev/null +++ b/jrj/project/printview/Template.Print.Dialog.cpp @@ -0,0 +1,595 @@ +class TemplatePrintDialog : public responsewin +{ + xaserverarg arg_param; + string m_EntityName; + string m_EntityID; + string m_EntityNo; + string m_Dir; + string m_filePath; + string strNode; + xdwgrid dw_list; + xdwgrid dw_doclist; + xole ole_1; + bool bupdate; + + int OnHtml() + { + string s1="<catalog>"+ + " <book id='bk101'>"+ + " <author>Gambardella, Matthew</author>"+ + " <title>XML Developer's Guide</title>"+ + " <genre>Computer</genre>"+ + " <price>44.95</price>"+ + " <publish_date>2000-10-01</publish_date>"+ + " <description>An in-depth look at creating applications "+ + " with XML.</description>"+ + " </book>"+ + " <book id='bk102'>"+ + " <author>Ralls, Kim</author>"+ + " <title>Midnight Rain</title>"+ + " <genre>Fantasy</genre>"+ + " <price>5.95</price>"+ + " <publish_date>2000-12-16</publish_date>"+ + " <description>A former architect battles corporate zombies, "+ + " an evil sorceress, and her own childhood to become queen "+ + " of the world.</description>"+ + " </book>"+ + " </catalog>"; + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + x.LoadXml(s1); +//trace(x.GetXml()); + + //string s2="<?xml version='1.0'?>"+ + string s2= + "<xsl:stylesheet version='1.0'"+ + " xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >"+ + "<xsl:output method='xml' indent='yes'/>"+ + "<xsl:template match='catalog'>"+ + "<HTML>"+ + " <HEAD>"+ + " <TITLE>Books catalog - listing for Books.xml</TITLE>"+ + " </HEAD>"+ + " <BODY><FONT FACE='Verdana'>"+ + " <H3>My Books Catalog</H3>"+ + " <TABLE CELLPADDING='5' CELLSPACING='2'>"+ + " <xsl:for-each select='book'>"+ + " <TR>"+ + " <TD ALIGN='LEFT'><FONT SIZE='2'><B>ID:</B>  <xsl:value-of select='@id'/><BR/>"+ + " <B>Author:</B>  <xsl:value-of select='author'/><BR/>"+ + " <B>Title:</B>  <xsl:value-of select='title'/><BR/>"+ + " <B>Genre:</B>  <xsl:value-of select='genre'/><BR/>"+ + " <B>Price:</B>  <xsl:value-of select='price'/><BR/>"+ + " <B>Published on:</B>  <xsl:value-of select='publish_date'/><BR/>"+ + " <B>Description:</B>  <xsl:value-of select='description'/></FONT></TD>"+ + " </TR>"+ + " </xsl:for-each>"+ + "</TABLE>"+ + "</FONT>"+ + "</BODY>"+ + "</HTML>"+ + "</xsl:template>"+ + "</xsl:stylesheet>" ; + xml xsl = new xml; + xsl.setNativePointer(xml::CreateInstance()); + xsl.LoadXml(s2); +//trace(xsl.GetXml()); + + string strHtml = x.GetXmlDoc().transformNode(xsl.GetXmlDoc()); + //strHtml = str.mid(21,99999); + ole_1.LoadHtml(strHtml); + //html_1.SetContent(strHtml); + //alert(strHtml); + + return 0; + } + + int OnRetrieve() + { + string username = publiccode::GetUser().name; + if(username != "admin" && m_Dir != username ) + { + bupdate = false; + }else + { + bupdate = true; + } + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + xaserverarg arg = new xaserverarg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("Entity",m_EntityName); + arg.AddArg("Dir",m_Dir); + dw_list.Reset(); + if (url::get("/sale/data/SysPrintTemplate/listDialog",arg.GetString(),x) != 1) + { + trace(x.GetXmlDoc().text); + return -1; + }else + { + string s = x.GetXml(); + dw_list.Retrieve(x); + } + dw_list.Redraw(); + //dw_list.SetReadOnly(true); + if (dw_list.GetRowCount()>0) + dw_list.SelectRow(1,true); + return 1; + } + + int OnNewTempl() + { + OpenWindow("dev:xpage[Maint.Template.Print.vx]"); + return 1; + } + + int OnMaintTempl() + { + int row = dw_list.GetRow(); + if(row<0 || row>dw_list.GetRowCount()) + { + alert("请选择要维护的模板!"); + return 1; + } + else + { + msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); + string sguid = ele.selectSingleNode("ID").text; + string sTemplName = ele.selectSingleNode("TemplName").text; + //string sFile = m_filePath + sguid+".xsl"; + string sFile = m_filePath + ele.selectSingleNode("urlPath").text; + arg_param.AddArg("xsl",sFile); + arg_param.AddArg("return","cancel"); + + OpenWindow("dev:xpage[Maint.Template.Print.vx]",cast(arg_param.GetString() as int)); + CloseWindow(); + + } + return 1; + } + + int OnAddDir() + { + return 0; + } + int OnAddTempl() + { + if (m_Dir=="") + { + alert("请选择模板目录!"); + return 0; + } + string sguid = publiccode::GetGuid(); + string sname= sguid +".xsl"; + string suri= "rpttemplate"+"\\"+m_EntityName; //rpttemplate\SO + //suri = "supplier00"; + string ret = xaserver::UploadFile(suri, sname, this.GetHWND(),"",false); + if (ret == "-1") + { + alert("上传的文件没选择!"); + return 1; + } + else + { + xml x=new xml; + x.setNativePointer(xml::CreateInstance()); + xaserverarg args = new xaserverarg; + args.setNativePointer(args.CreateInstance()); + args.AddArg("sID",sguid); + args.AddArg("sEntity",m_EntityName); + args.AddArg("sDir",m_Dir); + args.AddArg("urlPath", sname); + //alert(m_Dir); + while(ret.find("\\",0)>=0) + ret = ret.mid(ret.find("\\",0) + 1,9999); + + args.AddArg("sTemplName",ret); + //trace(args.GetString()); + if (url::get("/sale/data/SysPrintTemplate/Save",args.GetString(),x) != 1) + { + trace("error:"+x.GetXml()); + alert("保存出错了!"); + return 1; + } + else + { + alert("上传模板成功!"); + OnRetrieve(); + } + } + return 1; + } + + int OnDelTempl() + { + + int row = dw_list.GetRow(); + if(row<0 || row>dw_list.GetRowCount()) + { + alert("请选择要删除的模板!"); + return 0; + } + else + { + if (win32::MessageBox(GetHWND(),"确定要删除选中的模板?","提示",1) == 2) + return 0; + msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); + string sguid = ele.selectSingleNode("ID").text; + xml x=new xml; + x.setNativePointer(xml::CreateInstance()); + xaserverarg args = new xaserverarg; + args.setNativePointer(args.CreateInstance()); + args.AddArg("sID",sguid); + if (url::get("/sale/data/SysPrintTemplate/Delete",args.GetString(),x) != 1) + { + trace("error:"+x.GetXml()); + alert("删除出错了!"); + return 0; + } + else + { + alert("删除成功!"); + OnRetrieve(); + } + } + + return 0; + } + + int OnDocListDoubleClicked(ref TNotifyEvent evt,int p) + { + int hCursor = xutil::SetCursorWait(); + OnOpenDocument(); + xutil::RestoreCursor(hCursor); + return 1; + } + + int OnDoubleClicked(ref TNotifyEvent evt,int p) + { + int hCursor = xutil::SetCursorWait(); + OnOk(); + xutil::RestoreCursor(hCursor); + return 1; + } + + int OnOpenDocument() + { + if(dw_doclist.GetRowCount() < 1) return 1; + string documentid = dw_doclist.GetRowElement(dw_doclist.GetRow()).getAttribute("guid"); + //string billid = dw_docList + arg_param.AddArg("DocumentID",documentid); + arg_param.AddArg("return","ok"); + arg_param.AddArg("action","open"); + CloseWindow(); + return 1; + } + + int OnOk() + { + int row = dw_list.GetRow(); + if(row<0 || row>dw_list.GetRowCount()) + { + alert("请选择要打印的模板!"); + return 1; + } + else + { + msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); + trace("\r\n---------------"); + trace(ele.xml); + + string sguid = ele.selectSingleNode("ID").text; + string pre = ""; + if(ele.selectSingleNode("TemplPre")) pre = ele.selectSingleNode("TemplPre").text; + string sTemplName = ele.selectSingleNode("TemplName").text; + //string sFile = m_filePath + sguid+".xsl"; + trace(sTemplName); + string sFile = m_filePath + ele.selectSingleNode("urlPath").text; + arg_param.AddArg("xsl",sFile); + arg_param.AddArg("return","ok"); + arg_param.AddArg("template-name",sTemplName); + arg_param.AddArg("template-guid",sguid); + arg_param.AddArg("template-pre",pre); + arg_param.AddArg("action","new"); + trace(arg_param.GetString()); + CloseWindow(); + /*xaserver::CreateDirectory("C:/Temp"); + int openRet = xaserver::DownLoadFile(GetServerUrl(),m_filePath+file,sTemplName,"C:/Temp/"+sTemplName); + if(openRet < 0) + { + alert("文件打开失败!"); + return 0; + } + + int GENERIC_READ = 0x80000000; + int GENERIC_WRITE = 0x40000000; + int FILE_SHARE_READ = 0x00000001; + int FILE_SHARE_WRITE = 0x00000002; + int OPEN_EXISTING = 3; + int FILE_ATTRIBUTE_ARCHIVE =0x00000020; + int hFile = xwin::CreateFile("C:/Temp/"+sTemplName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0); + if (hFile >0) + { + //int GMEM_MOVEABLE=0x0002; + //int GMEM_ZEROINIT=0x0040; + //int MEMSIZE; + //int hMemory = GlobalAlloc(GMEM_MOVEABLE|GMEM_ZEROINIT,MEMSIZE); + //int pMemory = GlobalLock(hMemory); + //int SizeReadWrite; + //xwin::ReadFile(hFile,pMemory,MEMSIZE - 1,SizeReadWrite,0); + int filesize = xwin::GetFileSize(hFile,0); + trace("filesize = %d",filesize); + string buffer = "".space(filesize+1); + int readsize = new int; + xwin::ReadFile(hFile,buffer,filesize,readsize,0); + trace(buffer); + xwin::CloseHandle(hFile); + //GlobalUnlock(pMemory); + //GlobalFree(hMemory); + } */ + /*openRet = xwin::ShellExecute(0,"open","C:/Temp/"+sTemplName,"","",5); + if(openRet < 32) + { + alert("文件打开失败2!"); + return 0; + }*/ + } + return 0; + } + + int OnSave() + { + dw_list.AcceptText(); + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + dw_list.DwUpdateAllToEx(x.GetXmlDoc()); + + xaserverarg arg = new xaserverarg; + arg.setNativePointer(xaserverarg::CreateInstance()); + arg.AddArg("content",x.GetXml()); + + if (url::get("/sale/data/SysPrintTemplate/updateinfo",arg.GetString(),x) != 1) + { + trace("error:"+x.GetXml()); + alert("保存出错了!"); + return 1; + } + else + { + dw_list.ResetUpdateStatus(); + alert("保存成功!"); + } + + return 1; + } + + int PreOnCmdDispatch(string comdid) + { + //返回0——不在执行以下代码;返回其他——执行以下代码。 + if(comdid.left(8) == "xmPanel:"){ + string no = comdid.mid(8, 99); + //int id = no.toInt(); + + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + x.LoadXml(strNode); + msxml::IXMLDOMDocument doc= x.GetXmlDoc(); + msxml::IXMLDOMElement e = doc.documentElement; + string slable =e.selectSingleNode("//xtoolbutton[@name='"+comdid+"']/@caption").text; + m_Dir = slable; + OnRetrieve(); + + return 1; + } + if (comdid=="xmAddDir") return OnAddDir(); + if (comdid=="xmAddTempl" && bupdate) return OnAddTempl(); + if (comdid=="xmDelTempl" && bupdate) return OnDelTempl(); + if (comdid=="xmMaintTempl" && bupdate) return OnMaintTempl(); + if (comdid=="xmNewTempl" && bupdate) return OnNewTempl(); + if (comdid=="xmHtml") return OnHtml(); + if (comdid=="xmOk") return OnOk(); + if (comdid=="xmSave") return OnSave(); + if(comdid=="xmOpen") return OnOpenDocument(); + else if (comdid=="xmCancel") + { + arg_param.AddArg("return","cancel"); + CloseWindow(); + return 1; + } + return 0; + } + + + int PostOnAttachEvent() + { + //AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged); + //AttachEvent("dw_list","DWV_CLICKED",OnClicked); + //AttachEvent("dw_list","DWV_RCLICKED",OnRClicked); + //AttachEvent("dw_list","DWV_ITEMCHANGED",OnItemChanged); + //AttachEvent("dw_list","DWV_CHILDCONTENT",OnChildContent); + AttachEvent("dw_doclist","DWV_DOUBLECLICKED",OnDocListDoubleClicked); + AttachEvent("dw_list","DWV_DOUBLECLICKED",OnDoubleClicked); + return 1; + } + + int SetAgent() + { + PUser puser = new PUser; + puser = publiccode::GetUser(); + string susername = puser.name; + if (susername !="admin") + { + string xfNodeAgentArea = "DirButton"; + xnode anode = GetAgentNode(xfNodeAgentArea); + msxml::IXMLDOMElement xframeElement = GetElement(); + string tools="<vbox name='DirButton' height='48' />"; + SetAgentNodeContent(anode, tools); + } + return 1; + } + + int CreateDir() + { + PUser puser = new PUser; + puser = publiccode::GetUser(); + string susername = puser.name; + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + xaserverarg arg = new xaserverarg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("EntityName",m_EntityName,""); + arg.AddArg("EntityID",m_EntityID,""); + arg.AddArg("susername",susername,""); // + if (url::get("/sale/data/SysPrintTemplate/Dir",arg.GetString(),x) != 1) + { + trace(x.GetXmlDoc().text); + return -1; + }else + { + string s = x.GetXml(); + } + msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().selectNodes("//Entity"); + int i; + int nlen = nlist.length; + string toolStr = "<vbox name='Dir'>"; + string deptName= publiccode::GetUser().deptname; + if(deptName=="跟单部" && m_EntityName=="GDN3"){ + for(i=2; i<nlen; i++) + { + msxml::IXMLDOMElement e1 = nlist.item(i); + string sDir1 = e1.selectSingleNode("@Dir").text; + string str1 = "<xtoolbutton image='15' caption='"+sDir1+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>"; + + toolStr += str1; + if (i==2) + m_Dir = sDir1; + } + }else if(deptName.find("业务")>=0 && m_EntityName=="GDN3" ) + { + for(i=1; i<2; i++) + { + msxml::IXMLDOMElement e2 = nlist.item(i); + string sDir2 = e2.selectSingleNode("@Dir").text; + string str2 = "<xtoolbutton image='15' caption='"+sDir2+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>"; + + toolStr += str2; + if (i==1) + m_Dir = sDir2; + } + for(i=4; i<nlen; i++) + { + msxml::IXMLDOMElement e3 = nlist.item(i); + string sDir3 = e3.selectSingleNode("@Dir").text; + string str3 = "<xtoolbutton image='15' caption='"+sDir3+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>"; + + toolStr += str3; + } + }else{ + for(i=0; i<nlen; i++) + { + msxml::IXMLDOMElement e = nlist.item(i); + string sDir = e.selectSingleNode("@Dir").text; + string str = "<xtoolbutton image='15' caption='"+sDir+"' height='24' name='xmPanel:"+i.toString()+"' style='background-color:none #ceecce none #ffffff'/>"; + + toolStr += str; + if (i==0) + m_Dir = sDir; + } + } + + toolStr += "</vbox>"; + strNode = toolStr; + //trace(toolStr); + xnode anode = GetAgentNode("Dir"); + xwin::SetAgentNodeContent(anode,toolStr) ; + + OnRetrieve(); + return 1; + } + + int OnInit() + { + SetAgent(); + dw_list = this.GetControl("dw_list"); + dw_list.openUrl("/sale/view/view.base/template/PrintView/listDialog"); + dw_list.SetReadOnly(true); + dw_list.SetSelectionMode(4); + dw_list.SetColumnState("ID",false); + + dw_doclist = GetControl("dw_doclist"); + dw_doclist.openUrl("/sale/view/GDN/template/doclist"); + + string sUrl = GetServerUrl(); + sUrl = sUrl.mid(0, sUrl.length() - 19); + m_filePath = "/business/rpttemplate"; + arg_param = new xaserverarg; + if (GetParam()) + { + int p = GetParam(); + arg_param.setNativePointer(p); + m_EntityName = arg_param.GetArgString("EntityName"); + m_EntityID = arg_param.GetArgString("EntityID"); + m_EntityNo = arg_param.GetArgString("EntityNo"); + + xaserverarg arg = new xaserverarg; + arg.setNativePointer(xaserverarg::CreateInstance()); + arg.AddArg("EntityName", m_EntityName); + arg.AddArg("EntityID", m_EntityID); + arg.AddArg("EntityNo", m_EntityNo); + xml x =new xml; + x.setNativePointer(xml::CreateInstance()); + if(url::get("/sale/data/DocumentList3/bill/doclist", arg.GetString(),x)!=1) + { + string error = x.GetXmlDoc().text; + trace(error); + }else + { + dw_doclist.Retrieve(x); + dw_doclist.SetReadOnly(true); + } + } + else + { + arg_param.setNativePointer(arg_param.CreateInstance()); + m_EntityName = "SO"; + m_EntityID ="00000000-0000-0000-0000-000000000000"; + } + + m_Dir = ""; + m_filePath = m_filePath + "/" + m_EntityName+"/"; + //trace(m_filePath); + + CreateDir(); + + return 1; + } + + int onload() + { + responsewin::onload(); + + /*if (GetParam()) + { + string action = arg_param.GetArgString("action"); + if(action=="open" || (action=="" && dw_doclist.GetRowCount() > 0)) + SwitchLayer("sheet2","frame"); + } + */ + + return 1; + } + + int onloaded() + { + //responsewin::onload(); + + /*if (GetParam()) + { + string action = arg_param.GetArgString("action"); + if(action=="open" || (action=="" && dw_doclist.GetRowCount() > 0)) + SwitchLayer("sheet2","frame"); + } + */ + return 1; + } +}; \ No newline at end of file diff --git a/jrj/project/printview/Template.Print.ViewEx.cpp b/jrj/project/printview/Template.Print.ViewEx.cpp new file mode 100644 index 0000000..da0560a --- /dev/null +++ b/jrj/project/printview/Template.Print.ViewEx.cpp @@ -0,0 +1,1217 @@ +namespace _excel for ole "Excel.Application,{00020813-0000-0000-C000-000000000046}"; +namespace _mshtml for ole "MSHtml,{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}"; + +class cexcel : public xnative native from "XControl.dll" +{ + void Release(int t) alias "?Release@CExcelApplication@@QAEXPAV1@@Z"; + static int CreateInstance() alias "?CreateInstance@CExcelApplication@@SAPAV1@XZ"; + void put_Visible(bool t) alias "?put_Visible@CExcelApplication@@QAEXH@Z"; + bool get_Visible() alias "?get_Visible@CExcelApplication@@QAEHXZ"; + void OpenDocument(const string filename) alias "?OpenDocument@CExcelApplication@@QAEXQA_W@Z"; + void TransShape() alias "?TransShape@CExcelApplication@@QAEXXZ"; + void SaveToFile(string filename) alias "?SaveToFile@CExcelApplication@@QAEXQA_W@Z"; + void Quit() alias "?Quit@CExcelApplication@@QAEXXZ"; +}; + +struct MYOPENFILENAMEW +{ + unsigned int lStructSize; + unsigned int hwndOwner; + unsigned int hInstance; + string lpstrFilter; + + string lpstrCustomFilter; + unsigned int nMaxCustFilter; + unsigned int nFilterIndex; + string lpstrFile; + + unsigned int nMaxFile; + string lpstrFileTitle; + unsigned int nMaxFileTitle; + string lpstrInitialDir; + + string lpstrTitle; + unsigned int Flags; + unsigned short nFileOffset; + unsigned short nFileExtension; + string lpstrDefExt; + + unsigned int lCustData; + unsigned int lpfnHook; + string lpTemplateName; + + //_WIN32_WINNT >= 0x0500 + unsigned int pvReserved; + unsigned int dwReserved; + unsigned int FlagsEx; + // (_WIN32_WINNT >= 0x0500) +}; + +class TemplatePrintViewEx : public frame +{ + xole ole_print; + xcell cell; + string m_EntityName; + string m_EntityID; + string m_EntityNo; + string m_strHtml; + string m_spath; + bool updated; + + string htmlStr; + cexcel excel; + bool editing; + + string billName ; + string billID ; + string billPre; + + string m_DocumentID; + xml m_dataset; + //bool showgrid; + bool PaperPrint; + + static stdcall int GetModuleFileName(int hModule ,string lpFileName ,int nSize ) native from "kernel32.dll" alias "GetModuleFileNameW"; + static stdcall int PathRemoveFileSpec(string lpFileName ) native from "shlwapi.dll" alias "PathRemoveFileSpecW"; + static stdcall int DeleteFile(string lpFileName) native from "kernel32.dll" alias "DeleteFileW"; + static stdcall bool GetSaveFileName(ref MYOPENFILENAMEW)native from "comdlg32.dll" alias "GetSaveFileNameW"; + + string GetModulePath() + { + string str =""; + str = str.space(255); + GetModuleFileName(0,str,250); + PathRemoveFileSpec(str); + return str; + } + string GetModuleTmpPath() + { + string str =""; + str = str.space(255); + GetModuleFileName(0,str,250); + PathRemoveFileSpec(str); + string tmp = str + "\\Temp"; + xaserver::CreateDirectory(tmp); + return tmp; + } + + string GetSaveFileName(string initFileName, string filter, string ext) + { + char[] szFileName = new char[255] ; + char[] szPath = new char[255]; + szFileName[0] = 0; + szPath[0] = 0; + + if(initFileName !="") + { + int len = initFileName.length(); + char[] tmp = initFileName; + for(int i=0; i<len+1;i++) + { + //szFileName[i] = tmp[i]; + szPath[i] = tmp[i]; + } + } + + int nFilterIndex = 1; + ref MYOPENFILENAMEW ofn = new MYOPENFILENAMEW; + + ofn.lStructSize = 88;//sizeof(ofn); + ofn.hwndOwner = 0; + ofn.hInstance = 0; + ofn.lpstrFilter = filter; + //"JPEG 文件(*.jpg)\0*.jpg;*.jpeg;*.png;*.gif;*.bmp\0全部文件(*.*)\0*.*\0"; + ofn.lpstrCustomFilter = 0; + ofn.nMaxCustFilter = 0; + ofn.nFilterIndex = nFilterIndex; + ofn.lpstrFile = szPath; + ofn.nMaxFile = 255; + ofn.lpstrFileTitle = szFileName; + ofn.nMaxFileTitle = 255; + ofn.lpstrTitle = "请指定文件名"; + ofn.lpstrDefExt = ext; + //"jpg"; + ofn.lpstrInitialDir = 0; + ofn.Flags = 0x00000010/*OFN_SHOWHELP*/ | 0x00001000/*OFN_FILEMUSTEXIST*/; + ofn.lCustData = 0; + ofn.lpfnHook = 0; + ofn.lpTemplateName = 0; + + //debugbreak(); + if(GetSaveFileName(ofn)) + { + delete ofn; + return szPath; + } + else + { + return ""; + } + } + + int OnExport() + { + string pre = billPre; + if(pre=="") + { + pre = m_EntityName; + if(m_EntityName=="SaleOrder") pre="PI"; + if(m_EntityName=="GDN3")pre="INV"; + } + string file1 = GetSaveFileName(pre+m_EntityNo+".xlsx", + "Excel1文件(*.xlsx)\0*.xlsx;*.xls\0Excel97文件(*.xls)\0*.xls\0PDF文件(*.pdf)\0*.pdf\0", + "xlsx"); + if(file1 =="") return 1; + + if(win32::PathFileExists(file1)) + { + int res = win32::MessageBox(this.GetHWND(), "文件已经存在,是否覆盖?","提示",4); + if(res != 6) return 1; + } + + trace("\r\n link excel"); + excel = new cexcel; + int hexcel = cexcel::CreateInstance(); + excel.setNativePointer(hexcel); + if(hexcel == 0) + { + alert("不能连接Excel"); + return 1; + } + + string gid = publiccode::GetGuid(); + string filename= pre+m_EntityNo+"_.htm"; + xutil::SaveToFile(GetModuleTmpPath() + "\\"+ filename, htmlStr,"","",""); + trace("\r\n excel to open"); + excel .OpenDocument(GetModuleTmpPath() + "\\"+ filename); + trace("\r\n trans shape"); + //excel .put_Visible(true); + excel.TransShape(); + trace("\r\n save to tmp excel file"); + if(file1.find(".xls")) + { + if(win32::PathFileExists(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls")) + DeleteFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls"); + excel.SaveToFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls"); + //alert(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xls"); + } + else + { + if(win32::PathFileExists(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx")) + DeleteFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx"); + excel.SaveToFile(GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx"); + } + + trace("\r\n save to excel file"); + if(win32::PathFileExists(file1)) //GetModuleTmpPath() + "\\"+ pre+m_EntityNo+"_.xlsx")) + DeleteFile(file1); + excel.SaveToFile(file1); + + excel.Quit(); + excel.Release(excel.ptr_native_); + return 1; + } + + int OntoExcel() //转为Excel + { + excel = new cexcel; + excel.setNativePointer(cexcel::CreateInstance()); + + string gid = publiccode::GetGuid(); + string pre = m_EntityName; + if(m_EntityName=="SaleOrder") pre="PI"; + if(m_EntityName=="GDN3")pre="INV"; + string filename= pre+m_EntityNo+".htm"; + string filenameex= pre+m_EntityNo+".xlsx"; + xutil::SaveToFile(GetModuleTmpPath() + "\\"+ filename, htmlStr,"","",""); + excel .OpenDocument(GetModuleTmpPath() + "\\"+ filename); + //excel.put_Visible(true); + excel.TransShape(); + if(win32::PathFileExists(GetModuleTmpPath() + "\\"+ filenameex)) + DeleteFile(GetModuleTmpPath() + "\\"+ filenameex); + excel.SaveToFile(GetModuleTmpPath() + "\\"+ filenameex); + excel.put_Visible(true); + + excel.Release(excel.ptr_native_); + return 1; + } + + string getfilePath() + { + string path=GetModulePath()+"\\resource\\image"; + string filename="contract.jpg"; + filename="sign.png"; + filename="jrj_maersk.png"; + filename="HomeDecorSign.png"; + xaserver::DownLoadFile(GetServerUrl(),"/business/rpttemplate/"+filename,"",path+"\\"+filename); + filename="HomeDecorLogo.jpg"; + xaserver::DownLoadFile(GetServerUrl(),"/business/rpttemplate/"+filename,"",path+"\\"+filename); + return path; + } + + string replaceInnerElement(string html) + { + string str = html; + if(str.find("[$element:")<0) return str; + + int len = 0; + int pos = 0; + int pos1 = 0; + string pre=""; + string left=""; + string right=""; + string tag=""; + + len = "[$element:".length(); + while(true) + { + pos = str.find("[$element:"); + if(pos < 0) break; + left = str.left(pos); + right = str.mid(pos+ len,999999); + + pos1 = right.find("]"); + if(pos1>=0) + { + tag = right.left(pos1); + if(tag.right(1)=="$") tag=tag.left(tag.length() - 1); + pre = pre + left + "<" + tag +">"; + str = right.mid(pos1+ 1,999999); + }else + { + pre = pre + left+"<"; + str = right; + } + } + + str = pre + str; + pre = ""; + len = "[/$element:".length(); + while(true) + { + pos = str.find("[/$element:"); + if(pos < 0) break; + left = str.left(pos); + right = str.mid(pos+ len,999999); + pos1 = right.find("]"); + if(pos1>=0) + { + tag = right.left(pos1); + if(tag.right(1)=="$") tag=tag.left(tag.length() - 1); + pre = pre + left + "</" + tag +">"; + str = right.mid(pos1+ 1,999999); + }else + { + pre = pre + left+"</"; + str = right; + } + } + str = pre + str; + return str; + } + + string adjustXsl(string str,string localPath) + { + //if(str.find("%")>=0) str = str.replace("%",""); + if(str.find("[$path]/rpttemplate")>=0) str = str.replace("[$path]/rpttemplate",localPath); + str = replaceInnerElement(str); + return str; + } + + string DownLoadSKUNoPic(string SKUNo,string CustomerID="",string CustomerItemNo="") + { + + if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo); + + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + xaserverarg arg = new xaserverarg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("SKUNo",SKUNo); + + string src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; + if(CustomerID !="") + { + arg.AddArg("CustomerID",CustomerID); + arg.AddArg("CustomerItemNo",CustomerItemNo); + src ="/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo"; + } + //trace("SKUNo="+SKUNo);//要有展示图片查询条件内必定要skuno + if(url::get(src,arg.GetString(),x)!=1) + { + trace("error for download skuno pic!"); + return ""; + } + + string spath = ""; + string path =GetModuleTmpPath(); + string ext = "jpg"; + if(x.GetXmlDoc().selectSingleNode("//FileExt[1]")) + { + ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text; + }else if(CustomerID !="") + { + src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; + if(url::get(src,arg.GetString(),x)!=1) + { + trace("error for download skuno pic!"); + return ""; + } + if(x.GetXmlDoc().selectSingleNode("//FileExt[1]")) + ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text; + } + + string filename = SKUNo + "." + ext; + if(x.GetXmlDoc().selectSingleNode("//PicPath[1]")) + spath = x.GetXmlDoc().selectSingleNode("//PicPath[1]").text; + if(spath != "") + { + xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename); + } + return "file://"+ path+"/"+filename; + } + + string DownLoadSKUNoPic(string SKUNo,string CustomerID="",string CustomerItemNo="") + { + + if(SKUNo.length()>20) return DownLoadPaperPic(SKUNo); + + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + xaserverarg arg = new xaserverarg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("SKUNo",SKUNo); + + string src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; + if(CustomerID !="") + { + arg.AddArg("CustomerID",CustomerID); + arg.AddArg("CustomerItemNo",CustomerItemNo); + src ="/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKUNo"; + } + //trace("SKUNo="+SKUNo);//要有展示图片查询条件内必定要skuno + if(url::get(src,arg.GetString(),x)!=1) + { + trace("error for download skuno pic!"); + return ""; + } + + string spath = ""; + string path =GetModuleTmpPath(); + string ext = "jpg"; + if(x.GetXmlDoc().selectSingleNode("//FileExt[1]")) + { + ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text; + }else if(CustomerID !="") + { + src ="/sale/data/ProductLibrary3/pref/picture/imagelistSKUNo"; + if(url::get(src,arg.GetString(),x)!=1) + { + trace("error for download skuno pic!"); + return ""; + } + if(x.GetXmlDoc().selectSingleNode("//FileExt[1]")) + ext = x.GetXmlDoc().selectSingleNode("//FileExt[1]").text; + } + + string filename = SKUNo + "." + ext; + if(x.GetXmlDoc().selectSingleNode("//PicPath[1]")) + spath = x.GetXmlDoc().selectSingleNode("//PicPath[1]").text; + if(spath != "") + { + xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename); + } + return "file://"+ path+"/"+filename; + } + + string GetImageUrl(string id) + { + xml xp=new xml; + xp.setNativePointer(xml::CreateInstance()); + xaserverarg arg_pic=new xaserverarg; + arg_pic.setNativePointer(arg_pic.CreateInstance()); + arg_pic.AddArg("id",id); + + string res = "/sale/data/productlibrary3/image/url"; + if(url::get(res,arg_pic.GetString(),xp)!=1) + { + xp.GetXml(); + return 1; + }else + { + string path = xp.GetXmlDoc().text; + if(path !="") return path; + } + + return "/business/products/chanpin/"+id.left(2)+"/"+ id+".jpg"; + } + + string DownLoadPaperPic(string guid) + { + + string path =GetModuleTmpPath(); + string ext = "jpg"; + string filename = guid + "." + ext; + string spath = GetImageUrl(guid); + //alert(spath); + xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename); + return "file://"+ path+"/"+filename; + } + + string DownLoadPaperPic1(string guid) + { + string path =GetModuleTmpPath(); + string ext = "jpg"; + string filename = guid + "." + ext; + string str = guid.mid(0,2); + string spath = "/business/products/chanpin/"+str+"/"+guid+".jpg"; + xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename); + return "file://"+ path+"/"+filename; + } + + string DownLoadUrlPic(string src) + { + string guid = publiccode::GetGuid(); + string path =GetModuleTmpPath(); + string ext = "jpg"; + string filename = guid + "." + ext; + string spath = src; + xaserver::DownLoadFile(GetServerUrl(),spath,"",path+"/"+filename); + return "file://"+ path+"/"+filename; + } + + int OnHtml(xaserverarg arg) + { + int hCursor = xutil::SetCursorWait(); + + string sEntityName = arg.GetArgString("EntityName"); + string sEntityID = arg.GetArgString("EntityID"); + string dataUrl = arg.GetArgString("DataUrl"); + if(dataUrl=="") + dataUrl = "/sale/data/"+sEntityName+"/print/dataset"; + else if(dataUrl.left(1)!="/") + dataUrl = "/sale/data/"+sEntityName+ "/"+ dataUrl; + if(!m_dataset) + { + xml x0 = new xml; + x0.setNativePointer(xml::CreateInstance()); + if (url::get(dataUrl,arg.GetString(),x0) != 1) + { + alert("数据集出错了!"); + return 0; + } + trace(x0.GetXml()); + m_dataset = x0; + } + + string sPath; + sPath = getfilePath(); + arg.AddArg("sPath",sPath); + m_spath = sPath; + + xml xsl = new xml; + xsl.setNativePointer(xml::CreateInstance()); + if (url::get("/sale/data/SysPrintTemplate/getxsl",arg.GetString(),xsl) != 1) + { + alert("数据模板错误!"); + return 0; + } + + string xslStr = xsl.GetXml(); + + xslStr = adjustXsl(xslStr,sPath); + xsl.LoadXml(xslStr); + + //trace(m_dataset.GetXml()); + trace("\r\n--------\r\n"+xslStr); + + m_strHtml = m_dataset.GetXmlDoc().transformNode(xsl.GetXmlDoc()); + string aspace = m_strHtml.replace("[空]"," ",0); + aspace = aspace.replace("[line]","<br/>",0); + string scontent = aspace.replace("<?xml version=\"1.0\"?>","",0); + + string head =""; + string tail = scontent; + + int pos = tail.find("src=\"item-picture:"); + while(pos > 0) + { + int spos = pos+"src=\"item-picture:".length(); + int pos1 = tail.find("\"",spos+1); + string skuno = tail.mid(spos,pos1 - spos ).trim(); + string CustomerID=""; + string CustomerItemNo=""; + if(skuno.find(",")>0) + { + CustomerID = skuno.left(skuno.find(",")).trim(); + skuno = skuno.mid(skuno.find(",")+1,256).trim(); + } + if(skuno.find(",")>0) + { + CustomerItemNo = skuno.left(skuno.find(",")).trim(); + skuno = skuno.mid(skuno.find(",")+1,256).trim(); + } + string src = DownLoadSKUNoPic(skuno,CustomerID,CustomerItemNo); + head += tail.left(pos) + "src=\"" + src; + tail = tail.mid(pos1,999999999); + pos = tail.find("src=\"item-picture:"); + } + scontent = head + tail; + + head =""; + tail = scontent; + int position = tail.find("src=\"paper-picture:"); + while(position > 0) + { + int sposition = position+"src=\"paper-picture:".length(); + int position1 = tail.find("\"",sposition+1); + string guid = tail.mid(sposition,position1 - sposition ).trim(); + string src2 = DownLoadPaperPic(guid); + head += tail.left(position) + "src=\"" + src2; + tail = tail.mid(position1,999999999); + position = tail.find("src=\"paper-picture:"); + } + scontent = head + tail; + + head =""; + tail = scontent; + position = tail.find("src=\"src-picture:"); + while(position > 0) + { + sposition = position+"src=\"src-picture:".length(); + position1 = tail.find("\"",sposition+1); + guid = tail.mid(sposition,position1 - sposition ).trim(); + src2 = DownLoadUrlPic(guid); + head += tail.left(position) + "src=\"" + src2; + tail = tail.mid(position1,999999999); + position = tail.find("src=\"src-picture:"); + } + scontent = head + tail; + + scontent = adjustXsl(scontent,sPath); + htmlStr = scontent; + ole_print.LoadHtml(scontent); + + xml x1 = new xml; + x1.setNativePointer(xml ::CreateInstance()); + //string xcontent = m_strHtml.replace(" ","[空]",0); + string xcontent = m_strHtml.replace("[空]"," ",0); + int pos0 = xcontent.find("<xml"); + int pos2 = xcontent.find("</xml>"); + if(pos0>=0) + { + string str = xcontent.left(pos0)+ xcontent.mid(pos2+6,9999999); + xcontent = str; + } + x1.LoadXml(xcontent); + if(x1.GetXmlDoc()) + { + /*if(!showgrid) + { + SendCtrlCmd(cell,"xmFormatShowGrid"); + showgrid = true; + }*/ + cell.LoadTemplate(x1.GetXmlDoc()); + cell.Redraw(); + } + + xutil::RestoreCursor(hCursor); + updateHtml(); + return 1; + } + + int updateHtml() + { + _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument(); + _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName("tr"); + _mshtml::IHTMLElementCollection rows2 = doc.getElementsByTagName("td"); + int len = rows.length; + int len2 = rows2.length; + for(int i=0; i < len - 1;i++) + { + _mshtml::IHTMLElement e = rows.item(i,i); + e.style.setAttribute("height",e.offsetHeight,0); + e.Release(); + } + for( i=0; i < len2 - 1;i++) + { + _mshtml::IHTMLElement e2 = rows2.item(i,i); + e2.style.setAttribute("width",e.offsetWidth,0); + e2.Release(); + } + rows.Release(); + doc.release(); + htmlStr = doc.documentElement.outerHtml; + return 1; + } + + int OnOpenDocument() + { + if(GetParam()) + { + xaserverarg arg = new xaserverarg; + arg.setNativePointer(GetParam()); + int p = arg.ptr_native_; + arg.AddArg("action","open"); + arg.AddArg("DocumentID",""); + arg.AddArg("ok",""); + openUrl("/sale/view/view.dlg/xpage/Template/PrintDialog", p); + string ret = arg.GetArgString("return"); + string action = arg.GetArgString("action"); + if (ret =="ok") + { + if(action =="open") + { + m_DocumentID = arg.GetArgString("DocumentID"); + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + string prestr = m_DocumentID.mid(0,2); + prestr = prestr.upper(); + xaserver::LoadUrl(GetServerUrl(),"/business/data/bill/"+prestr+"/"+ m_DocumentID+".jpg","",x); + if(x.GetXml()!="") + { + if(x.GetXmlDoc()) + { + /*if(!showgrid) + { + SendCtrlCmd(cell,"xmFormatShowGrid"); + showgrid = true; + }*/ + cell.LoadTemplate(x.GetXmlDoc()); + cell.Redraw(); + } + ole_print.LoadHtml(x.GetXml()); + }else + { + ole_print.LoadHtml("<html><body>未找到对应的文档</body></html>"); + //cell.LoadHtml("<html><body>未找到对应的文档</body></html>"); + } + } + else + { + string templateName = arg.GetArgString("template-name"); + win32::SetWindowText(GetHWND(),templateName); + billName = templateName; + billPre = arg.GetArgString("template-pre"); + billID = arg.GetArgString("template-guid"); + m_EntityID = arg.GetArgString("EntityID"); + m_EntityNo = arg.GetArgString("EntityNo"); + m_EntityName = arg.GetArgString("EntityName"); + m_DocumentID = ""; + + OnHtml(arg); + + } + } + } + return 1; + } + + int OnPrintDialog() + { + if(GetParam()) + { + xaserverarg arg = new xaserverarg; + arg.setNativePointer(GetParam()); + int p = arg.ptr_native_; + arg.AddArg("ok",""); + openUrl("/sale/view/view.dlg/xpage/Template/PrintDialog", p); + string ret = arg.GetArgString("return"); + string action = arg.GetArgString("action"); + if (ret =="ok") + { + updated = false; + if(action =="open") + { + m_DocumentID = arg.GetArgString("DocumentID"); + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + string prestr = m_DocumentID.mid(0,2); + prestr = prestr.upper(); + xaserver::LoadUrl(GetServerUrl(),"/business/data/bill/"+prestr+"/"+ m_DocumentID+".jpg","",x); + if(x.GetXml()!="") + { + + string content = ""; + if(x.GetXmlDoc().documentElement.tagName=="Bill") + { + content = x.GetXmlDoc().documentElement.text; + content = content.replace("[空]"," ",0); + ole_print.LoadHtml(content); + }else + { + if(x.GetXmlDoc()) + { + /*if(!showgrid) + { + SendCtrlCmd(cell,"xmFormatShowGrid"); + showgrid = true; + }*/ + xml x1 = new xml; + x1.setNativePointer(xml::CreateInstance()); + string content1 = x.GetXml(); + content1 = content1.replace("[空]"," ",0); + //trace(content1); + x1.LoadXml(content1); + cell.LoadTemplate(x1.GetXmlDoc()); + cell.Redraw(); + } + content = x.GetXml(); + content = content.replace("[空]"," ",0); + ole_print.LoadHtml(content); + } + }else + { + ole_print.LoadHtml("<html><body>未找到对应的文档</body></html>"); + //cell.LoadHtml("<html><body>未找到对应的文档</body></html>"); + } + } + else + { + string templateName = arg.GetArgString("template-name"); + win32::SetWindowText(GetHWND(),templateName); + billName = templateName; + billPre = arg.GetArgString("template-pre"); + billID = arg.GetArgString("template-guid"); + m_EntityID = arg.GetArgString("EntityID"); + m_EntityNo = arg.GetArgString("EntityNo"); + m_EntityName = arg.GetArgString("EntityName"); + m_DocumentID = ""; + OnHtml(arg); + } + } + } + return 1; + } + + int SetAgent() + { + string xfNodeAgentArea = "agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + msxml::IXMLDOMElement xframeElement = GetElement(); + msxml::IXMLDOMNode agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); + + msxml::IXMLDOMNodeList nlist; + int index; + int nlen; + msxml::IXMLDOMElement ele; + string tools="<hbox class=''>"; + if(agent) + { + nlist = agent.SelectNodes(".//xtoolbutton"); + nlen = nlist.length; + for(index=0;index<nlen;index++) + { + ele = nlist.item(index); + string name = ele.selectSingleNode("@name").text; + string label = ele.selectSingleNode("@caption").text; + string image; + string src = ""; + if(ele.selectSingleNode("@image")) + image = ele.selectSingleNode("@image").text; + else + image = "0 22"; + + if(ele.selectSingleNode("@src")) + src = ele.selectSingleNode("@src").text; + + int strLen = label.length(); + int width = 60 + (strLen - 2) * 10; + string tool; + if (src != "") + tool = "<xtoolbutton src='"+src+"' caption='"+label+"' name='"+name+"' height='28' class1='action'/>"; + else + tool = "<xtoolbutton image='"+image+"' caption='"+label+"' name='"+name+"' height='28' class1='action'/>"; + tools += tool; + } + } + tools +="</hbox>"; + SetAgentNodeContent(anode, tools); + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(ref TNotifyEvent evt,int p) + { + //重置工具条 + SetAgent(); + return 1; + } + + int OnEdit() + { + editing = !editing; + if(editing) + { + SwitchLayer("cellview","viewclient"); + }else + { + htmlStr = cell.GetHtml(); + //string content = htmlStr; + htmlStr = htmlStr.replace("[空]"," ",0); + htmlStr = htmlStr.replace("[line]","<br/>",0); + ole_print.LoadHtml(htmlStr); + SwitchLayer("oleview","viewclient"); + } + return 1; + } + + int OnSaveAs() //另存为... + { + ole_print.ExecWB(4,2); + return 1; + } + int OnPrint() //打印 + { + ole_print.ExecWB(6, 0); + return 1; + } + int PrintPaper() //打印 + { + //ole_print.GetHtmlDocument(); + //return 1; + _mshtml::IHTMLDocument3 doc = ole_print.GetHtmlDocument(); + _mshtml::IHTMLElementCollection rows = doc.getElementsByTagName("tr"); + + int len = rows.length; + for(int i=0; i < len - 1;i++) + { + //oleobject v = rows.item(i,i); + _mshtml::IHTMLElement e = rows.item(i,i); + _mshtml::IHTMLElement2 e1 = e; + //e.setAttribute("height",e1.clientHeight,0); + e.setAttribute("height",300,0); + e.Release(); + e1.Release(); + } + rows.Release(); + doc.Release(); + /* + if(PaperPrint == false) + { + ole_print.GetHtmlDocument().body.style.visibility="hidden"; + PaperPrint = true; + } + else + { + ole_print.GetHtmlDocument().body.style.visibility="visible"; + PaperPrint = false; + } + */ + return 1; + } + int OnPrintPreview() //打印预览 + { + ole_print.ExecWB(7, 0); + return 1; + } + int OnPageSetup() //页面设置 + { + ole_print.ExecWB(8, 0); + return 1; + } + int OnPortrait() //纵向 + { + alert("Portrait"); + return 1; + } + int OnLandscape() //横向 + { + return 1; + } + int OnPageProperty() //查看页面属性 + { + ole_print.ExecWB(10, 1); + return 1; + } + int OnCustom() //自定义:? 25-400% + { + return 1; + } + + int OnAddToDocument() + { + string content = htmlStr; + if(editing)content = cell.GetHtml(); + string guid = publiccode::GetGuid(); + + string prestr = guid.mid(0,2); + prestr = prestr.upper(); + + + content = content.replace("gb2312","utf-16",0); + content = content.replace(" ","[空]",0); + content = content.replace("&","",0); + + xml x0 = new xml; + x0.setNativePointer(xml::CreateInstance()); + x0.LoadXml("<Bill/>"); + x0.GetXmlDoc().documentElement.text = content; + content = x0.GetXml(); + + int ret= xaserver::UploadData("bill"+prestr, guid+".jpg", content); + if(ret < 0) trace("error upload"); + + string ls_xml ="<DocumentList guid='"+guid+"' update.modify='1' update.new='1'>"; + ls_xml += "<EntityName>"+ m_EntityName + "</EntityName>"; + ls_xml += "<EntityID>"+ m_EntityID + "</EntityID>"; + ls_xml += "<EntityNo>"+ m_EntityNo + "</EntityNo>"; + ls_xml += "<BillID>"+ billID + "</BillID>"; + ls_xml += "<BillName>"+ billName + "</BillName>"; + ls_xml += "</DocumentList>"; + + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + x.LoadXml(ls_xml); + xaserverarg arg = new xaserverarg; + arg.setNativePointer(xaserverarg::CreateInstance()); + arg.AddArg("content",x.GetXml()); + + if(url::get("/sale/data/DocumentList3/bill/update", arg.GetString(),x)!=1) + { + string error = x.GetXmlDoc().text; + alert("err:"+error); + return 1; + } + string str = x.GetXmlDoc().documentElement.getAttribute("text"); + if(str == "true") + { + alert("保存成功!"); + updated = false; + }else + { + alert("保存失败!"); + } + + return 1; + } + + int SendCtrlCmd(xcontrol xc, string cmd) + { + win32::SendMessage(xc.GetId(),0x401,cmd,0); + return 1; + } + + int OnRefreshData() + { + xaserverarg arg = new xaserverarg; + arg.setNativePointer(GetParam()); + string templateName = arg.GetArgString("template-name"); + win32::SetWindowText(GetHWND(),templateName); + OnHtml(arg); + billName = templateName; + billPre = arg.GetArgString("template-pre"); + billID = arg.GetArgString("template-guid"); + m_EntityID = arg.GetArgString("EntityID"); + m_EntityNo = arg.GetArgString("EntityNo"); + m_EntityName = arg.GetArgString("EntityName"); + m_DocumentID = ""; + return 1; + } + + int OnCmdDispatch(string comdid) + { + if(comdid=="xmSort") + { + OpenWindow("dev:xpage[DataSort.dialog.vx]",cast(m_dataset as int)); + return 1; + } + if(comdid=="print:PrintImmediate") + { + updated = true; + return OnPrint(); + } + if(comdid=="print:PrintPaper") { + updated = true; + return PrintPaper(); + } + if(comdid=="print:PrintPreview") { + updated = true; + return OnPrintPreview(); + } + if(comdid=="print:Portrait") { + updated = true; + return OnPortrait(); + } + if(comdid=="print:Landscape") { + updated = true; + return OnLandscape(); + } + if(comdid=="print:PageSetup") { + updated = true; + return OnPageSetup(); + } + if(comdid=="print:Custom") { + updated = true; + return OnCustom(); + } + if(comdid=="print:PrintDialog") + { + if(updated) + { + int res = win32::MessageBox(this.GetHWND(), "单据已制作,是否保存?","提示",4); + if(res == 6)OnCmdDispatch("print:AddToDocumentList"); + } + if(GetParam()) + { + xaserverarg arg1 = new xaserverarg; + arg1.setNativePointer(GetParam()); + arg1.AddArg("action","new"); + OnPrintDialog(); + arg1.AddArg("action",""); + } + return 1; + } + if(comdid.find("print:toExcel",0)>=0) { + updated = true; + return OntoExcel(); + } + if(comdid.find("print:Export",0)>=0) { + updated = true; + return OnExport(); + } + if(comdid.find("print:SaveAs",0)>=0) return OnSaveAs(); + if(comdid.find("print:Edit",0)>=0) { + updated = true; + return OnEdit(); + } + if(comdid.find("action:Close",0)>=0) return CloseWindow(); + if(comdid=="print:OpenDocument") return OnOpenDocument(); + if(comdid=="print:AddToDocumentList") return OnAddToDocument(); + if(comdid.find("action:",0)>=0) return ProcessFlowAction(comdid, 1); + + if(comdid.left(3) == "xmSort") + { + //string str = + return 1; + } + + if(comdid.left(3) == "IK_") + { + string cmd = comdid.mid(3, comdid.length()); + SendCtrlCmd(cell,cmd); + return 1; + } + if(comdid=="print:MaintTemplate") + { + OpenWindow("dev:xpage[Maint.Template.Print.vx]"); + return 1; + } + if(comdid == "print:RefreshData"){ + return OnRefreshData(); + } + + if(comdid == "xxx") + { + ole_print.ExecWB(27,0); + return 1; + alert("xxx"); + xml x1 = new xml; + x1.setNativePointer(xml::CreateInstance()); + xaserver::ExecXQuery(GetServerUrl(), "[xsl.getdevobj.xq]","<args/>",x1); + } + + if(comdid == "xxx") + { + xml x = new xml; + x.setNativePointer(xml::CreateInstance()); + xaserverarg arg = new xaserverarg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("strHtml",m_strHtml); + if (url::get("/sale/data/SysPrintTemplate/WebBrowser",arg.GetString(),x) != 1) + { + alert("数据集出错了!"); + return 0; + } + string strHtml = x.GetXml(); + ole_print.LoadHtml(strHtml); + } + return 0; + } + + int OnXCommand(ref TXCommandEvent evt,int p) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + AttachEvent("WM_XCOMMAND",OnXCommand); + AttachEvent("WM_SETFOCUS",OnSetFocus); + //AttachEvent("WM_CLOSE",OnCloseOwnerWindow); + + return 0; + } + + int getURLParam() + { + return 1; + } + + virtual int BeforeCloseWindow() + { + if(!updated) return 1; + + int MB_YESNOCANCEL = 3; + int IDYES = 6; + int IDNO = 7; + int IDCANCEL = 2; + int re = win32::MessageBox(this.GetHWND(), "单据已制作,是否保存?","提示:",MB_YESNOCANCEL); + if(re==IDCANCEL) return -1; + if(re==IDNO) return 1; + OnCmdDispatch("print:AddToDocumentList"); + return -1; + } + + int onload() + { + OnAttachEvent(); + AttachCloseWindow(); + ole_print = GetControl("ole_print"); + cell = GetControl("xcell"); + + //showgrid = false; + editing = false; + SetAgent(); + + m_dataset = 0; + billName = ""; + billID = ""; + billPre = ""; + m_DocumentID = ""; + PaperPrint = false; + + return 1; + } + + int onloaded() + { + updated = false; + if(GetParam()) + { + xaserverarg arg = new xaserverarg; + arg.setNativePointer(GetParam()); + string templateName = arg.GetArgString("template-name"); + if(templateName =="") + { + OnPrintDialog(); + } + + else + { + win32::SetWindowText(GetHWND(),templateName); + OnHtml(arg); + billName = templateName; + billPre = arg.GetArgString("template-pre"); + billID = arg.GetArgString("template-guid"); + m_EntityID = arg.GetArgString("EntityID"); + m_EntityNo = arg.GetArgString("EntityNo"); + m_EntityName = arg.GetArgString("EntityName"); + m_DocumentID = ""; + } + }else + OnPrintDialog(); + return 1; + } + +}; \ No newline at end of file diff --git a/jrj/project/workflow/workflow.actionlog.cpp b/jrj/project/workflow/workflow.actionlog.cpp new file mode 100644 index 0000000..b8dc383 --- /dev/null +++ b/jrj/project/workflow/workflow.actionlog.cpp @@ -0,0 +1,66 @@ +class workflow_actionlog : public win__ + { + //命令发布函数 + int OnCmdDispatch(string comdid) + { + CloseWindow(); + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int param) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + } + + + int onload() + { + OnAttachEvent(); + + xdwgrid__ dw_loglist = new xdwgrid__; + dw_loglist.setNativePointer(GetControl("dw_loglist")); + dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist"); + + if(this.GetParam()) + { + xaserverarg__ argx = new xaserverarg__; + argx.setNativePointer(argx.CreateInstance()); + xaserverarg__ arg = this.GetParam(); + argx.AddArg("EntityID",arg.GetArgString("EntityID")); + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x); + dw_loglist.Retrieve(x); + dw_loglist.SetReadOnly(true); + + xflowchart__ dw_chart = new xflowchart__; + dw_chart.setNativePointer(GetControl("dw_logchart")); + xml__ xc = new xml__; + xc.setNativePointer(xml__ ::CreateInstance()); + url::get("/sale/data/workflow.core/workflow/chk/logchart", argx.GetString(), xc); + msxml::IXMLDOMElement e = xc.GetXmlDoc().documentElement; + dw_chart.LoadEx(e); + + /* + string xbox = "<vbox><ximage name='pic' transparent='1' src='/business/flow/"+arg.GetArgString("EntityName")+".jpg'/></vbox>"; + xnode__ anode = new xnode__; + anode.setNativePointer(GetAgentNode("flowimage")); + SetAgentNodeContent (anode,xbox);*/ + + imageview__ im = new imageview__; + im.setNativePointer(GetControl("image")); + //alert(arg.GetArgString("EntityName")); + im.AddImages("/business/flow/"+arg.GetArgString("EntityName")+".jpg"); + } + + return 1; + } + + } \ No newline at end of file diff --git a/jrj/project/workflow/workflow.actionlog_vd.cpp b/jrj/project/workflow/workflow.actionlog_vd.cpp new file mode 100644 index 0000000..8636365 --- /dev/null +++ b/jrj/project/workflow/workflow.actionlog_vd.cpp @@ -0,0 +1,70 @@ +class workflow_actionlog_vd : public win__ + { + //命令发布函数 + int OnCmdDispatch(string comdid) + { + CloseWindow(); + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int param) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + } + + + int onload() + { + OnAttachEvent(); + + + xdwgrid__ dw_loglist = new xdwgrid__; + dw_loglist.setNativePointer(GetControl("dw_loglist")); + dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist"); + if(this.GetParam()) + { + + + int iArgs = GetParam(); + xaserverarg__ argx = new xaserverarg__; + argx.setNativePointer(iArgs); + + argx.AddArg("EntityID",argx.GetArgString("EntityID")); + + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x); + dw_loglist.Retrieve(x); + dw_loglist.SetReadOnly(true); + + xflowchart__ dw_chart = new xflowchart__; + dw_chart.setNativePointer(GetControl("dw_logchart")); + xml__ xc = new xml__; + xc.setNativePointer(xml__ ::CreateInstance()); + url::get("/sale/data/workflow.core/workflow/chk/logchart", argx.GetString(), xc); + msxml::IXMLDOMElement e = xc.GetXmlDoc().documentElement; + dw_chart.LoadEx(e); + + /* + string xbox = "<vbox><ximage name='pic' transparent='1' src='/business/flow/"+arg.GetArgString("EntityName")+".jpg'/></vbox>"; + xnode__ anode = new xnode__; + anode.setNativePointer(GetAgentNode("flowimage")); + SetAgentNodeContent (anode,xbox);*/ + + imageview__ im = new imageview__; + im.setNativePointer(GetControl("image")); + trace(argx.GetArgString("EntityName")); + im.AddImages("/business/flow/"+argx.GetArgString("EntityName")+".jpg"); + } + + return 1; + } + + } \ No newline at end of file diff --git a/jrj/project/workflow/workflow.chkdlg.cpp b/jrj/project/workflow/workflow.chkdlg.cpp new file mode 100644 index 0000000..5b60cd1 --- /dev/null +++ b/jrj/project/workflow/workflow.chkdlg.cpp @@ -0,0 +1,68 @@ +class workflow_chkdlg : public win__ + { + //命令发布函数 + int OnCmdDispatch(string comdid) + { + if(this.GetParam()) + { + if(comdid=="xmOK") + { + control__ xc = new control__; + xc.setNativePointer(GetControl("content")); + string str = ""+xc.GetText(); + //trace(str); + xaserverarg__ arg = this.GetParam(); + arg.AddArg("content",str); + } + arg.AddArg("comdid",comdid); + } + CloseWindow(); + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int param) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + } + + + int onload() + { + OnAttachEvent(); + xaserverarg__ arg; + if(this.GetParam()) + { + arg = this.GetParam(); + control__ xc = new control__; + xc.setNativePointer(GetControl("content")); + xc.SetText(""+arg.GetArgString("content")); + } + + xdwgrid__ dw_loglist = new xdwgrid__; + dw_loglist.setNativePointer(GetControl("dw_loglist")); + dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist"); + + if(this.GetParam()) + { + xaserverarg__ argx = new xaserverarg__; + argx.setNativePointer(argx.CreateInstance()); + arg = this.GetParam(); + argx.AddArg("EntityID",arg.GetArgString("EntityID")); + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x); + dw_loglist.Retrieve(x); + dw_loglist.SetReadOnly(true); + } + + return 1; + } + + } \ No newline at end of file diff --git a/jrj/project/workflow/workflow.chkdlg_vd.cpp b/jrj/project/workflow/workflow.chkdlg_vd.cpp new file mode 100644 index 0000000..c6d51e8 --- /dev/null +++ b/jrj/project/workflow/workflow.chkdlg_vd.cpp @@ -0,0 +1,76 @@ +class workflow_chkdlg_vd : public win__ + { + //命令发布函数 + int OnCmdDispatch(string comdid) + { + if(this.GetParam()) + { + if(comdid=="xmOK") + { + control__ xc = new control__; + xc.setNativePointer(GetControl("content")); + string str = ""+xc.GetText(); + //trace(str); + int iArgs = GetParam(); + xaserverarg__ arg = new xaserverarg__; + arg.setNativePointer(iArgs); + arg.AddArg("content",str); + } + arg.AddArg("comdid",comdid); + } + CloseWindow(); + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int param) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + } + + + int onload() + { + //alert("新的"); + OnAttachEvent(); + xaserverarg__ arg; + if(this.GetParam()) + { + int iArgsx = this.GetParam(); + arg = new xaserverarg__; + arg.setNativePointer(iArgsx); + //trace(iArgsx); + control__ xc = new control__; + xc.setNativePointer(GetControl("content")); + xc.SetText(""+arg.GetArgString("content")); + } + + xdwgrid__ dw_loglist = new xdwgrid__; + dw_loglist.setNativePointer(GetControl("dw_loglist")); + dw_loglist.openUrl("/sale/view/workflow.view/template/chkdlg/loglist"); + + if(this.GetParam()) + { + + int iArgs = GetParam(); + xaserverarg__ argx = new xaserverarg__; + argx.setNativePointer(iArgs); + + argx.AddArg("EntityID",arg.GetArgString("EntityID")); + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + url::get("/sale/data/workflow.core/workflow/chk/loglist", argx.GetString(), x); + dw_loglist.Retrieve(x); + dw_loglist.SetReadOnly(true); + } + + return 1; + } + + } \ No newline at end of file -- Gitblit v1.9.3