From 6c8c9ddaeb2bc6245a374c9354296bcfc2d96c06 Mon Sep 17 00:00:00 2001 From: LiFan <2308045698@qq.com> Date: 星期二, 29 四月 2025 14:10:22 +0800 Subject: [PATCH] update --- jrj/project/business/SystemSettings/Flow3.cpp | 438 +++++++++++++++++++++++++++-------------------------- 1 files changed, 223 insertions(+), 215 deletions(-) diff --git a/jrj/project/business/SystemSettings/Flow3.cpp b/jrj/project/business/SystemSettings/Flow3.cpp index 53605d6..e4246a6 100644 --- a/jrj/project/business/SystemSettings/Flow3.cpp +++ b/jrj/project/business/SystemSettings/Flow3.cpp @@ -1,12 +1,19 @@ -use "xcontrol.vframe.vbusiness.vd" -use "xbase.vframe.vbusiness.vd" -use "base.view.vd" -use "xflowchart.wobject.wface.vd" +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xdatetimepick.hpp> +#include <xcontrol/xflowchart.hpp> -unit trade -[ - class flow : public xframe + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; + class __declspec(dllexport) flow : public xframe { + public: xtreeview tv_1; xlayersheet tab_1; xdwgrid dw_flow; @@ -17,133 +24,138 @@ xdwgrid dw_scene; xdwgrid dw_buttonright; xdwgrid dw_datafieldright; - string flowid; + xstring flowid; xtreeview tv_folder; xnode m_agentNode; //Agent Condition - - string GetSheetType(int index) + public: + flow(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static flow* CreateInstance(void* implPtr, void* hWnd) { - if (index == 0) return "flowitem"; - else if (index == 1) return "state"; - else if (index == 2) return "actionrole"; - else if (index == 3) return "button"; - else if (index == 4) return "role"; - else if (index == 5) return "bill"; - else if (index == 6) return "scene"; - else if (index ==7) return "fieldrole"; - else return "unkown"; + flow* pWin = new flow(implPtr, (HWND)hWnd); + return pWin; + } + xstring GetSheetType(int index) + { + if (index == 0) return L"flowitem"; + else if (index == 1) return L"state"; + else if (index == 2) return L"actionrole"; + else if (index == 3) return L"button"; + else if (index == 4) return L"role"; + else if (index == 5) return L"bill"; + else if (index == 6) return L"scene"; + else if (index ==7) return L"fieldrole"; + else return L"unkown"; } xdwgrid GetSheetDwgrid(int index) { - string typ = GetSheetType(index); - if(typ=="flowitem") return dw_flow; - if(typ=="actionrole") return dw_buttonright; - if(typ=="state") return dw_state; - if(typ=="button") return dw_button; - if(typ=="role") return dw_role; - if(typ=="bill") return dw_bill; - if(typ=="scene") return dw_scene; - if(typ=="fieldrole") return dw_datafieldright; + xstring typ = GetSheetType(index); + if(typ==L"flowitem") return dw_flow; + if(typ==L"actionrole") return dw_buttonright; + if(typ==L"state") return dw_state; + if(typ==L"button") return dw_button; + if(typ==L"role") return dw_role; + if(typ==L"bill") return dw_bill; + if(typ==L"scene") return dw_scene; + if(typ==L"fieldrole") return dw_datafieldright; return 0; } - xdwgrid GetSheetDbmap(int index) + xstring GetSheetDbmap(int index) { - string typ = GetSheetType(index); - if(typ=="flowitem") return "flow.dbmap"; - if(typ=="actionrole") return "workflow.actionrole.dbmap"; - if(typ=="state") return "state.dbmap"; - if(typ=="button") return "button.dbmap"; - if(typ=="role") return "role.dbmap"; - if(typ=="bill") return "bill.dbmap"; - if(typ=="scene") return "scene.dbmap"; - if(typ=="fieldrole") return "workflow.datarole.dbmap"; - return 0; + xstring typ = GetSheetType(index); + if(typ==L"flowitem") return L"flow.dbmap"; + if(typ==L"actionrole") return L"workflow.actionrole.dbmap"; + if(typ==L"state") return L"state.dbmap"; + if(typ==L"button") return L"button.dbmap"; + if(typ==L"role") return L"role.dbmap"; + if(typ==L"bill") return L"bill.dbmap"; + if(typ==L"scene") return L"scene.dbmap"; + if(typ==L"fieldrole") return L"workflow.datarole.dbmap"; + return L""; } - string GetDwname(string typ) + xstring GetDwname(xstring typ) { - if(typ=="flowitem") return "/sale/view/Flow3/template/flow"; - if(typ=="actionrole") return "/sale/view/Flow3/template/buttonright"; - if(typ=="state") return "/sale/view/Flow3/template/state"; - if(typ=="button") return "/sale/view/Flow3/template/button"; - if(typ=="role") return "/sale/view/Flow3/template/role"; - if(typ=="bill") return "/sale/view/Flow3/template/bill"; - if(typ=="scene") return "/sale/view/Flow3/template/scene"; - if(typ=="fieldrole") return "/sale/view/Flow3/template/datafieldright"; - return ""; + if(typ==L"flowitem") return L"/sale/view/Flow3/template/flow"; + if(typ==L"actionrole") return L"/sale/view/Flow3/template/buttonright"; + if(typ==L"state") return L"/sale/view/Flow3/template/state"; + if(typ==L"button") return L"/sale/view/Flow3/template/button"; + if(typ==L"role") return L"/sale/view/Flow3/template/role"; + if(typ==L"bill") return L"/sale/view/Flow3/template/bill"; + if(typ==L"scene") return L"/sale/view/Flow3/template/scene"; + if(typ==L"fieldrole") return L"/sale/view/Flow3/template/datafieldright"; + return L""; } - int SetAgent() { - string xfNodeAgentArea = "agentarea"; + xstring xfNodeAgentArea = L"agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); if(m_agentNode) { - SetAgentNodeContent (anode,m_agentNode); + SetAgentNode (anode,m_agentNode); } else { - msxml::IXMLDOMElement xframeElement = GetElement(); - msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); if(agent) { - string s = agent.xml; - m_agentNode = SetAgentNodeContent (anode,s); + xstring s = agent.xml(); + m_agentNode = SetAgentNode (anode,s); } } return 1; } int OnSave() { - if(flowid=="") return 1; + if(flowid==L"") return 1; - string sdbmap; - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); + xstring sdbmap; + xml x ; + int index = tab_1.GetSheetIndex(); - sdbmap = GetSheetDbmap(index); + sdbmap = (xstring)GetSheetDbmap(index); xdwgrid dw_list = GetSheetDwgrid(index); - dw_list.DwUpdateAllToEx(x.GetXmlDoc()); - //trace(x.GetXml()); + dw_list.DwUpdateAllToEx(x); + //trace(x.xml()); - msxml::IXMLDOMNodeList ls = x.GetXmlDoc().documentElement.SelectNodes("*[@update.modify='1' and @update.new='1']"); - int len = ls.length; + KXMLDOMNodeList ls = x.documentElement().selectNodes(L"*[@update.modify='1' and @update.new='1']"); + int len = ls.length(); for(int k=0;k<len;k++) { - msxml::IXMLDOMElement e; - if(ls.item(k).selectSingleNode("flowID")) + KXMLDOMElement e; + if(ls.item(k).selectSingleNode(L"flowID")) { - e = ls.item(k).selectSingleNode("flowID"); - e.setAttribute("update.modify","1"); - e.text = flowid; + e = ls.item(k).selectSingleNode(L"flowID"); + e.setAttribute(L"update.modify",L"1"); + e.settext(flowid); }else { - e = x.GetXmlDoc().createElement("flowID"); - e.setAttribute("update.modify","1"); - e.text = flowid; + e = x.createElement(L"flowID"); + e.setAttribute(L"update.modify",L"1"); + e.settext(flowid); ls.item(k).appendChild(e); } } - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); - arg.AddArg("content",x.GetXml()); - arg.AddArg("sdbmap",sdbmap); - trace(x.GetXml()); - if(url::get("/sale/data/Flow3/save/flow", arg.GetString(),x)!=1) + xaserverarg arg ; + arg.AddArg(L"content",x.xml()); + arg.AddArg(L"sdbmap",sdbmap); + trace(x.xml()); + if(xurl::get(L"/sale/data/Flow3/save/flow", arg.GetString(),x)!=1) { - string error = x.GetXmlDoc().text; - alert("err:"+error); + xstring error = x.text(); + alert(L"err:"+error); return 1; } dw_list.ResetUpdateStatus(); - //alert(x.GetXml()); - alert("保存成功!"); + //alert(x.xml()); + alert(L"保存成功!"); return 1; } @@ -174,7 +186,7 @@ } //焦点激活处理函数 - int OnSetFocus(ref TEvent evt,int param) + int OnSetFocus(TEvent* evt, LPARAM param) { //重置工具条 SetAgent(); @@ -184,82 +196,81 @@ return 1; } - int OnClicked(ref TNotifyEvent evt,int p) - { - ref DWNMHDR hdr = evt.pnmh; + int OnClicked(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; - string colname=hdr.colname; + xstring colname=hdr.colname; //trace(colname); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); + xaserverarg arg ; - string comdid =""; - string data=""; - string display=""; + xstring comdid =L""; + xstring data=L""; + xstring display=L""; xdwgrid dw_list; int index = tab_1.GetSheetIndex(); dw_list = GetSheetDwgrid(index); - arg.AddArg("sdata",""); - arg.AddArg("flowid",flowid); + arg.AddArg(L"sdata",L""); + arg.AddArg(L"flowid",flowid); - if(colname=="billID") + if(colname==L"billID") { - arg.AddArg("stype","bill"); - arg.AddArg("datacolumn","billID"); - arg.AddArg("displaycolumn","billName"); - arg.AddArg("dwname","/sale/view/Flow3/template/bill"); + arg.AddArg(L"stype",L"bill"); + arg.AddArg(L"datacolumn",L"billID"); + arg.AddArg(L"displaycolumn",L"billName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/bill"); } - else if(colname=="stateSource") + else if(colname==L"stateSource") { - arg.AddArg("stype","state"); - arg.AddArg("datacolumn","stateID"); - arg.AddArg("displaycolumn","stateName"); - arg.AddArg("dwname","/sale/view/Flow3/template/state"); + arg.AddArg(L"stype",L"state"); + arg.AddArg(L"datacolumn",L"stateID"); + arg.AddArg(L"displaycolumn",L"stateName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/state"); } - else if(colname=="state") + else if(colname==L"state") { - arg.AddArg("stype","state"); - arg.AddArg("datacolumn","stateID"); - arg.AddArg("displaycolumn","stateName"); - arg.AddArg("dwname","/sale/view/Flow3/template/state"); + arg.AddArg(L"stype",L"state"); + arg.AddArg(L"datacolumn",L"stateID"); + arg.AddArg(L"displaycolumn",L"stateName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/state"); } - else if(colname=="stateTarget") + else if(colname==L"stateTarget") { - arg.AddArg("stype","state"); - arg.AddArg("datacolumn","stateID"); - arg.AddArg("displaycolumn","stateName"); - arg.AddArg("dwname","/sale/view/Flow3/template/state"); + arg.AddArg(L"stype",L"state"); + arg.AddArg(L"datacolumn",L"stateID"); + arg.AddArg(L"displaycolumn",L"stateName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/state"); } - else if(colname=="roles") + else if(colname==L"roles") { - arg.AddArg("stype","role"); - arg.AddArg("datacolumn","roleName"); - arg.AddArg("displaycolumn","roleName"); - arg.AddArg("dwname","/sale/view/Flow3/template/role"); + arg.AddArg(L"stype",L"role"); + arg.AddArg(L"datacolumn",L"roleName"); + arg.AddArg(L"displaycolumn",L"roleName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/role"); } - else if(colname=="flowAction") + else if(colname==L"flowAction") { - arg.AddArg("stype","button"); - arg.AddArg("datacolumn","buttonName"); - arg.AddArg("displaycolumn","buttonName"); - arg.AddArg("dwname","/sale/view/Flow3/template/button"); + arg.AddArg(L"stype",L"button"); + arg.AddArg(L"datacolumn",L"buttonName"); + arg.AddArg(L"displaycolumn",L"buttonName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/button"); } else return 1; - OpenWindow("dev:xpage[FlowTermSelect.vx]",cast(arg as int)); - comdid = arg.GetArgString("comdid"); + OpenWindow(L"dev:xpage[FlowTermSelect.vx]",arg); + comdid = arg.GetArgString(L"comdid"); - if(comdid=="xmOk") + if(comdid==L"xmOk") { - data = arg.GetArgString("data"); - display = arg.GetArgString("display"); - dw_list.SetItemDisplayString(row,colname,display); - dw_list.SetItemString(row,colname,data); + data = arg.GetArgString(L"data"); + display = arg.GetArgString(L"display"); + dw_list.SetItemDisplayString(row,colname.c_str(), display); + dw_list.SetItemString(row,colname.c_str(), data); dw_list.Redraw(); } @@ -271,40 +282,37 @@ int i = tab_1.GetSheetIndex(); xdwgrid dw_list = GetSheetDwgrid(i); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); - arg.SetArg("stype",GetSheetType(i),"string"); - arg.SetArg("sdata","ddd","string"); - arg.SetArg("flowID",flowid,"string"); - int obj = cast(dw_list as int); - arg.SetArg("dwobj",obj.toString(),"string"); - arg.SetArg("dwname",GetDwname(GetSheetType(i)),"string"); - OpenWindow("dev:xpage[FlowTermImport.vx]",cast(arg as int)); + xaserverarg arg ; + arg.SetArg(L"stype",GetSheetType(i),L"xstring"); + arg.SetArg(L"sdata",L"ddd",L"xstring"); + arg.SetArg(L"flowID",flowid,L"xstring"); + arg.SetParam(L"dwobj",&dw_list); + arg.SetArg(L"dwname",GetDwname(GetSheetType(i)),L"xstring"); + OpenWindow(L"dev:xpage[FlowTermImport.vx]",arg); return 1; } int OnRetrieve() { - if(flowid=="") return 1; + if(flowid==L"") return 1; - xml x = new xml; - x.setNativePointer(xml::CreateInstance()); - xaserverarg arg = new xaserverarg; - arg.setNativePointer(arg.CreateInstance()); + xml x; + + xaserverarg arg; //int i = tab_1.GetSheetIndex(); for(int i=0;i<7;i++) { //alert(i.toString()); - arg.SetArg("stype",GetSheetType(i),"string"); - arg.SetArg("sdata","ddd","string"); - arg.SetArg("flowID",flowid,"string"); + arg.SetArg(L"stype",GetSheetType(i),L"xstring"); + arg.SetArg(L"sdata",L"ddd",L"xstring"); + arg.SetArg(L"flowID",flowid,L"xstring"); //trace(arg.GetString()); - if (getUrl("/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1) + if (getUrl(L"/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1) { - //trace(x.GetXmlDoc().text); + //trace(x.text()); //return -1; continue; } @@ -316,14 +324,15 @@ return 1; } - int OnTreeSelChanged(ref TNotifyEvent evt,int p) + int OnTreeSelChanged(TEvent* evt, int p) { - ref NMTREEVIEW nmtv = cast(evt.pnmh as NMTREEVIEW); - int hItem = nmtv.itemNew.hItem; - msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement); - flowid = e.getAttribute("flowID"); + NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; + + HTREEITEM hItem = nmtv.itemNew.hItem; + KXMLDOMElement e = tv_1.GetItemData(hItem); + flowid = e.getAttribute(L"flowID"); - int hCursor = xutil::SetCursorWait(); + HCURSOR hCursor = xutil::SetCursorWait(); SetFlowChart(e); OnRetrieve(); xutil::RestoreCursor(hCursor); @@ -331,70 +340,70 @@ return 1; } - int OnTabSelectSheet(ref TNotifyEvent evt,int p) + int OnTabSelectSheet(TEvent* evt, int p) { //OnRetrieve(); return 1; } - int SetFlowChart(msxml::IXMLDOMElement e) + int SetFlowChart(KXMLDOMElement e) { - string flowUrl = e.getAttribute("flowchart"); - xflowchart flowchart = GetControl("flowchart"); - xml f = new xml; - f.setNativePointer(xml::CreateInstance()); - if(flowUrl != "") + xstring flowUrl = e.getAttribute(L"flowchart"); + xflowchart flowchart = GetControl(L"flowchart"); + xml f ; + + if(flowUrl != L"") { - if(xaserver::FetchXml(flowUrl,"",f)==1) + if(xaserver::FetchXml(GetServerUrl(),flowUrl,L"",f)==1) { - flowchart.LoadEx(f.GetXmlDoc().documentElement); + flowchart.Load(f.documentElement()); } }else { - f.LoadXml("<sheet/>"); - flowchart.LoadEx(f.GetXmlDoc().documentElement); + f.loadXML(L"<sheet/>"); + flowchart.Load(f.documentElement()); } return 1; } //命令发布函数 - int OnCmdDispatch(string comdid) + int OnCmdDispatch(xstring comdid) { - if (comdid == "xmSave") + if (comdid == L"xmSave") return OnSave(); - if (comdid == "xmAddrow") + if (comdid == L"xmAddrow") return OnAddrow(); - if (comdid == "xmInsertrow") + if (comdid == L"xmInsertrow") return OnInsertrow(); - if (comdid == "xmDeleterow") + if (comdid == L"xmDeleterow") return OnDeleterow(); - if (comdid == "xmImport") + if (comdid == L"xmImport") return OnImport(); return 0; } //命令处理事件 - int OnXCommand(ref TXCommandEvent evt,int param) + int OnXCommand(TEvent* evt, LPARAM param) { - return OnCmdDispatch(evt.pStrID); + return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //绑定工具条点击事件 - AttachEvent("WM_XCOMMAND",OnXCommand); + AttachEvent(L"WM_XCOMMAND", (FEvent)&flow::OnXCommand); //获取焦点事件,用于重置工具条 - AttachEvent("WM_SETFOCUS",OnSetFocus); + AttachEvent(L"WM_SETFOCUS", (FEvent)&flow::OnSetFocus); - AttachEvent("tv_folder", "TVN_SELCHANGED",OnTreeSelChanged); - AttachEvent("tab_1","LYSN_SELECTEDSHEET",OnTabSelectSheet); - AttachEvent("dw_flow","DWV_CLICKED",OnClicked); - AttachEvent("dw_buttonright","DWV_CLICKED",OnClicked); - AttachEvent("dw_button","DWV_CLICKED",OnClicked); - AttachEvent("dw_state","DWV_CLICKED",OnClicked); + AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&flow::OnTreeSelChanged); + AttachEvent(L"tab_1",L"LYSN_SELECTEDSHEET", (FEvent)&flow::OnTabSelectSheet); + AttachEvent(L"dw_flow",L"DWV_CLICKED", (FEvent)&flow::OnClicked); + AttachEvent(L"dw_buttonright",L"DWV_CLICKED", (FEvent)&flow::OnClicked); + AttachEvent(L"dw_button",L"DWV_CLICKED", (FEvent)&flow::OnClicked); + AttachEvent(L"dw_state",L"DWV_CLICKED", (FEvent)&flow::OnClicked); return 1; } @@ -402,19 +411,19 @@ int CreateFlowFloder() { - xml x = ViewObject::RetrieveData("/sale/data/flow3/flowfolder"); + xml x = ViewObject::RetrieveData(L"/sale/data/flow3/flowfolder"); if(x) { - msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//item"); - int len = nlist.length; - int hItem = 0; + KXMLDOMNodeList nlist = x.selectNodes(L"//item"); + int len = nlist.length(); + HTREEITEM hItem = 0; for (int i = 0; i < len; i++) { - msxml::IXMLDOMElement e = nlist.item(i); - string name = e.getAttribute("flowName"); - string no = e.getAttribute("flowNo"); - string label = name;//no.trim() + " " + name; - int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),22); + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"flowName"); + xstring no = e.getAttribute(L"flowNo"); + xstring label = name;//no.trim() + L" " + name; + HTREEITEM h= tv_folder.InsertChildItem(hItem,label, e,22); //tv_folder.SetItemChild(h,1); } } @@ -424,28 +433,28 @@ int onload() { - flowid = ""; - tv_folder = GetControl("tv_folder"); + flowid = L""; + tv_folder = GetControl(L"tv_folder"); CreateFlowFloder(); - tv_1 = GetControl("tv_1"); - tab_1 = GetControl("tab_1"); - dw_flow = GetControl("dw_flow"); - dw_flow.openUrl("/sale/view/Flow3/template/flow"); - dw_state = GetControl("dw_state"); - dw_state.openUrl("/sale/view/Flow3/template/state"); - dw_button = GetControl("dw_button"); - dw_button.openUrl("/sale/view/Flow3/template/button"); - dw_role = GetControl("dw_role"); - dw_role.openUrl("/sale/view/Flow3/template/role"); - dw_bill = GetControl("dw_bill"); - dw_bill.openUrl("/sale/view/Flow3/template/bill"); - dw_scene = GetControl("dw_scene"); - dw_scene.openUrl("/sale/view/Flow3/template/scene"); - dw_buttonright = GetControl("dw_buttonright"); - dw_buttonright.openUrl("/sale/view/Flow3/template/buttonright"); - dw_datafieldright = GetControl("dw_datafieldright"); - dw_datafieldright.openUrl("/sale/view/Flow3/template/datafieldright"); + tv_1 = GetControl(L"tv_1"); + tab_1 = GetControl(L"tab_1"); + dw_flow = GetControl(L"dw_flow"); + dw_flow.openUrl(L"/sale/view/Flow3/template/flow"); + dw_state = GetControl(L"dw_state"); + dw_state.openUrl(L"/sale/view/Flow3/template/state"); + dw_button = GetControl(L"dw_button"); + dw_button.openUrl(L"/sale/view/Flow3/template/button"); + dw_role = GetControl(L"dw_role"); + dw_role.openUrl(L"/sale/view/Flow3/template/role"); + dw_bill = GetControl(L"dw_bill"); + dw_bill.openUrl(L"/sale/view/Flow3/template/bill"); + dw_scene = GetControl(L"dw_scene"); + dw_scene.openUrl(L"/sale/view/Flow3/template/scene"); + dw_buttonright = GetControl(L"dw_buttonright"); + dw_buttonright.openUrl(L"/sale/view/Flow3/template/buttonright"); + dw_datafieldright = GetControl(L"dw_datafieldright"); + dw_datafieldright.openUrl(L"/sale/view/Flow3/template/datafieldright"); OnAttachEvent(); @@ -460,5 +469,4 @@ return 1; } - }; -] \ No newline at end of file + }; \ No newline at end of file -- Gitblit v1.9.3