#include "xcontrol/xreport.hpp" #include "wobject/xwin.hpp" #include "wobject/xaserverarg.hpp" #include "wobject/xstring.hpp" #include "wobject/xurl.hpp" #include "xcontrol/xshtml.hpp" #include "vbusiness/vframe/frame.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" #include "xcontrol/xshtml.hpp" using xml = Hxsoft::XFrame::KXMLDOMDocument; class __declspec(dllexport) HomeWin : public xframe { public: xreport dw_list; public: HomeWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static HomeWin* CreateInstance(void* implPtr, void* hWnd) { return new HomeWin(implPtr, (HWND)hWnd); } int init() { xaserverarg arg; KXMLDOMDocument doc; if (xurl::get(GetServerUrl(), L"/sale/data/vpage/vstart/list", arg.GetString(), doc) != 1) { alert(((xstring)L"error:" + doc.xml()).c_str()); return 0; } if (!doc.xml()) return 0; dw_list.Retrieve(doc); dw_list.CreateTree((LPCWSTR)L"node()", 1, 15, 16); dw_list.Redraw(); /* dw_list.Redraw(); dw_list.SetReadOnly(true); */ return 1; } xstring GetEntityIDName(LPARAM pr) { return L"@EntityID"; } xstring GetEntityName(LPARAM pr) { int nRow = dw_list.GetRow(); if (nRow < 0) return L""; KXMLDOMElement ele = dw_list.GetRowElement(nRow); if (!ele) return L""; return ele.getAttribute(L"category"); } xstring GetEntityID(LPARAM pr) { int row = dw_list.GetRow(); if (row<1 || row>dw_list.GetRowCount()) return 0; KXMLDOMElement ele = dw_list.GetRowElement(row); if (!ele) return L""; xstring id = GetEntityIDName(pr); if (!ele.selectSingleNode(id)) return L""; xstring d = ele.selectSingleNode(id).text(); return d; } xstring GetTaskID() { int row = dw_list.GetRow(); if (row<1 || row>dw_list.GetRowCount()) return 0; KXMLDOMElement ele = dw_list.GetRowElement(row); if (!ele) return L""; xstring taskid = ele.getAttribute(L"taskid"); return taskid; } xstring GetReason(LPARAM pr, xstring comd) { xaserverarg arg; if (GetEntityName(pr) == L"DeliveryDelay") { xstring ls_cmdid = comd;//pr; int row = dw_list.GetRow(); if (row < 1) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); xstring ls_status = ele.selectSingleNode(L"@status").text(); if (ls_status == L"»õÔ´²¿´ýÈ·ÈÏ" && ls_cmdid == L"action:bill.check.agree") { arg.AddArg(L"DDID", GetEntityID(2)); arg.AddArg(L"_ModuelPage", L"dev:xpage[DeliveryDelay.supmancheck.vx]"); OpenWindow(L"dev:xpage[vindexforold.vx]", arg); //openUrl(L"/sale/view/DeliveryDelay/xpage/DeliveryDelay/supmancheck", arg); if (arg.GetArgString(L"ret") == L"Sucess") { return L"Auto..."; } return L""; } else { //return frame::GetReason(pr); arg.AddArg(L"EntityID", GetEntityID(2)); arg.AddArg(L"_ModuelPage", L"dev:xpage[workflow.chkdlg.vx]"); OpenWindow(L"dev:xpage[vindexforold.vx]", arg); //int newArg2 = arg.ptr_native_; //openUrl(L"/sale/view/workflow.view/xpage/chkdlg_vd", newArg2); xstring comdid = arg.GetArgString(L"comdid"); if (comdid == L"xmOK") { xstring value = arg.GetArgString(L"content") + L" "; return value; } return L""; } } else { //return frame::GetReason(pr); arg.AddArg(L"EntityID", GetEntityID(2)); OpenWindow(L"dev:xpage[workflow.chkdlg.vx]", arg); //openUrl(L"/sale/view/workflow.view/xpage/chkdlg", arg); xstring comdid2 = arg.GetArgString(L"comdid"); if (comdid2 == L"xmOK") { xstring value2 = arg.GetArgString(L"content") + L" "; return value2; } return L""; } } int ViewUpdate(LPARAM pr, xstring updateItem, xaserverarg arg) { init(); return 1; } xstring GetEntityWorkNode(LPARAM pr, xstring what) { if (what == L"open") { int row = dw_list.GetRow(); if (row<0 || row>dw_list.GetRowCount()) return 0; KXMLDOMElement ele = dw_list.GetRowElement(row); xstring aurl = ele.selectSingleNode(L"@url").text(); return aurl; } return L""; } int SetAgent() { if (dw_list) { //init(); xstring id = GetEntityID(1); if (id != L"") xframe::SetAgent((xstring)L"letter", id); } return 1; } int openUrl(xstring aurl, /*param */ LPARAM para) { //alert(aurl); xml x; xurl::get(aurl, L"", x); KXMLDOMDocument doc = x; KXMLDOMNode n = doc.selectSingleNode(L"//resource/@src"); //alert(x.xml()); if (n) { /* xstring xq = n.text(); OpenWindow(xq, para); return 1; */ xstring xq = n.text(); if (doc.selectSingleNode(L"//resource/@argnative")) { OpenWindow(xq, para); } //alert(xq); else if (xq.find(L"upplier", 0) > 0 and xq != L"dev:xpage[Maint.SupplierStatusModify.vx]" and xq != L"dev:xpage[Maint.SupplierSubmit.vx]") OpenWindow(xq, para); else { xq = xq.replace(L"dev:xpage[", L""); xq = xq.replace(L"]", L""); xaserverarg& args = *(xaserverarg*)para; args.AddArg(L"_ModuelPage", xq); //alert(args.GetString()); OpenWindow(L"dev:xpage[vindexforold.vx]", args); } return 1; } else { xaserverarg& arg = *(xaserverarg*)para; n = doc.selectSingleNode(L"//resource[@vface!='' and @view!='']"); if (n) { xstring vface = n.selectSingleNode(L"@vface").text(); xstring view = n.selectSingleNode(L"@view").text(); xstring config = n.selectSingleNode(L"@config").text(); if (config != L"") { arg.AddArg(L"config", config, L"xs:xstring"); } if (vface == L"." || vface == L"") { xstring v = n.selectSingleNode(L"@url").text(); xstring burl = aurl.mid(0, aurl.find(v, 0)); //alert(burl); return openUrl(burl + view, arg); } else return openUrl(vface + L"/" + view, arg); } } return -1; } int SetTaskProcessed() { int row = dw_list.GetRow(); if (row<0 || row>dw_list.GetRowCount()) return 1; if (!dw_list.GetRowElement(row)) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); xaserverarg arg; xstring taskid = ele.getAttribute(L"taskid"); arg.AddArg(L"TaskID", taskid); xml x = ViewObject::RetrieveData(L"/sale/data/business/update/taskprocessed", L"TaskID", taskid); if (x) alert(x.text()); dw_list.DeleteRow(row); return 1; } int ProcessFlowAction(xstring comdid, LPARAM pr1) { if (comdid == L"__ModifyRows") { OnModifyRows(); return 1; } LPARAM pr = pr1; xstring action = comdid.mid(comdid.find(L"action:", 0) + 7, 9999); if (action == L"bill.delete" || action == L"bill.deleteEx") { if (MessageBox(GetHWND(), L"ÊÇ·ñÈ·¶¨É¾³ý¼Ç¼!", L"Ìáʾ", 1) == 2) return 1; } if (action == L"bill.processed") { if (MessageBox(GetHWND(), L"ÊÇ·ñÈ·¶¨Ñ¡ÖеÄÈÎÎñתÒÑ´¦Àí?", L"Ìáʾ", 1) == 2) return 1; return SetTaskProcessed(); } xaserverarg arg; arg.AddArg(L"Action", action, L"xs:xstring"); xml x; xstring aurl = L"/workflow/query/actioninfo/" + action; if (xurl::get(aurl, L"", x) != 1) return -1; int nlen; int i = 0; xstring name; xstring worknode; xstring how; xstring state = L""; xstring billstatus = L""; KXMLDOMElement e; arg.AddArg(L"EntityName", GetEntityName(pr), L"xs:xstring"); //²ÎÊýÒªÇó KXMLDOMNodeList nlist = x.selectNodes(L"//params/param"); nlen = nlist.length(); for (i = 0; i < nlen; i++) { e = nlist.item(i); name = e.selectSingleNode(L"@name").text(); how = e.selectSingleNode(L"@how").text(); xstring content = L""; if (how == L"Entity" || how == L"EntityData") { content = GetEntityData(pr); } if (e.selectSingleNode(L"@valid")) { if (content.find(L"update.modify", 0) > 0 || content.find(L"update.delete", 0) > 0) {} else return 0; if (CheckEntityValidity(pr) < 0) return -1; } if (how == L"EntityID") arg.AddArg(name, GetEntityID(pr), L"xs:xstring"); else if (how == L"Entity" || how == L"EntityData") arg.AddArg(name, content, L"xs:xstring"); else if (how == L"EntityRowData") arg.AddArg(name, GetEntityRowData(pr), L"xs:xstring"); else if (how == L"Reason") { arg.AddArg(name, GetReason(1, L""), L"xs:xstring"); } else if (how == L"EntityNo") arg.AddArg(name, GetEntityNo(pr), L"xs:xstring"); else if (how == L"EntityTitle") arg.AddArg(name, GetEntityTitle(pr), L"xs:xstring"); else if (how == L"GetParam") arg.AddArg(name, GetParamValue(name), L"xs:xstring"); else if (how == L"UserID") arg.AddArg(name, xaserver::GetUserId(), L"xs:xstring"); //"CHeckAskMsg" //"CHeckMsg if (how == L"Reason" && arg.GetArgString(name) == L"") return -1; //if(how==L"EntityData" && arg.GetArgString(name)==L"") return -1; if (e.selectSingleNode(L"@check")) { xstring doCheck = e.selectSingleNode(L"@check").text(); if (doCheck == L"Y") { xstring value = arg.GetArgString(name); if (value == L"") { alert(name + L" ²ÎÊýÖµ²»ÄÜΪ¿Õ£¬Ê¼þÖÕÖ¹!"); return -1; } } } } arg.AddArg(L"action.entity", GetEntityName(pr), L"xs:xstring"); ProcessUsedArg(arg); //¶¯×÷ KXMLDOMNode n = x.selectSingleNode(L"//view.action[1]"); bool execResult = true; //´¦Àí½á¹û if (n) { name = n.selectSingleNode(L"@name").text(); if (n.selectSingleNode(L"@worknode")) worknode = n.selectSingleNode(L"@worknode").text(); else worknode = GetEntityWorkNode(pr, name); arg.AddArg(L"do", name, L"xs:xstring"); if (worknode != L"") { if (worknode.find(L"dev:xpage") == 0) OpenWindow(worknode, arg); else openUrl(worknode, arg); //---openUrl(worknode,arg); } else { alert(L"Warn: Please configure worknode for action " + name + L"."); return -1; } } else { //url::post(GetEntityName(pr)+L"/workflow/action",arg.GetString(),x); xml x1; int retxx = xurl::post(L"/workflow/action/" + GetEntityName(pr) + L"/" + action, arg.GetString(), x1); //alert(L"/workflow/action/"+GetEntityName(pr)+L"/"+action+L"\r\n"+arg.GetString()+L"\r\n"+x1.xml()); if (retxx != 1) execResult = false; if (x1.selectSingleNode(L"//process")) { KXMLDOMElement e1 = x1.selectSingleNode(L"//process"); xstring valid = e1.getAttribute(L"valid"); xstring finished = e1.getAttribute(L"finished"); xstring errInfo = L""; if (valid == L"0") { errInfo = e1.getAttribute(L"errInfo"); alert(errInfo); execResult = false; } else if (finished == L"0") { errInfo = e1.getAttribute(L"errInfo"); errInfo = L"´¦Àíʧ°Ü!\r\n" + errInfo; alert(errInfo); execResult = false; } } else if (x1.selectSingleNode(L"//process-check-list")) { KXMLDOMElement e2 = x1.selectSingleNode(L"//process-check-list"); xstring val = e2.getAttribute(L"process"); if (val == L"ok") { alert(L"´¦Àí³É¹¦"); PostMessage(GetHWND(), 0x401, (WPARAM)L"action:bill.refresh", 0); } else if (val == L"part") { alert(L"Óв¿·ÖÊý¾Ý´¦Àíδ³É¹¦£¬Ìá½»³É¹¦µÄÒÑ´¦Àí¡£"); PostMessage(GetHWND(), 0x401, (WPARAM)L"action:bill.refresh", 0); } else alert((xstring)L"Êý¾Ý´¦Àí²»³É¹¦\r\n" + x1.xml()); return 1; } else if (x1.selectSingleNode(L"//msg")) { xstring aStr = x1.selectSingleNode(L"//msg[1]").text(); //if(aStr.find(L"Àí³É¹¦",0) < 0) // alert(aStr); if (aStr.find(L"ʧ°Ü", 0) >= 0) execResult = false; alert(aStr); } if (x1.selectSingleNode(L"//msg/@state")) { state = x1.selectSingleNode(L"//msg[1]/@state").text(); arg.AddArg(L"state", state, L"xs:xstring"); billstatus = x1.selectSingleNode(L"//msg[1]/@billstatus").text(); arg.AddArg(L"billstatus", billstatus, L"xs:xstring"); } } //¸üÐÂÒªÇó if (execResult) { nlist = x.selectNodes(L"//view/update"); nlen = nlist.length(); for (i = 0; i < nlen; i++) { e = nlist.item(i); how = e.selectSingleNode(L"@do").text(); if (how == L"setstate") { if (state != L"") { arg.AddArg(L"state", state, L"xs:xstring"); arg.AddArg(L"billstatus", billstatus, L"xs:xstring"); ViewUpdate(pr, how, arg); } } else ViewUpdate(pr, how, arg); } } return 1; } /*int ProcessFlowAction(xstring comdid, int pr1) { //trace(L"comdid---> %s\r\n", comdid); if(comdid == L"__ModifyRows") { OnModifyRows(); return 1; } LPARAM pr = pr1; xstring action = comdid.mid(comdid.find(L"action:",0)+7,9999); if(action == L"bill.delete" || action == L"bill.deleteEx") { if (MessageBox(GetHWND(),L"ÊÇ·ñÈ·¶¨É¾³ý¼Ç¼!",L"Ìáʾ1",1) == 2) return 1; } xaserverarg arg = new xaserverarg ; arg.AddArg(L"Action", action,L"xs:xstring"); xml x ; x.setNativePointer(xml ::CreateInstance()); xstring aurl = L"/workflow/query/actioninfo/"+action; //trace(L"abc---",aurl); if(xurl::get(aurl, L"", x) != 1) return -1; //alert(x.xml()); int nlen ; int i = 0; xstring name; xstring worknode; xstring how; xstring state; KXMLDOMElement e; arg.AddArg(L"EntityName", GetEntityName(pr),L"xs:xstring"); //²ÎÊýÒªÇó KXMLDOMNodeList nlist = x.selectNodes(L"//params/param"); nlen = nlist.length; //trace(L"xxx"); for(i=0; i 0 || content.find(L"update.delete",0) > 0) {} else return 0; if(CheckEntityValidity(pr) < 0) return -1; } if(how==L"EntityID") arg.AddArg(name, GetEntityID(pr),L"xs:xstring"); else if(how==L"Entity" || how == L"EntityData") arg.AddArg(name, content,L"xs:xstring"); else if(how==L"EntityRowData") arg.AddArg(name, GetEntityRowData(pr),L"xs:xstring"); else if(how==L"Reason") arg.AddArg(name, GetReason(pr, comdid),L"xs:xstring"); else if(how==L"EntityNo") arg.AddArg(name, GetEntityNo(pr),L"xs:xstring"); else if(how==L"EntityTitle") arg.AddArg(name, GetEntityTitle(pr),L"xs:xstring"); else if(how==L"GetParam") arg.AddArg(name, GetParamValue(name),L"xs:xstring"); else if(how==L"UserID") arg.AddArg(name, xaserver::GetUserId(),L"xs:xstring"); //"CHeckAskMsg" //"CHeckMsg //trace(arg.GetString()); //trace(arg.GetArgString(name)); if(how==L"Reason" && arg.GetArgString(name)==L"") return -1; //trace(L"cky1"); //if(how==L"EntityData" && arg.GetArgString(name)==L"") return -1; if(e.selectSingleNode(L"@check")) { xstring doCheck = e.selectSingleNode(L"@check").text(); if(doCheck == L"Y") { xstring value = arg.GetArgString(name); if(value == L"") { alert(name + L" ²ÎÊýÖµ²»ÄÜΪ¿Õ£¬Ê¼þÖÕÖ¹!"); return -1; } } } } arg.AddArg(L"action.entity",GetEntityName(pr),L"xs:xstring"); //trace(L"zzz"); //trace(arg.GetString()); //¶¯×÷ KXMLDOMNode n = x.selectSingleNode(L"//view.action[1]"); //trace(x.xml()); bool execResult = true; //´¦Àí½á¹û if(n) { name = n.selectSingleNode(L"@name").text(); if(n.selectSingleNode(L"@worknode")) worknode = n.selectSingleNode(L"@worknode").text(); else worknode = GetEntityWorkNode(pr,name); arg.AddArg(L"do",name,L"xs:xstring"); if(worknode !=L"") { //trace(L"do:"+worknode); int p = arg.ptr_native_; openUrl(worknode,p); //---openUrl(worknode,arg); } else { alert(L"Warn: Please configure worknode for action "+ name +L"."); return -1; } } else { //url::post(GetEntityName(pr)+L"/workflow/action",arg.GetString(),x); //trace(L"/workflow/action/"+GetEntityName(pr)+L"/"+action); //trace(L"=====L"); //trace(arg.GetString()); xml x1 ; x1.setNativePointer(xml::CreateInstance()); int retxx = url::post(L"/workflow/action/"+GetEntityName(pr)+L"/"+action,arg.GetString(),x1); if(retxx != 1) execResult = false; //trace(x1.xml()); if(x1.selectSingleNode(L"//msg")) { xstring aStr = L""+x1.selectSingleNode(L"//msg[1]").text(); if(aStr.find(L"Àí³É¹¦",0) < 0) alert(aStr); if(aStr.find(L"ʧ°Ü",0) >= 0) execResult = false; trace(aStr); } if(x1.selectSingleNode(L"//msg/@state")) { state = x1.selectSingleNode(L"//msg[1]/@state").text(); arg.AddArg(L"state",state,L"xs:xstring"); } } //¸üÐÂÒªÇó if(execResult) { nlist = x.selectNodes(L"//view/update"); nlen = nlist.length; for(i=0; idw_list.GetRowCount()) return 1; if (!dw_list.GetRowElement(row1)) return 1; KXMLDOMElement ele1 = dw_list.GetRowElement(row1); xstring id1 = GetEntityIDName(1); xstring d1 = ele1.selectSingleNode(id1).text(); xstring name1 = GetEntityName(row1); xaserverarg arg1; xstring templ = ele1.getAttribute(L"content2"); xstring taskid = ele1.getAttribute(L"taskid"); arg1.AddArg(L"template", templ); arg1.AddArg(L"TaskID", taskid); arg1.AddArg(L"EntityID", d1); arg1.AddArg(L"bill.purchor", L"1"); OpenWindow(L"dev:xpage[QuoteFile.vx]", arg1); return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(xstring comdid) { //alert(comdid); xstring userno = publiccode::GetUser().no; if (comdid == L"action:bill.purchor") return BillPurchor(); if (comdid == L"action:bill.check.agree") { int row3 = dw_list.GetRow(); if (row3<0 || row3>dw_list.GetRowCount()) return 1; if (!dw_list.GetRowElement(row3)) return 1; KXMLDOMElement ele3 = dw_list.GetRowElement(row3); xstring id3 = GetEntityIDName(1); xstring d3 = ele3.selectSingleNode(id3).text(); xstring name3 = GetEntityName(row3); if (name3 == L"SaleItem3") { xml x3; xaserverarg arg3; arg3.AddArg(L"SOLineID", d3); if (getUrl(L"/sale/data/SaleOrder/UpdateSOLineTypeExS", arg3.GetString(), x3) != 1) { xstring error3 = x3.text(); alert(L"err:" + error3); return 1; } ProcessFlowAction(L"action:bill.check.agree", 1); return 1; } } if (userno == L"00601" || userno == L"00701" || userno == L"admin") { if (comdid == L"SourceRemark") { OnSourceRemark(); return 1; } } if (comdid == L"action:bill.check.agreeEx") { int row2 = dw_list.GetRow(); if (row2<0 || row2>dw_list.GetRowCount()) return 1; if (!dw_list.GetRowElement(row2)) return 1; KXMLDOMElement ele2 = dw_list.GetRowElement(row2); xstring id2 = GetEntityIDName(1); xstring d2 = ele2.selectSingleNode(id2).text(); xstring name2 = GetEntityName(row2); if (name2 == L"SaleItem3") { if (MessageBox(GetHWND(), L"ÊÇ·ñÈ·ÈÏ ¹¤³§¸¶¿î£¿", L"Ìáʾ1", 1) == 2) return 1; xml x5; xaserverarg arg5; arg5.AddArg(L"SOLineID", d2); if (getUrl(L"/sale/data/SaleOrder/UpdateSOLineTypeEx", arg5.GetString(), x5) != 1) { xstring error = x5.text(); alert(L"err:" + error); return 1; } alert(x5.text()); ProcessFlowAction(L"action:bill.check.agree", 1); return 1; } } if (comdid && comdid.find(L"hand!", 0) == 0) { if (comdid == L"hand!toleft") { ProcessFlowAction(L"action:bill.check.unagree", 1); return 1; } if (comdid == L"hand!toright") { ProcessFlowAction(L"action:bill.check.agree", 1); return 1; } if (comdid == L"hand!toupright") { int row = dw_list.GetRow(); if (row<0 || row>dw_list.GetRowCount()) return 1; if (!dw_list.GetRowElement(row)) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); xstring id = GetEntityIDName(1); xstring d = ele.selectSingleNode(id).text(); if (d == L"") return 1; ProcessFlowAction(L"action:bill.open", 1); return 1; } if (comdid == L"hand!round") { ProcessFlowAction(L"action:bill.note", 1); return 1; } } if (comdid == L"xmIconNotifyClicked") { //OpenWindow(L"dev:xpage[/]",0); init(); return 1; } if (comdid == L"xmRefresh" || comdid == L"xmRefreshTask") { init(); return 1; } if (ProcessFlowAction(comdid, 1) == 0) return 0; if (comdid == L"action:bill.open") { int row1 = dw_list.GetRow(); if (row1<0 || row1>dw_list.GetRowCount()) return 1; if (!dw_list.GetRowElement(row1)) return 1; KXMLDOMElement ele1 = dw_list.GetRowElement(row1); xstring id1 = GetEntityIDName(1); xstring d1 = ele1.selectSingleNode(id1).text(); xstring name1 = GetEntityName(row1); if (name1 == L"QuoteEnquiry") { xaserverarg arg1; xstring templ = ele1.getAttribute(L"content2"); xstring taskid = ele1.getAttribute(L"taskid"); arg1.AddArg(L"template", templ); arg1.AddArg(L"TaskID", taskid); arg1.AddArg(L"EntityID", d1); OpenWindow(L"dev:xpage[QuoteFile.vx]", arg1); return 1; } if (name1 == L"SampleFee") { xaserverarg arg; arg.AddArg(L"SampleFeeID", d1); //arg.AddArg(L"HWND",GetHWND().toString()); OpenWindow(L"dev:xpage[maint.samplefee.vx]", arg); return 1; } } return 0; } int OnSourceRemark() { xstring name = L"ÊÂÎñ´¦Àí"; xml x = ViewObject::RetrieveData(L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name); KXMLDOMNodeList items = x.selectNodes(L"data/Item"); KXMLDOMNode t = items.item(0); xstring Content = L""; if (t.selectSingleNode(L"Content")) { Content = t.selectSingleNode(L"Content").text(); } xaserverarg arg1; arg1.AddArg(L"value", Content); OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg1); return 1; } int OnDoubleClicked(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; if (row<0 || row>dw_list.GetRowCount()) return 1; if (!dw_list.GetRowElement(row)) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); xstring id = GetEntityIDName(1); xstring d = ele.selectSingleNode(id).text(); if (d == L"") return 1; xstring name1 = GetEntityName(1); if (name1 == L"QuoteEnquiry") { xaserverarg arg1; xstring templ = ele.getAttribute(L"content2"); xstring taskid = ele.getAttribute(L"taskid"); //trace(templ); arg1.AddArg(L"template", templ); arg1.AddArg(L"TaskID", taskid); arg1.AddArg(L"EntityID", d); OpenWindow(L"dev:xpage[QuoteFile.vx]", arg1); return 1; } ProcessFlowAction(L"action:bill.open", 1); return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(TEvent* evt, LPARAM param) { SetAgent(); //ÖØÖù¤¾ßÌõ return 1; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt, LPARAM p) { return OnCmdDispatch(evt->xcommand.pStrID); } int ShowDetail(int row) { if (row<0 || row>dw_list.GetRowCount()) return 1; if (!dw_list.GetRowElement(row)) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); dw_list.SetRow(row); if (GetEntityID(1) == L"") return -1; //trace(ele.xml); xaserverarg arg; arg.AddArg(L"content", ele.xml()); xml doc; if (getUrl(L"/sale/data/vpage/vstart/task", arg.GetString(), doc) != 1) { trace((xstring)L"error->:" + doc.xml()); return 0; } if ((xstring)doc.xml() == L"") return -1; xshtml ht = GetControl(L"taskinfo"); ht.SetContent(doc.xml()); ht.Redraw(); return 1; } int OnClicked(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; trace(L"count:" + (xstring)dw_list.GetRowCount()); if (row<1 || row>dw_list.GetRowCount()) return 1; trace(L"\r\n-------" + (xstring)row); if (ShowDetail(row) != 1) { xstring xfNodeAgentArea = L"agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); this->SetAgentNode(anode, L""); } else { SetAgent(); ShowAgentInfo(); } return 1; } int ShowAgentInfo() { xstring taskID = GetTaskID(); if (taskID != L"") { KXMLDOMDocument x = ViewObject::RetrieveData(L"/sale/data/Agent/task", L"TaskID", taskID); if (x) { xshtml xs = GetControl(L"frame:agentinfo"); string content = x.xml(); xs.SetContent(content); xs.Redraw(); } } return 1; } int OnRowChanged(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; if (row<0 || row>dw_list.GetRowCount()) return 0; trace(L"\r\n-----222------"); if (ShowDetail(row) != 1) { xstring xfNodeAgentArea = L"agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); this->SetAgentNode(anode, L""); } else { SetAgent(); ShowAgentInfo(); } return 1; } int onload() { //alert(L"xxxxxxxxxxx"); //SetAgent(); //AttachEvent(L"WM_SETFOCUS", (FEvent)&startvframevbusiness::OnSetFocus); //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent)&HomeWin::OnXCommand); //AttachEvent(L"WM_TIMER",OnTimer); AttachEvent(L"tasklist", L"DWV_ROWFOCUSCHANGED", (FEvent)&HomeWin::OnRowChanged); AttachEvent(L"tasklist", L"DWV_DOUBLECLICKED", (FEvent)&HomeWin::OnDoubleClicked); AttachEvent(L"tasklist", L"DWV_CLICKED", (FEvent)&HomeWin::OnClicked); dw_list = GetControl(L"tasklist"); init(); SetAgent(); return 1; } int onloaded() { return 1; } };