#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) HrOrgMaint : public xwin 
 | 
{ 
 | 
public: 
 | 
  
 | 
    xdwtable    dw_detail; 
 | 
    xstring        m_operate; 
 | 
    xstring        m_sguid; 
 | 
    xstring        m_tvOrgID; 
 | 
    xstring        m_tvOrgName; 
 | 
    xstring        m_tvRootOrgID; 
 | 
    xstring        m_tvRootOrgName; 
 | 
  
 | 
    xnode    m_agentNode;    //Agent Condition 
 | 
    xstring    m_agentCond;    //Agent Node     
 | 
public: 
 | 
    HrOrgMaint(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} 
 | 
public: 
 | 
    static HrOrgMaint* CreateInstance(void* implPtr, void* hWnd) 
 | 
    { 
 | 
        HrOrgMaint* pWin = new HrOrgMaint(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() 
 | 
    { 
 | 
        xml x; 
 | 
  
 | 
        xaserverarg arg; 
 | 
  
 | 
        arg.AddArg(L"guid", m_sguid); 
 | 
        if (xurl::get(L"OrganizationStruct/detail.HrOrg", arg.GetString(), x) != 1) 
 | 
        { 
 | 
            trace(x.text()); 
 | 
            return -1; 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            trace(x.xml()); 
 | 
            dw_detail.Retrieve(x); 
 | 
            dw_detail.Redraw(); 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnSave() 
 | 
    { 
 | 
        HCURSOR hIcon = xutil::SetCursorWait(); 
 | 
        //dw_detail.AcceptText();                     
 | 
        xstring val; 
 | 
        xml x; 
 | 
  
 | 
        auto xdoc = x; 
 | 
        dw_detail.DwUpdateAllTo(xdoc); 
 | 
        val = xdoc.xml(); 
 | 
        //trace(val); 
 | 
        //return 1; 
 | 
        xaserverarg args; 
 | 
         
 | 
        args.AddArg(L"content", val); 
 | 
        //trace(val); 
 | 
        xml x1; 
 | 
  
 | 
        if (xurl::post(L"OrganizationStruct/update.HrOrg", args.GetString(), x1) != 1) 
 | 
        { 
 | 
            xstring error = x1.text(); 
 | 
            trace(error); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            MessageBox(GetHWND(), L"±£´æ³É¹¦£¡", L"Ìáʾ", 0); 
 | 
        } 
 | 
        dw_detail.ResetUpdateStatus(); 
 | 
        xutil::RestoreCursor(hIcon); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnNew() 
 | 
    { 
 | 
        dw_detail.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/HrOrg/detail"); 
 | 
        if (m_operate == L"new0") 
 | 
        { 
 | 
            dw_detail.SetItemString(1, L"ParentOrgID", m_tvOrgID); 
 | 
            dw_detail.SetItemDisplayString(1, L"ParentOrgID", m_tvOrgName); 
 | 
        } 
 | 
        dw_detail.SetItemString(1, L"Status", L"Y"); 
 | 
        //dw_detail.SetItemDisplayString(1,L"Status",L"ÓÐЧ"); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    //ÃüÁî·¢²¼º¯Êý 
 | 
    int OnCmdDispatch(xstring comdid) 
 | 
    { 
 | 
        if (comdid == L"New") OnNew(); 
 | 
        if (comdid == L"Save") OnSave(); 
 | 
        if (comdid == L"xmOk") OnSave(); 
 | 
        if (comdid == L"xmCancel") CloseWindow(); 
 | 
        return 0; 
 | 
    } 
 | 
  
 | 
    //ÃüÁî´¦Àíʼþ 
 | 
    int OnXCommand(TEvent* evt, LPARAM param) 
 | 
    { 
 | 
        return OnCmdDispatch(evt->xcommand.pStrID); 
 | 
    } 
 | 
  
 | 
    int OnChildContent(TEvent* evt, LPARAM p) 
 | 
    { 
 | 
        DWNMHDR& dwhdr = *(DWNMHDR*)evt->notify.pnmh; 
 | 
        xstring col = dwhdr.colname; 
 | 
        if (col != L"") { 
 | 
            xml x; 
 | 
  
 | 
            xaserverarg arg; 
 | 
  
 | 
            xstring query; 
 | 
            query = L"[IResourceMSSql.xq]"; 
 | 
            if (col == L"OrgTypeID") { 
 | 
                arg.AddArg(L"ResourceType", L"HrOrgType");//×éÖ¯ÀàÐÍ     
 | 
            } 
 | 
            else if (col == L"OrgAddress000") { 
 | 
                arg.AddArg(L"ResourceType", L"HR_Address");//×éÖ¯µØÖ·     
 | 
            } 
 | 
            else if (col == L"CompanyID") { 
 | 
                arg.AddArg(L"ResourceType", L"CompanyInfo");//ËùÊô·¨ÈË     
 | 
            } 
 | 
            else if (col == L"OrgProLine") { 
 | 
                arg.AddArg(L"ResourceType", L"OrgProLine");//²úÆ·Ïß 
 | 
            } 
 | 
            if (xaserver::ExecXQuery(GetServerUrl(), query, arg.GetString(), x) == 1) 
 | 
                dwhdr.data = x.xml(); 
 | 
            //trace(x.GetXml()); 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
    int OnClicked(TEvent* evt, LPARAM p) 
 | 
    { 
 | 
        DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; 
 | 
  
 | 
        xaserverarg& arg = *new xaserverarg; 
 | 
  
 | 
  
 | 
        xstring colname = hdr.colname; 
 | 
        if (colname == L"ParentOrgID") 
 | 
        { 
 | 
            openUrl(L"×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/Chart", &arg); 
 | 
            //trace(arg.GetString()); 
 | 
            xstring comdid = arg.GetArgString(L"comdid"); 
 | 
            if (comdid == L"xmOk") 
 | 
            { 
 | 
                xstring OrgName = arg.GetArgString(L"OrgName"); 
 | 
                xstring OrgID = arg.GetArgString(L"OrgId"); 
 | 
                dw_detail.SetItemDisplayString(1, L"ParentOrgID", OrgName); 
 | 
                dw_detail.SetItemString(1, L"ParentOrgID", OrgID); 
 | 
                dw_detail.Redraw(); 
 | 
            } 
 | 
        } 
 | 
        if (colname == L"LeaderID") 
 | 
        { 
 | 
            openUrl(L"×éÖ¯¼Ü¹¹.vface/xpage/hremployee/select", &arg); 
 | 
            xstring comdid = arg.GetArgString(L"comdid"); 
 | 
            if (comdid == L"xmOk") 
 | 
            { 
 | 
                xstring sPersonID = arg.GetArgString(L"sPersonID"); 
 | 
                //trace(sPersonID); 
 | 
                xstring sPersonName = arg.GetArgString(L"sPersonName"); 
 | 
                dw_detail.SetItemDisplayString(1, colname.c_str(), sPersonName); 
 | 
                dw_detail.SetItemString(1, colname.c_str(), sPersonID); 
 | 
                dw_detail.Redraw(); 
 | 
            } 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnAttachEvent() 
 | 
    { 
 | 
        //°ó¶¨¹¤¾ßÌõµã»÷ʼþ 
 | 
        AttachEvent(L"WM_XCOMMAND", (FEvent)&HrOrgMaint::OnXCommand); 
 | 
        //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ 
 | 
        AttachEvent(L"WM_SETFOCUS", (FEvent)&HrOrgMaint::OnSetFocus); 
 | 
        //ÏÂÀ¿ò  ÌṩÄÚÈÝ 
 | 
        AttachEvent(L"dw_detail", L"DWV_CHILDCONTENT", (FEvent)&HrOrgMaint::OnChildContent); 
 | 
        AttachEvent(L"dw_detail", L"DWV_ITEMFOCUSCHANGED", (FEvent)&HrOrgMaint::OnClicked); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
  
 | 
    int OnInitial() 
 | 
    { 
 | 
        SetAgent(); 
 | 
        OnAttachEvent(); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int onload() 
 | 
    { 
 | 
        SetArg(); 
 | 
        dw_detail = new xdwtable; 
 | 
        dw_detail.setNativePointer(GetControl(L"dw_detail")); 
 | 
        dw_detail.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/HrOrg/detail"); 
 | 
        OnInitial(); 
 | 
  
 | 
        xaserverarg arg; 
 | 
  
 | 
        arg = GetArg(); 
 | 
        if (arg) 
 | 
        { 
 | 
            m_operate = arg.GetArgString(L"operate"); 
 | 
            m_sguid = arg.GetArgString(L"guid"); 
 | 
            m_tvOrgID = arg.GetArgString(L"tvOrgID");//×éÖ¯Ê÷µÄID 
 | 
            m_tvOrgName = arg.GetArgString(L"tvOrgName");//×éÖ¯Ê÷µÄName 
 | 
            m_tvRootOrgID = arg.GetArgString(L"tvRootOrgID");//×éÖ¯Ê÷µÄID 
 | 
            m_tvRootOrgName = arg.GetArgString(L"tvRootOrgName");//×éÖ¯Ê÷µÄName 
 | 
            //alert(m_tvRootOrgName); 
 | 
        } 
 | 
        /*if ( m_sguid == L"" || m_sguid == nil) 
 | 
        { 
 | 
            m_sguid = GetGuid();//´íÎó 
 | 
            trace(m_sguid); 
 | 
        }*/ 
 | 
        if (m_sguid != L"") { 
 | 
            OnRetrieve(); 
 | 
        }; 
 | 
        if (m_operate == L"new0") 
 | 
        { 
 | 
            //trace(m_tvOrgID); 
 | 
            dw_detail.SetItemString(1, L"ParentOrgID", m_tvOrgID); 
 | 
            dw_detail.SetItemDisplayString(1, L"ParentOrgID", m_tvOrgName); 
 | 
            dw_detail.SetItemString(1, L"CompanyID", m_tvRootOrgID); 
 | 
            dw_detail.SetItemDisplayString(1, L"CompanyID", m_tvRootOrgName); 
 | 
            dw_detail.SetItemString(1, L"Status", L"Y"); 
 | 
            //dw_detail.SetItemDisplayString(1,L"Status",L"ÓÐЧ"); 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
}; 
 |