lifan
8 天以前 b4fef6e662f0c08c3751bd0c7481efcb267b621f
update
已修改3个文件
已添加1个文件
488 ■■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj.filters 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/GDN/maint.Document.GDN.v3.cpp 452 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/GDN3.list.cpp 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -725,6 +725,7 @@
    </ClCompile>
    <ClCompile Include="..\project\business\GDN\list.SOTrace3.cpp" />
    <ClCompile Include="..\project\business\GDN\listex.GDN3.cpp" />
    <ClCompile Include="..\project\business\GDN\maint.Document.GDN.v3.cpp" />
    <ClCompile Include="..\project\business\GDN\maintex.gdn3.cpp" />
    <ClCompile Include="..\project\business\GDN\Merge.GDN.cpp" />
    <ClCompile Include="..\project\business\GDN\po.paper.cpp" />
jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -1673,6 +1673,9 @@
    <ClCompile Include="..\project\business\Expense\DayExchangeRate.cpp">
      <Filter>project\business\Expense</Filter>
    </ClCompile>
    <ClCompile Include="..\project\business\GDN\maint.Document.GDN.v3.cpp">
      <Filter>project\business\GDN</Filter>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
    <None Include="ext-jrj.def">
jrj/project/business/GDN/maint.Document.GDN.v3.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,452 @@
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xlistview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class  __declspec(dllexport) DocumentGDN : public xframe
    {
    public:
        DocumentGDN(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static DocumentGDN* CreateInstance(void* implPtr, void* hWnd)
        {
            DocumentGDN* pWin = new DocumentGDN(implPtr, (HWND)hWnd);
            return pWin;
        }
    public:
        //xdwgrid    dw_list;
        xlistview  lv_view;
        xnode    m_agentNode;    //Agent Condition
        int columnCount;
        xstring entityid;
        int hObject = 0;
        xstring Type;
        int SetAgent()
        {
            xstring xfNodeAgentArea = L"agentarea";
            xnode anode = GetAgentNode(xfNodeAgentArea);
            if (m_agentNode)
            {
                //SetAgentNodeContent
                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 OnListViewDoubleClicked(TEvent* evt, LPARAM p)
        {
            //重置工具条
            //SetAgent();
            OnDocumentOpen();
            //CloseWindow();
            return 1;
        }
        int OnDocumentOpen()
        {
            //return 1;
            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 name = ele.getAttribute(L"caption");
            xstring file = L"";
            if (src.find(L"/file/") > 0) file = src.mid(src.find(L"/file/") + 6, 9999);
            if (file == L"") return 1;
            xstring str = file.left(2);
            xstring ext = L"";
            if (name.find(L".") >= 0) ext = name.mid(name.find(L"."), name.length());
            xstring sfile = file;
            xaserverarg arg ;
            if (arg)
            {
                arg.AddArg(L"result", L"ok");
                if ((arg.GetArgString(L"process") == L"path" || arg.GetArgString(L"process") == L"data"))
                {
                    arg.AddArg(L"path", src);
                    arg.AddArg(L"filename", name);
                    arg.AddArg(L"src", L"/business/attachment/" + str + L"/" + file + L".jpg");
                    if (arg.GetArgString(L"process") == L"path") return 1;
                }
            }
            /*
            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");
            if (arg)
            {
                if (arg.GetArgString(L"process") == L"data")
                {
                    xml x ;
                    xaserver::LoadUrl(GetServerUrl(), L"/business/attachment/" + str + L"/" + file + L".jpg", L"", x);
                    arg.AddArg(L"data", x.xml());
                    return 1;
                }
            }
            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 = ShellExecuteW(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);
                xstring myurl = L"object/GDN/"+Type;
                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);
                args.AddArg(L"entityid", entityid);
                /*xml x1 = ViewObject::RetrieveData(L"/sale/data/TDocument3/attachment/GetFileFormat",L"Name",ret);
                KXMLDOMNodeList items = x1.GetXmlDoc().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")
                {
                    alert(L"请上传PDF格式的文件");
                    return 0;
                }*/
                //alert(L"myurl:"+myurl+L"--name:"+ret+L"--filepath:"+sname+L"--filesource:"+ret+L"--entityid:"+entityid);
                if (xurl::get(L"/sale/data/TDocument3/attachment/addex", args.GetString(), x) != 1)
                {
                    alert(L"保存出错了!");
                    return 0;
                }
                else
                {
                    alert(x.text());
                    Retrieve(entityid);
                }
            }
            return 0;
        }
#if 0
        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 == L"") return 1;
            xstring name = ele.getAttribute(L"caption");
            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;
            int openRet = xaserver::DownLoadFile(GetServerUrl(), L"/business/attachment/" + str + L"/" + file + L".jpg", L"", L"C:/Temp/" + sfile + ext);
            if (openRet < 0)
            {
                alert(L"文件打开失败1!");
                return -1;
            }
            openRet = ShellExecuteW(0, L"open", L"C:/Temp/" + sfile + ext, L"", L"", 5);
            if (openRet < 32)
            {
                alert(L"文件打开失败2!");
                return -1;
            }
            return -1;
        }
#endif
        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 == L"") return 1;
            xstring name = ele.getAttribute(L"caption");
            if (MessageBoxW(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.GetXmlDoc().text);
                lv_view.DeleteItem( nItem);
            }
            return 1;
        }
        xstring GetPayType()
        {
            xcombobox cbx_type = GetControl(L"cbx_type");
            int h = cbx_type.GetCurSel();
            if (h < 0) return L"";
            return cbx_type.GetLBText( h);
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            if (comdid == L"xmOpen")
            {
                return OnDocumentOpen();
            }
            if (comdid == L"xmUpload")
            {
                    return OnAddAttachment();
            }
            if (comdid == L"xmDelete")
            {
                    return OnDeleteFile();
            }
            if (comdid == L"xmClose")
            {
                CloseWindow();
                return 1;
            }
            return 0;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&DocumentGDN::OnXCommand);
            //获取焦点事件,用于重置工具条
            //AttachEvent(L"WM_SETFOCUS",OnSetFocus);
            return 1;
        }
        /*
        int  OnRetrieve()
        {
            xml x ;
            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.GetXmlDoc().text);
                return -1;
            }else
            {
                //dw_list.Retrieve(x);
                //dw_list.Redraw();
            }
            return 1;
        }
        */
        int SetListViewHeaderColumn(xstring Url)
        {
            const int LVCFMT_LEFT = 0;
            for (int i = 0; i < 3; i++)  lv_view.DeleteColumn( 1);
            lv_view.InsertColumn( 0, L"类型", 0, 80, 0);
            lv_view.InsertColumn( 0, L"创建日期", LVCFMT_LEFT, 80, 0);
            lv_view.InsertColumn( 0, L"创建人员", LVCFMT_LEFT, 80, 0);
            lv_view.InsertColumn( 0, L"名称", 0, 120, 0);
            columnCount = 3;
            return 1;
        }
        int Retrieve(xstring entityid)
        {
            lv_view.DeleteItemAll();
            xstring src = L"object/GDN/" + Type;
            xml x = ViewObject::RetrieveData(L"/sale/data/TDocument3/folder/listex", L"src", src, L"entityid", entityid);
            if (x)
            {
                KXMLDOMElement ele = x.documentElement();
                KXMLDOMNodeList nlist = ele.selectNodes(L"*");
                int s = nlist.length();
                if (s > 0)
                {
                    for (int i = 0; i < s; i++)
                    {
                        KXMLDOMElement e = nlist.item(i);
                        xstring 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.SetItemText( nItem, 3, e.getAttribute(L"Type"));
                    }
                }
            }
            return 1;
        }
        int onload()
        {
            SetArg();
            lv_view = GetControl(L"lv_view");
            columnCount = 0;
            SetListViewHeaderColumn(L"");
            AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&DocumentGDN::OnListViewDoubleClicked);
            if (GetWinParam())
            {
                xaserverarg arg= GetArg();
                entityid = arg.GetArgString(L"entityid");
                Type = arg.GetArgString(L"Type");
                Retrieve(entityid);
            }
            OnAttachEvent();
            return 1;
        }
        int onloaded()
        {
            //SetAgent();
            return 1;
        }
    };
jrj/project/business/GDN3.list.cpp
@@ -441,6 +441,38 @@
            OpenWindow(L"dev:xpage[GDNDelay.vx]", argEx);
            return 1;
        }
        else if (comdid == L"action:bill.Upload")
        {
            int row = dw_list.GetRow();
            if (row < 1) return 1;
            xstring GDNID2 = dw_list.GetGuid(dw_list.GetRow());
            xaserverarg& arg = *new xaserverarg();
            if (GDNID2.length() <= 0)return 1;
            arg.AddArg(L"entityid", GDNID2);
            arg.AddArg(L"Type", L"Card");
            OpenWindow(L"dev:xpage[maint.Document.GDN.v3.vx]", arg);
            return 1;
        }
        else if (comdid == L"action:bill.UploadEx")
        {
            int row = dw_list.GetRow();
            if (row < 1) return 1;
            xstring GDNID3 = dw_list.GetGuid(dw_list.GetRow());
            xaserverarg& arg = *new xaserverarg();
            if (GDNID3.length() <= 0)return 1;
            arg.AddArg(L"entityid", GDNID3);
            arg.AddArg(L"Type", L"Inspection");
            OpenWindow(L"dev:xpage[maint.Document.GDN.v3.vx]", arg);
            return 1;
        }
        else if (comdid == L"action:bill.check.ask")
        {
            int row = dw_list.GetRow();