lifan
5 天以前 d957881a2210608ddd748074483b7c8847366d8a
update
已修改5个文件
已添加2个文件
422 ■■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj.filters 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/maint.Document.Samplerequest.cpp 418 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Expense/SampleRequestForm.cpp 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Expense/maint.Document.SampleRequestForm.cpp 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Expense/maint.Document.SampleRequestFormEx.cpp 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Expense/maint.samplesequest.cpp 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -631,6 +631,7 @@
    <ClCompile Include="..\project\business\Expense\maint.Document.SampleRequestForm.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Expense\maint.Document.SampleRequestFormEx.cpp" />
    <ClCompile Include="..\project\business\Expense\maint.Document.Test.v3.cpp" />
    <ClCompile Include="..\project\business\Expense\maint.expense.ap.cpp" />
    <ClCompile Include="..\project\business\Expense\maint.salaryslip.cpp">
jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -1658,6 +1658,9 @@
    <ClCompile Include="..\project\business\GDN\Merge.GDN.cpp">
      <Filter>project\business\GDN</Filter>
    </ClCompile>
    <ClCompile Include="..\project\business\Expense\maint.Document.SampleRequestFormEx.cpp">
      <Filter>project\business\Expense</Filter>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
    <None Include="ext-jrj.def">
jrj/ext-jrj/maint.Document.Samplerequest.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,418 @@
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
#include <xcontrol/xlistview.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
class __declspec(dllexport) DocSampleRequestForm : public xframe
{
public:
    //xdwgrid    dw_list;
    xlistview  lv_view;
    xnode    m_agentNode;    //Agent Condition
    int columnCount;
    xstring entityid;
    xstring ApproveStatus;
public:
    DocSampleRequestForm(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
public:
    static DocSampleRequestForm* CreateInstance(void* implPtr, void* hWnd)
    {
        DocSampleRequestForm* pWin = new DocSampleRequestForm(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 OnListViewDoubleClicked(TEvent* evt, LPARAM param)
    {
        //重置工具条
        //SetAgent();
        OnDocumentOpen();
        //CloseWindow();
        return 1;
    }
#if 0
    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 = trust(lvItem.lParam as KXMLDOMElement);
        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 = GetParam();
        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 = win32::ShellExecute(0,L"open",L"C:/Temp/"+name,L"",L"",5);
        openRet = win32::ShellExecute(0, L"open", L"C:/Temp/" + sfile + ext, L"", L"", 5);
        if (openRet < 32)
        {
            alert(L"文件打开失败2!");
            return -1;
        }
        return 1;
    }
#endif // 0
    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/supplier";
            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);
            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;
    }
    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;
        //alert(L"/business/attachment/" + str + L"/" + file + L".jpg");
        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;
    }
    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 (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)
    {
        if (ApproveStatus == L"新建" || ApproveStatus == L"修改")
        {
            if (comdid == L"xmUpload")
            {
                return OnAddAttachment();
            }
            if (comdid == L"xmDelete")
            {
                return OnDeleteFile();
            }
        }
        if (comdid == L"xmOpen")
        {
            return OnDocumentOpen();
        }
        return 0;
    }
    //命令处理事件
    int OnXCommand(TEvent* evt, LPARAM param)
    {
        return OnCmdDispatch(evt->xcommand.pStrID);
    }
    int OnAttachEvent()
    {
        //绑定工具条点击事件
        AttachEvent(L"WM_XCOMMAND", (FEvent)&DocSampleRequestForm::OnXCommand);
        //获取焦点事件,用于重置工具条
        //AttachEvent(L"WM_SETFOCUS",OnSetFocus);
        return 1;
    }
    /*
    int  OnRetrieve()
    {
        xml x ;
        xaserverarg arg;
        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 SetListViewHeaderColumn(xstring Url)
    {
        const int LVCFMT_LEFT = 0;
        for (int i = 0; i < 3; i++)  lv_view.DeleteColumn(1);
        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/supplier";
        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"));
                }
            }
        }
        return 1;
    }
    int onload()
    {
        SetArg();
        lv_view = GetControl(L"lv_view");
        columnCount = 0;
        SetListViewHeaderColumn(L"");
        AttachEvent(L"lv_view", L"NM_DBLCLK", (FEvent)&DocSampleRequestForm::OnListViewDoubleClicked);
        if (GetWinParam())
        {
            xaserverarg arg = GetArg();
            entityid = arg.GetArgString(L"entityid");
            ApproveStatus = arg.GetArgString(L"ApproveStatus");
            Retrieve(entityid);
        }
        OnAttachEvent();
        return 1;
    }
    int onloaded()
    {
        //SetAgent();
        return 1;
    }
};
jrj/project/business/Expense/SampleRequestForm.cpp
Binary files differ
jrj/project/business/Expense/maint.Document.SampleRequestForm.cpp
Binary files differ
jrj/project/business/Expense/maint.Document.SampleRequestFormEx.cpp
Binary files differ
jrj/project/business/Expense/maint.samplesequest.cpp
Binary files differ