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