From 7a91c3a1ed37b0332d4ff0ebeae60bd6da3665c0 Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期二, 16 七月 2024 18:28:58 +0800 Subject: [PATCH] Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj --- jrj/project/business/BasicCode/SKUItem.categoryselect.cpp | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 216 insertions(+), 0 deletions(-) diff --git a/jrj/project/business/BasicCode/SKUItem.categoryselect.cpp b/jrj/project/business/BasicCode/SKUItem.categoryselect.cpp new file mode 100644 index 0000000..4b62ed7 --- /dev/null +++ b/jrj/project/business/BasicCode/SKUItem.categoryselect.cpp @@ -0,0 +1,216 @@ +use"lang.vl" +use "win.vl" +use "treeview.vm" +use "file.vl" +use "dev:vm[xdwtable.vm]" + +unit vbusiness.vpage +[ + SKUItemcategoryselect is extend TProduct; + about SKUItemcategoryselect + [ + field: + xdwtable dw_category; + method: + [ + treeview tv_gs; + //命令发布函数 + xstring GetPath(int tv, int h) + { + xstring str = treeview::GetItemLabel(tv, h); + int k = treeview::GetParentItem(tv, h); + int r = treeview::GetRootItem(tv); + while(k > 0 && r != k) + { + xstring tmp = treeview::GetItemLabel(tv, k); + str = tmp+L"\\" + str; + k = treeview::GetParentItem(tv, k); + } + return str; + } + int xunhuan(int pItem, int hItem) + { + xdwtable dw = new xdwtable; + dw.setNativePointer(dw_category.FindDwTable(L"Item",0)); + if(treeview::GetChecked(tv_gs.GetId(),hItem) > 0) + { + msxml::IXMLDOMElement e = treeview::GetItemData(tv_gs.GetId(),hItem); + xstring id = e.selectSingleNode(L"CategoryID").text; + xstring Name =GetPath(tv_gs.GetId(), hItem); + trace(Name); + if(dw.GetItemString(1,L"CategoryID")==L"") + { + dw.ItemChangeTo(1,L"CategoryID",id); + dw.ItemChangeTo(1,L"Category",Name); + } + else + { + int n=dw.InsertRow(0); + dw.ItemChangeTo(n,L"CategoryID",id); + dw.ItemChangeTo(n,L"Category",Name); + } + + + } + + int cItem = treeview::GetChildItem(tv_gs.GetId(), hItem); + if(cItem > 0) + { + xunhuan(pItem,cItem); + } + int nItem = treeview::GetNextItem(tv_gs.GetId(), hItem); + if(nItem > 0) + { + xunhuan(pItem,nItem); + } + return 1; + } + int OnCmdDispatch(xstring comdid) + { + if(comdid==L"ok") + { + int hitem = treeview::GetSelectedItem(tv_gs.GetId()); + if (hitem >0) + { + msxml::IXMLDOMElement ele=treeview::GetItemData(tv_gs.GetId(),hitem); + xstring guid = ele.selectSingleNode(L"CategoryID").text; + //xstring label = ele.selectSingleNode(L"CName").text; + xstring label = GetPath(tv_gs.GetId(), hitem); + trace(label); + xunhuan(hitem, treeview::GetChildItem(tv_gs.GetId(), treeview::GetRootItem(tv_gs.GetId()))); + win::CloseWindow(); + } + return 1; + } + if(comdid==L"close") + win::CloseWindow(); + return 0; + } + + int OnCmdDispatch0(xstring comdid) + { + xaserverarg arg = new xaserverarg; + arg.setNativePointer(arg.CreateInstance()); + arg = win::GetParam(); + arg.AddArg(L"comdid",comdid); + int xitem = treeview::GetSelectedItem(tv_gs.GetId()); + if(comdid==L"ok" && xitem != 0) + { + msxml::IXMLDOMElement e=treeview::GetItemData(tv_gs.GetId(),xitem); + + xstring sHasChild=e.selectSingleNode(L"@HasChild").text; + + if(treeview::GetChildItem(tv_gs.GetId(),xitem)>0 || sHasChild==L"1") + { + alert(L"提示:请选择最后一级类别!"); + return 0; + } + + xstring ID = e.selectSingleNode(L"CategoryID").text; + xstring CName = e.selectSingleNode(L"CName").text; + trace(CName); + xstring ruler; + if(e.selectSingleNode(L"SpecRule")) + ruler = e.selectSingleNode(L"SpecRule").text; + else + ruler =L""; + arg.AddArg(L"CategoryID",ID); + arg.AddArg(L"CName",CName); + arg.AddArg(L"SpecRule",ruler); + + } + win::CloseWindow(); + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int p) + { + return OnCmdDispatch(evt.pStrID); + } + + int CreateSubTree(int pitem){ + msxml::IXMLDOMElement sitemdata=treeview::GetItemData(tv_gs.GetId(), pitem); + xstring sHasChild=sitemdata.selectSingleNode(L"@HasChild").text;//sitemdata.getAttribute(L"HasChild"); + xstring pid=sitemdata.selectSingleNode(L"CategoryID").text; + //trace(sHasChild+L"sdaga"+pid); + if(sHasChild==L"1"){//数据有子节点 + int citem=treeview::GetChildItem(tv_gs.GetId(), pitem); + + //alert(xstring(citem)); + if (citem==0){//树视图有子节点 + xml x=new xml; + x.setNativePointer(xml::CreateInstance()); + xaserverarg arg=new xaserverarg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"parentID",pid); + //if(xaserver::ExecXQuery(GetServerUrl(),L"[ItemCategoryEx.xq]",arg.GetString(),x)!=1) + if(url::get(GetEntityName(1)+L"/entity/category",arg.GetString(),x)!=1) + { + trace(x.GetXml()); + return 0; + } + //trace(x.GetXml()); + var list=x.GetXmlDoc().selectNodes(L"root/Category"); + int i=0,s=list.length; + msxml::IXMLDOMElement xitem; + for (i=0;i<s;i++){ + xitem=list.item(s - i - 1); + xstring Name=xitem.selectSingleNode(L"CName").text; + xstring Has2D=xitem.selectSingleNode(L"@Has2D").text;//item.getAttribute(L"Has2D"); + if (Has2D==L"1") + Name=Name+L"*"; + int kitem=treeview::InsertItem(tv_gs.GetId(), pitem,0,Name,xitem,15); + //int kitem=treeview::InsertChildItem(tv_gs.GetId(), pitem,Name,xitem,15); + xstring HasChild=xitem.selectSingleNode(L"@HasChild").text;//item.getAttribute(L"HasChild"); + //trace(HasChild, kitem); + if (HasChild==L"1") + treeview::SetItemChild1(tv_gs.GetId(), kitem,1); + } + } + } + return 1; + } + + int CreateRootTree(){ + xstring rootid=L"00000000-0000-0000-0000-000000000000"; + xml x=new xml; + x.setNativePointer(xml::CreateInstance()); + x.LoadXml(L"<Category HasChild='1'><CategoryID>"+rootid+L"</CategoryID></Category>"); + int hroot=treeview::InsertItem(tv_gs.GetId(),L"公司产品类别", x.GetXmlDoc().documentElement, 17); + CreateSubTree(hroot); + treeview::ExpandItemEx(tv_gs.GetId(),hroot); + return 1; + } + + int OnTreeExpanding(ref TNotifyEvent evt,int p) { + ref NMTREEVIEW nmtv = evt.pnmh; + int sitem = nmtv.itemNew.hItem; + CreateSubTree(sitem); + return 1; + + } + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND",OnXCommand); + //获得树的展开事件 + AttachEvent(L"tv_gs", L"TVN_ITEMEXPANDING",OnTreeExpanding); + } + int onload() + { + if (GetParam()) + { + xaserverarg arg1=GetParam(); + dw_category = new xdwtable; + dw_category.setNativePointer(arg1.GetArgString(L"dw_category").toInt()); + } + tv_gs = new treeview; + tv_gs.setNativePointer(GetControl(L"tv_gs")); + CreateRootTree(); + OnAttachEvent(); + return 1; + } + ] + ] +] \ No newline at end of file -- Gitblit v1.9.3