#pragma once #include #include #include #include #include #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) HrEmployee : public xwin { public: xtreeview tv_org; xdwgrid dw_emp; xstring is_orgid; xstring is_orgname; xstring is_inflag; xdwtable dw_empmaint; xnode m_agentNode; //Agent Condition xstring m_agentCond; //Agent Node public: HrEmployee(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} public: static HrEmployee* CreateInstance(void* implPtr, void* hWnd) { HrEmployee* pWin = new HrEmployee(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 OnRetrieve(xstring ls_orgid) { xml x; xaserverarg arg; arg.AddArg(L"OrgID", ls_orgid); //trace(ls_orgid); //if (xaserver::ExecXQuery(GetServerUrl(),L"[MSSqlHrEmployee.xq]",arg.GetString(),x) == 1) if (xurl::get(L"OrganizationStruct/list.Employee", arg.GetString(), x) == 1) { dw_emp.Retrieve(x); dw_emp.Redraw(); } //trace(x.GetXml()); return 1; } int OnSave() { HCURSOR hIcon = xutil::SetCursorWait(); xml x; dw_emp.AcceptText(); dw_emp.DwUpdateAllToEx(x); xstring val = x.xml(); xaserverarg arg; arg.AddArg(L"content", val); //trace(x.GetXml()); //return 1; if (xurl::post(L"OrganizationStruct/update.Employee", arg.GetString(), x) != 1) { trace(x.documentElement().text()); alert(L"±£´æÊ§°Ü"); } else { dw_emp.ResetUpdateStatus(); alert(L"±£´æ³É¹¦"); } trace(x.xml()); xutil::RestoreCursor(hIcon); return 1; } int OnSubTree(xstring id, HTREEITEM parentitem) { //int wid = tv_org.GetId(); if (!tv_org.GetChildItem(parentitem)) return 1; xml x; xaserverarg arg; arg.AddArg(L"sguid", id); if (xurl::post(L"/sale/data/OrganizationStruct/tree.child.OrgChart", arg.GetString(), x) != 1) { trace(x.xml()); return -1; } //trace(x.GetXml()); auto list = x.selectNodes(L"//item"); int i = 0, s = list.length(); KXMLDOMElement xitem; xstring sName; xstring sguid; xstring stype; if (s > 0) { for (i = 0; i < s; i++) { xitem = list.item(i); sName = xitem.selectSingleNode(L"name").text(); sguid = xitem.selectSingleNode(L"id").text(); stype = xitem.selectSingleNode(L"typ").text(); //int curItem = tv_org.InsertChildItemEx(wid,parentitem,sName,xitem,15,4); HTREEITEM curItem = 0; if (stype == L"Org") { curItem = tv_org.InsertChildItemEx(parentitem, sName, xitem, 15, 4); tv_org.SetItemChild1(curItem, 1); } else { curItem = tv_org.InsertChildItemEx(parentitem, sName, xitem, 21, 21); } //OnSubTree(sguid,curItem); } } return 1; } int OnCreateTree(xstring id, HTREEITEM parentitem) { //while (tv_1.GetRootItem()>0) // tv_1.DeleteItem(tv_1.GetRootItem()); //int wid = tv_org.GetId(); xml x; x.loadXML(L"" + id + L"Äþ²¨¼Ò¶û¼ÑOrg"); //KXMLDOMDocument root = x; //KXMLDOMElement RDoc = x.documentElement; //KXMLDOMElement ele = RDoc.selectSingleNode(L"//Org"); KXMLDOMElement ele = x.selectSingleNode(L"//item"); HTREEITEM hItem = tv_org.InsertChildItemEx(0, L"Äþ²¨¼Ò¶û¼Ñ", ele, 15, 4); tv_org.SetItemChild1(hItem, 1); return 1; /*xaserverarg arg=new xaserverarg; arg.AddArg(L"sguid",id); if(xurl::post(L"/sale/data/OrganizationStruct/tree.child.OrgChart",arg.GetString(),x)!=1) { trace(x.GetXml()); return -1; } //trace(x.GetXml()); var list=x.selectNodes(L"//item"); int i=0,s=list.length; KXMLDOMElement xitem; xstring sName; xstring sguid; if (s >0) { for (i=0;inotify.pnmh; HTREEITEM sitem = nmtv.itemNew.hItem; HCURSOR hCursor = xutil::SetCursorWait(); //xstring id = tv_org.GetItemData(tv_org.GetId(), sitem); KXMLDOMElement ele = tv_org.GetItemData(sitem); xstring id = ele.selectSingleNode(L"id").text(); OnSubTree(id, sitem); xutil::RestoreCursor(hCursor); return 1; } int OnTreeSelChanged(TEvent* evt, int p) { //int wid = tv_org.GetId(); HTREEITEM hitem = tv_org.GetSelectedItem(); KXMLDOMElement ele = tv_org.GetItemData(hitem); if (ele) { xstring ls_orgid = ele.selectSingleNode(L"id").text(); is_orgid = ls_orgid; OnRetrieve(ls_orgid); } return 1; } int OnAddRow() { //int wid = tv_org.GetId(); HTREEITEM hitem = tv_org.GetSelectedItem(); if (!hitem) { alert(L"ÇëÑ¡Ôñ¸Úλ£¡"); return 0; } else { KXMLDOMElement ele = tv_org.GetItemData(hitem); xstring stype = ele.selectSingleNode(L"typ").text(); if (stype != L"Pos") { alert(L"ÇëÑ¡Ôñ¸Úλ£¡"); return 0; } } OpenWindow(L"dev:xpage[HrEmployeeAdd.vx]", (LPARAM)this); //openUrl(L"×éÖ¯¼Ü¹¹.vface/xpage/Hr/HrEmployeeAdd", this); return 1; } int OnModifyRow() { int row = dw_emp.GetNextSelectRow(1); if (row < 1) { row = dw_emp.GetRow(); if (row < 1) { MessageBox(GetHWND(), L"ÇëÑ¡ÖÐÒªÐ޸ĵÄÈÎÖ°ÐÅÏ¢ÐУ¡", L"Ìáʾ", 0); return -1; } } //int wid = dw_emp.GetId(); KXMLDOMElement e = dw_emp.GetRowElement(row); xstring sPersonID = e.selectSingleNode(L"PersonID").text(); //trace(e.xml); xaserverarg& arg = *new xaserverarg; arg.AddArg(L"operate", L"modify"); arg.AddArg(L"guid", sPersonID); //xwin::OpenWindow(L"dev:xpage[HrPersonMaint.xpage]",arg); openUrl(L"×éÖ¯¼Ü¹¹.vface/xpage/Hr/HrPersonMaint", &arg); return 1; } int OnDeleteRow() { int ll_row = dw_emp.GetNextSelectRow(1); if (ll_row < 1) { ll_row = dw_emp.GetRow(); if (ll_row < 1) { MessageBox(GetHWND(), L"ÇëÑ¡ÖÐҪɾ³ýµÄÈÎÖ°ÐÅÏ¢ÐУ¡", L"Ìáʾ", 0); return -1; } } xstring sName = dw_emp.GetItemDisplayString(ll_row, L"PersonID"); if (MessageBox(GetHWND(), L"È·¶¨É¾³ý" + sName + L"ÈÎÖ°ÐÅÏ¢Âð£¿", L"Ìáʾ", 1) != 1) return 0; KXMLDOMElement ele = dw_emp.GetRowElement(ll_row); xstring empid = ele.selectSingleNode(L"@guid").text(); xml x; xaserverarg args; args.setNativePointer(args.CreateInstance()); args.AddArg(L"guid", empid); //if(xaserver::ExecXAction(GetServerUrl(),L"[MSSqlHrEmployeeDel.xq]",args.GetString(),x) !=1) if (xurl::post(L"OrganizationStruct/delete.Employee", args.GetString(), x) != 1) { xstring error = x.text(); trace(error); } else { dw_emp.DeleteRow(ll_row); } return 1; } int SetText() { SetWindowText(GetHWND(), L"ËùÊô×éÖ¯:" + is_orgname + L" ²Ù×÷״̬£º" + is_inflag); return 1; } //xgridexË«»÷ int OnDoubleClicked(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; if (row < 1 || row > dw_emp.GetRowCount()) return 1; KXMLDOMElement e = dw_emp.GetRowElement(row); xstring sPersonID = e.selectSingleNode(L"PersonID").text(); xaserverarg& arg = *new xaserverarg; arg.AddArg(L"operate", L"modify"); arg.AddArg(L"guid", sPersonID); //xwin::OpenWindow(L"dev:xpage[HrPersonMaint.xpage]",arg); openUrl(L"×éÖ¯¼Ü¹¹.vface/xpage/Hr/HrPersonMaint", &arg); return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(xstring comdid) { if (comdid == L"Save") return OnSave(); else if (comdid == L"AddRow") return OnAddRow(); else if (comdid == L"ModifyRow") return OnModifyRow(); else if (comdid == L"DeleteRow") return OnDeleteRow(); else if (comdid == L"Refresh") return OnRetrieve(is_orgid); /*else if(comdid ==L"adjustorg") return OnAdjustOrg();*/ return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent)&HrEmployee::OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent(L"WM_SETFOCUS", (FEvent)&HrEmployee::OnSetFocus); //»ñµÃÊ÷µÄÑ¡Ôñʼþ AttachEvent(L"tv_org", L"TVN_SELCHANGED", (FEvent)&HrEmployee::OnTreeSelChanged); AttachEvent(L"tv_org", L"TVN_ITEMEXPANDING", (FEvent)&HrEmployee::OnTreeExpanding); AttachEvent(L"dw_emp", L"DWV_DOUBLECLICKED", (FEvent)&HrEmployee::OnDoubleClicked); return 1; } int OnInitial() { m_agentNode = new xnode; SetAgent(); OnAttachEvent(); return 1; } int onload() { tv_org = GetControl(L"tv_org"); dw_emp = new xdwgrid; dw_emp.setNativePointer(GetControl(L"dw_emp")); dw_emp.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/HrEmployee/list"); //dw_emp.SetReadOnly(true); //dw_emp.SetSelectionMode(1); OnInitial(); OnCreateTree(L"00000000-0000-0000-0000-000000000000", 0); //int wid = tv_org.GetId(); HTREEITEM root = tv_org.GetRootItem(); tv_org.ExpandItem( root); return 1; } };