#include #include #include #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) listCustomerv3 : public listwin { public: xdwgrid dw_goods; xtreeview tv_1; xcombobox ddlb_1; int changeddlb; xstring m_sType; //type xstring m_sTypeTxt; //选中树的data // xstring m_searchtxt; int PIndex; xnode m_agentNode; //Agent Condition xstring m_agentCond; //Agent Node public: listCustomerv3(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} public: static listCustomerv3* CreateInstance(void* implPtr, void* hWnd) { listCustomerv3* pWin = new listCustomerv3(implPtr, (HWND)hWnd); return pWin; } int OnPreRetrieve() { xml x; xaserverarg arg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg(L"pageindex", xstring(PIndex)); //第几页 arg.AddArg(L"pagenumber", xstring(m_pageNumber)); //每页数量 arg.AddArg(L"QueryTxt", m_QueryTxt); arg.AddArg(L"sType", m_sType); if (m_sType == L"Source.unshipedEx")m_sTypeTxt = L"."; arg.AddArg(L"sTypeTxt", m_sTypeTxt); // arg.AddArg(L"txt",m_searchtxt); //alert(listwin::m_QueryTxt); trace(L"pageindex====L" + xstring(PIndex) + L"pagenumber====L" + xstring(m_pageNumber) + L"QueryTxt====L" + L"sType====L" + m_sType + L"sTypeTxt====L" + m_sTypeTxt); if (getUrl(GetServerUrl(), L"/sale/data/" + GetEntityName(1) + L"/entity/list", arg.GetString(), x) != 1) { //alert(x.text()); return -1; } else { if ((xstring)x.xml() == L"") return 1; KXMLDOMElement e = x.documentElement(); if (listwin::dw_pages && e.selectSingleNode(L"@TotalPage")) { xstring s = e.selectSingleNode(L"@TotalPage").text(); //总数量 dw_pages.SetMaxPage(s.toInt()); } dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetReadOnly(true); } return 1; } int SetEntityData(xaserverarg arg) { xstring strQueryTxt = arg.GetArgString(L"QueryTxt"); //trace(strQueryTxt); // arg.AddArg(L"QueryTxt", m_QueryTxt); xml x; arg.AddArg(L"sType", m_sType); arg.AddArg(L"sTypeTxt", m_sTypeTxt); // arg.AddArg(L"txt",m_searchtxt); //alert(arg.GetString()); CustomerV3 if (getUrl(GetServerUrl(), L"/sale/data/" + GetEntityName(1) + L"/entity/list", arg.GetString(), x) != 1) { alert(x.text() + (xstring)L"url:" + L"/sale/data/" + GetEntityName(1) + L"/entity/list"); return -1; } else { KXMLDOMElement e = x.documentElement(); if (listwin::dw_pages && e.selectSingleNode(L"@TotalPage")) { xstring s = e.selectSingleNode(L"@TotalPage").text(); //总数量 listwin::dw_pages.SetMaxPage(s.toInt()); } //trace(x.GetXml()); listwin::dw_list.Retrieve(x); listwin::dw_list.Redraw(); listwin::dw_list.SetReadOnly(true); } return 1; } int OnChangePages(TEvent* evt, LPARAM p) { PAGENMHDR* h = (PAGENMHDR*)evt->notify.pnmh; int c = h->cur; HCURSOR hCursor = xutil::SetCursorWait(); OnRetrieve(); PIndex = c; xutil::RestoreCursor(hCursor); return 1; } int ViewUpdate(int pr, xstring updateItem, xaserverarg arg) { //alert( updateItem); if (updateItem == L"del") { int DelRow = dw_list.GetRow(); dw_list.DeleteRow(DelRow); } if (updateItem == L"refresh") { //trace(L"sd"); xdwpages zz = GetControl(L"pages"); int h = zz.SetCurPage(1); //trace(h); OnRetrieve(); } return 1; } //树选择 int OnTreeSelChanged(TEvent* evt, LPARAM p) { if (changeddlb != 1) { HTREEITEM h = tv_1.GetSelectedItem(); KXMLDOMElement& e = *(KXMLDOMElement*)tv_1.GetItemData(h); xstring t = e.selectSingleNode(L"@type").text(); m_sType = t + L""; xstring txt = e.selectSingleNode(L"@code").text(); if (txt == L"") txt = e.selectSingleNode(L"@name").text(); m_sTypeTxt = txt + L""; PIndex = 1; OnRetrieve(); } return 1; } int createSubTree(HTREEITEM h, KXMLDOMElement ele) { KXMLDOMNodeList nlist = ele.selectNodes(L"item"); int i; int s = nlist.length(); if (s > 0) for (i = 0; i < s; i++) { KXMLDOMElement* e = new KXMLDOMElement(nlist.item(i)); xstring name = e->selectSingleNode(L"@name").text(); HTREEITEM hw = tv_1.InsertChildItem(h, name, (LPARAM)e, 15); createSubTree(hw, *e); } return 1; } int OnCreateTree(xstring sType) { trace(L"***"); while (tv_1.GetRootItem()) tv_1.DeleteItem(tv_1.GetRootItem()); xml x; xaserverarg arg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg(L"sType", sType); trace(L"sType****" + sType); if (getUrl(GetServerUrl(), L"/sale/data/" + GetEntityName(1) + L"/pref/list/tree", arg.GetString(), x) != 1) { trace(x.text()); return -1; } else { //alert(x.GetXml()); KXMLDOMNodeList nlist = x.selectNodes(L"root/item"); int len = nlist.length(); if (len > 0) { int i; for (i = 0; i < len; i++) { KXMLDOMElement* e = new KXMLDOMElement(nlist.item(i)); xstring name = e->selectSingleNode(L"@name").text(); HTREEITEM hw = tv_1.InsertChildItem(0, name, (LPARAM)e, 15); createSubTree(hw, *e); tv_1.ExpandItem(hw); } tv_1.ExpandItem(0); } } return 1; } //xcombobox下拉 int OnSelectDdlb(TEvent* evt, int p) { changeddlb = 1; int CB_GETCURSEL = 0x0147; int nIndex = SendMessageW(ddlb_1.GetHWND(), CB_GETCURSEL, 0, 0); KXMLDOMElement e = ddlb_1.GetElement();//GetitemData(wid,nIndex);//ddlb_1.GetElement(); KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring((nIndex + 1)) + L"]"); xstring text = e2.selectSingleNode(L"@element").text(); OnCreateTree(text); changeddlb = 0; return 1; } /* int OnDeleteRow() { int row = dw_list.GetNextSelectRow(1); if (row < 1){ row = listwin::dw_list.GetRow(); if (row < 1) { //win::MessageBox(GetHWND(),L"请选中要删除的行!",L"提示",0); return 0; } } KXMLDOMElement e = dw_list.GetRowElement(row); xstring sguid = e.SelectSingleNode(L"CustomerID").text() xstring sName = e.selectSingleNode(L"Name").text+L""; int MB_YESNO = 0x00000004; int IDYES = 6; if(win32::MessageBox(GetHWND(),L"确认要删除客户 "+sName+L" 的信息吗?",L"提示",MB_YESNO)!=IDYES) return 1; xml x ; x.setNativePointer(x.CreateInstance()); xaserverarg arg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg(L"guid",sguid); // trace(sguid); if (url::post(L"/sale/data/"+GetEntityName(1)+L"/entity/delete",arg.GetString(),x) != 1) { xstring error = x.text(); trace(error); } else { //win32::MessageBox(GetHWND(),L"删除成功!",L"提示",0); dw_list.DeleteRow(row); } return 0; }*/ int GridSearch() { #if 0 xstring m_config = L"view.Customer.v3.config"; xdwgrid dw = listwin::dw_list; xaserverarg arg; xstring str = TFile::node(m_config, L"config", L"search"); if (str != L"") { arg.AddArg(L"sheet", str); } else arg.AddArg(L"sheet", L"dev:sheet[Customer.v3.tpl/list]"); arg.AddArg(L"search", listwin::m_QueryTxt); openUrl(L"view.dlg.vface/xpage/grid/column/search", arg); xstring ok = arg.GetArgString(L"return"); if (ok == L"ok") { xstring txt = arg.GetArgString(L"search"); if (txt != L"") { listwin::m_QueryTxt = txt; //trace(txt); OnRetrieve(); } } #endif return 0; } int OnSelectAllRow() { int rows = listwin::dw_list.GetRowCount(); if (rows < 1) return -1; listwin::dw_list.SelectRow(1, rows, true); listwin::dw_list.Redraw(); return 1; } int OnRClick(TEvent* evt, int p) { return 1; } int OnLogOff() { return 1; } int OnShare() { xaserverarg& arg = *new xaserverarg; int row = dw_list.GetRow(); if (row < 1) return 0; xstring PartyID = dw_list.GetItemString(row, L"PartyID"); arg.AddArg(L"EntityID", PartyID); arg.AddArg(L"EntityName", L"客户共享"); OpenWindow(L"dev:xpage[UserGroupShare.vx]", (LPARAM)&arg); return 1; } int OnShareMessage() { xaserverarg& arg = *new xaserverarg; int row = dw_list.GetRow(); if (row < 1) return 0; xstring PartyID = dw_list.GetItemString(row, L"PartyID"); arg.AddArg(L"PartyID", PartyID); OpenWindow(L"dev:xpage[XmShare.Custumer.v3.vx]", (LPARAM)&arg); return 1; } int PreOnCmdDispatch(xstring comdid) { if (comdid.find(L"action:LogOff", 0) >= 0) return OnLogOff(); //if(comdid.find(L"action:bill.delete",0)>=0) return OnDeleteRow(); if (comdid == L"action:search1") return GridSearch(); if (comdid == L"action:bill.refresh") { //m_PageIndex= 1; return OnRetrieve(); } if (comdid == L"action:XmShare") { OnShare(); return 0; } if (comdid == L"action:XmShareMessage") { OnShareMessage(); return 0; } if (comdid == L"action:bill.xmSaveAs") { xstring userno = publiccode::GetUser().no; if (userno == L"00701" || userno == L"00601" || userno == L"admin") { dw_list.SaveAs(L""); } return 1; } if (comdid == L"action:bill.SourceRemark") return OnSourceRemark(); if (comdid == L"action:bill.Annex") { xaserverarg& arg = *new xaserverarg; arg.AddArg(L"entityid", dw_list.GetItemString(dw_list.GetRow(), L"PartyID")); OpenWindow(L"dev:xpage[maint.Document.Customer.v3.vx]", (LPARAM)&arg); return 1; } if (comdid == L"action:bill.open") { xaserverarg& arg9 = *new xaserverarg; arg9.AddArg(L"PartyID", dw_list.GetItemString(dw_list.GetRow(), L"PartyID")); arg9.AddArg(L"CustomerGood", dw_list.GetItemString(dw_list.GetRow(), L"CustomerGood")); arg9.AddArg(L"ApplyStatus", dw_list.GetItemString(dw_list.GetRow(), L"ApplyStatus")); OpenWindow(L"dev:xpage[maint.Document.Customer.v3.vx]", (LPARAM)&arg9); return 1; } if (comdid == L"action:bill.AnnexEx") { xaserverarg& arg4 = *new xaserverarg; arg4.AddArg(L"entityid", dw_list.GetItemString(dw_list.GetRow(), L"CMID")); OpenWindow(L"dev:xpage[maint.Document.Customer.v3.vx]", (LPARAM)&arg4); return 1; } // if(comdid==L"action:bill.import") return OnImport(); // if(comdid.find(L"action:",0)>=0) return ProcessFlowAction(comdid,1); //if(comdid==L"search") return GridSearch(L"view.dlg.vface/xpage/grid/column/edit"); //if(comdid==L"showall") return ShowAll(); return 1; } int OnSourceRemark() { xstring name = L"客户管理"; xml x = ViewObject::RetrieveData(GetServerUrl(), 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 = *new xaserverarg; arg1.AddArg(L"value", Content); OpenWindow(L"dev:xpage[memo.edit.new.vx]", (LPARAM)&arg1); return 1; } int OnRowChangedEx(TEvent* evt, int p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; //if(row < 1 or row > dw_list.GetRowCount()) return 1; KXMLDOMElement ele = listwin::dw_list.GetRowElement(row); xstring entity = ele.selectSingleNode(L"CustomerID").text(); xml x; xaserverarg arg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg(L"EntityID", entity); if (getUrl(GetServerUrl(), L"/sale/data/CustomerV3/entity/customeritem", arg.GetString(), x) != 1) { trace(x.text()); return -1; } else { dw_goods.Retrieve(x); dw_goods.Redraw(); dw_goods.SetReadOnly(true); } SetAgent(L"list", entity); return 1; } int PostOnAttachEvent() { //获得树的选择事件 AttachEvent(L"tv_1", L"TVN_SELCHANGED", (FEvent)&listCustomerv3::OnTreeSelChanged); AttachEvent(L"cbx_1", L"CBN_SELCHANGE", (FEvent)&listCustomerv3::OnSelectDdlb); AttachEvent(L"pages", L"PAGE_CLICK", (FEvent)&listCustomerv3::OnChangePages); AttachEvent(L"dw_list", L"DWV_RCLICKED", (FEvent)&listCustomerv3::OnRClick);//鼠标右键 //AttachEvent(L"dw_list",L"DWV_CLICKED",OnClick);//鼠标右键 return 1; } int onload() { PIndex = 1; m_QueryTxt = L""; //查询条件 m_sType = L""; //type m_sTypeTxt = L""; //选中树的data listwin::onload(); tv_1 = GetControl(L"tv_1"); ddlb_1 = GetControl(L"cbx_1"); changeddlb = 0; OnCreateTree(L"Source"); dw_goods = GetControl(L"dw_goods"); dw_goods.openUrl(GetServerUrl(), L"/sale/view/CustomerV3/template/customer/customeritem"); return 1; } int onloaded() { AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&listCustomerv3::OnRowChangedEx); listwin::onloaded(); dw_list.SetColumnState(L"PartyID", false); dw_list.SetColumnState(L"CMID", false); xstring EntityID; int row = dw_list.GetRow(); if (row<0 || row>dw_list.GetRowCount()) return 1; KXMLDOMElement ele = dw_list.GetRowElement(row); xstring id = listwin::m_configDoc.selectSingleNode(L"//entity/EntityID[1]").text(); if (ele.selectSingleNode(id)) EntityID = ele.selectSingleNode(id).text(); listwin::SetAgent(L"list", EntityID); return 1; } };