qianxj2004
2 天以前 4533ade545448ab0d13135ab950c1531e0a01a1c
jrj/project/tradedocument/TDocumentWin.cpp
@@ -1,493 +1,507 @@
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xcell.hpp>
#include <xcontrol/xlistview.hpp>
#include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
class __declspec(dllexport) TDocumentWin : public xframe
{
public:
   TDocumentWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
public:
   static TDocumentWin* CreateInstance(void* implPtr, void* hWnd)
   {
      return  new TDocumentWin(implPtr, (HWND)hWnd);
   }
public:
   //xdwgrid   dw_list;
   xtreeview tv_folder;
   xlistview  lv_view;
   xnode   m_agentNode;   //Agent Condition
   int columnCount;
   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 OnListViewDoubleClicked(TEvent* evt,LPARAM param)
   {
      //重置工具条
      //SetAgent();
      return OnDocumentOpen();
   }
   int OnDocumentOpen()
   {
      int  LVNI_ALL = 0x0000;
      int  LVNI_FOCUSED = 0x0001;
      int  LVNI_SELECTED = 0x0002;
      int  LVNI_CUT = 0x0004;
      int  LVNI_DROPHILITED = 0x0008;
      int nItem = lv_view.GetNextItem(-1, LVNI_FOCUSED);
      if (nItem < 0) return 1;
      int LVIF_PARAM = 0x0004;
      lvitem lvItem;
      lvItem.iItem = nItem;
      lvItem.iSubItem = 0;
      lvItem.mask = LVIF_PARAM;
      lv_view.GetItem( lvItem);
      KXMLDOMElement ele =lvItem.lParam;
      xstring src = ele.getAttribute(L"url");
      xstring file = L"";
      if (src.find(L"/file/") > 0) file = src.mid(src.find(L"/file/") + 6, 9999);
      if (file.find(L"/file/") >= 0) file = file.mid(file.find(L"/file/") + 6, 9999);
      if (file.find(L"file/") >= 0) file = file.mid(file.find(L"file/") + 5, 9999);
      if (file == L"") return 1;
      //alert(file);
      xstring name = ele.getAttribute(L"caption");
      /*
      const xstring d = m_Html.GetData(p.object);
      if(d == L"") return -1;
      xstring file = d.mid(0, d.find(L"|##@@|",0));
      xstring name = d.mid(d.find(L"|##@@|",0)+6, d.length());
      */
      xaserver::CreateDirectory(L"C:/Temp");
      xstring str = file.left(2);
      xstring ext = L"";
      if (name.find(L".") >= 0) ext = name.mid(name.find(L"."), name.length());
      xstring sfile = file;// file.left(file.length() - 4);
      //trace(L"--"+ext +L" " + L"/business/attachment/"+str+L"/"+ file);
      //int openRet = xaserver::DownLoadFile(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file,name,L"C:/Temp/"+name);
      int openRet = xaserver::DownLoadFile(GetServerUrl(), L"/business/attachment/" + str + L"/" + file + L".jpg", L"", L"C:/Temp/" + sfile + ext);
      //alert(L"/business/attachment/"+str+L"/"+ file+L".jpg");
      if (openRet < 0)
      {
         alert(L"文件打开失败1!");
         return -1;
      }
      //openRet =ShellExecute(0,L"open",L"C:/Temp/"+name,L"",L"",5);
      openRet =ShellExecuteW(0, L"open", L"C:/Temp/" + sfile + ext, L"", L"", 5);
      if (openRet < 32)
      {
         alert(L"文件打开失败2!");
         return -1;
      }
      return -1;
   }
   int OnAddAttachment()
   {
      xstring sguid = publiccode::GetGuid();
      xstring sname = sguid;
      xstring str = sname.mid(0, 2);
      str = str.toUpper();
      xstring suri = L"attachment" + str;
      xstring ret = xaserver::UploadFile(suri, sname + L".jpg", GetHWND(), L"", false);
      if (ret == L"-1")
      {
         alert(L"上传的文件没选择!");
         return 0;
      }
      else
      {
         while (ret.find(L"\\", 0) >= 0)
            ret = ret.mid(ret.find(L"\\", 0) + 1, 9999);
         HTREEITEM h = tv_folder.GetSelectedItem();
         KXMLDOMElement ele = tv_folder.GetItemData(h);
         xstring myurl = ele.getAttribute(L"url");
         //alert(myurl);
         xml x ;
         xaserverarg args;
         args.AddArg(L"myurl", myurl);
         args.AddArg(L"name", ret);
         args.AddArg(L"filepath", sname);
         args.AddArg(L"fileext", L"");
         args.AddArg(L"filesource", ret);
         xml x1 = ViewObject::RetrieveData(L"/sale/data/TDocument3/attachment/GetFileFormat", L"Name", ret);
         KXMLDOMNodeList items = x1.selectNodes(L"data/Item");
         KXMLDOMNode t = items.item(0);
         xstring FileFormat = L"";
         if (t.selectSingleNode(L"FileFormat"))FileFormat = t.selectSingleNode(L"FileFormat").text();
         if (FileFormat != L"pdf" && FileFormat != L"PDF" && FileFormat != L"mp4" && FileFormat != L"avi" && FileFormat != L"wmv" && FileFormat != L"mpg"
            && FileFormat != L"mpeg" && FileFormat != L"mov" && FileFormat != L"rm" && FileFormat != L"ram" && FileFormat != L"swf" && FileFormat != L"flv")
         {
            alert(L"文件格式错误,请上传PDF文档或者视频!");
            return 0;
         }
         if (xurl::get(L"/sale/data/TDocument3/attachment/add", args.GetString(), x) != 1)
         {
            alert(L"保存出错了!");
            return 0;
         }
         else
         {
            alert(x.text());
            //OnRetrieve();
         }
      }
      return 0;
   }
   int OnDeleteFile()
   {
      int  LVNI_ALL = 0x0000;
      int  LVNI_FOCUSED = 0x0001;
      int  LVNI_SELECTED = 0x0002;
      int  LVNI_CUT = 0x0004;
      int  LVNI_DROPHILITED = 0x0008;
      int nItem = lv_view.GetNextItem( -1, LVNI_FOCUSED);
      if (nItem < 0) return 1;
      int LVIF_PARAM = 0x0004;
      lvitem lvItem;
      lvItem.iItem = nItem;
      lvItem.iSubItem = 0;
      lvItem.mask = LVIF_PARAM;
      lv_view.GetItem( lvItem);
      KXMLDOMElement ele =lvItem.lParam;
      xstring src = ele.getAttribute(L"url");
      xstring file = L"";
      if (src.find(L"/file/") > 0) file = src.mid(src.find(L"/file/") + 6, 9999);
      if (file.find(L"/file/") >= 0) file = file.mid(file.find(L"/file/") + 6, 9999);
      if (file.find(L"file/") >= 0) file = file.mid(file.find(L"file/") + 5, 9999);
      if (file == L"") return 1;
      xstring name = ele.getAttribute(L"caption");
      if (MessageBox(GetHWND(), L"确定要删除文件" + name + L"?", L"提示", 1) == 2)
         return 0;
      xaserverarg arg;
      arg.AddArg(L"filepath", file);
      xml x;
      if (xurl::get(L"/sale/data/TDocument3/file/delete", arg.GetString(), x) != 1)
      {
         alert(L"删除出错了!");
         return 1;
      }
      else
      {
         //alert(x.text);
         lv_view.DeleteItem(nItem);
      }
      return 1;
   }
   //命令发布函数
   int OnCmdDispatch(xstring comdid)
   {
      xstring  userno = publiccode::GetUser().no;
      HTREEITEM h = tv_folder.GetSelectedItem();
      KXMLDOMElement ele = tv_folder.GetItemData(h);
      xstring caption = ele.getAttribute(L"caption");
      if (comdid == L"xmUpload")
      {
         /*   if(caption ==L"采购部" || caption ==L"跟单部" || caption ==L"业务部" ||caption ==L"公司共享" )
            {
               if(userno ==L"admin" || userno ==L"00301" || userno ==L"00601" || userno ==L"00701" )
               {
                  OnAddAttachment();
               }
            }*/
            /*   if(caption ==L"业务部优秀案例" || caption ==L"采购部优秀案例" )
               {*/
         if (userno == L"admin" || userno == L"00301" || userno == L"00601" || userno == L"00701" || userno == L"00102" || userno == L"00201")
         {
            OnAddAttachment();
         }
         //}
         return 1;
      }
      if (comdid == L"xmOpen")
      {
         return OnDocumentOpen();
      }
      if (comdid == L"xmDelete")
      {
         /*if(caption ==L"采购部" || caption ==L"跟单部" || caption ==L"外销部" ||caption ==L"公司共享" )
         {
            if(userno ==L"admin" || userno ==L"00301" || userno ==L"00601" || userno ==L"00701" )
            {
               OnDeleteFile();
            }
         }
         if(caption ==L"业务部优秀案例" || caption ==L"采购部优秀案例" )
         {*/
         if (userno == L"admin" || userno == L"00301" || userno == L"00601" || userno == L"00701" || userno == L"00102" || userno == L"00201")
         {
            OnDeleteFile();
         }
         //}
         return 1;
      }
      if (comdid == L"xmSearch")
      {
         OnRetrieve();
         return 1;
      }
      return 0;
   }
   int OnRetrieve()
   {
      xstring urlEx = L"";
      xcontrol xc = GetControl(L"frame:sle_search");
      xstring Search = xc.GetText();
      HTREEITEM h = tv_folder.GetSelectedItem();
      KXMLDOMElement ele = tv_folder.GetItemData(h);
      urlEx = ele.getAttribute(L"url");
      trace(Search + L"******" + urlEx);
      if (urlEx == L"")
      {
         alert(L"选择文件目录!");
         return 1;
      }
      else
      {
         xaserverarg arg ;
         arg.AddArg(L"url", urlEx);
         arg.AddArg(L"Search", Search);
         OpenWindow(L"dev:xpage[trade.helpEx.vx]", arg);
         return 1;
      }
      return 1;
   }
   //命令处理事件
   int OnXCommand(TEvent* evt, LPARAM param)
   {
      return OnCmdDispatch(evt->xcommand.pStrID);
   }
   int OnAttachEvent()
   {
      //绑定工具条点击事件
      AttachEvent(L"WM_XCOMMAND", (FEvent)&TDocumentWin::OnXCommand);
      //获取焦点事件,用于重置工具条
      AttachEvent(L"WM_SETFOCUS", (FEvent) & TDocumentWin::OnSetFocus);
      return 1;
   }
   int createSubTree(HTREEITEM h, KXMLDOMElement ele)
   {
      KXMLDOMNodeList nlist = ele.selectNodes(L"folder");
      int i;
      int s = nlist.length();
      if (s > 0)
      {
         for (i = 0; i < s; i++)
         {
            KXMLDOMElement e = nlist.item(i);
            xstring name = e.getAttribute(L"caption");
            HTREEITEM hw = tv_folder.InsertChildItem(h, name, e, 15);
            createSubTree(hw, e);
         }
      }
      return 1;
   }
   int OnCreateTree()
   {
      xml x;
      if (xurl::get(L"/sale/data/TDocument3/folder/root", L"", x) != 1)
      {
         return -1;
      }
      else
      {
         KXMLDOMNodeList nlist = x.selectNodes(L"folders/folder");
         int len = nlist.length();
         if (len > 0)
         {
            int i;
            for (i = 0; i < len; i++)
            {
               KXMLDOMElement e = nlist.item(i);
               xstring name = e.getAttribute(L"caption");
               HTREEITEM h =tv_folder.InsertChildItem( 0, name, e, 17);
               createSubTree(h, e);
               if (len == 1) tv_folder.ExpandItem(h);
            }
            tv_folder.ExpandItem(0);
         }
      }
      return 1;
   }
   //树选择
   int OnTreeSelChanged(TEvent* evt, int p)
   {
      xstring name;
      lv_view.DeleteItemAll();
      HTREEITEM h = tv_folder.GetSelectedItem();
      KXMLDOMElement ele = tv_folder.GetItemData(h);
      KXMLDOMNodeList nlist = ele.selectNodes(L"folder");
      int i;
      int s = nlist.length();
      if (s > 0)
      {
         for (i = 0; i < s; i++)
         {
            KXMLDOMElement e = nlist.item(i);
            name = e.getAttribute(L"caption");
            lv_view.InsertItemEx(0, name, 0, e);
         }
      }
      xstring src = ele.getAttribute(L"url");
      trace(L"\r\n" + src);
      xml x = ViewObject::RetrieveData(L"/sale/data/TDocument3/folder/list", L"src", src);
      if (x)
      {
         //alert(x.GetXml());
         nlist = x.documentElement().selectNodes(L"*");
         s = nlist.length();
         if (s > 0)
         {
            for (i = 0; i < s; i++)
            {
               KXMLDOMElement e = nlist.item(i);
               name = e.getAttribute(L"caption");
               int nItem = lv_view.InsertItemEx( 0, name, 23, e);
               lv_view.SetItemText( nItem, 1, e.getAttribute(L"Creator"));
               lv_view.SetItemText( nItem, 2, e.getAttribute(L"CreateDate"));
            }
         }
      }
      lv_view.Redraw();
      return 1;
   }
   int SetListViewHeaderColumn(xstring Url)
   {
      const int LVCFMT_LEFT = 0;
      for (int i = 0; i < 3; i++)  lv_view.DeleteColumn( 1);
      //if(Url==L"")
      //{
      lv_view.InsertColumn(0, L"创建日期", LVCFMT_LEFT, 80, 0);
      lv_view.InsertColumn(0, L"创建人员", LVCFMT_LEFT, 80, 0);
      lv_view.InsertColumn(0, L"名称", 0, 180, 0);
      columnCount = 3;
      //}
      return 1;
   }
   /*
   int  OnRetrieve()
   {
      xml x = new xml;
      x.setNativePointer(xml::CreateInstance());
      xaserverarg arg = new xaserverarg;
      arg.setNativePointer(arg.CreateInstance());
      arg.AddArg(L"xxx",L"xxx");
      if (getUrl(L"",arg.GetString(),x)!=1)
      {
         trace(x.text);
         return -1;
      }else
      {
         //dw_list.Retrieve(x);
         //dw_list.Redraw();
      }
      return 1;
   }
   */
   int onload()
   {
      tv_folder = GetControl(L"tv_folder");
      lv_view = GetControl(L"lv_view");
      columnCount = 0;
      SetListViewHeaderColumn(L"");
      AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&TDocumentWin::OnTreeSelChanged);
      AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&TDocumentWin::OnListViewDoubleClicked);
      OnCreateTree();
      OnAttachEvent();
      tv_folder.ExpandItem(tv_folder.GetRootItem());
      return 1;
   }
   int onloaded()
   {
      SetAgent();
      return 1;
   }
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xcell.hpp>
#include <xcontrol/xlistview.hpp>
#include "vbusiness/vframe/maint.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
class __declspec(dllexport) TDocumentWin : public xframe
{
public:
   TDocumentWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
public:
   static TDocumentWin* CreateInstance(void* implPtr, void* hWnd)
   {
      return  new TDocumentWin(implPtr, (HWND)hWnd);
   }
public:
   //xdwgrid   dw_list;
   xtreeview tv_folder;
   xlistview  lv_view;
   xnode   m_agentNode;   //Agent Condition
   int columnCount;
   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 OnListViewDoubleClicked(TEvent* evt,LPARAM param)
   {
      //重置工具条
      //SetAgent();
      return OnDocumentOpen();
   }
   int OnDocumentOpen()
   {
      int  LVNI_ALL = 0x0000;
      int  LVNI_FOCUSED = 0x0001;
      int  LVNI_SELECTED = 0x0002;
      int  LVNI_CUT = 0x0004;
      int  LVNI_DROPHILITED = 0x0008;
      int nItem = lv_view.GetNextItem(-1, LVNI_FOCUSED);
      if (nItem < 0) return 1;
      int LVIF_PARAM = 0x0004;
      lvitem lvItem;
      lvItem.iItem = nItem;
      lvItem.iSubItem = 0;
      lvItem.mask = LVIF_PARAM;
      lv_view.GetItem( lvItem);
      KXMLDOMElement ele =lvItem.lParam;
      xstring src = ele.getAttribute(L"url");
      xstring file = L"";
      if (src.find(L"/file/") > 0) file = src.mid(src.find(L"/file/") + 6, 9999);
      if (file.find(L"/file/") >= 0) file = file.mid(file.find(L"/file/") + 6, 9999);
      if (file.find(L"file/") >= 0) file = file.mid(file.find(L"file/") + 5, 9999);
      if (file == L"") return 1;
      //alert(file);
      xstring name = ele.getAttribute(L"caption");
      /*
      const xstring d = m_Html.GetData(p.object);
      if(d == L"") return -1;
      xstring file = d.mid(0, d.find(L"|##@@|",0));
      xstring name = d.mid(d.find(L"|##@@|",0)+6, d.length());
      */
      xaserver::CreateDirectory(L"C:/Temp");
      xstring str = file.left(2);
      xstring ext = L"";
      if (name.find(L".") >= 0) ext = name.mid(name.find(L"."), name.length());
      xstring sfile = file;// file.left(file.length() - 4);
      //trace(L"--"+ext +L" " + L"/business/attachment/"+str+L"/"+ file);
      //int openRet = xaserver::DownLoadFile(GetServerUrl(),L"/business/attachment/"+str+L"/"+ file,name,L"C:/Temp/"+name);
      int openRet = xaserver::DownLoadFile(GetServerUrl(), L"/business/attachment/" + str + L"/" + file + L".jpg", L"", L"C:/Temp/" + sfile + ext);
      //alert(L"/business/attachment/"+str+L"/"+ file+L".jpg");
      if (openRet < 0)
      {
         alert(L"文件打开失败1!");
         return -1;
      }
      //openRet =ShellExecute(0,L"open",L"C:/Temp/"+name,L"",L"",5);
      openRet =ShellExecuteW(0, L"open", L"C:/Temp/" + sfile + ext, L"", L"", 5);
      if (openRet < 32)
      {
         alert(L"文件打开失败2!");
         return -1;
      }
      return -1;
   }
   int OnAddAttachment()
   {
      xstring sguid = publiccode::GetGuid();
      xstring sname = sguid;
      xstring str = sname.mid(0, 2);
      str = str.toUpper();
      xstring suri = L"attachment" + str;
      xstring ret = xaserver::UploadFile(suri, sname + L".jpg", GetHWND(), L"", false);
      if (ret == L"-1")
      {
         alert(L"上传的文件没选择!");
         return 0;
      }
      else
      {
         while (ret.find(L"\\", 0) >= 0)
            ret = ret.mid(ret.find(L"\\", 0) + 1, 9999);
         HTREEITEM h = tv_folder.GetSelectedItem();
         KXMLDOMElement ele = tv_folder.GetItemData(h);
         xstring myurl = ele.getAttribute(L"url");
         //alert(myurl);
         xml x ;
         xaserverarg args;
         args.AddArg(L"myurl", myurl);
         args.AddArg(L"name", ret);
         args.AddArg(L"filepath", sname);
         args.AddArg(L"fileext", L"");
         args.AddArg(L"filesource", ret);
         xml x1 = ViewObject::RetrieveData(L"/sale/data/TDocument3/attachment/GetFileFormat", L"Name", ret);
         KXMLDOMNodeList items = x1.selectNodes(L"data/Item");
         KXMLDOMNode t = items.item(0);
         xstring FileFormat = L"";
         if (t.selectSingleNode(L"FileFormat"))FileFormat = t.selectSingleNode(L"FileFormat").text();
         if (FileFormat != L"pdf" && FileFormat != L"PDF" && FileFormat != L"mp4" && FileFormat != L"avi" && FileFormat != L"wmv" && FileFormat != L"mpg"
            && FileFormat != L"mpeg" && FileFormat != L"mov" && FileFormat != L"rm" && FileFormat != L"ram" && FileFormat != L"swf" && FileFormat != L"flv")
         {
            alert(L"文件格式错误,请上传PDF文档或者视频!");
            return 0;
         }
         if (xurl::get(L"/sale/data/TDocument3/attachment/add", args.GetString(), x) != 1)
         {
            alert(L"保存出错了!");
            return 0;
         }
         else
         {
            alert(x.text());
            //OnRetrieve();
         }
      }
      return 0;
   }
   int OnDeleteFile()
   {
      int  LVNI_ALL = 0x0000;
      int  LVNI_FOCUSED = 0x0001;
      int  LVNI_SELECTED = 0x0002;
      int  LVNI_CUT = 0x0004;
      int  LVNI_DROPHILITED = 0x0008;
      int nItem = lv_view.GetNextItem( -1, LVNI_FOCUSED);
      if (nItem < 0) return 1;
      int LVIF_PARAM = 0x0004;
      lvitem lvItem;
      lvItem.iItem = nItem;
      lvItem.iSubItem = 0;
      lvItem.mask = LVIF_PARAM;
      lv_view.GetItem( lvItem);
      KXMLDOMElement ele =lvItem.lParam;
      xstring src = ele.getAttribute(L"url");
      xstring file = L"";
      if (src.find(L"/file/") > 0) file = src.mid(src.find(L"/file/") + 6, 9999);
      if (file.find(L"/file/") >= 0) file = file.mid(file.find(L"/file/") + 6, 9999);
      if (file.find(L"file/") >= 0) file = file.mid(file.find(L"file/") + 5, 9999);
      if (file == L"") return 1;
      xstring name = ele.getAttribute(L"caption");
      if (MessageBox(GetHWND(), L"确定要删除文件" + name + L"?", L"提示", 1) == 2)
         return 0;
      xaserverarg arg;
      arg.AddArg(L"filepath", file);
      xml x;
      if (xurl::get(L"/sale/data/TDocument3/file/delete", arg.GetString(), x) != 1)
      {
         alert(L"删除出错了!");
         return 1;
      }
      else
      {
         //alert(x.text);
         lv_view.DeleteItem(nItem);
      }
      return 1;
   }
   //命令发布函数
   int OnCmdDispatch(xstring comdid)
   {
      xstring  userno = publiccode::GetUser().no;
      HTREEITEM h = tv_folder.GetSelectedItem();
      KXMLDOMElement ele = tv_folder.GetItemData(h);
      xstring caption = ele.getAttribute(L"caption");
         if (comdid == L"xmUpload")
         {
            if (caption == L"办公室")
            {
               if (userno == L"00805" || userno == L"00804")
               {
                  OnAddAttachment();
               }
            }
            if (caption == L"人事部")
            {
               if (userno == L"00804")
               {
                  OnAddAttachment();
               }
            }
            /*   if(caption =="业务部优秀案例" || caption =="采购部优秀案例" )
               {*/
            if (userno == L"admin" || userno == L"00301" || userno == L"00601" || userno == L"00614" || userno == L"00701" || /*userno == L"00102" || userno == L"00201" ||*/ userno == L"00804")
            {
               OnAddAttachment();
            }
            //}
            return 1;
         }
         if (comdid == L"xmOpen")
         {
            return OnDocumentOpen();
         }
         if (comdid == L"xmDelete")
         {
            if (caption == L"办公室")
            {
               if (userno == L"00805" || userno == L"00804")
               {
                  OnDeleteFile();
               }
            }
            if (caption == L"人事部")
            {
               if (userno == L"00804")
               {
                  OnDeleteFile();
               }
            }
            if (userno == L"admin" || userno == L"00301" || userno == L"00601" || userno == L"00614" || userno == L"00701" || userno == L"00102" || userno == L"00201" || userno == L"00804")
            {
               OnDeleteFile();
            }
            return 1;
         }
         if (comdid == L"xmSearch")
         {
            OnRetrieve();
            return 1;
         }
      return 0;
   }
   int OnRetrieve()
   {
      xstring urlEx = L"";
      xcontrol xc = GetControl(L"frame:sle_search");
      xstring Search = xc.GetText();
      HTREEITEM h = tv_folder.GetSelectedItem();
      KXMLDOMElement ele = tv_folder.GetItemData(h);
      urlEx = ele.getAttribute(L"url");
      trace(Search + L"******" + urlEx);
      if (urlEx == L"")
      {
         alert(L"选择文件目录!");
         return 1;
      }
      else
      {
         xaserverarg arg ;
         arg.AddArg(L"url", urlEx);
         arg.AddArg(L"Search", Search);
         OpenWindow(L"dev:xpage[trade.helpEx.vx]", arg);
         return 1;
      }
      return 1;
   }
   //命令处理事件
   int OnXCommand(TEvent* evt, LPARAM param)
   {
      return OnCmdDispatch(evt->xcommand.pStrID);
   }
   int OnAttachEvent()
   {
      //绑定工具条点击事件
      AttachEvent(L"WM_XCOMMAND", (FEvent)&TDocumentWin::OnXCommand);
      //获取焦点事件,用于重置工具条
      AttachEvent(L"WM_SETFOCUS", (FEvent) & TDocumentWin::OnSetFocus);
      return 1;
   }
   int createSubTree(HTREEITEM h, KXMLDOMElement ele)
   {
      KXMLDOMNodeList nlist = ele.selectNodes(L"folder");
      int i;
      int s = nlist.length();
      if (s > 0)
      {
         for (i = 0; i < s; i++)
         {
            KXMLDOMElement e = nlist.item(i);
            xstring name = e.getAttribute(L"caption");
            HTREEITEM hw = tv_folder.InsertChildItem(h, name, e, 15);
            createSubTree(hw, e);
         }
      }
      return 1;
   }
   int OnCreateTree()
   {
      xml x;
      if (xurl::get(L"/sale/data/TDocument3/folder/root", L"", x) != 1)
      {
         return -1;
      }
      else
      {
         KXMLDOMNodeList nlist = x.selectNodes(L"folders/folder");
         int len = nlist.length();
         if (len > 0)
         {
            int i;
            for (i = 0; i < len; i++)
            {
               KXMLDOMElement e = nlist.item(i);
               xstring name = e.getAttribute(L"caption");
               HTREEITEM h =tv_folder.InsertChildItem( 0, name, e, 17);
               createSubTree(h, e);
               if (len == 1) tv_folder.ExpandItem(h);
            }
            tv_folder.ExpandItem(0);
         }
      }
      return 1;
   }
   //树选择
   int OnTreeSelChanged(TEvent* evt, int p)
   {
      xstring name;
      lv_view.DeleteItemAll();
      HTREEITEM h = tv_folder.GetSelectedItem();
      KXMLDOMElement ele = tv_folder.GetItemData(h);
      KXMLDOMNodeList nlist = ele.selectNodes(L"folder");
      int i;
      int s = nlist.length();
      if (s > 0)
      {
         for (i = 0; i < s; i++)
         {
            KXMLDOMElement e = nlist.item(i);
            name = e.getAttribute(L"caption");
            lv_view.InsertItemEx(0, name, 0, e);
         }
      }
      xstring src = ele.getAttribute(L"url");
      trace(L"\r\n" + src);
      xml x = ViewObject::RetrieveData(L"/sale/data/TDocument3/folder/list", L"src", src);
      if (x)
      {
         //alert(x.GetXml());
         nlist = x.documentElement().selectNodes(L"*");
         s = nlist.length();
         if (s > 0)
         {
            for (i = 0; i < s; i++)
            {
               KXMLDOMElement e = nlist.item(i);
               name = e.getAttribute(L"caption");
               int nItem = lv_view.InsertItemEx( 0, name, 23, e);
               lv_view.SetItemText( nItem, 1, e.getAttribute(L"Creator"));
               lv_view.SetItemText( nItem, 2, e.getAttribute(L"CreateDate"));
            }
         }
      }
      lv_view.Redraw();
      return 1;
   }
   int SetListViewHeaderColumn(xstring Url)
   {
      const int LVCFMT_LEFT = 0;
      for (int i = 0; i < 3; i++)  lv_view.DeleteColumn( 1);
      //if(Url==L"")
      //{
      lv_view.InsertColumn(0, L"创建日期", LVCFMT_LEFT, 80, 0);
      lv_view.InsertColumn(0, L"创建人员", LVCFMT_LEFT, 80, 0);
      lv_view.InsertColumn(0, L"名称", 0, 180, 0);
      columnCount = 3;
      //}
      return 1;
   }
   /*
   int  OnRetrieve()
   {
      xml x = new xml;
      x.setNativePointer(xml::CreateInstance());
      xaserverarg arg = new xaserverarg;
      arg.setNativePointer(arg.CreateInstance());
      arg.AddArg(L"xxx",L"xxx");
      if (getUrl(L"",arg.GetString(),x)!=1)
      {
         trace(x.text);
         return -1;
      }else
      {
         //dw_list.Retrieve(x);
         //dw_list.Redraw();
      }
      return 1;
   }
   */
   int onload()
   {
      tv_folder = GetControl(L"tv_folder");
      lv_view = GetControl(L"lv_view");
      columnCount = 0;
      SetListViewHeaderColumn(L"");
      AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&TDocumentWin::OnTreeSelChanged);
      AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&TDocumentWin::OnListViewDoubleClicked);
      OnCreateTree();
      OnAttachEvent();
      tv_folder.ExpandItem(tv_folder.GetRootItem());
      return 1;
   }
   int onloaded()
   {
      SetAgent();
      return 1;
   }
};