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/Simple.Menu.Config.cpp |  276 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 276 insertions(+), 0 deletions(-)

diff --git a/jrj/project/business/BasicCode/Simple.Menu.Config.cpp b/jrj/project/business/BasicCode/Simple.Menu.Config.cpp
new file mode 100644
index 0000000..d201903
--- /dev/null
+++ b/jrj/project/business/BasicCode/Simple.Menu.Config.cpp
@@ -0,0 +1,276 @@
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
+
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
+
+using xml = KXMLDOMDocument;
+
+class  __declspec(dllexport) SimpleMenuConfig : public xframe
+{
+public:
+	xdwgrid dw_list;
+	xtreeview tv_gs;
+	xnode	m_agentNode;
+public:
+	SimpleMenuConfig(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+public:
+	static SimpleMenuConfig* CreateInstance(void* implPtr, void* hWnd)
+	{
+		SimpleMenuConfig* pWin = new SimpleMenuConfig(implPtr, (HWND)hWnd);
+		return pWin;
+	}
+	int AddRow()
+	{
+		dw_list.InsertRow(0);
+		return 1;
+	}
+
+	int InsertRow()
+	{
+		dw_list.AcceptText();
+		int row = dw_list.GetRow();
+		if(row < 1 || row >dw_list.GetRowCount())
+			AddRow();
+		else
+			dw_list.InsertRow(row);
+		return 1;
+	}
+
+	int DeleteRow()
+	{
+		dw_list.AcceptText();
+		int row = dw_list.GetRow();
+		if(row < 1 || row >dw_list.GetRowCount()) 
+			return 1;
+		dw_list.DeleteRow(row);
+		return 1;
+	}
+
+	int Save()
+	{
+		dw_list.AcceptText();
+		int i=0;
+		for(i=1; i<=dw_list.GetRowCount();i++)
+		{
+			xstring seq = dw_list.GetItemString(i, L"SeqNo");
+			if(seq != xstring(i))
+				dw_list.SetItemString(i, L"SeqNo", xstring(i));
+		}
+		
+		xml x;
+		
+		xaserverarg arg;
+			
+		dw_list.DwUpdateAllToEx(x);
+		arg.AddArg(L"content", x.xml());
+		if(getUrl(L"/workflow/action/ItemPictureMenu.dbmap/bill.update", arg.GetString(), x) != 1)
+			alert(L"保存失败!");
+		else
+		{
+			xstring str = x.xml();
+			//alert(str);
+			if(str.find(L"失败", 0) > 0)
+				alert(L"保存失败!");
+			else
+			{
+				//alert(L"保存成功!");
+				dw_list.ResetUpdateStatus();
+				dw_list.DwUpdateAllToEx(x);
+				HTREEITEM hItem =tv_gs.GetSelectedItem();
+				if(hItem > 0)
+				{
+					KXMLDOMElement e =  x.documentElement();
+					int p = trust(e);
+					tv_gs.SetItemData(hItem, p);
+				
+					while(tv_gs.GetChildItem( hItem) > 0)
+						tv_gs.DeleteItem(tv_gs.GetChildItem( hItem));
+				
+					KXMLDOMNodeList li =  x.selectNodes(L"item/item");
+					int s = li.length();
+					for(i=0;i<s;i++)
+					{
+						KXMLDOMElement ele =  li.item(i);
+						int pa = trust(ele);
+						xstring name = ele.selectSingleNode(L"Name").text();
+						HTREEITEM cItem =tv_gs.InsertChildItem( hItem, name, pa, 15);
+						if(ele.selectSingleNode(L"item"))
+							tv_gs.SetItemChild1(cItem, 1);
+					}
+				}
+				
+			}
+		}
+		return 1;
+	}
+						
+	int UpRow()
+	{
+		dw_list.AcceptText();
+		int row = dw_list.GetRow();
+		if(row < 2 || row > dw_list.GetRowCount()) 
+			return 1;
+		dw_list.SetRowMove(row, -1);
+		dw_list.SetRow(row - 1);
+		dw_list.Redraw();
+		return 1;
+	}
+						
+	int DownRow()
+	{
+		dw_list.AcceptText();
+		int row = dw_list.GetRow();
+		if(row < 1 || row > dw_list.GetRowCount() - 1) 
+			return 1;
+		dw_list.SetRowMove(row, 1);
+		dw_list.SetRow(row + 1);
+		dw_list.Redraw();
+		return 1;
+	}
+						
+	int OnCmdDispatch(xstring comdid)
+	{
+		HCURSOR hCursor = xutil::SetCursorWait();
+		if(comdid == L"AddRow")  AddRow();
+		else if(comdid == L"InsertRow")  InsertRow();
+		else if(comdid == L"DeleteRow")  DeleteRow();
+		else if(comdid == L"Save")  Save();
+		else if(comdid == L"UpRow")  UpRow();
+		else if(comdid == L"DownRow")  DownRow();
+		xutil::RestoreCursor(hCursor);
+		return 0;
+	}		
+
+	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, LPARAM p)
+	{		
+		SetAgent()	;	
+		return 1;
+	}		
+	
+	int OnXCommand(TEvent* evt, LPARAM param)
+	{
+		return OnCmdDispatch(evt->xcommand.pStrID);
+	}
+		
+	int OnTreeSelChanged(TEvent* evt, LPARAM p)
+	{
+		
+		NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+		HTREEITEM hItem = nmtv.itemNew.hItem;
+		KXMLDOMElement& e = *(KXMLDOMElement*)tv_gs.GetItemData(hItem);
+		//trace(L"%s", e.xml);
+		//xstring id = e.selectSingleNode(L"MenuID").text();
+		dw_list.AcceptText();
+		dw_list.Retrieve(e);
+		dw_list.Redraw();
+		return 1;
+	}	
+
+	int OnTreeMoveNode(TEvent* evt, LPARAM p)	
+	{
+		TVNNMHDR& nmtv = *(TVNNMHDR*)evt->notify.pnmh;
+		HTREEITEM xfrom = nmtv.FromItem;
+		HTREEITEM xto = nmtv.ToItem;
+		
+		int ret = MessageBox(GetHWND(), L"确定移动节点!",L"提示:",1);
+		//trace(ret);
+		if(ret == 2)
+		{
+			tv_gs.DeleteItem(xto);
+			return -1;
+		}
+		KXMLDOMElement& fid = *(KXMLDOMElement*)tv_gs.GetItemData(xto);
+		HTREEITEM xpto =tv_gs.GetParentItem(xto);
+		KXMLDOMElement& tid = *(KXMLDOMElement*)tv_gs.GetItemData(xto);
+		//trace(L"%s-------------------------%s",fid.xml,tid.xml);
+		xml x ;
+		
+		xaserverarg arg;
+				
+		
+		xstring id1 = fid.selectSingleNode(L"@guid").text();
+		xstring id2 = tid.selectSingleNode(L"@guid").text();
+		//trace(L"%s-------------------------%s",id1,id2);
+		xstring str = L"update ItemPictureMenu set parentid='"+id2+L"' where menuid='"+id1+L"' ";
+		str += L" select 1 for xml path('root')L";
+		
+		arg.AddArg(L"sql", str);
+		if(getSql(arg.GetString(),x)!=1)
+		{
+			trace(L"error:"+(xstring)x.xml());
+			alert(L"移动节点出错!");
+			tv_gs.DeleteItem(xto);
+			return 0;
+		}
+		//trace(L"================L");
+		//
+		HTREEITEM xpfrom =tv_gs.GetParentItem(xfrom);
+		//trace(L"%d", xpfrom);
+		KXMLDOMElement& fe = *(KXMLDOMElement*)tv_gs.GetItemData(xpfrom);
+		//trace(L"%s-------------------------%s",fe.xml,tid.xml);
+		KXMLDOMElement fe1 = fe.selectSingleNode(L"item[@guid='"+id1+L"']");
+		fe.removeChild(fe1);
+		tid.appendChild(fid);
+		
+		tv_gs.DeleteItem(xfrom);
+		return 1;
+	}
+
+	int OnInitial()
+	{			
+		HTREEITEM rItem =tv_gs.GetRootItem();
+		tv_gs.ExpandItemEx( rItem);
+		tv_gs.ItemFocus(rItem);
+		return 1;
+	}
+		
+	int OnAttachEvent()
+	{
+		AttachEvent(L"WM_XCOMMAND", (FEvent)&SimpleMenuConfig::OnXCommand);
+		AttachEvent(L"WM_SETFOCUS", (FEvent)&SimpleMenuConfig::OnSetFocus);
+		AttachEvent(L"tv_gs",L"TVN_SELCHANGED", (FEvent)&SimpleMenuConfig::OnTreeSelChanged);
+		AttachEvent(L"tv_gs", L"TVN_ENDDRAG", (FEvent)&SimpleMenuConfig::OnTreeMoveNode);
+		return 1;
+	}		
+	
+	int onload()
+	{
+		dw_list = GetControl(L"dw_list");
+		dw_list.openUrl(L"/sale/view/SimpleProduct/template/Simple/Menu");
+		dw_list.SetColumnState(L"SeqNo", false);
+		
+		tv_gs = GetControl(L"tv_gs");
+		
+		SetAgent();
+		OnAttachEvent();
+		
+		OnInitial();
+
+		return 1;
+	}
+};
\ No newline at end of file

--
Gitblit v1.9.3