#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" 
 | 
#include "HrPosition.hpp" 
 | 
  
 | 
using xml = KXMLDOMDocument; 
 | 
class __declspec(dllexport) HrPositionAdd : public xframe 
 | 
{ 
 | 
public: 
 | 
  
 | 
    HrPosition* lw_obj; 
 | 
    xdwgrid    dw_list; 
 | 
    xtreeview        tv_1; 
 | 
    xstring     m_type; 
 | 
  
 | 
    xnode    m_agentNode;    //Agent Condition 
 | 
    xstring    m_agentCond;    //Agent Node 
 | 
public: 
 | 
    HrPositionAdd(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} 
 | 
public: 
 | 
    static HrPositionAdd* CreateInstance(void* implPtr, void* hWnd) 
 | 
    { 
 | 
        HrPositionAdd* pWin = new HrPositionAdd(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 query = L"[MSSqlHrJob.xq]"; 
 | 
                    xml x; 
 | 
  
 | 
                    xaserverarg arg; 
 | 
  
 | 
                    arg.AddArg(L"type", m_type); 
 | 
                    //if (xaserver::ExecXQuery(GetServerUrl(),query,arg.GetString(),x)!=1 
 | 
                    if (xurl::post(L"OrganizationStruct/list.Job", arg.GetString(), x) != 1) 
 | 
                    { 
 | 
                        trace(x.text()); 
 | 
                        return -1; 
 | 
                    } 
 | 
                    else 
 | 
                    { 
 | 
                        dw_list.Retrieve(x); 
 | 
                        dw_list.Redraw(); 
 | 
                        dw_list.SetReadOnly(true); 
 | 
                    } 
 | 
                    return 1; 
 | 
                } 
 | 
  
 | 
                int OnTreeSelChanged(TEvent* evt, int p) 
 | 
                { 
 | 
                    NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; 
 | 
                     
 | 
                    HTREEITEM hItem = nmtv.itemNew.hItem; 
 | 
  
 | 
                    //int wid = tv_1.GetId(); 
 | 
                    hItem = tv_1.GetSelectedItem(); 
 | 
                    HTREEITEM rootItem = tv_1.GetRootItem(); 
 | 
                    if (!hItem || hItem == rootItem) 
 | 
                    { 
 | 
                        m_type = L"all"; 
 | 
                    } 
 | 
                    else 
 | 
                    { 
 | 
                        KXMLDOMElement ele = tv_1.GetItemData(hItem); 
 | 
                        m_type = ele.selectSingleNode(L"@name").text(); 
 | 
                    } 
 | 
                    OnRetrieve(); 
 | 
                    return 1; 
 | 
                } 
 | 
  
 | 
                int OnCreateTree() 
 | 
                { 
 | 
                    //int wid = tv_1.GetId(); 
 | 
                    xml x; 
 | 
                     
 | 
                    x.loadXML(L"<Type name='all'/>"); 
 | 
                    KXMLDOMElement ele = x.selectSingleNode(L"Type"); 
 | 
                    HTREEITEM hItem = tv_1.InsertChildItemEx(0, L"¹¤ÖÖÀàÐÍ", ele, 15, 4); 
 | 
  
 | 
                    if (xurl::post(L"/sale/data/OrganizationStruct/type.Job", L"", x) != 1) 
 | 
                    { 
 | 
                        trace(x.xml()); 
 | 
                        return -1; 
 | 
                    } 
 | 
                    //trace(x.GetXml()); 
 | 
                    auto list = x.selectNodes(L"//Type"); 
 | 
                    int i = 0, s = list.length(); 
 | 
                    KXMLDOMElement e; 
 | 
                    xstring sname; 
 | 
                    if (s > 0) 
 | 
                    { 
 | 
                        for (i = 0; i < s; i++) 
 | 
                        { 
 | 
                            e = list.item(i); 
 | 
                            sname = e.selectSingleNode(L"@name").text(); 
 | 
                            HTREEITEM curItem = tv_1.InsertChildItemEx( hItem, sname, e, 15, 4); 
 | 
                        } 
 | 
                    } 
 | 
                    return 1; 
 | 
                } 
 | 
  
 | 
                int OnOK() 
 | 
                { 
 | 
                    if (GetWinParam()) 
 | 
                    { 
 | 
                        lw_obj = (HrPosition*)GetWinParam(); 
 | 
                    } 
 | 
                    else 
 | 
                        return 0; 
 | 
  
 | 
                    int row = dw_list.GetNextSelectRow(1); 
 | 
                    if (row < 1) 
 | 
                    { 
 | 
                        alert(L"ÇëÑ¡Ôñ¹¤ÖÖ!"); 
 | 
                        return 1; 
 | 
                    } 
 | 
                    //treeview    tv_org   =  new treeview; 
 | 
                    //tv_org.setNativePointer(lw_obj->tv_org); 
 | 
                    HTREEITEM hitem = tv_1.GetSelectedItem(); 
 | 
                    KXMLDOMElement ele = tv_1.GetItemData( hitem); 
 | 
                    xstring sOrgID = ele.selectSingleNode(L"@guid").text(); 
 | 
                    xstring sOrgName = ele.selectSingleNode(L"OrgName").text(); 
 | 
                    while (row > 0) 
 | 
                    { 
 | 
                        KXMLDOMElement e = dw_list.GetRowElement(row); 
 | 
                        xstring sJobID = e.selectSingleNode(L"@guid").text() + (xstring)L""; 
 | 
                        xstring sJobName = e.selectSingleNode(L"JobName").text() + (xstring)L""; 
 | 
  
 | 
                        int nRow = lw_obj->dw_list.InsertRow(0); 
 | 
                        lw_obj->dw_list.SetItemString(nRow, L"JobID", sJobID); 
 | 
                        lw_obj->dw_list.SetItemDisplayString(nRow, L"JobID", sJobName); 
 | 
                        lw_obj->dw_list.SetItemString(nRow, L"Status", L"Y"); 
 | 
                        lw_obj->dw_list.SetItemDisplayString(nRow, L"Status", L"ÓÐЧ"); 
 | 
                        lw_obj->dw_list.SetItemString(nRow, L"OrgID", sOrgID); 
 | 
                        lw_obj->dw_list.SetItemDisplayString(nRow, L"OrgID", sOrgName); 
 | 
                        lw_obj->dw_list.SetItemString(nRow, L"PositionName", sOrgName + sJobName); 
 | 
                        row = dw_list.GetNextSelectRow(row + 1); 
 | 
                    } 
 | 
                    CloseWindow(); 
 | 
                    return 1; 
 | 
                } 
 | 
  
 | 
                //ÃüÁî·¢²¼º¯Êý 
 | 
                int OnCmdDispatch(xstring comdid) 
 | 
                { 
 | 
                    if (comdid == L"xmOk") 
 | 
                        OnOK(); 
 | 
                    else if (comdid == L"xmCancel") 
 | 
                        CloseWindow(); 
 | 
                    return 0; 
 | 
                } 
 | 
  
 | 
                //ÃüÁî´¦Àíʼþ 
 | 
                int OnXCommand(TEvent* evt, LPARAM param) 
 | 
                { 
 | 
                    return OnCmdDispatch(evt->xcommand.pStrID); 
 | 
                } 
 | 
  
 | 
                int OnAttachEvent() 
 | 
                { 
 | 
                    //°ó¶¨¹¤¾ßÌõµã»÷ʼþ 
 | 
                    AttachEvent(L"WM_XCOMMAND", (FEvent)&HrPositionAdd::OnXCommand); 
 | 
                    //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ 
 | 
                    AttachEvent(L"WM_SETFOCUS", (FEvent)&HrPositionAdd::OnSetFocus); 
 | 
                    //»ñµÃÊ÷µÄÑ¡Ôñʼþ 
 | 
                    AttachEvent(L"tv_1", L"TVN_SELCHANGED", (FEvent)&HrPositionAdd::OnTreeSelChanged); 
 | 
                    return 1; 
 | 
                } 
 | 
  
 | 
                int OnInitial() 
 | 
                { 
 | 
                    //SetAgent(); 
 | 
                    OnAttachEvent(); 
 | 
                    return 1; 
 | 
                } 
 | 
  
 | 
                int onload() 
 | 
                { 
 | 
                    SetArg(); 
 | 
                    m_type = L"all"; 
 | 
                    tv_1 = GetControl(L"tv_1"); 
 | 
                    dw_list = new xdwgrid; 
 | 
                    dw_list.setNativePointer(GetControl(L"dw_list")); 
 | 
                    dw_list.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/HrJob/list"); 
 | 
                    dw_list.SetSelectionMode(3); //3 
 | 
                    dw_list.SetReadOnly(true); 
 | 
  
 | 
                    OnInitial(); 
 | 
                    OnCreateTree(); 
 | 
                    //int wid = tv_1.GetId(); 
 | 
                    HTREEITEM hItem = tv_1.GetRootItem(); 
 | 
                    tv_1.ExpandItem( hItem); 
 | 
                    OnRetrieve(); 
 | 
  
 | 
                    return 1; 
 | 
                } 
 | 
}; 
 |