From 87ad0617f1fb1cdefe1e08da3b7fda9335de7730 Mon Sep 17 00:00:00 2001
From: LiFan <2308045698@qq.com>
Date: 星期三, 17 七月 2024 18:15:19 +0800
Subject: [PATCH] update

---
 jrj/project/business/SystemSettings/SysUser.hpp      |  337 ++++++++++++++++++++++++++++++++++++++++++++++++
 jrj/project/business/SystemSettings/AddUser.cpp      |   15 -
 jrj/ext-jrj/ext-jrj.vcxproj                          |    1 
 jrj/project/business/SystemSettings/AddUserGroup.cpp |    3 
 jrj/project/business/SystemSettings/UserImport.cpp   |    5 
 5 files changed, 347 insertions(+), 14 deletions(-)

diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj
index 8541279..cadca4a 100644
--- a/jrj/ext-jrj/ext-jrj.vcxproj
+++ b/jrj/ext-jrj/ext-jrj.vcxproj
@@ -160,6 +160,7 @@
     </PostBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClInclude Include="..\project\business\SystemSettings\SysUser.hpp" />
     <ClInclude Include="..\project\viewobject\custom.view.hpp" />
     <ClInclude Include="..\project\viewobject\customer.view.hpp" />
     <ClInclude Include="..\project\viewobject\enquiry.view.hpp" />
diff --git a/jrj/project/business/SystemSettings/AddUser.cpp b/jrj/project/business/SystemSettings/AddUser.cpp
index e92636d..2e215c3 100644
--- a/jrj/project/business/SystemSettings/AddUser.cpp
+++ b/jrj/project/business/SystemSettings/AddUser.cpp
@@ -1,8 +1,3 @@
-use "win.vl"
-use "treeview.vm"
-use "dev:vm[xdwgrid.vm]"
-use "dev:vm[xdwtable.vm]"
-use "pref.vl"
 #include <wobject/xstring.hpp>
 #include <xcontrol/xtreeview.hpp>
 #include <xcontrol/xdwgrid.hpp>
@@ -11,7 +6,8 @@
 
 #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
 #include "viewobject/view.base.hpp"
-//use "dev:xpage[SysUser.vx]"
+
+#include "SysUser.hpp"
 
 using xml = KXMLDOMDocument;
 class __declspec(dllexport) AddUser : public xwin
@@ -51,8 +47,7 @@
 	int AppendItem(xml x, KXMLDOMElement r, xstring item) {
 		var e = x.createElement(item);
 		//xcontrol xc = GetControl(item);
-		control xc = new control;
-		xc.setNativePointer(GetControl(item));
+		xcontrol xc = GetControl(item);
 		e.text() = xc.GetText();
 		r.appendChild(e);
 		return 1;
@@ -60,14 +55,14 @@
 
 	int OnSave()
 	{
-		control xc = new control;
+		xcontrol xc = GetControl(L"UserName");
 		/*xc=GetControl(L"EmployeeNo");
 		if (xc.GetText()==L"")
 		{
 			alert(L"用户代码不能为空!");
 			return 0;
 		}*/
-		xc = GetControl(L"UserName");
+		
 		if (xc.GetText() == L"")
 		{
 			alert(L"用户名称不能为空!");
diff --git a/jrj/project/business/SystemSettings/AddUserGroup.cpp b/jrj/project/business/SystemSettings/AddUserGroup.cpp
index ab4a3d2..6b8c2cf 100644
--- a/jrj/project/business/SystemSettings/AddUserGroup.cpp
+++ b/jrj/project/business/SystemSettings/AddUserGroup.cpp
@@ -86,8 +86,7 @@
 			arg.AddArg(L"content", x.xml());
 			if (xaserver::ExecXAction(GetServerUrl(), L"[update.Usergroup.xa]", arg.GetString()) == 1)
 			{
-				control xc = new control;
-				xc.setNativePointer(GetControl(L"JobName"));
+				xcontrol xc = GetControl(L"JobName");
 				//p.tv.Redraw();
 				if (p.note == L"修改")
 				{
diff --git a/jrj/project/business/SystemSettings/SysUser.hpp b/jrj/project/business/SystemSettings/SysUser.hpp
new file mode 100644
index 0000000..0fcf083
--- /dev/null
+++ b/jrj/project/business/SystemSettings/SysUser.hpp
@@ -0,0 +1,337 @@
+#pragma once
+
+#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) SysUser : public xwin
+{
+public:
+	xtreeview tv_usergroup;
+	xdwgrid dw_user;
+	xnode	m_agentNode;
+	xstring strJobID;
+public:
+	SysUser(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
+public:
+	static SysUser* CreateInstance(void* implPtr, void* hWnd)
+	{
+		SysUser* pWin = new SysUser(implPtr, (HWND)hWnd);
+		return pWin;
+	}
+	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 param)
+	{
+		SetAgent();
+		//重置工具条
+		return 1;
+	}
+
+	int SetEntityData(param p)
+	{
+		xml x;
+
+		xaserverarg arg;
+
+		xstring str = m_QueryTxt;
+		//trace(ele.xml);
+		//alert(str);
+		arg.AddArg(L"guid", str);
+		//trace(strJobID);
+		if (xaserver::ExecXQuery(L"", L"[list.SysUser.xq]", arg.GetString(), x) == 1)
+		{
+			dw_user.AcceptText();
+			dw_user.Retrieve(x);
+			dw_user.Redraw();
+		}
+		return 1;
+	}
+
+	int OnTreeSelChanged(TEvent* evt, LPARAM p)
+	{
+		NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+
+		HTREEITEM hItem = nmtv.itemNew.hItem;
+
+		//int wid = tv_usergroup.GetId();
+		HTREEITEM hitem = tv_usergroup.GetSelectedItem();
+		HTREEITEM rootItem = tv_usergroup.GetRootItem();
+		//if (hItem <=0 || hItem == rootItem) 
+		//	return 0;	
+		KXMLDOMElement ele = tv_usergroup.GetItemData(hitem);
+		//trace(L"ok");
+		if (ele)
+		{
+			xml x;
+
+			xaserverarg arg;
+
+			strJobID = ele.selectSingleNode(L"@JobID").text();
+			//trace(ele.xml);
+			//alert(strJobID);
+			arg.AddArg(L"guid", strJobID);
+			//trace(strJobID);
+			if (xaserver::ExecXQuery(L"", L"[list.SysUser.xq]", arg.GetString(), x) == 1)
+			{
+				dw_user.AcceptText();
+				dw_user.Retrieve(x);
+				dw_user.Redraw();
+			}
+		}
+
+		return 1;
+	}
+
+	int xmImport()
+	{
+
+		//int wid = tv_usergroup.GetId();
+		HTREEITEM hitem = tv_usergroup.GetSelectedItem();
+		if (!hitem)
+		{
+			alert(L"请选择职位!");
+			return 0;
+		}
+		OpenWindow(L"dev:xpage[UserImport.vx]");
+		//openUrl(L"系统用户.vface/xpage/SysUser/UserImport", this);
+		return 1;
+	}
+	int OnSave()
+	{
+		xml x;
+
+		dw_user.DwUpdateAllToEx(x);
+		xaserverarg arg;
+
+		arg.AddArg(L"content", x.xml());
+		arg.AddArg(L"dbmap", L"SysUser.dbmap");
+		if (getUrl(L"/sale/data/SysUser/SysUser", arg.GetString(), x) != 1)
+		{
+			//trace(L"error:"+x.xml());
+			alert(L"保存失败");
+		}
+		else {
+			if (x.selectSingleNode(L"erroe"))
+			{
+				alert(L"保存出错2! ");
+				return 0;
+			}
+			//trace(x.xml());
+			dw_user.ResetUpdateStatus();
+			MessageBox(GetHWND(), L"保存成功!", L"提示", 0);
+		}
+
+		/*					arg.AddArg(L"xdata",x.xml());
+						//arg.AddArg(L"jobguid",strJobID);
+						//trace(x.xml());
+						//trace(strJobID);
+						//if (getUrl(L"/sale/data/SysUser/SysUser",arg.GetString(),x) != 1)
+						//trace(xaserver::ExecXAction(GetServerUrl(),L"[SysUser.xa]",arg.GetString(),x));
+					if (xaserver::ExecXAction(GetServerUrl(),L"[SysUser.xa]",arg.GetString(),x)!=1)
+						{
+							//trace(L"error:"+x.xml());
+							alert(L"保存失败");
+						}
+						else{
+							if(x.selectSingleNode(L"ERROR"))
+							{
+								alert(L"保存出错2! ");
+								return 0;
+							}
+							MessageBox(GetHWND(),L"保存成功!",L"提示",0);
+						}*/
+		return 1;
+	}
+	int OnAddRow()
+	{
+		//int wid = tv_usergroup.GetId();
+		HTREEITEM hitem = tv_usergroup.GetSelectedItem();
+		if (hitem == 0)
+		{
+			alert(L"请先选择职位类型!");
+		}
+		else
+		{
+			int row = dw_user.InsertRow(0);
+			dw_user.SetItemString(row, L"Status", L"Y");
+		}
+		return 1;
+	}
+
+	int OnInsertRow()
+	{
+		//int wid = tv_usergroup.GetId();
+		HTREEITEM hitem = tv_usergroup.GetSelectedItem();
+		if (hitem == 0)
+		{
+			alert(L"请先选择职位类型!");
+		}
+		else
+		{
+			int crow = dw_user.GetRow();
+			int row = dw_user.InsertRow(crow);
+			dw_user.SetItemString(row, L"Status", L"Y");
+		}
+		return 1;
+	}
+
+	int OnDeleteRow()
+	{
+		int row = dw_user.GetRow();
+		dw_user.DeleteRow(row);
+		return 1;
+	}
+
+	int OnJobType()
+	{
+		openUrl(L"组织架构.vface/worknode/Hr/HrJob");
+		return 1;
+	}
+
+	int OnClicked(TEvent* evt, LPARAM p)
+	{
+		DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
+		int row = hdr.row;
+		int col = hdr.col;
+		xstring colname = dw_user.GetColumnName(col);
+		KXMLDOMElement xrow = dw_user.GetRowElement(row);
+		xstring BindComputer = xrow.selectSingleNode(L"BindComputer").text();
+		xaserverarg arg;
+
+		if (BindComputer != L"")
+		{
+			arg.AddArg(L"BindComputer", BindComputer);
+		}
+
+		xstring comdid;
+		if (colname == L"BindComputer")
+		{
+			openUrl(L"系统用户.vface/xpage/SysUser/BindComputer/dialog", arg);
+			comdid = arg.GetArgString(L"comdid");
+			if (comdid == L"ok")
+			{
+				xstring strxml = arg.GetArgString(L"xml");
+				dw_user.SetItemDisplayString(row, colname, strxml);
+				dw_user.SetItemString(row, colname, strxml);
+				dw_user.Redraw();
+			}
+		}
+		return 1;
+	}
+
+	int OnResetPass()
+	{
+		xaserverarg arg;
+
+
+		int row = dw_user.GetRow();
+		if (row < 1) return 1;
+		arg.AddArg(L"user", dw_user.GetItemString(row, L"EmployeeNo"));
+
+		OpenWindow(L"dev:xpage[ResetUserPassDlg.vx]", arg);
+		return 1;
+	}
+
+	int Onlog()
+	{
+		openUrl(L"/sale/view/SysUser/xpage/SysUser/SysLoginRecord");
+		return 1;
+	}
+	//命令发布函数
+	int OnCmdDispatch(xstring comdid)
+	{
+		if (comdid == L"Save")  OnSave();
+		else if (comdid == L"AddRow") OnAddRow();
+		else if (comdid == L"InsertRow") OnInsertRow();
+		else if (comdid == L"DeleteRow") OnDeleteRow();
+		else if (comdid == L"JobType") OnJobType();
+		else if (comdid == L"xmImport") xmImport();
+		else if (comdid == L"xmLog") Onlog();
+		else if (comdid == L"_cb_grid_search") return GridSearchEx();
+		else if (comdid == L"xmResetPass") return OnResetPass();
+		else if (comdid == L"xmResetPassEx") OpenWindow(L"dev:xpage[SysForcePassward.vx]");
+		return 0;
+	}
+
+
+	//命令处理事件
+	int OnXCommand(TEvent* evt, LPARAM param)
+	{
+		return OnCmdDispatch(evt->xcommand.pStrID);
+	}
+
+	int OnAttachEvent()
+	{
+		//绑定工具条点击事件
+		AttachEvent(L"WM_XCOMMAND", (FEvent)&SysUser::OnXCommand);
+		//获取焦点事件,用于重置工具条
+		AttachEvent(L"WM_SETFOCUS", (FEvent)&SysUser::OnSetFocus);
+		//获得树的选择事件
+		AttachEvent(L"tv_usergroup", L"TVN_SELCHANGED", (FEvent)&SysUser::OnTreeSelChanged);
+		//AttachEvent(L"dw_user",L"DWV_ITEMBEINGEDIT",OnClicked);					
+		AttachEvent(L"dw_user", L"DWV_DOUBLECLICKED", (FEvent)&SysUser::OnClicked);
+		return 1;
+	}
+
+	int OnInitial()
+	{
+		SetAgent();
+
+		OnAttachEvent();
+		return 1;
+	}
+
+	int onload()
+	{
+		m_agentNode = new xnode;
+
+		tv_usergroup = new treeview;
+		tv_usergroup.setNativePointer(GetControl(L"tv_usergroup"));
+		dw_user = new xdwgrid;
+		dw_user.setNativePointer(GetControl(L"dw_user"));
+		dw_user.SetDataObject(GetServerUrl(), L"dev:sheet[SysUser.tpl/UserList]");
+		dw_user.SetReadOnly(true);
+		dw_user.SetSelectionMode(1);
+
+		OnInitial();
+		//int wid = tv_usergroup.GetId();
+		HTREEITEM root = tv_usergroup.GetRootItem();
+		tv_usergroup.ExpandItem( root);
+
+		xml x;
+
+		x.loadXML(L"<Config/>");
+		m_configDoc = x;
+		rowSearch(L"系统用户.vface/template/SysUser/list");
+		GridSearchEx();
+
+		return 1;
+	}
+};
\ No newline at end of file
diff --git a/jrj/project/business/SystemSettings/UserImport.cpp b/jrj/project/business/SystemSettings/UserImport.cpp
index 0ef3160..809ca0f 100644
--- a/jrj/project/business/SystemSettings/UserImport.cpp
+++ b/jrj/project/business/SystemSettings/UserImport.cpp
@@ -6,7 +6,8 @@
 
 #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
 #include "viewobject/view.base.hpp"
-//use "dev:code[SysUser.vx]"
+
+#include "SysUser.hpp"
 
 using xml = KXMLDOMDocument;
 class __declspec(dllexport) UserImport : public xframe
@@ -327,7 +328,7 @@
 		OnInitial();
 		OnCreateTree(L"00000000-0000-0000-0000-000000000000", 0);
 		//int wid = tv_org.GetId();
-		int root = tv_org.GetRootItem();
+		HTREEITEM root = tv_org.GetRootItem();
 		tv_org.ExpandItem(root);
 		OnRetrieve(L"00000000-0000-0000-0000-000000000000");
 		return 1;

--
Gitblit v1.9.3