xj qian
2024-06-28 24979676af0d645c28fc05157ed61fc3fafbee3b
jrj/project/business/HR/ManpowerFile.cpp
@@ -1,71 +1,84 @@
use "xcontrol.vframe.vbusiness.vd"
use "xbase.vframe.vbusiness.vd"
use "base.view.vd"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xcell.hpp>
unit trade
[
   class ViewManpowerFileList : public xframe
#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
      int hSignWin;
      xdwtable dw_arg;
      xnode   m_agentNode;   //Agent Condition
      string urlTree;
      xstring urlTree;
      xtreeview tv_folder;
      //展开子文件
      int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
   public:
      ViewManpowerFileList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
   public:
      static ViewManpowerFileList* CreateInstance(void* implPtr, void* hWnd)
      {
         msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
         int len = nlist.length;
         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++)
         {
            msxml::IXMLDOMElement e = nlist.item(i);
            string name = e.getAttribute("name");
            string sImage = e.getAttribute("image");
            string child = e.getAttribute("child");
            KXMLDOMElement& e = *new KXMLDOMElement(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();
            int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
            if (child != "no") tv_folder.SetItemChild(h, 1);
            HTREEITEM h = tv_folder.InsertChildItem( hItem, name, (LPARAM)&e, image);
            if (child != L"no") tv_folder.SetItemChild(h, 1);
            ExpandChildFolder(h, e);
         }
         return 1;
      }
      int  InitialFolder()
      {
         msxml::IXMLDOMElement xframeElement = GetElement();
         msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
         KXMLDOMElement xframeElement = GetElement();
         KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
         if (e)
            ExpandChildFolder(0, e);
         return 1;
      }
      int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image)
      int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image)
      {
         msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
         int len = nlist.length;
         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++)
         {
            msxml::IXMLDOMElement e = nlist.item(i);
            string name = e.getAttribute("name");
            int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);
            KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
            xstring name = e.getAttribute(L"name");
            HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, image);
            ExpandCatChildFolder(h, e, 35);
         }
         return 1;
      }
      int ExpandFolderItem(int hItem)
      int ExpandFolderItem(HTREEITEM hItem)
      {
         xml x = ViewObject::RetrieveData(urlTree);
         if (!x) return 0;
         msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("/data/item");
         int len = nlist.length;
         KXMLDOMNodeList nlist = x.selectNodes(L"/data/item");
         int len = nlist.length();
         for (int i = 0; i < len; i++)
         {
            msxml::IXMLDOMElement e = nlist.item(i);
            string name = e.getAttribute("name");
            int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
            KXMLDOMElement& e = *new KXMLDOMElement(nlist.item(i));
            xstring name = e.getAttribute(L"name");
            HTREEITEM h = tv_folder.InsertChildItem(hItem, name, (LPARAM)&e, 35);
            ExpandCatChildFolder(h, e, 35);
         }
         return 1;
@@ -73,27 +86,27 @@
      int SetAgent()
      {
         string xfNodeAgentArea = "agentarea";
         xstring xfNodeAgentArea = L"agentarea";
         xnode anode = GetAgentNode(xfNodeAgentArea);
         if (m_agentNode)
         {
            SetAgentNodeContent(anode, m_agentNode);
            SetAgentNode(anode, m_agentNode);
         }
         else
         {
            msxml::IXMLDOMElement xframeElement = GetElement();
            msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
            KXMLDOMElement xframeElement = GetElement();
            KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
            if (agent)
            {
               string s = agent.xml;
               m_agentNode = SetAgentNodeContent(anode, s);
               xstring s = agent.xml();
               m_agentNode = SetAgentNode(anode, s);
            }
         }
         return 1;
      }
      //焦点激活处理函数
      int OnSetFocus(ref TEvent evt, int param)
      int OnSetFocus(TEvent* evt, LPARAM p)
      {
         //重置工具条
         SetAgent();
@@ -102,7 +115,7 @@
      int OnOpenAddWindow()
      {
         OpenWindow("dev:xpage[ManpowerFileWindow.vx]");
         OpenWindow(L"dev:xpage[ManpowerFileWindow.vx]");
         return 1;
      }
@@ -111,15 +124,15 @@
         int row = dw_list.GetRow();
         if (row < 1)
            return 1;
         msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
         string mfid = ele.selectSingleNode("mfid").text;//获取节点的值
         OpenWindow("dev:xpage[ManpowerFileWindow.vx]", cast(mfid as int));
         KXMLDOMElement ele = dw_list.GetRowElement(row);
         xstring mfid = ele.selectSingleNode(L"mfid").text();//获取节点的值
         OpenWindow(L"dev:xpage[ManpowerFileWindow.vx]",mfid);
         return 1;
      }
      int OnExchangeFileWindow()
      {
         xwin xw = OpenWindow("dev:xpage[BlankExcelTemplate.vx]", 0);
         xwin xw = OpenWindow(L"dev:xpage[BlankExcelTemplate.vx]", 0);
         hSignWin = xw.GetHWND();
         return 1;
      }
@@ -128,26 +141,26 @@
      {
         int MB_OKCANCEL = 1;
         int IDOK = 1;
         int ret = win32::MessageBox(GetHWND(), "确认删除?", "提示", MB_OKCANCEL);
         int ret = MessageBoxW(GetHWND(), L"确认删除?", L"提示", MB_OKCANCEL);
         if (ret == IDOK)
         {
            int row = dw_list.GetRow();
            if (row < 1)
               return 1;
            msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
            string mfid = ele.selectSingleNode("mfid").text;//查看
            KXMLDOMElement ele = dw_list.GetRowElement(row);
            xstring mfid = ele.selectSingleNode(L"mfid").text();//查看
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;//放置参数
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("mfid", mfid);
            if (getUrl("/sale/data/ManpowerFile/delete", arg.GetString(), x) != 1)
            xaserverarg arg;//放置参数
            arg.AddArg(L"mfid", mfid);
            if (getUrl(L"/sale/data/ManpowerFile/delete", arg.GetString(), x) != 1)
            {
               string error = x.GetXmlDoc().text;
               alert("err:" + error);
               xstring error = x.text();
               alert(L"err:" + error);
               return 1;
            }
            alert(x.GetXmlDoc().text);
            alert(x.text());
            OnRefresh();
         }
         return 1;
@@ -161,50 +174,50 @@
      //分析
      int OnAnalysis()
      {
         int hCursor = xutil::SetCursorWait();
         string str = dw_list.DataAnalysis("");
         xaserverarg arg = new xaserverarg;
         arg.setNativePointer(arg.CreateInstance());
         arg.AddArg("html", str);
         HCURSOR hCursor = xutil::SetCursorWait();
         xstring str = dw_list.DataAnalysis(L"");
         xaserverarg arg;
         arg.AddArg(L"html", str);
         int obj = cast(dw_list as int);
         arg.AddArg("obj", obj.toString());
         OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int));
         arg.AddArg(L"obj", obj.toString());
         OpenWindow(L"dev:xpage[data.vanalysis.vx]", cast(arg as int));
         xutil::RestoreCursor(hCursor);
         return 1;
      }
      string GetQueryArg()
      xstring GetQueryArg()
      {
         dw_arg.AcceptText();
         xml x = new xml;
         x.setNativePointer(xml::CreateInstance());
         dw_arg.DwUpdateAllTo(x.GetXmlDoc());
         return x.GetXml();
         dw_arg.DwUpdateAllTo(x);
         return x.xml();
      }
      int  OnRetrieveEx1()
      {
         int hItem = tv_folder.GetSelectedItem();
         HTREEITEM hItem = tv_folder.GetSelectedItem();
         if (hItem <= 0) return 1;
         int hCursor = xutil::SetCursorWait();
         msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
         string no = e1.getAttribute("no");
         HCURSOR hCursor = xutil::SetCursorWait();
         KXMLDOMElement& e1 = *(KXMLDOMElement*)tv_folder.GetItemData(hItem);
         xstring no = e1.getAttribute(L"no");
         xml x = new xml;
         x.setNativePointer(xml::CreateInstance());
         xaserverarg arg = new xaserverarg;
         arg.setNativePointer(arg.CreateInstance());
         //arg.AddArg("QueryTxt",GetControl("sle_search").GetText());
         arg.AddArg("QueryArg", GetQueryArg());
         arg.AddArg("MStatus", no);
         arg.AddArg("QueryName", GetControl("QueryName").GetText());
         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", GetControl(L"QueryName").GetText());
         //trace(arg.GetString());
         if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)
         if (getUrl(L"/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)
         {
            trace(x.GetXmlDoc().text);
            trace(x.text());
            return -1;
         }
         else
@@ -219,36 +232,36 @@
      }
      //命令发布函数
      int OnCmdDispatch(string comdid)
      int OnCmdDispatch(xstring comdid)
      {
         if (comdid == "xmAddHumanDocument")
         if (comdid == L"xmAddHumanDocument")
            return OnOpenAddWindow();
         else if (comdid == "xmUpdateHumanDocument")
         else if (comdid == L"xmUpdateHumanDocument")
            return OnOpenUpdateWindow();
         else if (comdid == "xmRefresh" || comdid == "xmSearch")
         else if (comdid == L"xmRefresh" || comdid == L"xmSearch")
            return OnRetrieveEx1();
         else if (comdid == "xmExchangeFile")
         else if (comdid == L"xmExchangeFile")
            return OnExchangeFileWindow();
         else if (comdid == "xmDelete")
         else if (comdid == L"xmDelete")
            return OnDelete();
         else if (comdid == "xmAnalysis")
         else if (comdid == L"xmAnalysis")
            return OnAnalysis();
         return 0;
      }
      //命令处理事件
      int OnXCommand(ref TXCommandEvent evt, int param)
      int OnXCommand(TEvent* evt, LPARAM p)
      {
         return OnCmdDispatch(evt.pStrID);
         return OnCmdDispatch(evt->xcommand.pStrID);
      }
      int OnDoubleClicked(ref TNotifyEvent evt, int p)
      int OnDoubleClicked(TEvent* evt, LPARAM p)
      {
         return OnCmdDispatch("xmUpdateHumanDocument");
         return OnCmdDispatch(L"xmUpdateHumanDocument");
      }
      int OnTreeSelChanged(ref TNotifyEvent evt, int p)
      int OnTreeSelChanged(TEvent* evt, LPARAM p)
      {
         return OnRetrieveEx1();
      }
@@ -256,11 +269,11 @@
      int OnAttachEvent()
      {
         //绑定工具条点击事件
         AttachEvent("WM_XCOMMAND", OnXCommand);
         AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewManpowerFileList::OnXCommand);
         //获取焦点事件,用于重置工具条
         AttachEvent("WM_SETFOCUS", OnSetFocus);
         AttachEvent("dw_list", "DWV_DOUBLECLICKED", OnDoubleClicked);//行双击
         AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //树选择
         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); //树选择
      }
      //数据传输函数
@@ -268,17 +281,17 @@
      {
         //int  hCursor = xutil::SetCursorWait();//鼠标位置
         xml x = new xml;
         x.setNativePointer(xml::CreateInstance());
         xaserverarg arg = new xaserverarg;//放置参数
         arg.setNativePointer(arg.CreateInstance());
         //arg.AddArg("QueryTxt",GetControl("sle_search").GetText());//添加所需要传到后台的参数
         arg.AddArg("QueryArg", GetQueryArg());
         arg.AddArg("MStatus", "");
         arg.AddArg("QueryName", GetControl("QueryName").GetText());
         //trace("查看arg="+arg.GetString());//运行界面打印
         if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)///sale/data/ManpowerFile/doclist后台接口
         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", 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.GetXmlDoc().text);
            trace(x.text());
            return -1;
         }
         else
@@ -291,10 +304,10 @@
      int onload()
      {
         //【1】控制页面中name="dw_list"的内容
         dw_list = GetControl("dw_list");
         //【1】控制页面中name=L"dw_list"的内容
         dw_list = GetControl(L"dw_list");
         //【2】加载sale根目录下view下的ManpowerFile.vface文件中的template/list url 前端页面
         dw_list.openUrl("/sale/view/ManpowerFile/template/list");
         dw_list.openUrl(L"/sale/view/ManpowerFile/template/list");
         //【3】绑定事件
         OnAttachEvent();
         //【4】加载后台数据
@@ -302,17 +315,17 @@
         //【6】设为只读
         dw_list.SetReadOnly(true);
         dw_arg = GetControl("dw_arg");
         dw_arg.openUrl("/sale/view/ManpowerFile/template/QueryArg");
         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, "DateType", "不设定");
         dw_arg.SetItemString(1, L"DateType", L"不设定");
         OnRetrieve();
         urlTree = "/sale/data/ManpowerFile/folder";
         tv_folder = GetControl("tv_folder");
         urlTree = L"/sale/data/ManpowerFile/folder";
         tv_folder = GetControl(L"tv_folder");
         tv_folder.SetLineAtRoot(true);
         InitialFolder();
@@ -322,11 +335,10 @@
      int onloaded()
      {
         SetAgent();
         int hItem = tv_folder.GetRootItem();
         HTREEITEM hItem = tv_folder.GetRootItem();
         ExpandFolderItem(hItem);
         tv_folder.ExpandItem(hItem);
         tv_folder.ItemFocus(hItem);
         return 1;
      }
   };
]