use "win.vl" use "treeview.vm" use "dev:vm[xdwgrid.vm]" use "dev:vm[xdwtable.vm]" use "pref.vl" use "dev:vm[xml.vm]" use "dev:vm[xaserverarg.vm]" use "dev:vm[xaserver.vm]" use "dev:vm[xutil.vm]" use "list.vl" unit vbusiness.xpage [ HrOrg is extend list; about HrOrg [ control: method: [ xdwgrid__ dw_list; treeview__ tv_org; string sOrgID; string sOrgName; string sRootOrgID; string sRootOrgName; xnode__ m_agentNode; //Agent Condition string m_agentCond; //Agent Node int SetAgent() { string xfNodeAgentArea = "agentarea"; xnode__ anode = new xnode__; anode.setNativePointer(GetAgentNode(xfNodeAgentArea)); var xframeElement = GetElement(); var agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*"); if (agent) { string s = agent.xml; SetAgentNodeContent(anode, s); } return 1; } int OnRetrieve() { int hIcon = xutil__::SetCursorWait(); xml__ x = new xml__; x.setNativePointer(x.CreateInstance()); xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("guid", sOrgID); if (url::get("OrganizationStruct/list.HrOrg", arg.GetString(), x) != 1) { trace(x.GetXmlDoc().text); return -1; } else { dw_list.Retrieve(x); dw_list.Redraw(); } dw_list.SetReadOnly(true); xutil__::RestoreCursor(hIcon); return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(ref TEvent evt, int p) { SetAgent(); //OnRetrieve(); //ÖØÖù¤¾ßÌõ return 1; } int OnCreateTree(string sguid, int parentitem) { int wid = tv_org.GetId(); xml__ x = new xml__; x.setNativePointer(xml__::CreateInstance()); xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("sguid", sguid); if (url::post("/sale/data/OrganizationStruct/tree.child.OrgChart", arg.GetString(), x) != 1) { trace(x.GetXml()); return -1; } //trace(x.GetXml()); var list = x.GetXmlDoc().selectNodes("//Org"); int i = 0, s = list.length; msxml::IXMLDOMElement xitem; string sname; string sguid; if (s > 0) { for (i = 0; i < s; i++) { xitem = list.item(s - i - 1); sname = xitem.SelectSingleNode("OrgName").text; sguid = xitem.SelectSingleNode("@guid").text; int curItem = tv_org.InsertChildItemEx(wid, parentitem, sname, xitem, 15, 4); OnCreateTree(sguid, curItem); /*string id = xitem.selectSingleNode("ModuleID").text; string Name=""; if(xitem.selectSingleNode("ModuleName")) Name=xitem.selectSingleNode("ModuleName").text; string image = 15; if(xitem.selectSingleNode("ModuelImage")) image=xitem.selectSingleNode("ModuelImage").text; int curItem=treeview__::InsertItem(tv_menu.GetId(), parentItem,0,Name,id,image.toInt()); string child=xitem.selectSingleNode("@child").text;//item.getAttribute("HasChild"); if (child != "0") treeview__::SetItemChild1(tv_menu.GetId(), curItem,1);*/ } } return 1; } int OnTreeExpanding(ref TNotifyEvent evt, int p) { ref NMTREEVIEW nmtv = evt.pnmh; int sitem = nmtv.itemNew.hItem; string id = treeview__::GetItemData(tv_org.GetId(), sitem); int hCursor = xutil__::SetCursorWait(); OnCreateTree(id, sitem); xutil__::RestoreCursor(hCursor); return 1; } //Ê÷µã»÷ʼþ int OnTreeSelecded(ref TNotifyEvent evt, int p) { ref NMTREEVIEW nmtv = evt.pnmh; int hItem = nmtv.itemNew.hItem; int wid = tv_org.GetId(); int hitem = treeview__::GetSelectedItem(wid); msxml::IXMLDOMElement ele = treeview__::GetItemData(wid, hitem); int hroot = treeview__::GetParentItem(wid, hitem); int hparent = treeview__::GetParentItem(wid, hroot); if (!hparent) { hparent = hroot; hroot = hitem; } bool found = false; if (hparent) found = true; while (treeview__::GetParentItem(wid, hparent)) { hroot = hparent; hparent = treeview__::GetParentItem(wid, hroot); } if (found) { msxml::IXMLDOMElement ele1 = treeview__::GetItemData(wid, hroot); //trace(ele1.xml); //sRootOrgID = ele1.SelectSingleNode("CompanyID").text; //sRootOrgName = ele1.selectSingleNode("CompanyID/@_displaystring").text; } string ls_orgid = ele.SelectSingleNode("@guid").text; sOrgID = ls_orgid + ""; //trace(sOrgID); sOrgName = ele.selectSingleNode("OrgName").text; OnRetrieve(); return 1; } int OnTreeMoveNode(ref TNotifyEvent evt, int p) { ref TVNNMHDR nmtv = evt.pnmh; int xfrom = nmtv.FromItem; int xto = nmtv.ToItem; int ret = win__::MessageBox(this.GetHWND(), "È·¶¨Òƶ¯×éÖ¯½Úµã£¿", "Ìáʾ£º", 1); //trace(ret); int wid = tv_org.GetId(); if (ret == 2) { treeview__::DeleteItem(wid, xto); return -1; } //string fid = treeview__::GetItemData(wid, xfrom); //string tid = treeview__::GetItemData(wid, xto); int xtop = treeview__::GetParentItem(wid, xto); msxml::IXMLDOMElement ef = treeview__::GetItemData(wid, xfrom); msxml::IXMLDOMElement et = treeview__::GetItemData(wid, xtop); string fid = ef.SelectSingleNode("@guid").text;//ef.xml; string tid = et.SelectSingleNode("@guid").text;//et.xml; xml__ x = new xml__; x.setNativePointer(xml__::CreateInstance()); xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("from", fid); arg.AddArg("to", tid); //trace(et.xml); //return 1; if (url::post("OrganizationStruct/move.update.HrOrg", arg.GetString(), x) != 1) { trace("error:" + x.GetXml()); alert("ÒÆ¶¯×éÖ¯½Úµã³ö´í!"); treeview__::DeleteItem(wid, xto); return 0; } treeview__::DeleteItem(wid, xfrom); return 1; } //xgridexË«»÷ int OnDoubleClicked(ref TNotifyEvent evt, int p) { ref DWNMHDR hdr = evt.pnmh; int row = hdr.row; if (row < 1 || row > dw_list.GetRowCount()) return 1; msxml::IXMLDOMElement e = dw_list.GetRowElement(row); string sguid = e.SelectSingleNode("@guid").text; xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("operate", "modify"); arg.AddArg("guid", sguid); arg.AddArg("tvOrgID", sOrgID); arg.AddArg("tvOrgName", sOrgName); arg.AddArg("tvRootOrgID", sRootOrgID); arg.AddArg("tvRootOrgName", sRootOrgName); //trace(row.toString()); //win__::OpenWindow("dev:xpage[HrOrgMaint.xpage]",arg); openUrl("×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/maint", arg); return 1; } int AddRow() { /*int wid = tv_org.GetId(); int hitem=treeview__::GetSelectedItem(wid); int root=treeview__::GetRootItem(wid); if (hitem == root) { win32::MessageBox(GetHWND(),"¸ù×éÖ¯£¡","Ìáʾ",0); return -1; }*/ //int row = dw_list.GetNextSelectRow(1); //IXMLDOMElement e = dw_list.GetRowElement(row); //string sguid = e.getAttribute("guid"); xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("operate", "new0"); arg.AddArg("guid", ""); arg.AddArg("tvOrgID", sOrgID); arg.AddArg("tvOrgName", sOrgName); arg.AddArg("tvRootOrgID", sRootOrgID); arg.AddArg("tvRootOrgName", sRootOrgName); openUrl("×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/maint", arg); return 1; } int ModifyRow() { int row = dw_list.GetNextSelectRow(1); if (row < 1) { row = dw_list.GetRow(); if (row < 1) { win__::MessageBox(GetHWND(), "ÇëÑ¡ÖÐÒªÐ޸ĵÄ×éÖ¯Êý¾ÝÐУ¡", "Ìáʾ", 0); return -1; } } msxml::IXMLDOMElement e = dw_list.GetRowElement(row); string sguid = e.SelectSingleNode("@guid").text; xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("operate", "modify"); arg.AddArg("guid", sguid); arg.AddArg("tvOrgID", sOrgID); arg.AddArg("tvOrgName", sOrgName); arg.AddArg("tvRootOrgID", sRootOrgID); arg.AddArg("tvRootOrgName", sRootOrgName); openUrl("×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/maint", arg); return 1; } int OnDeleteItem(string sguid) { int wid = tv_org.GetId(); int hitem = treeview__::GetSelectedItem(wid); int ditem = treeview__::GetChildItem(wid, hitem); msxml::IXMLDOMElement e = treeview__::GetItemData(wid, ditem); if (e) { string dguid = e.SelectSingleNode("@guid").text; while (dguid != sguid) { ditem = treeview__::GetNextItem(wid, ditem); e = treeview__::GetItemData(wid, ditem); dguid = e.SelectSingleNode("@guid").text; } treeview__::DeleteItem(wid, ditem); } return 1; } int DeleteRow() { int row = dw_list.GetNextSelectRow(1); if (row < 1) { row = dw_list.GetRow(); if (row < 1) { //win__::MessageBox(GetHWND(),"ÇëÑ¡ÖÐҪɾ³ýµÄ×éÖ¯Êý¾ÝÐУ¡","Ìáʾ",0); return -1; } } msxml::IXMLDOMElement e = dw_list.GetRowElement(row); string sguid = e.SelectSingleNode("@guid").text; string sName = e.selectSingleNode("OrgName").text; sName += ""; xml__ x = new xml__; x.setNativePointer(x.CreateInstance()); xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("guid", sguid); if (url::get("OrganizationStruct/child.OrgNums", arg.GetString(), x) != 1) { trace(x.GetXmlDoc().text); return -1; } else { msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement; string snums = ele.SelectSingleNode("@num").text; int num = snums.toInt(); if (num != 0) { win__::MessageBox(GetHWND(), "×éÖ¯ " + sName + " ´æÔÚϼ¶×éÖ¯µ¥Ôª£¬½ûֹɾ³ý£¡", "Ìáʾ", 0); return 1; } } int MB_YESNO = 0x00000004; int IDYES = 6; if (win__::MessageBox(GetHWND(), "È·ÈÏҪɾ³ý×éÖ¯ " + sName + " µÄÐÅÏ¢Âð£¿", "Ìáʾ", MB_YESNO) != IDYES) return 1; arg.AddArg("guid", sguid); //trace(sguid); xml__ x1 = new xml__; x1.setNativePointer(x1.CreateInstance()); if (url::post("/sale/data/OrganizationStruct/delete.HrOrg", arg.GetString(), x1) != 1) { string error = x1.GetXmlDoc().text; trace(error); } else { //win32::MessageBox(GetHWND(),"ɾ³ý³É¹¦£¡","Ìáʾ",0); dw_list.DeleteRow(row); OnDeleteItem(sguid); } return 1; } int Productlinemaint() { xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("id", "²úÆ·Ïß"); openUrl("¹«¹²ÉèÖÃ.vface/worknode/quickcode/config", arg); //openUrl("ÏÂÀ­´°¿Ú.vface/xpage/hremployee/select", arg); return 1; } int setTree() { string str = ""; str += ""; str += ""; str += ""; string xfNodeAgentArea = "tree"; xnode__ anode = new xnode__; anode.setNativePointer(GetAgentNode(xfNodeAgentArea)); SetAgentNodeContent(anode, str); tv_org = new treeview__; tv_org.setNativePointer(this.GetControl("tv_org")); AttachEvent("tv_org", "TVN_SELCHANGED", OnTreeSelecded); int root = treeview__::GetRootItem(tv_org.GetId()); if (root > 0) { treeview__::ExpandItemEx(tv_org.GetId(), root); } return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(string comdid) { if (comdid == "AddRow") { return AddRow(); } else if (comdid == "ModifyRow") { return ModifyRow(); } else if (comdid == "DeleteRow") { return DeleteRow(); } else if (comdid == "OrgType") { xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("id", "×éÖ¯ÀàÐÍ"); openUrl("¹«¹²ÉèÖÃ.vface/worknode/quickcode/config", arg); //openUrl("×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/type"); } else if (comdid == "Refresh") { OnRetrieve(); setTree(); AttachEvent("tv_org", "TVN_ENDDRAG", OnTreeMoveNode); } else if (comdid == "Productlinemaint") { Productlinemaint(); } return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(ref TXCommandEvent evt, int p) { return OnCmdDispatch(evt.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent("WM_XCOMMAND", OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent("WM_SETFOCUS", OnSetFocus); //»ñµÃÊ÷µÄµã»÷ʼþ AttachEvent("tv_org", "TVN_SELCHANGED", OnTreeSelecded); AttachEvent("tv_org", "TVN_ITEMEXPANDING", OnTreeExpanding); AttachEvent("tv_org", "TVN_ENDDRAG", OnTreeMoveNode); //Ë«»÷ AttachEvent("dw_list", "DWV_DOUBLECLICKED", OnDoubleClicked); } int OnInitial() { SetAgent(); OnAttachEvent(); return 1; } int onload() { tv_org = new treeview__; tv_org.setNativePointer(this.GetControl("tv_org")); dw_list = new xdwgrid__; dw_list.setNativePointer(this.GetControl("dw_list")); dw_list.openUrl("×éÖ¯¼Ü¹¹.vface/template/HrOrg/list"); dw_list.SetSelectionMode(1); dw_list.SetReadOnly(true); dw_list.SetColumnState("OrgPlat", false); dw_list.SetColumnState("OrgComLeader", false); dw_list.SetColumnState("OrgSupLeader", false); dw_list.SetColumnState("OrgProLine", false); OnInitial(); //OnCreateTree("00000000-0000-0000-0000-000000000000", 0); int root = treeview__::GetRootItem(tv_org.GetId()); if (root > 0) { treeview__::ExpandItemEx(tv_org.GetId(), root); msxml::IXMLDOMElement ele = treeview__::GetItemData(tv_org.GetId(), root); if (ele) { string ls_orgid = ele.SelectSingleNode("@guid").text; sOrgID = ls_orgid + ""; sOrgName = ele.selectSingleNode("OrgName").text; OnRetrieve(); } } return 1; } ] ] ]