#include <wobject/xstring.hpp> 
 | 
#include <xcontrol/xtreeview.hpp> 
 | 
#include <xcontrol/xdwgrid.hpp> 
 | 
#include <xcontrol/xcell.hpp> 
 | 
  
 | 
  
 | 
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" 
 | 
#include "viewobject/view.base.hpp" 
 | 
  
 | 
using xml = KXMLDOMDocument; 
 | 
    class  __declspec(dllexport)  ViewManpowerFileList : public xframe 
 | 
    { 
 | 
    public: 
 | 
        xdwgrid    dw_list;//hxsoft.com -> Developer -> wface -> vcontrol 
 | 
        HWND hSignWin; 
 | 
        xdwtable dw_arg; 
 | 
        xnode    m_agentNode;    //Agent Condition 
 | 
  
 | 
        xstring urlTree; 
 | 
        xtreeview tv_folder; 
 | 
    public: 
 | 
        ViewManpowerFileList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} 
 | 
    public: 
 | 
        static ViewManpowerFileList* CreateInstance(void* implPtr, void* hWnd) 
 | 
        { 
 | 
            ViewManpowerFileList* pWin = new ViewManpowerFileList(implPtr, (HWND)hWnd); 
 | 
            return pWin; 
 | 
        } 
 | 
        //Õ¹¿ª×ÓÎļþ 
 | 
        int  ExpandChildFolder(HTREEITEM hItem,KXMLDOMElement pElement) 
 | 
        { 
 | 
            KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); 
 | 
            int len = nlist.length(); 
 | 
            for (int i = 0; i < len; i++) 
 | 
            { 
 | 
                KXMLDOMElement e = nlist.item(i); 
 | 
                xstring name = e.getAttribute(L"name"); 
 | 
                xstring sImage = e.getAttribute(L"image"); 
 | 
                xstring child = e.getAttribute(L"child"); 
 | 
                int image = 15; 
 | 
                if (sImage) image = sImage.toInt(); 
 | 
                HTREEITEM h = tv_folder.InsertChildItem( hItem, name, e, image); 
 | 
                if (child != L"no") tv_folder.SetItemChild(h, 1); 
 | 
                ExpandChildFolder(h, e); 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
        int  InitialFolder() 
 | 
        { 
 | 
            KXMLDOMElement xframeElement = GetElement(); 
 | 
            KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); 
 | 
            if (e) 
 | 
                ExpandChildFolder(0, e); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) 
 | 
        { 
 | 
            KXMLDOMNodeList nlist = ele.selectNodes(L"item"); 
 | 
            int len = nlist.length(); 
 | 
            if (len > 0) tv_folder.SetItemChild(hItem, 1); 
 | 
            for (int i = 0; i < len; i++) 
 | 
            { 
 | 
                KXMLDOMElement e = nlist.item(i); 
 | 
                xstring name = e.getAttribute(L"name"); 
 | 
                HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); 
 | 
                ExpandCatChildFolder(h, e, 35); 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
        int ExpandFolderItem(HTREEITEM hItem) 
 | 
        { 
 | 
            xml x = ViewObject::RetrieveData(urlTree); 
 | 
            if (!x) return 0; 
 | 
            KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); 
 | 
            int len = nlist.length(); 
 | 
            for (int i = 0; i < len; i++) 
 | 
            { 
 | 
                KXMLDOMElement e = nlist.item(i); 
 | 
                xstring name = e.getAttribute(L"name"); 
 | 
                HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); 
 | 
                ExpandCatChildFolder(h, e, 35); 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        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 p) 
 | 
        { 
 | 
            //ÖØÖù¤¾ßÌõ 
 | 
            SetAgent(); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnOpenAddWindow() 
 | 
        { 
 | 
            OpenWindow(L"dev:xpage[ManpowerFileWindow.vx]"); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnOpenUpdateWindow() 
 | 
        { 
 | 
            int row = dw_list.GetRow(); 
 | 
            if (row < 1) 
 | 
                return 1; 
 | 
            KXMLDOMElement ele = dw_list.GetRowElement(row); 
 | 
            xstring mfid = ele.selectSingleNode(L"mfid").text();//»ñÈ¡½ÚµãµÄÖµ 
 | 
            xaserverarg arg; 
 | 
            //arg.AddArg(L"mfid", mfid); 
 | 
            OpenWindow(L"dev:xpage[ManpowerFileWindow.vx]",mfid); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnExchangeFileWindow() 
 | 
        { 
 | 
            xwin* xw = OpenWindow(L"dev:xpage[BlankExcelTemplate.vx]", 0); 
 | 
            hSignWin = xw->GetHWND(); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnDelete() 
 | 
        { 
 | 
            int MB_OKCANCEL = 1; 
 | 
            int IDOK = 1; 
 | 
            int ret = MessageBoxW(GetHWND(), L"È·ÈÏɾ³ý?", L"Ìáʾ", MB_OKCANCEL); 
 | 
            if (ret == IDOK) 
 | 
            { 
 | 
                int row = dw_list.GetRow(); 
 | 
                if (row < 1) 
 | 
                    return 1; 
 | 
                KXMLDOMElement ele = dw_list.GetRowElement(row); 
 | 
                xstring mfid = ele.selectSingleNode(L"mfid").text();//²é¿´ 
 | 
                xml x ; 
 | 
                 
 | 
                xaserverarg arg;//·ÅÖòÎÊý 
 | 
                 
 | 
                arg.AddArg(L"mfid", mfid); 
 | 
                if (getUrl(L"/sale/data/ManpowerFile/delete", arg.GetString(), x) != 1) 
 | 
                { 
 | 
                    xstring error = x.text(); 
 | 
                    alert(L"err:" + error); 
 | 
                    return 1; 
 | 
                } 
 | 
                alert(x.text()); 
 | 
                OnRefresh(); 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int OnRefresh() { 
 | 
            OnRetrieve(); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        //·ÖÎö 
 | 
        int OnAnalysis() 
 | 
        { 
 | 
            HCURSOR hCursor = xutil::SetCursorWait(); 
 | 
            xstring str = dw_list.DataAnalysis(L""); 
 | 
            xaserverarg arg; 
 | 
             
 | 
            arg.AddArg(L"html", str); 
 | 
            arg.SetParam(L"obj", (LPARAM)&dw_list); 
 | 
            OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg); 
 | 
            xutil::RestoreCursor(hCursor); 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        xstring GetQueryArg() 
 | 
        { 
 | 
            dw_arg.AcceptText(); 
 | 
            xml x ; 
 | 
             
 | 
            dw_arg.DwUpdateAllTo(x); 
 | 
  
 | 
            return x.xml(); 
 | 
        } 
 | 
  
 | 
        int  OnRetrieveEx1() 
 | 
        { 
 | 
            HTREEITEM hItem = tv_folder.GetSelectedItem(); 
 | 
            if (!hItem) return 1; 
 | 
  
 | 
            HCURSOR hCursor = xutil::SetCursorWait(); 
 | 
            KXMLDOMElement e1 = tv_folder.GetItemData(hItem); 
 | 
            xstring no = e1.getAttribute(L"no"); 
 | 
  
 | 
            xml x ; 
 | 
             
 | 
            xaserverarg arg; 
 | 
             
 | 
            //arg.AddArg(L"QueryTxt",GetControl(L"sle_search").GetText()); 
 | 
            arg.AddArg(L"QueryArg", GetQueryArg()); 
 | 
            arg.AddArg(L"MStatus", no); 
 | 
  
 | 
            arg.AddArg(L"QueryName", xcontrol(GetControl(L"QueryName")).GetText()); 
 | 
            //trace(arg.GetString()); 
 | 
            if (getUrl(L"/sale/data/ManpowerFile/list", arg.GetString(), x) != 1) 
 | 
            { 
 | 
                trace(x.text()); 
 | 
                return -1; 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
  
 | 
                dw_list.Retrieve(x); 
 | 
                dw_list.Redraw(); 
 | 
                dw_list.SetReadOnly(true); 
 | 
                dw_list.SetSelectionMode(1); 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        //ÃüÁî·¢²¼º¯Êý 
 | 
        int OnCmdDispatch(xstring comdid) 
 | 
        { 
 | 
            if (comdid == L"xmAddHumanDocument") 
 | 
                return OnOpenAddWindow(); 
 | 
            else if (comdid == L"xmUpdateHumanDocument") 
 | 
                return OnOpenUpdateWindow(); 
 | 
            else if (comdid == L"xmRefresh" || comdid == L"xmSearch") 
 | 
                return OnRetrieveEx1(); 
 | 
            else if (comdid == L"xmExchangeFile") 
 | 
                return OnExchangeFileWindow(); 
 | 
            else if (comdid == L"xmDelete") 
 | 
                return OnDelete(); 
 | 
            else if (comdid == L"xmAnalysis") 
 | 
                return OnAnalysis(); 
 | 
            return 0; 
 | 
        } 
 | 
  
 | 
        //ÃüÁî´¦Àíʼþ 
 | 
        int OnXCommand(TEvent* evt, LPARAM p) 
 | 
        { 
 | 
            return OnCmdDispatch(evt->xcommand.pStrID); 
 | 
        } 
 | 
  
 | 
        int OnDoubleClicked(TEvent* evt, LPARAM p) 
 | 
        { 
 | 
            return OnCmdDispatch(L"xmUpdateHumanDocument"); 
 | 
        } 
 | 
  
 | 
  
 | 
        int OnTreeSelChanged(TEvent* evt, LPARAM p) 
 | 
        { 
 | 
            return OnRetrieveEx1(); 
 | 
        } 
 | 
  
 | 
        int OnAttachEvent() 
 | 
        { 
 | 
            //°ó¶¨¹¤¾ßÌõµã»÷ʼþ 
 | 
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewManpowerFileList::OnXCommand); 
 | 
            //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ 
 | 
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewManpowerFileList::OnSetFocus); 
 | 
            AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&ViewManpowerFileList::OnDoubleClicked);//ÐÐË«»÷ 
 | 
            AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ViewManpowerFileList::OnTreeSelChanged); //Ê÷Ñ¡Ôñ 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        //Êý¾Ý´«Ê亯Êý 
 | 
        int  OnRetrieve() 
 | 
        { 
 | 
            //int  hCursor = xutil::SetCursorWait();//Êó±êλÖà 
 | 
            xml x ; 
 | 
             
 | 
            xaserverarg arg;//·ÅÖòÎÊý 
 | 
             
 | 
            //arg.AddArg(L"QueryTxt",GetControl(L"sle_search").GetText());//Ìí¼ÓËùÐèÒª´«µ½ºǫ́µÄ²ÎÊý 
 | 
            arg.AddArg(L"QueryArg", GetQueryArg()); 
 | 
            arg.AddArg(L"MStatus", L""); 
 | 
            arg.AddArg(L"QueryName", xcontrol(GetControl(L"QueryName")).GetText()); 
 | 
            //trace(L"²é¿´arg=L"+arg.GetString());//ÔËÐнçÃæ´òÓ¡ 
 | 
            if (getUrl(L"/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)///sale/data/ManpowerFile/doclistºǫ́½Ó¿Ú 
 | 
            { 
 | 
                trace(x.text()); 
 | 
                return -1; 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                dw_list.Retrieve(x); 
 | 
                dw_list.Redraw(); 
 | 
            } 
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int onload() 
 | 
        { 
 | 
            //¡¾1¡¿¿ØÖÆÒ³ÃæÖÐname=L"dw_list"µÄÄÚÈÝ 
 | 
            dw_list = GetControl(L"dw_list"); 
 | 
            //¡¾2¡¿¼ÓÔØsale¸ùĿ¼ÏÂviewϵÄManpowerFile.vfaceÎļþÖеÄtemplate/list url Ç°¶ËÒ³Ãæ 
 | 
            dw_list.openUrl(L"/sale/view/ManpowerFile/template/list"); 
 | 
            //¡¾3¡¿°ó¶¨Ê¼þ 
 | 
            OnAttachEvent(); 
 | 
            //¡¾4¡¿¼ÓÔØºǫ́Êý¾Ý 
 | 
  
 | 
            //¡¾6¡¿ÉèΪֻ¶Á 
 | 
            dw_list.SetReadOnly(true); 
 | 
  
 | 
            dw_arg = GetControl(L"dw_arg"); 
 | 
            dw_arg.openUrl(L"/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, L"DateType", L"²»É趨"); 
 | 
  
 | 
            OnRetrieve(); 
 | 
            urlTree = L"/sale/data/ManpowerFile/folder"; 
 | 
            tv_folder = GetControl(L"tv_folder"); 
 | 
            tv_folder.SetLineAtRoot(true); 
 | 
            InitialFolder(); 
 | 
  
 | 
            return 1; 
 | 
        } 
 | 
  
 | 
        int onloaded() 
 | 
        { 
 | 
            SetAgent(); 
 | 
            HTREEITEM hItem = tv_folder.GetRootItem(); 
 | 
            ExpandFolderItem(hItem); 
 | 
            tv_folder.ExpandItem(hItem); 
 | 
            tv_folder.ItemFocus(hItem); 
 | 
            return 1; 
 | 
        } 
 | 
    }; 
 |