From 930cfc3d026acb193de7948535992daefde60245 Mon Sep 17 00:00:00 2001
From: xj qian <qianxj15@sina.com>
Date: 星期四, 27 六月 2024 19:34:52 +0800
Subject: [PATCH] Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj

---
 jrj/project/business/HR/ManpowerFileWindow.cpp             |  178 ++++++++
 jrj/project/business/HR/AdministrativeDepartmentFolder.cpp |  194 +++++++++
 jrj/project/business/HR/BlankExcelTemplate.cpp             |  131 ++++++
 jrj/project/business/HR/AdministrativeDepartment.cpp       |  373 +++++++++++++++++
 jrj/project/business/HR/GraduationSchool.cpp               |    4 
 jrj/ext-jrj/ext-jrj.vcxproj                                |   15 
 jrj/project/business/HR/ManpowerFile.cpp                   |  332 +++++++++++++++
 jrj/ext-jrj/ext-jrj.vcxproj.filters                        |   14 
 8 files changed, 1,238 insertions(+), 3 deletions(-)

diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj
index ae5672b..82b24eb 100644
--- a/jrj/ext-jrj/ext-jrj.vcxproj
+++ b/jrj/ext-jrj/ext-jrj.vcxproj
@@ -248,8 +248,23 @@
     <ClCompile Include="..\project\business\GDN3.maint.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
+    <ClCompile Include="..\project\business\HR\AdministrativeDepartment.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\project\business\HR\AdministrativeDepartmentFolder.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\project\business\HR\BlankExcelTemplate.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+    </ClCompile>
     <ClCompile Include="..\project\business\HR\GraduationSchool.cpp" />
     <ClCompile Include="..\project\business\HR\GraduationSchoolWin.vx.cpp" />
+    <ClCompile Include="..\project\business\HR\ManpowerFile.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+    </ClCompile>
+    <ClCompile Include="..\project\business\HR\ManpowerFileWindow.cpp">
+      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+    </ClCompile>
     <ClCompile Include="..\project\business\Product.list.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
     </ClCompile>
diff --git a/jrj/ext-jrj/ext-jrj.vcxproj.filters b/jrj/ext-jrj/ext-jrj.vcxproj.filters
index 5538e29..2024dc4 100644
--- a/jrj/ext-jrj/ext-jrj.vcxproj.filters
+++ b/jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -371,7 +371,19 @@
     <ClCompile Include="..\project\business\HR\GraduationSchoolWin.vx.cpp">
       <Filter>project\business\HR</Filter>
     </ClCompile>
-    <ClCompile Include="GraduationSchoolWin.vx.cpp">
+    <ClCompile Include="..\project\business\HR\AdministrativeDepartment.cpp">
+      <Filter>project\business\HR</Filter>
+    </ClCompile>
+    <ClCompile Include="..\project\business\HR\AdministrativeDepartmentFolder.cpp">
+      <Filter>project\business\HR</Filter>
+    </ClCompile>
+    <ClCompile Include="..\project\business\HR\BlankExcelTemplate.cpp">
+      <Filter>project\business\HR</Filter>
+    </ClCompile>
+    <ClCompile Include="..\project\business\HR\ManpowerFile.cpp">
+      <Filter>project\business\HR</Filter>
+    </ClCompile>
+    <ClCompile Include="..\project\business\HR\ManpowerFileWindow.cpp">
       <Filter>project\business\HR</Filter>
     </ClCompile>
   </ItemGroup>
diff --git a/jrj/project/business/HR/AdministrativeDepartment.cpp b/jrj/project/business/HR/AdministrativeDepartment.cpp
new file mode 100644
index 0000000..0d6b5d7
--- /dev/null
+++ b/jrj/project/business/HR/AdministrativeDepartment.cpp
@@ -0,0 +1,373 @@
+use "xcontrol.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe
+use "xbase.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe
+use "saleorder.view.vd"
+unit trade
+[
+	class ViewAdministrativeDepartmentList : public listwin
+	{
+		xdwgrid		dw_list;
+		xtreeview	tv_folder;//hxsoft.com -> Developer -> wface -> vcontrol
+		string rows;
+		string urlTree;
+		string myDataUrl;
+		int changeddlb;
+
+		xnode	m_agentNode;	//Agent Condition
+
+		int SetAgent()
+		{
+			string xfNodeAgentArea = "agentarea";
+			xnode anode = GetAgentNode(xfNodeAgentArea);
+			if (m_agentNode)
+			{
+				SetAgentNodeContent(anode, m_agentNode);
+			}
+			else
+			{
+				msxml::IXMLDOMElement xframeElement = GetElement();
+				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
+				if (agent)
+				{
+					string s = agent.xml;
+					m_agentNode = SetAgentNodeContent(anode, s);
+				}
+			}
+			return 1;
+		}
+
+		//展开放进树里面
+		int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image)
+		{
+			/*在具体应用时可以用DOMDocument的Load方法来装载XML文档
+			用IXMLDOMNode 的selectNodes(查询的结果有多个,得到存放搜索结果的链表)
+			或selectSingleNode(查询的结果有一个,在有多个的情况下返回找到的第一个节点)方法进行查询,
+			用createNode和appendChild方法来创建节点和追加节点,
+			用IXMLDOMElement的setAttribute和getAttribute方法来设置和获得节点的属性。*/
+			msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
+			int len = nlist.length;
+			if (len > 0)
+				tv_folder.SetItemChild(hItem, 1);
+			for (int i = 0; i < len; i++)
+			{
+				msxml::IXMLDOMElement e = nlist.item(i);
+				string name = e.getAttribute("name");
+				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);//trust(e as int)将e放入树结构里面的data属性中
+				ExpandCatChildFolder(h, e, 35);
+			}
+			return 1;
+		}
+
+		//展开文件夹明细
+		int ExpandFolderItem(int hItem, string parentid)
+		{
+			xml x = ViewObject::RetrieveData(urlTree, "status", "有效", "parentid", parentid);//获取后台数据
+			if (!x) {
+				return 0;
+			}
+			msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("data/Item");
+			int len = nlist.length;
+			for (int i = 0; i < len; i++)
+			{
+				msxml::IXMLDOMElement e = nlist.item(i);
+				string name = e.selectSingleNode("name").text;
+				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
+				ExpandCatChildFolder(h, e, 35);
+			}
+			return 1;
+		}
+
+		//查找当前树项的顶级目录
+		int LookupTopFolder(int hItem)
+		{
+			int hRoot = tv_folder.GetRootItem();
+			while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
+			return hItem;
+		}
+
+		//树展开
+		int OnTreeExpanding(ref TNotifyEvent evt, int p)
+		{
+			ref NMTREEVIEW nmtv = evt.pnmh;
+			int hItem = nmtv.itemNew.hItem;
+			int hTopItem = LookupTopFolder(hItem);
+			string name = tv_folder.GetItemLabel(hTopItem);
+			int child = tv_folder.GetChildItem(hItem);
+
+			msxml::IXMLDOMElement e = tv_folder.GetItemData(hItem);
+			string parentid = "";
+			if (name != "部门结构")
+				parentid = e.selectSingleNode("adid").text;
+			trace(parentid);
+			if (!child) {
+				ExpandFolderItem(hItem, parentid);
+			}
+			return 1;
+		}
+
+		//查询节点的列表数据
+		int OnPreRetrieve()
+		{
+			int hItem = tv_folder.GetSelectedItem();
+			if (hItem <= 0) return 1;
+
+			//int 	hCursor = xutil::SetCursorWait();
+			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
+			string name = e.getAttribute("name");
+			xml x = 0;
+			string parentid = "";
+			if (name != "部门结构")
+				parentid = e.selectSingleNode("adid").text;
+			trace(parentid);
+			x = ViewObject::RetrieveData(myDataUrl, "parentid", parentid);
+			if (x)
+			{
+				//trace(x.GetXml());
+				dw_list.Retrieve(x);
+				dw_list.Redraw();
+			}
+			else {
+				dw_list.ResetEx();
+				dw_list.Redraw();
+			}
+			dw_list.SetReadOnly(true);
+			//xutil::RestoreCursor(hCursor);
+			return 1;
+		}
+
+		int OnTreeSelChanged(ref TNotifyEvent evt, int p)
+		{
+			if (changeddlb)
+				return 1;
+			int hItem = tv_folder.GetSelectedItem();
+			if (hItem <= 0)
+				return 1;
+			int child = tv_folder.GetChildItem(hItem);
+			if (!child) {
+				int 	hCursor = xutil::SetCursorWait();
+				msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
+				if (!e.getAttribute("name")) {
+					string adid = e.selectSingleNode("adid").text;
+					string parentid = adid;
+					ExpandFolderItem(hItem, parentid);
+				}
+			}
+			return OnPreRetrieve();
+		}
+
+		//焦点激活处理函数
+		int OnSetFocus(ref TEvent evt, int param)
+		{
+			//重置工具条
+			SetAgent();
+			return 1;
+		}
+
+		int OnAdd()
+		{
+			int hItem = tv_folder.GetSelectedItem();
+			if (hItem <= 0)
+				return 1;
+			int hCursor = xutil::SetCursorWait();
+			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
+			string parentid = "";//父级id
+			if (!e.getAttribute("name"))
+				parentid = e.selectSingleNode("adid").text;
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			arg.AddArg("parentid", parentid);
+			OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
+
+			return 1;
+		}
+
+		int OnUpdate()
+		{
+			/*int hItem = tv_folder.GetSelectedItem();
+
+			if(hItem <=0)
+				return 1;
+			int hCursor = xutil::SetCursorWait();
+			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
+
+			if(e.getAttribute("name"))
+				return 1;*/
+
+			int row = dw_list.GetRow();
+			if (row < 1)
+				return 1;
+			string parentid = "", adid = "";
+			/*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
+			adid = ele.selectSingleNode("adid").text;*/
+			adid = dw_list.GetItemString(row, "adid");
+			parentid = dw_list.GetItemString(row, "parentid");
+
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			/*string parentid = "", adid = "";//父级id
+
+			if(!e.getAttribute("name")){
+
+				parentid = e.selectSingleNode("adid").text;
+				adid = e.selectSingleNode("adid").text;
+			}*/
+			arg.AddArg("parentid", parentid);
+			arg.AddArg("adid", adid);
+			OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
+			return 1;
+		}
+
+		int OnDelete()
+		{
+			/*int hItem = tv_folder.GetSelectedItem();
+			if(hItem <=0) return 1;
+
+			int 	hCursor = xutil::SetCursorWait();
+			msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
+			string name = e.getAttribute("name");
+			string adid = "";
+			if(name != "部门结构")
+				adid = e.selectSingleNode("adid").text;*/
+
+			int row = dw_list.GetRow();
+			if (row < 1)
+				return 1;
+			string adid = "";
+			/*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
+			adid = ele.selectSingleNode("adid").text;*/
+			adid = dw_list.GetItemString(row, "adid");
+
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			arg.AddArg("adid", adid);
+			if (getUrl("/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1)
+			{
+				string error = x.GetXmlDoc().text;
+				alert("err:" + error);
+				return 1;
+			}
+			alert(x.GetXmlDoc().text);
+			dw_list.DeleteRow(row);
+			return 1;
+		}
+
+		int OnRefresh()
+		{
+			OnPreRetrieve();
+			return 1;
+		}
+
+		//命令发布函数
+		int OnCmdDispatch(string comdid)
+		{
+			if (comdid == "xmUpdate")
+				return OnUpdate();
+			else if (comdid == "xmAdd")
+				return OnAdd();
+			else if (comdid == "xmDelete")
+				return OnDelete();
+			else if (comdid == "xmRefresh")
+				return OnRefresh();
+			return 0;
+		}
+
+		//命令处理事件
+		int OnXCommand(ref TXCommandEvent evt, int param)
+		{
+			return OnCmdDispatch(evt.pStrID);
+		}
+
+		int OnAttachEvent()
+		{
+			AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //树选择
+			AttachEvent("tv_folder", "TVN_ITEMEXPANDING", OnTreeExpanding); //树展开
+
+			//AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
+			//AttachEvent("cbx_1","CBN_SELCHANGE",OnSelectDdlb);
+			//AttachEvent("cbx_datashow","CBN_SELCHANGE",OnSelectDataShowDdlb);
+
+			//绑定工具条点击事件
+			AttachEvent("WM_XCOMMAND", OnXCommand);
+			//获取焦点事件,用于重置工具条
+			AttachEvent("WM_SETFOCUS", OnSetFocus);
+		}
+
+		/*
+		//加载主体数据
+		int  OnRetrieve()
+		{
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			//arg.AddArg("xxx","xxx");
+			if (getUrl(myDataUrl,arg.GetString(),x)!=1)
+			{
+				trace(x.GetXmlDoc().text);
+				return -1;
+			}else
+			{
+				dw_list.Retrieve(x);
+				dw_list.Redraw();
+			}
+			return 1;
+		}
+		*/
+
+		//展开子文件
+		int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
+		{
+			msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
+			int len = nlist.length;
+			for (int i = 0; i < len; i++)
+			{
+				msxml::IXMLDOMElement e = nlist.item(i);
+				string name = e.getAttribute("name");
+				string sImage = e.getAttribute("image");
+				string child = e.getAttribute("child");
+				int image = 18;
+				if (sImage) image = sImage.toInt();
+				int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
+				if (child != "no")
+					tv_folder.SetItemChild(h, 1);
+				ExpandChildFolder(h, e);
+			}
+			return 1;
+		}
+
+		//初始化文件夹
+		int  InitialFolder()
+		{
+			msxml::IXMLDOMElement xframeElement = GetElement();
+			msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
+			if (e)
+				ExpandChildFolder(0, e);
+			return 1;
+		}
+
+		int onload()
+		{
+			dw_list = GetControl("dw_list");
+			dw_list.openUrl("/sale/view/AdministrativeDepartment/template/adlist");
+			dw_list.SetColumnState("adid", false);
+			dw_list.SetColumnState("parentid", false);
+
+			myDataUrl = "/sale/data/AdministrativeDepartment/ad_list";
+			urlTree = "/sale/data/AdministrativeDepartment/ad_sidelist";
+			tv_folder = GetControl("tv_folder");
+			tv_folder.SetLineAtRoot(true);
+			InitialFolder();
+			OnAttachEvent();
+
+			return 1;
+		}
+
+		int onloaded()
+		{
+			SetAgent();
+
+			return 1;
+		}
+	};
+]
\ No newline at end of file
diff --git a/jrj/project/business/HR/AdministrativeDepartmentFolder.cpp b/jrj/project/business/HR/AdministrativeDepartmentFolder.cpp
new file mode 100644
index 0000000..62c350d
--- /dev/null
+++ b/jrj/project/business/HR/AdministrativeDepartmentFolder.cpp
@@ -0,0 +1,194 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+	class AdministrativeDepartmentFolderView : public xframe
+	{
+		//xdwgrid	dw_list;
+		xdwtable dw_base;//新增弹窗时使用
+		string adid;
+		string name;
+		string parentid;
+		string getsingle_url;
+
+		xnode	m_agentNode;	//Agent Condition
+
+		/*int SetAgent()
+		{
+			string xfNodeAgentArea  = "agentarea";
+			xnode anode = GetAgentNode(xfNodeAgentArea);
+			if(m_agentNode)
+			{
+				SetAgentNodeContent (anode,m_agentNode);
+			}
+			else
+			{
+				msxml::IXMLDOMElement xframeElement =  GetElement();
+				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+				if(agent)
+				{
+					string s = agent.xml;
+					m_agentNode =  SetAgentNodeContent (anode,s);
+				}
+			}
+			return 1;
+		}*/
+
+		//焦点激活处理函数
+		int OnSetFocus(ref TEvent evt, int param)
+		{
+			//重置工具条
+			//SetAgent();
+			return 1;
+		}
+
+		int OnSave()
+		{
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			dw_base.AcceptText();
+			dw_base.DwUpdateAllTo(x.GetXmlDoc());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(xaserverarg::CreateInstance());
+			arg.AddArg("content", x.GetXml());
+			//trace(x.GetXml());
+			if (getUrl("/sale/data/AdministrativeDepartment/ad_update", arg.GetString(), x) != 1)
+			{
+				string error = x.GetXmlDoc().text;
+				alert("err:" + error);
+				return 1;
+			}
+			//trace("返回信息"+x.GetXml());
+			string str = x.GetXmlDoc().documentElement.getAttribute("text");
+			if (str == "true")
+			{
+				dw_base.ResetUpdateStatus();
+				CloseWindow();
+				alert("保存成功!");
+			}
+			else
+			{
+				alert("保存失败!");
+			}
+			return 1;
+		}
+
+		//命令发布函数
+		int OnCmdDispatch(string comdid)
+		{
+			if (comdid == "xmSave")
+				return OnSave();
+			else if (comdid == "xmClose")
+				CloseWindow();
+			return 0;
+		}
+
+		//命令处理事件
+		int OnXCommand(ref TXCommandEvent evt, int param)
+		{
+			return OnCmdDispatch(evt.pStrID);
+		}
+
+		int OnAttachEvent()
+		{
+			//绑定工具条点击事件
+			AttachEvent("WM_XCOMMAND", OnXCommand);
+			//获取焦点事件,用于重置工具条
+			AttachEvent("WM_SETFOCUS", OnSetFocus);
+		}
+
+		int  OnParentRetrieve()
+		{
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			arg.AddArg("adid", parentid);
+			if (getUrl(getsingle_url, arg.GetString(), x) != 1)
+			{
+				trace(x.GetXmlDoc().text);
+				return -1;
+			}
+			else
+			{
+				string parent_name = "";
+				string parent_adid = "";
+				string parent_level = "";
+				msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("data/Item");
+				int len = nlist.length;
+				for (int i = 0; i < len; i++)
+				{
+					msxml::IXMLDOMElement e = nlist.item(i);
+					parent_name = e.selectSingleNode("name").text;
+					parent_adid = e.getAttribute("guid");
+					parent_level = e.selectSingleNode("level").text;
+				}
+				xdwtable dw_obj = dw_base.FindDwTable("Item");
+				dw_obj.SetItemString(1, "parent_name", parent_name);
+				if (adid == "") {
+					dw_obj.SetItemString(1, "parentid", parent_adid);
+					dw_obj.SetItemString(1, "level", (parent_level.toInt() + 1).toString());
+				}
+
+				//dw_base.Retrieve(x);
+				//dw_base.Redraw();
+			}
+			return 1;
+		}
+
+		int  OnRetrieve()
+		{
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			arg.AddArg("adid", adid);
+			if (getUrl(getsingle_url, arg.GetString(), x) != 1)
+			{
+				trace(x.GetXmlDoc().text);
+				return -1;
+			}
+			else
+			{
+				dw_base.Retrieve(x);
+				dw_base.Redraw();
+			}
+			return 1;
+		}
+
+		int onload()
+		{
+
+			dw_base = GetControl("dw_base");
+			dw_base.openUrl("/sale/view/AdministrativeDepartment/template/adwin");
+			getsingle_url = "/sale/data/AdministrativeDepartment/ad_getsingle";
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			arg = GetParam();
+			adid = "";
+			parentid = "";
+			if (GetParam()) {
+				parentid = arg.GetArgString("parentid");
+				adid = arg.GetArgString("adid");
+			}
+			if (adid != "")
+				OnRetrieve();
+			if (parentid != "")
+				OnParentRetrieve();
+			OnAttachEvent();
+			dw_base.SetColHeaderHeight(0);
+			dw_base.SetRowSelectorWidth(0);
+			dw_base.SetHScrollState(false);
+			dw_base.SetVScrollState(false);
+			return 1;
+		}
+
+		int onloaded()
+		{
+			SetAgent();
+
+			return 1;
+		}
+	};
+]
\ No newline at end of file
diff --git a/jrj/project/business/HR/BlankExcelTemplate.cpp b/jrj/project/business/HR/BlankExcelTemplate.cpp
new file mode 100644
index 0000000..98bc2b1
--- /dev/null
+++ b/jrj/project/business/HR/BlankExcelTemplate.cpp
@@ -0,0 +1,131 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+	class BlankExcelTemplateView : public xframe
+	{
+		xdwgrid	dw_list;
+		//xdwtable dw_base;//新增弹窗时使用
+
+		xnode	m_agentNode;	//Agent Condition
+
+		int SetAgent()
+		{
+			string xfNodeAgentArea = "agentarea";
+			xnode anode = GetAgentNode(xfNodeAgentArea);
+			if (m_agentNode)
+			{
+				SetAgentNodeContent(anode, m_agentNode);
+			}
+			else
+			{
+				msxml::IXMLDOMElement xframeElement = GetElement();
+				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
+				if (agent)
+				{
+					string s = agent.xml;
+					m_agentNode = SetAgentNodeContent(anode, s);
+				}
+			}
+			return 1;
+		}
+
+		//焦点激活处理函数
+		int OnSetFocus(ref TEvent evt, int param)
+		{
+			//重置工具条
+			SetAgent();
+			return 1;
+		}
+
+		int OnSave()
+		{
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			dw_list.AcceptText();
+			dw_list.DwUpdateAllToEx(x.GetXmlDoc());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(xaserverarg::CreateInstance());
+			arg.AddArg("content", x.GetXml().replace(" 00:00:00", "").replace("0000-00-00", ""));
+			//trace(x.GetXml().replace(" 00:00:00", "").replace("0000-00-00", ""));//运行界面打印			
+			if (getUrl("/sale/data/ManpowerFile/multiUpdate", arg.GetString(), x) != 1) {
+				string error = x.GetXmlDoc().text;
+				alert("err:" + error);
+				return 1;
+			}
+			string str = x.GetXmlDoc().documentElement.getAttribute("text");
+			if (str == "true")
+			{
+				dw_list.ResetUpdateStatus();//更改更新状态,防止多保存
+				alert("保存成功!");
+
+			}
+			else
+			{
+				alert("保存失败!");
+			}
+			return 1;
+		}
+
+		//命令发布函数
+		int OnCmdDispatch(string comdid)
+		{
+			if (comdid == "xmSave")
+				return OnSave();
+			return 0;
+		}
+
+		//命令处理事件
+		int OnXCommand(ref TXCommandEvent evt, int param)
+		{
+			return OnCmdDispatch(evt.pStrID);
+		}
+
+		int OnAttachEvent()
+		{
+			//绑定工具条点击事件
+			AttachEvent("WM_XCOMMAND", OnXCommand);
+			//获取焦点事件,用于重置工具条
+			AttachEvent("WM_SETFOCUS", OnSetFocus);
+		}
+
+		/*//加载数据
+		int  OnRetrieve()
+		{
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			arg.AddArg("xxx","xxx");
+			if (getUrl("",arg.GetString(),x)!=1)
+			{
+				trace(x.GetXmlDoc().text);
+				return -1;
+			}else
+			{
+				//dw_list.Retrieve(x);
+				//dw_list.Redraw();
+			}
+			return 1;
+		}
+		*/
+
+		int onload()
+		{
+			dw_list = GetControl("dw_list");
+			dw_list.openUrl("/sale/view/ManpowerFile/template/list");
+
+			OnAttachEvent();
+
+			return 1;
+		}
+
+		int onloaded()
+		{
+			SetAgent();
+
+			return 1;
+		}
+	};
+]
\ No newline at end of file
diff --git a/jrj/project/business/HR/GraduationSchool.cpp b/jrj/project/business/HR/GraduationSchool.cpp
index 373df3d..ec34e40 100644
--- a/jrj/project/business/HR/GraduationSchool.cpp
+++ b/jrj/project/business/HR/GraduationSchool.cpp
@@ -133,8 +133,7 @@
 			xml x ;
 			
 			xaserverarg arg;
-			arg.setNativePointer(arg.CreateInstance());
-			//arg.AddArg(L"xxx",L"xxx");
+			
 			if (getUrl(L"/sale/data/GraduationSchool/data/list", arg.GetString(), x) != 1)
 			{
 				trace(x.text());
@@ -151,6 +150,7 @@
 
 		int onload()
 		{
+			SetAgent();
 			dw_list = GetControl(L"dw_list");
 			dw_list.openUrl(L"/sale/view/GraduationSchool/template/list");
 			OnRetrieve();
diff --git a/jrj/project/business/HR/ManpowerFile.cpp b/jrj/project/business/HR/ManpowerFile.cpp
new file mode 100644
index 0000000..f29ef85
--- /dev/null
+++ b/jrj/project/business/HR/ManpowerFile.cpp
@@ -0,0 +1,332 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+use "base.view.vd"
+
+unit trade
+[
+	class ViewManpowerFileList : public xframe
+	{
+		xdwgrid	dw_list;//hxsoft.com -> Developer -> wface -> vcontrol
+		int hSignWin;
+		xdwtable dw_arg;
+		xnode	m_agentNode;	//Agent Condition
+
+		string urlTree;
+		xtreeview tv_folder;
+		//展开子文件
+		int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
+		{
+			msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
+			int len = nlist.length;
+			for (int i = 0; i < len; i++)
+			{
+				msxml::IXMLDOMElement e = nlist.item(i);
+				string name = e.getAttribute("name");
+				string sImage = e.getAttribute("image");
+				string child = e.getAttribute("child");
+				int image = 15;
+				if (sImage) image = sImage.toInt();
+				int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
+				if (child != "no") tv_folder.SetItemChild(h, 1);
+				ExpandChildFolder(h, e);
+			}
+			return 1;
+		}
+		int  InitialFolder()
+		{
+			msxml::IXMLDOMElement xframeElement = GetElement();
+			msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
+			if (e)
+				ExpandChildFolder(0, e);
+			return 1;
+		}
+
+		int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image)
+		{
+			msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
+			int len = nlist.length;
+			if (len > 0) tv_folder.SetItemChild(hItem, 1);
+			for (int i = 0; i < len; i++)
+			{
+				msxml::IXMLDOMElement e = nlist.item(i);
+				string name = e.getAttribute("name");
+				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);
+				ExpandCatChildFolder(h, e, 35);
+			}
+			return 1;
+		}
+		int ExpandFolderItem(int hItem)
+		{
+			xml x = ViewObject::RetrieveData(urlTree);
+			if (!x) return 0;
+			msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("/data/item");
+			int len = nlist.length;
+			for (int i = 0; i < len; i++)
+			{
+				msxml::IXMLDOMElement e = nlist.item(i);
+				string name = e.getAttribute("name");
+				int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
+				ExpandCatChildFolder(h, e, 35);
+			}
+			return 1;
+		}
+
+		int SetAgent()
+		{
+			string xfNodeAgentArea = "agentarea";
+			xnode anode = GetAgentNode(xfNodeAgentArea);
+			if (m_agentNode)
+			{
+				SetAgentNodeContent(anode, m_agentNode);
+			}
+			else
+			{
+				msxml::IXMLDOMElement xframeElement = GetElement();
+				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
+				if (agent)
+				{
+					string s = agent.xml;
+					m_agentNode = SetAgentNodeContent(anode, s);
+				}
+			}
+			return 1;
+		}
+
+		//焦点激活处理函数
+		int OnSetFocus(ref TEvent evt, int param)
+		{
+			//重置工具条
+			SetAgent();
+			return 1;
+		}
+
+		int OnOpenAddWindow()
+		{
+			OpenWindow("dev:xpage[ManpowerFileWindow.vx]");
+			return 1;
+		}
+
+		int OnOpenUpdateWindow()
+		{
+			int row = dw_list.GetRow();
+			if (row < 1)
+				return 1;
+			msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
+			string mfid = ele.selectSingleNode("mfid").text;//获取节点的值
+			OpenWindow("dev:xpage[ManpowerFileWindow.vx]", cast(mfid as int));
+			return 1;
+		}
+
+		int OnExchangeFileWindow()
+		{
+			xwin xw = OpenWindow("dev:xpage[BlankExcelTemplate.vx]", 0);
+			hSignWin = xw.GetHWND();
+			return 1;
+		}
+
+		int OnDelete()
+		{
+			int MB_OKCANCEL = 1;
+			int IDOK = 1;
+			int ret = win32::MessageBox(GetHWND(), "确认删除?", "提示", MB_OKCANCEL);
+			if (ret == IDOK)
+			{
+				int row = dw_list.GetRow();
+				if (row < 1)
+					return 1;
+				msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
+				string mfid = ele.selectSingleNode("mfid").text;//查看
+				xml x = new xml;
+				x.setNativePointer(xml::CreateInstance());
+				xaserverarg arg = new xaserverarg;//放置参数
+				arg.setNativePointer(arg.CreateInstance());
+				arg.AddArg("mfid", mfid);
+				if (getUrl("/sale/data/ManpowerFile/delete", arg.GetString(), x) != 1)
+				{
+					string error = x.GetXmlDoc().text;
+					alert("err:" + error);
+					return 1;
+				}
+				alert(x.GetXmlDoc().text);
+				OnRefresh();
+			}
+			return 1;
+		}
+
+		int OnRefresh() {
+			OnRetrieve();
+			return 1;
+		}
+
+		//分析
+		int OnAnalysis()
+		{
+			int hCursor = xutil::SetCursorWait();
+			string str = dw_list.DataAnalysis("");
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			arg.AddArg("html", str);
+			int obj = cast(dw_list as int);
+			arg.AddArg("obj", obj.toString());
+			OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int));
+			xutil::RestoreCursor(hCursor);
+			return 1;
+		}
+
+		string GetQueryArg()
+		{
+			dw_arg.AcceptText();
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			dw_arg.DwUpdateAllTo(x.GetXmlDoc());
+
+			return x.GetXml();
+		}
+
+		int  OnRetrieveEx1()
+		{
+			int hItem = tv_folder.GetSelectedItem();
+			if (hItem <= 0) return 1;
+
+			int hCursor = xutil::SetCursorWait();
+			msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
+			string no = e1.getAttribute("no");
+
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			//arg.AddArg("QueryTxt",GetControl("sle_search").GetText());
+			arg.AddArg("QueryArg", GetQueryArg());
+			arg.AddArg("MStatus", no);
+
+			arg.AddArg("QueryName", GetControl("QueryName").GetText());
+			//trace(arg.GetString());
+			if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)
+			{
+				trace(x.GetXmlDoc().text);
+				return -1;
+			}
+			else
+			{
+
+				dw_list.Retrieve(x);
+				dw_list.Redraw();
+				dw_list.SetReadOnly(true);
+				dw_list.SetSelectionMode(1);
+			}
+			return 1;
+		}
+
+		//命令发布函数
+		int OnCmdDispatch(string comdid)
+		{
+			if (comdid == "xmAddHumanDocument")
+				return OnOpenAddWindow();
+			else if (comdid == "xmUpdateHumanDocument")
+				return OnOpenUpdateWindow();
+			else if (comdid == "xmRefresh" || comdid == "xmSearch")
+				return OnRetrieveEx1();
+			else if (comdid == "xmExchangeFile")
+				return OnExchangeFileWindow();
+			else if (comdid == "xmDelete")
+				return OnDelete();
+			else if (comdid == "xmAnalysis")
+				return OnAnalysis();
+			return 0;
+		}
+
+		//命令处理事件
+		int OnXCommand(ref TXCommandEvent evt, int param)
+		{
+			return OnCmdDispatch(evt.pStrID);
+		}
+
+		int OnDoubleClicked(ref TNotifyEvent evt, int p)
+		{
+			return OnCmdDispatch("xmUpdateHumanDocument");
+		}
+
+
+		int OnTreeSelChanged(ref TNotifyEvent evt, int p)
+		{
+			return OnRetrieveEx1();
+		}
+
+		int OnAttachEvent()
+		{
+			//绑定工具条点击事件
+			AttachEvent("WM_XCOMMAND", OnXCommand);
+			//获取焦点事件,用于重置工具条
+			AttachEvent("WM_SETFOCUS", OnSetFocus);
+			AttachEvent("dw_list", "DWV_DOUBLECLICKED", OnDoubleClicked);//行双击
+			AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //树选择
+		}
+
+		//数据传输函数
+		int  OnRetrieve()
+		{
+			//int  hCursor = xutil::SetCursorWait();//鼠标位置
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			xaserverarg arg = new xaserverarg;//放置参数
+			arg.setNativePointer(arg.CreateInstance());
+			//arg.AddArg("QueryTxt",GetControl("sle_search").GetText());//添加所需要传到后台的参数
+			arg.AddArg("QueryArg", GetQueryArg());
+			arg.AddArg("MStatus", "");
+			arg.AddArg("QueryName", GetControl("QueryName").GetText());
+			//trace("查看arg="+arg.GetString());//运行界面打印
+			if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)///sale/data/ManpowerFile/doclist后台接口
+			{
+				trace(x.GetXmlDoc().text);
+				return -1;
+			}
+			else
+			{
+				dw_list.Retrieve(x);
+				dw_list.Redraw();
+			}
+			return 1;
+		}
+
+		int onload()
+		{
+			//【1】控制页面中name="dw_list"的内容
+			dw_list = GetControl("dw_list");
+			//【2】加载sale根目录下view下的ManpowerFile.vface文件中的template/list url 前端页面
+			dw_list.openUrl("/sale/view/ManpowerFile/template/list");
+			//【3】绑定事件
+			OnAttachEvent();
+			//【4】加载后台数据
+
+			//【6】设为只读
+			dw_list.SetReadOnly(true);
+
+			dw_arg = GetControl("dw_arg");
+			dw_arg.openUrl("/sale/view/ManpowerFile/template/QueryArg");
+			dw_arg.SetColHeaderHeight(0);
+			dw_arg.SetRowSelectorWidth(0);
+			dw_arg.SetHScrollState(false);
+			dw_arg.SetVScrollState(false);
+			dw_arg.SetItemString(1, "DateType", "不设定");
+
+			OnRetrieve();
+			urlTree = "/sale/data/ManpowerFile/folder";
+			tv_folder = GetControl("tv_folder");
+			tv_folder.SetLineAtRoot(true);
+			InitialFolder();
+
+			return 1;
+		}
+
+		int onloaded()
+		{
+			SetAgent();
+			int hItem = tv_folder.GetRootItem();
+			ExpandFolderItem(hItem);
+			tv_folder.ExpandItem(hItem);
+			tv_folder.ItemFocus(hItem);
+			return 1;
+		}
+	};
+]
\ No newline at end of file
diff --git a/jrj/project/business/HR/ManpowerFileWindow.cpp b/jrj/project/business/HR/ManpowerFileWindow.cpp
new file mode 100644
index 0000000..2075a76
--- /dev/null
+++ b/jrj/project/business/HR/ManpowerFileWindow.cpp
@@ -0,0 +1,178 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+use "vbind.vbind.wface.vd"
+use "publiccode.vutil.vbusiness.vd"
+use "multi.vbind.vbind.wface.vd"
+
+unit trade
+[
+	class ViewManpowerFileWiondow : public xframe
+	{
+		//xdwgrid	dw_list;//新建列表时使用
+		xdwtable dw_base;//新增弹窗时使用
+		string mfid;
+		xnode	m_agentNode;	//Agent Condition
+
+		/*int SetAgent()
+		{
+			string xfNodeAgentArea  = "agentarea";
+			xnode anode = GetAgentNode(xfNodeAgentArea);
+			if(m_agentNode)
+			{
+				SetAgentNodeContent (anode,m_agentNode);
+			}
+			else
+			{
+				msxml::IXMLDOMElement xframeElement =  GetElement();
+				msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+				if(agent)
+				{
+					string s = agent.xml;
+					m_agentNode =  SetAgentNodeContent (anode,s);
+				}
+			}
+			return 1;
+		}*/
+
+		//焦点激活处理函数
+		int OnSetFocus(ref TEvent evt, int param)
+		{
+			//重置工具条
+			SetAgent();
+			return 1;
+		}
+
+		//保存数据
+		int OnSave()
+		{
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			dw_base.AcceptText();
+			dw_base.DwUpdateAllTo(x.GetXmlDoc());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(xaserverarg::CreateInstance());
+			arg.AddArg("content", x.GetXml());
+			//trace(x.GetXml());
+			if (url::get("/sale/data/ManpowerFile/update", arg.GetString(), x) != 1)
+			{
+				string error = x.GetXmlDoc().text;
+				alert("err:" + error);
+				return 1;
+			}
+			//trace("返回值="+x.GetXml());
+			string str = x.GetXmlDoc().documentElement.getAttribute("text");
+			if (str == "true")
+			{
+				dw_base.ResetUpdateStatus();
+				CloseWindow();
+				alert("保存成功!");
+			}
+			else
+			{
+				alert("保存失败!");
+			}
+			return 1;
+		}
+
+		//命令发布函数
+		int OnCmdDispatch(string comdid)
+		{
+			if (comdid == "xmClose") {//关闭窗口
+				CloseWindow();
+				return 1;
+			}
+			else if (comdid == "xmSave") {//保存窗口
+				return OnSave();
+			}
+			return 0;
+		}
+
+		//命令处理事件
+		int OnXCommand(ref TXCommandEvent evt, int param)
+		{
+			return OnCmdDispatch(evt.pStrID);
+		}
+
+		int OnAttachEvent()
+		{
+			//绑定工具条点击事件
+			AttachEvent("WM_XCOMMAND", OnXCommand);
+			//获取焦点事件,用于重置工具条
+			AttachEvent("WM_SETFOCUS", OnSetFocus);
+			AttachEvent("dw_base", "DWV_ITEMCHANGING", OnItemChanging);
+		}
+
+		int OnItemChanging(ref TNotifyEvent evt, int p)
+		{
+			ref DWNMHDR  hdr = trust(evt.pnmh as ref DWNMHDR);
+			string colname = hdr.colname;
+			string value = hdr.data;
+			int row = hdr.row;
+
+			if (value == "") return 1;
+			string cellType = dw_base.GetColumnProp(colname, "celltype");
+			//alert(cellType);
+			if (cellType == "xs:decimal" || cellType == "xs:integer")
+			{
+				if (value.isNumber() == false)
+				{
+					alert(value + "不是数字!");
+					hdr.idFrom = -1;
+					return 1;
+				}
+			}
+		}
+
+		int  OnRetrieve()
+		{
+			xml x = new xml;
+			x.setNativePointer(xml::CreateInstance());
+			xaserverarg arg = new xaserverarg;
+			arg.setNativePointer(arg.CreateInstance());
+			arg.AddArg("mfid", mfid);
+			if (getUrl("/sale/data/ManpowerFile/getsingle", arg.GetString(), x) != 1)
+			{
+				trace("错误信息=" + x.GetXmlDoc().text);
+				return -1;
+			}
+			else
+			{
+				//trace("返回信息="+x.GetXml());
+				dw_base.Retrieve(x);
+				dw_base.Redraw();
+			}
+			return 1;
+		}
+
+		int onload()
+		{
+			dw_base = GetControl("dw_base");
+			dw_base.openUrl("/sale/view/ManpowerFile/template/win");
+			mfid = "";
+			if (GetParam())
+				mfid = GetParam();
+			if (mfid != "")
+			{
+				OnRetrieve();
+			}
+
+			dw_base.SetColHeaderHeight(0);
+			dw_base.SetRowSelectorWidth(0);
+			dw_base.SetHScrollState(false);
+			dw_base.SetVScrollState(false);
+
+			OnAttachEvent();
+
+			return 1;
+		}
+
+		int onloaded()
+		{
+			SetAgent();
+
+			return 1;
+		}
+	};
+]
\ No newline at end of file

--
Gitblit v1.9.3