#include #include #include #include #include #include #include #include "xcontrol/xshtml.hpp" #include #include "viewobject/view.base.hpp" #include "vbusiness/vframe/frame.vframe.vbusiness.hpp" #include "viewobject/productlibrary.view.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) ProductNewList : public xframe { public: ProductNewList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static ProductNewList* CreateInstance(void* implPtr, void* hWnd) { ProductNewList* pWin = new ProductNewList(implPtr, (HWND)hWnd); return pWin; } public: xdwgrid dw_list; KXMLDOMElement imageElement; xnode m_agentNode; //Agent Condition int SetAgent() { xstring xfNodeAgentArea = L"agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); if (m_agentNode) { SetAgentNode(anode, m_agentNode); } else { KXMLDOMElement xframeElement = GetElement(); KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); if (agent) { xstring s = agent.xml(); m_agentNode = SetAgentNode(anode, s); } } return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(TEvent * evt, int param) { //ÖØÖù¤¾ßÌõ SetAgent(); return 1; } int OnRetrieve() { xml x; xcontrol query = GetControl(L"sle_search"); xstring keyword = query.GetText(); //alert(keyword); xaserverarg arg ; arg.AddArg(L"keyword", keyword); if (xurl::get(L"/sale/data/ProductLibrary3/data/list/newlist", arg.GetString(), x) != 1) { xstring error = x.text(); trace(error); } else { //alert(x.GetXml()); dw_list.Retrieve(x); //dw_list.SetReadOnly(true); } for (int i = 1; i <= dw_list.GetColumnCount(); i++) { //trace(dw_list.GetColumnName(i)); if (dw_list.GetColumnName(i) != L"GoodsNo" && dw_list.GetColumnName(i) != L"EName" && dw_list.GetColumnName(i) != L"CName") dw_list.SetReadOnlyColumn(i); } dw_list.Redraw(); } int OnRetrieveEx() { xml x; xcontrol query = GetControl(L"sle_search"); xstring keyword = query.GetText(); //alert(keyword); xaserverarg arg ; arg.AddArg(L"keyword", keyword); if (xurl::get(L"/sale/data/ProductLibrary3/data/list/newlistEx", arg.GetString(), x) != 1) { xstring error = x.text(); trace(error); } else { //alert(x.GetXml()); dw_list.Retrieve(x); //dw_list.SetReadOnly(true); } for (int i = 1; i <= dw_list.GetColumnCount(); i++) { //trace(dw_list.GetColumnName(i)); if (dw_list.GetColumnName(i) != L"GoodsNo" && dw_list.GetColumnName(i) != L"EName" && dw_list.GetColumnName(i) != L"CName") dw_list.SetReadOnlyColumn(i); } dw_list.Redraw(); } xml GetGoodsPropList(xstring guid) { xml x; xaserverarg arg ; arg.AddArg(L"guid", guid); if (xurl::get(L"/sale/data/SO/goods/goodsprop/list", arg.GetString(), x) != 1) { xstring error = x.text(); alert(error); } return x; } xml GetGoodsPropListEx(xstring guid) { xml x; xstring fields = L""; //fields +=L""; //fields +=L""; //fields +=L""; //fields +=L""; //fields +=L""; //fields +=L""; fields += L""; fields += L""; fields += L""; fields += L""; fields += L""; //fields +=L""; fields += L""; //fields +=L""; fields += L""; x.loadXML(fields); return x; } xstring makeHtml(int row) { xstring id = dw_list.GetGuid(row); xml x = GetGoodsPropList(id); xml x1 = GetGoodsPropListEx(id); xstring html = L""; html += L"
±àºÅ:" + dw_list.GetItemString(row, L"SKUNo") + L" ÀàÏî:" + dw_list.GetItemString(row, L"RefNo") + L"
"; html += L"
¹«Ë¾ÐͺÅ:" + dw_list.GetItemString(row, L"GoodsNo") + L"
"; html += L"
Æ·Ãû:" + dw_list.GetItemString(row, L"CName") + L"
"; if (dw_list.GetItemString(row, L"CSpec") != L"") html += L"
¹æ¸ñ:" + dw_list.GetItemString(row, L"CSpec") + L"
"; KXMLDOMNodeList fieldsEx = x1.selectNodes(L"data/field"); xstring ls_detail = L""; xstring ls_item = L""; xstring name; xstring label; int len = fieldsEx.length(); int i = 0; for (i = 0; i < len; true) { int cnt = 0; ls_item = L""; while (cnt < 2) { name = fieldsEx.item(i).selectSingleNode(L"@name").text(); label = fieldsEx.item(i).selectSingleNode(L"@label").text(); ls_item += L"" + label + L"" + L"" + dw_list.GetItemString(row, name) + L""; cnt++; i++; if (i == len)break; } ls_detail += L"" + ls_item + L""; } html += (xstring)L"
" + +L"" + ls_detail + L"
" + L"
"; xstring ls_star = L""; KXMLDOMNodeList fields = x.selectNodes(L"data/field"); len = fields.length(); ls_detail = L""; if (len > 0) html += L"
¼¼ÊõÒªÇó:
"; for (i = 0; i < len; true) { ls_item = L""; int count = 0; while (count < 2) { name = fields.item(i).selectSingleNode(L"@name").text(); label = fields.item(i).selectSingleNode(L"@label").text(); if (name == L"QualityTerm" || name == L"PackTerm" || label == L"ÖÊÁ¿" || label == L"°ü×°ÖÊÁ¿" || label == L"¼¼ÊõÒªÇó") { i++; if (i >= len)count = 2; continue; } else if (dw_list.GetItemString(row, name) == L"") { KXMLDOMNodeList options = fields.item(i).selectNodes(L"item"); int tlen = options.length(); xstring terms = L""; for (int k = 0; k < tlen; k++) { if (options.item(k).text()) { if (k > 0) terms += L", L"; terms += L"[" + xstring(options.item(k).text()) + L"]"; } } ls_star += L"
" + label + L"*:" + terms + L"
"; } else { ls_item = L"" + label + L"" + L"" + dw_list.GetItemString(row, name) + L""; count++; } i++; if (i >= len)count = 2; } ls_item = L"" + ls_item + L""; ls_detail += ls_item; } html +=(xstring) L"
" + +L"" + ls_detail + L"
" + L"
"; if (dw_list.GetItemString(row, L"QualityTerm") != L"") { html += L"
"; html += L"
ÖÊÁ¿:
"; html += L"
" + dw_list.GetItemString(row, L"QualityTerm") + L"
"; } if (dw_list.GetItemString(row, L"PackTerm") != L"") { html += L"
"; html += L"
°ü×°ÖÊÁ¿:
"; html += L"
" + dw_list.GetItemString(row, L"PackTerm") + L"
"; } if (dw_list.GetItemString(row, L"Remark") != L"") { //html += L"
"; html += L"
±¸×¢:
"; html += L"
" + dw_list.GetItemString(row, L"Remark") + L"
"; } html += L"
"; //ÐDZêÏî html += ls_star; //ÏÔʾͼƬ /* if (id != L"") { xml xp=new xml; xp.setNativePointer(xml::CreateInstance()); xaserverarg arg_pic=new xaserverarg; arg_pic.setNativePointer(arg_pic.CreateInstance()); arg_pic.AddArg(L"SKUID",id); if(xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1) { trace(L"xxx",xp.GetXml()); }else { html += L"
ͼƬ:" ; KXMLDOMElement ep= xp.selectSingleNode(L"ImageList"); if (ep) { if (ep.SelectNodes(L"image")){ KXMLDOMNodeList nlistp = ep.SelectNodes(L"image"); int ip=0; int lenp = nlistp.length(); for(ip=0;ip"; } } } html += L"
"; } }else { xstring picname = L"1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,L"ImgName"); //ItemID+L".jpg"; xstring str = picname.mid(0,2); str = str.upper(); xstring serversrc =L"http://192.168.7.241:1001/business/products/chanpin/"+str+L"/"+picname; html += L"
ͼƬ:"; html += L"
"; } */ html += L""; //trace(html); return html; } int OnShowImage(xstring skuid) { ximageview im = GetControl(L"im1"); //im.RemoveImage(); im.Reset(); xml xp; xaserverarg arg_pic ; arg_pic.AddArg(L"SKUID", skuid); if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU", arg_pic.GetString(), xp) != 1) { trace(L"xxx:" + xstring(xp.xml(), true)); } else { //trace(skuid+L" "+xp.GetXml()); imageElement = xp.documentElement(); KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image"); int lenp = nlistp.length(); for (int ip = 0; ip < lenp; ip++) { KXMLDOMElement xitem = nlistp.item(ip); xstring picname = xitem.selectSingleNode(L"PicPath").text(); xstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); if (picname == L"/business/products/Thumbs//") picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; im.AddImages(picname, L""); } im.Redraw(); //win32::SendMessage(im.GetId(),0x000f,0,1); //win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true); } return 1; } int OnRowChanged(TEvent* evt, int p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; xshtml xs = GetControl(L"html_detail"); xstring html = makeHtml(row); xs.SetContent(html); xs.Redraw(); xstring id = dw_list.GetGuid(row); OnShowImage(id); return 1; } int OnImgDBClicked(TEvent* evt, int pr) { IMGNNMHDR& nmtv = *(IMGNNMHDR*)evt->notify.pnmh; xstring src = nmtv.path; /*if(src.length() > 60) src = src.right(44); else src=src.mid(src.find(L"Thumbs", 0)+6, 50); */ xaserverarg& arg = *new xaserverarg; //arg.AddArg(L"src",L"/business/products/chanpin"+src); arg.AddArg(L"src", src); //win::OpenWindow(L"dev:xpage[BigPicture.vx]",arg); //int h = (L"/sale/view/ProductLibrary/xpage/bigpictureview", arg); int h = openUrl(L"dev:xpage[BigPictureView.Product3.vx]", &arg); /* xwin x = new xwin; x.setNativePointer(h); m_winHwnd = x.GetHWND(); xstring sh = doc.GetXml(); int p = cast(sh as int); win32::SendMessage(m_winHwnd, 0x401, p, 0); */ return 1; } int OnSave() { dw_list.AcceptText(); if (dw_list.GetRowCount() < 1) return 0; xstring error = L""; xml x; dw_list.DwUpdateAllToEx(x); xaserverarg arg ; arg.AddArg(L"content", x.xml()); //trace(x.GetXml()); if (xurl::get(L"/sale/data/ProductLibrary3/update/productex", arg.GetString(), x) != 1) { error = x.text(); alert(error); return 1; } else { alert(L"±£´æ³É¹¦"); arg.AddArg(L"No", dw_list.GetItemString(dw_list.GetRow(), L"SKUNo")); if (xurl::get(L"/sale/data/business/message/productApplyedMessage", arg.GetString(), x) != 1) { error = x.text(); trace(error); return 0; } } return 1; } int OnMakeNewGoodsNo() { if (dw_list.GetItemString(dw_list.GetRow(), L"GoodsNo") != L"") return 1; if (dw_list.GetRowCount() < 1) return 1; xaserverarg arg ; arg.AddArg(L"EntityID", dw_list.GetGuid(dw_list.GetRow())); KXMLDOMElement e = dw_list.GetRowElement(dw_list.GetRow()); int pr = cast(e as int); arg.AddArg(L"data",xstring( pr)); pr = cast(dw_list as int); arg.AddArg(L"dw", pr.toString()); arg.AddArg(L"HWND", xstring((__int64)GetHWND())); OpenWindow(L"dev:xpage[ProductNewItem.vx]", arg ); return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(xstring comdid) { if (comdid == L"xmCancel") { CloseWindow(); return 1; } if (comdid == L"xmMakeGoodsNo") { return OnMakeNewGoodsNo(); } if (comdid == L"xmProductView") { OpenWindow(L"dev:xpage[Product.SearchDlg.vx]", 0); return 1; } if (comdid == L"xmRefresh") { if (xaserver::GetUserNo() != L"00A01") { OnRetrieve(); } else { OnRetrieveEx(); } return 1; } if (comdid == L"xmDelete") { int row = listwin::dw_list.GetNextSelectRow(1); if (row < 1) { row = listwin::dw_list.GetRow(); if (row < 1) { //win::MessageBox(GetHWND(),L"ÇëÑ¡ÖÐҪɾ³ýµÄÐУ¡",L"Ìáʾ",0); return -1; } } KXMLDOMElement e = listwin::dw_list.GetRowElement(row); xstring sguid = e.selectSingleNode(L"@guid").text(); int MB_YESNO = 0x00000004; int IDYES = 6; if (MessageBox(GetHWND(), L"È·ÈÏɾ³ýÂð£¿", L"Ìáʾ", MB_YESNO) != IDYES) return 1; xml x; xaserverarg arg ; arg.AddArg(L"EntityID", sguid); // trace(sguid); if (xurl::post(L"/sale/data/ProductLibrary3/delete/Product", arg.GetString(), x) != 1) { xstring error = x.text(); trace(error); } else { KXMLDOMElement msg = x.selectNodes(L"process").item(0); xstring success = msg.selectSingleNode(L"@finished").text(); if (success == L"0") { alert(msg.selectSingleNode(L"@errInfo").text()); } else { MessageBox(GetHWND(), L"ɾ³ý³É¹¦£¡", L"Ìáʾ", 0); listwin::dw_list.DeleteRow(row); } } return 1; } if (comdid == L"xmSave") return OnSave(); return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt, int param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductNewList::OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductNewList::OnSetFocus); AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductNewList::OnRowChanged); AttachEvent(L"im1", L"IMG_LDBCLICK", (FEvent)&ProductNewList::OnImgDBClicked); } int onload() { dw_list = GetControl(L"dw_list"); dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"")); dw_list.SetEditUpperMode(true); dw_list.SetReadOnly(true); OnAttachEvent(); dw_list.SetColumnState(L"SKUID", false); return 1; } int onloaded() { SetAgent(); if (xaserver::GetUserNo() != L"00A01") OnRetrieve(); return 1; } };