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