xj qian
2024-10-29 bb4dc0fab56e542e784311f95ae6d7e7dd785a8f
update
已添加4个文件
已修改2个文件
1570 ■■■■■ 文件已修改
jrj/ext-jrj/ext-jrj.vcxproj 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj.filters 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Affair/Business5.cpp 688 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Affair/ProcessManagement.cpp 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Affair/message.business.cpp 427 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Affair/message.supplier.cpp 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/ext-jrj/ext-jrj.vcxproj
@@ -292,6 +292,18 @@
  <ItemGroup>
    <ClCompile Include="..\jarch.impl\JStringImpl.cpp" />
    <ClCompile Include="..\project\analysis\DataVanalysisWin.cpp" />
    <ClCompile Include="..\project\business\Affair\Business5.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Affair\message.business.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Affair\message.supplier.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\Affair\ProcessManagement.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
    </ClCompile>
    <ClCompile Include="..\project\business\AP\APBank.cpp">
      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
    </ClCompile>
jrj/ext-jrj/ext-jrj.vcxproj.filters
@@ -136,9 +136,6 @@
    <Filter Include="jarch.impl">
      <UniqueIdentifier>{4d691658-8fdc-4c09-8cfa-d8fa62419ef3}</UniqueIdentifier>
    </Filter>
    <Filter Include="jarch\module">
      <UniqueIdentifier>{ee1bdbb1-df9a-4db8-8212-b40535f8b9e9}</UniqueIdentifier>
    </Filter>
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="framework.h">
@@ -1471,36 +1468,6 @@
    </ClCompile>
    <ClCompile Include="..\project\business\PO\paymentmethod.cpp">
      <Filter>project\business\PO</Filter>
    </ClCompile>
    <ClCompile Include="JModule.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
    <ClCompile Include="JType.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
    <ClCompile Include="JArgument.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
    <ClCompile Include="JField.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
    <ClCompile Include="JMethod.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
    <ClCompile Include="JParam.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
    <ClCompile Include="JValue.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
    <ClCompile Include="JLiteral.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
    <ClCompile Include="JBinaryOp.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
    <ClCompile Include="JVariant.cpp">
      <Filter>jarch\module</Filter>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
jrj/project/business/Affair/Business5.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,688 @@
#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) Business5Win :  public xframe
    {
    public:
        xdwgrid    dw_list;
        xdwgrid dw_processed;
        xdwgrid dw_message;
        xdwgrid dw_outbox;
        xdwgrid dw_Recovery;
        xnode    m_agentNode;    //Agent Condition
        xtreeview tv_folder;
        int        hMessage;
        int        hTask;
        xstring     agentFor;
        xstring    selectname;
        xwin        sheet;
    public:
        Business5Win(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static Business5Win* CreateInstance(void* implPtr, void* hWnd)
        {
            Business5Win* pWin = new Business5Win(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"[@for='"+agentFor+L"']/*");
                if(agent)
                {
                    xstring s = agent.xml();
                    m_agentNode =  SetAgentNode (anode,s);
                    //FillGoodsCarList();
                }
            }
            return 1;
        }
        //焦点激活处理函数
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            SetAgent();
            return 1;
        }
        int RetrieveData()
        {
            xml x;
            if(selectname == L"已处理任务")
            {
                 x = ViewObject::RetrieveData(L"/sale/data/business/list/processedtask");
                dw_processed.Retrieve(x);
                dw_processed.Redraw();
                dw_processed.SetReadOnly(true);
            }else if(selectname == L"收件箱")
            {
                xstring UserNO= publiccode::GetUser().no;
                x = ViewObject::RetrieveData(L"/sale/data/business/list/inbox");
                dw_message.Retrieve(x);
                dw_message.Redraw();
                dw_message.SetReadOnly(true);
            }
            else if(selectname == L"发件箱")
            {
                x = ViewObject::RetrieveData(L"/sale/data/business/list/outbox");
                dw_outbox.Retrieve(x);
                dw_outbox.Redraw();
                dw_outbox.SetReadOnly(true);
            }
            else if(selectname == L"回收箱")
            {
                x = ViewObject::RetrieveData(L"/sale/data/business/list/Recovery");
                dw_Recovery.Retrieve(x);
                dw_Recovery.Redraw();
                dw_Recovery.SetReadOnly(true);
            }
            AdjustTip();
            return 1;
        }
        int OnDelete()
        {
            int MB_OKCANCEL = 1;
            int IDOK  = 1;
            int ret =MessageBox(GetHWND(),L"确认删除消息?",L"提示",MB_OKCANCEL);
            if(ret == IDOK)
            {
                KXMLDOMElement ele = dw_message.GetRowElement(dw_message.GetRow());
                xstring TaskID = ele.getAttribute(L"guid");
                xml x = ViewObject::RetrieveData(L"/sale/data/business/message/delete",L"TaskID",TaskID);
                xstring status = x.xml();
                if(status.find(L"ok") == 1)
                {
                    alert(L"删除成功");
                    RetrieveData();
                }else
                {
                    alert(L"删除失败");
                }
            }
            return 1;
        }
        int OnUpdateRecovery()
        {
            int MB_OKCANCEL = 1;
            int IDOK  = 1;
            int ret =MessageBox(GetHWND(),L"确认恢复消息?",L"提示",MB_OKCANCEL);
            if(ret == IDOK)
            {
                KXMLDOMElement ele = dw_Recovery.GetRowElement(dw_Recovery.GetRow());
                xstring TaskID = ele.getAttribute(L"guid");
                xml x = ViewObject::RetrieveData(L"/sale/data/business/Recovery/UpdateRecovery",L"TaskID",TaskID);
                xstring status = x.xml();
                if(status.find(L"ok") == 1)
                {
                    alert(L"恢复成功");
                    RetrieveData();
                }else
                {
                    alert(L"恢复失败");
                }
            }
            return 1;
        }
        int OnDeleteRecovery()
        {
            int MB_OKCANCEL = 1;
            int IDOK  = 1;
            int ret =MessageBox(GetHWND(),L"确认彻底删除消息?",L"提示",MB_OKCANCEL);
            if(ret == IDOK)
            {
                KXMLDOMElement ele = dw_Recovery.GetRowElement(dw_Recovery.GetRow());
                xstring TaskID = ele.getAttribute(L"guid");
                xml x = ViewObject::RetrieveData(L"/sale/data/business/Recovery/DeleteRecovery",L"TaskID",TaskID);
                xstring status = x.xml();
                if(status.find(L"ok") == 1)
                {
                    alert(L"删除成功");
                    RetrieveData();
                }else
                {
                    alert(L"删除失败");
                }
            }
            return 1;
        }
        int OnAdd()
        {
            OpenWindow(L"dev:xpage[message.business.vx]");
            if(selectname == L"发件箱" || selectname == L"草稿箱") RetrieveData();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            int ret = 0;
            if(comdid.find(L"action:",0)>=0)
            {
                ret =SendMessage(GetHWND(),0x401,(LPARAM)comdid,0);
            }
            if(comdid==L"xmRefreshTask")
            {
                trace(L"\r\n----refresh task--------");
                SendMessage(GetHWND(),0x401,(LPARAM)comdid,0);
                return 1;
            }
            if(comdid==L"xmRefresh")
            {
                trace(L"\r\n----refresh--------");
                ret =SendMessage(GetHWND(),0x401, (LPARAM)comdid,0);
            }
            if(comdid == L"xmRertieve")
            {
                RetrieveData();
                ret = 1;
            }
            if(comdid==L"xmAdd")
            {
                OnAdd();
                ret = 1;
            }
            if(comdid == L"xmDelete")
            {
                OnDelete();
                ret = 1;
            }
            if(comdid == L"UpdateRecovery")
            {
                OnUpdateRecovery();
                ret = 1;
            }
            if(comdid == L"DeleteRecovery")
            {
                OnDeleteRecovery();
                ret = 1;
            }
            if(comdid == L"xmImage")
            {
                int row = dw_message.GetRow();
                xstring PriceID = dw_message.GetItemString(row,L"EntityID");
                xml x = ViewObject::RetrieveData(L"/sale/data/Enquiry/PriceList/GetSkunoByPriceID",L"PriceID",PriceID);
                KXMLDOMNodeList items = x.selectNodes(L"data/Item");
                KXMLDOMNode t = items.item(0);
                xstring skunos =  t.selectSingleNode(L"skuno").text();
                xaserverarg arg_pic;
                arg_pic.AddArg(L"SKUNoList",skunos);
#if 0
                arg_pic.AddArg(L"ParentWindow", GetHWND());
#endif // 0
                arg_pic.AddArg(L"OpenFlag",L"1");
                OpenWindow(L"dev:xpage[SKU.PictureView.Product3.vx]",arg_pic );
                return 1;
            }
            else if(comdid == L"xmSearchOne")
            {
                OnSearchOne();
                return 1;
            }
            else if(comdid == L"xmSearchTwo")
            {
                OnSearchTwo();
                return 1;
            }
            else if(comdid==L"Lognew")
            {
                xstring EntityID = dw_processed.GetItemString(dw_processed.GetRow(),L"EntityID");
                //alert(EntityID);
                xaserverarg args;
                args.AddArg(L"EntityID",EntityID);
                //OpenWindow(L"dev:xpage[workflow.actionlog.vx]",cast(args as int));
                OpenWindow(L"dev:xpage[workflow.actionlog_vd.vx]",args);
            }
            return ret;
        }
        int OnSearchOne()
        {
            xstring searchStr=L"";
            xaserverarg arg;
            arg.AddArg(L"text", searchStr);
            OpenWindow(L"dev:xpage[search.dialog.vx]", arg);
            xstring str = arg.GetArgString(L"text");
            if(str != searchStr)
            {
                searchStr = str;
                dw_message.Filter(L"*",searchStr);
                return 1;
            }
            return 1;
        }
        int OnSearchTwo()
        {
            xstring searchStr=L"";
            xaserverarg arg;
            arg.AddArg(L"text", searchStr);
            OpenWindow(L"dev:xpage[search.dialog.vx]", arg);
            xstring str = arg.GetArgString(L"text");
            if(str != searchStr)
            {
                searchStr = str;
                dw_Recovery.Filter(L"*",searchStr);
                return 1;
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        //查找当前树项的顶级目录
        HTREEITEM LookupTopFolder(HTREEITEM hItem)
        {
            HTREEITEM hRoot = tv_folder.GetRootItem();
            while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
            return hItem;
        }
        int ResetAgent(xstring agentAsk)
        {
            if(agentFor != agentAsk)
            {
                agentFor = agentAsk;
                m_agentNode = 0;
                SetAgent();
            }
            return 1;
        }
        int OnTreeSelChanged(TEvent* evt, LPARAM p)
        {
            NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
            HTREEITEM hItem = nmtv.itemNew.hItem;
            HTREEITEM hTopItem = LookupTopFolder(hItem);
            xstring data = tv_folder.GetItemData(hItem);
            trace(L"\r\n"+data);
            //KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement);
            //if(e)trace(e.xml());
            xstring name = tv_folder.GetItemLabel(hTopItem);
            selectname = tv_folder.GetItemLabel(hItem);
            if(selectname == L"待处理任务")
            {
                SwitchLayer(L"sheet2",L"frame");
                sheet = GetChildWin(L"sheet2");
                ResetAgent(L"business1");
            }else if(selectname == L"已处理任务")
            {
                SwitchLayer(L"sheet3",L"frame");
                RetrieveData();
                ResetAgent(L"business2");
            }else if(selectname == L"收件箱")
            {
                SwitchLayer(L"sheet4",L"frame");
                RetrieveData();
                ResetAgent(L"business3");
            }else if(selectname == L"发件箱")
            {
                SwitchLayer(L"sheet5",L"frame");
                RetrieveData();
                ResetAgent(L"business2");
            }
            else if(selectname == L"事务")
            {
                SwitchLayer(L"sheet1",L"frame");
            }else if(selectname == L"回收箱")
            {
                SwitchLayer(L"sheet6",L"frame");
                RetrieveData();
                ResetAgent(L"business5");
            }
            return 1;
        }
        int OnRowChanged(TEvent* evt, int p)
        {
            //fixed one event only one process
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            int row = hdr.row;
            KXMLDOMElement ele;
            if(selectname == L"已处理任务")
                 ele = dw_processed.GetRowElement(row);
            else if(selectname == L"收件箱")
            {
                ele = dw_message.GetRowElement(row);
                xstring Subject = dw_message.GetItemString(row,L"Subject");
                if(Subject.find(L"价格单") == -1)
                {
                    ResetAgent(L"business3");
                }else{
                    ResetAgent(L"business4");
                }
            }
            else if(selectname == L"回收箱")
            {
                ele = dw_Recovery.GetRowElement(row);
                xstring SubjectOne = dw_Recovery.GetItemString(row,L"Subject");
            }
            else if(selectname == L"发件箱")
                ele = dw_outbox.GetRowElement(row);
            xaserverarg arg;
            trace(ele.xml());
            arg.AddArg(L"content",ele.xml());
            xml doc=new xml;
            if(getUrl(L"/sale/data/vpage/vstart/task",arg.GetString(),doc)!=1)
            {
                trace((xstring)L"error->:"+doc.xml());
                return 0;
            }
            if(doc.xml() == L"")
                return -1;
            //trace(doc.xml());
            htmlctrl ht = GetControl(L"taskinfo");
            ht.SetContent(doc.xml());
            ht.Redraw();
            return 1;
        }
        int OnItemAskStyle(TEvent* evt, int p)
        {
            int DMS_CSSSTYLE = 0x8;
            ref DWASKSTYLENMHDR hdr = trust(evt.pnmh as ref DWASKSTYLENMHDR);
            int row = hdr.row;
            int col = hdr.col;
            xstring colname = hdr.colname;
            int rows = dw_message.GetRowCount();
            if(row < 1 || row > rows)
            {
                return 1;
            }
            if(colname==L"flowName" || colname==L"Process" || colname==L"sender" ||
            colname==L"SendDate"||colname==L"processer"||colname==L"ProcessedDate"||
            colname==L"Subject"||colname==L"Content")
            {
                xstring ReadedFlag = dw_message.GetItemString(row,L"ReadedFlag");
                if(ReadedFlag != L"Y")
                {
                    hdr.mask =  DMS_CSSSTYLE;
                    //hdr.cssstyle = L"color:#cccccc";
                    hdr.cssstyle = L"font-weight:700";
                }
            }
            return 1;
        }
        int OnDWClick(TEvent* evt, int p)
        {
            xstring UserNO=publiccode::GetUser().no;
            if(UserNO !=L"00701")
            {
                DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
                xstring value = hdr.data;
                xstring colname = hdr.colname;
                int row = hdr.row;
                KXMLDOMElement ele = dw_message.GetRowElement(row);
                xstring TaskID = ele.getAttribute(L"guid");
                xstring ReadedFlag = dw_message.GetItemString(row,L"ReadedFlag");
                xstring flowName = dw_message.GetItemString(row,L"flowName");
                if(ReadedFlag != L"Y")
                {
                    xml x = ViewObject::RetrieveData(L"/sale/data/business/message/read",L"TaskID",TaskID);
                    dw_message.SetItemString(row,L"ReadedFlag",L"Y");
                    if(ReadedFlag != L"Y" && flowName == L"价格单共享")
                    {
                        xml x1 = ViewObject::RetrieveData(L"/sale/data/business/Recovery/MessageStatus",L"TaskID",TaskID);
                    }
                    dw_message.Redraw();
                    //RetrieveData();
                }
                AdjustTip();
            }
            return 1;
        }
        int OpenShowroom1(TEvent* evt, int p)
            {
                DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
                xstring value = hdr.data;
                xstring colname = hdr.colname;
                int row = hdr.row;
                KXMLDOMElement ele = dw_outbox.GetRowElement(row);
                xstring TaskID = ele.getAttribute(L"guid");
                xstring Category = dw_outbox.GetItemString(row,L"flowName");
                if(Category==L"普通"){
                    xaserverarg arg2;
                    if(dw_outbox.GetRowCount() < 1) return 1;
                    KXMLDOMElement ele1 = dw_outbox.GetRowElement(dw_outbox.GetRow());
                    arg2.AddArg(L"EntityID",dw_outbox.GetItemString(dw_outbox.GetRow(),L"EntityID"));
                    arg2.AddArg(L"id",ele1.getAttribute(L"guid"));
                    OpenWindow(L"dev:xpage[message.business.vx]",arg2);
                    return 1;
                }
                return 1;
            }
        int OpenShowroom(TEvent* evt, int p)
        {
                DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
                xstring value = hdr.data;
                xstring colname = hdr.colname;
                int row = hdr.row;
                KXMLDOMElement ele = dw_message.GetRowElement(row);
                xstring TaskID = ele.getAttribute(L"guid");
                xstring Category = dw_message.GetItemString(row,L"Category");
                if(Category==L"货号申请"){
                    int p1 ;
                    OpenWindow(L"dev:xpage[UserProductApply.vx]", p1);
                }
                if(Category==L"普通"){
                    xaserverarg arg2;
                    if(dw_message.GetRowCount() < 1) return 1;
                    KXMLDOMElement ele1 = dw_message.GetRowElement(dw_message.GetRow());
                    arg2.AddArg(L"EntityID",dw_message.GetItemString(dw_message.GetRow(),L"EntityID"));
                    arg2.AddArg(L"id",ele1.getAttribute(L"guid"));
                    OpenWindow(L"dev:xpage[message.business.vx]", arg2);
                    return 1;
                }
                else if(Category==L"报价单共享")
                {
                    if(dw_message.GetRowCount() < 1) return 1;
                    xstring No = dw_message.GetItemString(dw_message.GetRow(),L"No");
                    OpenWindow(L"dev:xpage[EnquiryEx.quote.vx]",cast(No as int));
                }
                if(Category==L"SupplierV3")
                {
                    xaserverarg arg;
                    if(dw_message.GetRowCount() < 1) return 1;
                    arg.AddArg(L"EntityID",dw_message.GetItemString(dw_message.GetRow(),L"EntityID"));
                    //OpenWindow(L"dev:xpage[maint.Owner.Supplier.v3.vx]",cast(arg as int));
                    arg.AddArg(L"config",L"/sale/view/SupplierV3/config/supplier/open");
                    OpenWindow(L"dev:xpage[maintex.Owner.Supplier.v3.vx]",arg);
                }
                if(Category==L"供应商回退")
                {
                    xaserverarg arg1;
                    if(dw_message.GetRowCount() < 1) return 1;
                    arg1.AddArg(L"EntityID",dw_message.GetItemString(dw_message.GetRow(),L"EntityID"));
                    OpenWindow(L"dev:xpage[maint.Owner.Supplier.v3.vx]",arg1);
                }
                return 1;
            }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&Business5Win::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&Business5Win::OnSetFocus);
            //树选择
            AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&Business5Win::OnTreeSelChanged);
            AttachEvent(L"dw_processed",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
            AttachEvent(L"dw_message",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
            AttachEvent(L"dw_outbox",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
            AttachEvent(L"dw_Recovery",L"DWV_ROWFOCUSCHANGED", (FEvent)&Business5Win::OnRowChanged);
            AttachEvent(L"dw_message",L"DWV_ASKSTYLE", (FEvent)&Business5Win::OnItemAskStyle);
            AttachEvent(L"dw_message",L"DWV_CLICKED", (FEvent)&Business5Win::OnDWClick);
            AttachEvent(L"dw_message",L"DWV_DOUBLECLICKED", (FEvent)&Business5Win::OpenShowroom);
            AttachEvent(L"dw_outbox",L"DWV_DOUBLECLICKED", (FEvent)&Business5Win::OpenShowroom1);
            return 1;
        }
        int  OnRetrieve()
        {
            return 1;
        }
        int  InitialFolder()
        {
            KXMLDOMElement xframeElement =  GetElement();
            KXMLDOMElement e =  xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial");
            //KXMLDOMElement e =  xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/data/item[@name='"+L"']");
            //trace(e.xml());
            if(e)
                ExpandChildFolder(0,e);
            return 1;
        }
        int  ExpandChildFolder(int 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();
                int h= tv_folder.InsertChildItem(tv_folder.GetId(),hItem,name, trust(e as int),image);
                if(child !=L"no" ) tv_folder.SetItemChild(h,1);
                ExpandChildFolder(h,e);
            }
            return 1;
        }
        int AdjustTip()
        {
            xml x = ViewObject::RetrieveData(L"/sale/data/business/list/AdjustTipNotify");
            KXMLDOMNodeList nlist = x.selectNodes(L"/data/Item");
            KXMLDOMNode t = nlist.item(0);
            xstring informationQuantity =t.selectSingleNode(L"informationQuantity").text();
            tv_folder.SetItemLabel(hMessage, L"消息"+L"(L"+informationQuantity+L")L");
            xml x1 = ViewObject::RetrieveData(L"/sale/data/business/list/AdjustTipTask");
            //alert(x1.xml());
            KXMLDOMNodeList nlist1 = x1.selectNodes(L"/data/Item");
            KXMLDOMNode t1= nlist1.item(0);
            xstring informationQuantityTask =t1.selectSingleNode(L"informationQuantityTask").text();
            tv_folder.SetItemLabel(hTask, L"任务"+L"(L"+informationQuantityTask+L")L");
            /*select count(*) from bpm_task where typ='notify' and  process='N'
            and charindex('|'+'00303'+'|','|' + rtrim(receiver) +'|')>=1*/
            return 1;
        }
        int onload()
        {
            agentFor = L"business";
            OnAttachEvent();
            dw_list = GetControl(L"dw_list");
            dw_processed = GetControl(L"dw_processed");
            dw_processed.openUrl(L"/sale/view/Business3/template/processedtask");
            dw_processed.SetColumnState(L"EntityID",false);
            dw_processed.SetColumnState(L"Category",false);
            dw_message = GetControl(L"dw_message");
            dw_message.openUrl(L"/sale/view/Business3/template/message");
            dw_message.SetAskStyle(true);
            dw_message.SetColumnState(L"EntityID",false);
            dw_message.SetColumnState(L"Category",false);
            dw_message.SetColumnState(L"ReadedFlag",false);
            dw_outbox = GetControl(L"dw_outbox");
            dw_outbox.openUrl(L"/sale/view/Business3/template/outbox");
            dw_outbox.SetColumnState(L"EntityID",false);
            dw_Recovery = GetControl(L"dw_Recovery");
            dw_Recovery.openUrl(L"/sale/view/Business3/template/message");
            dw_Recovery.SetColumnState(L"EntityID",false);
            dw_Recovery.SetColumnState(L"Category",false);
            dw_Recovery.SetColumnState(L"ReadedFlag",false);
            dw_Recovery.SetColumnState(L"No",false);
            tv_folder = GetControl(L"tv_folder");
            tv_folder.SetLineAtRoot(true);
            sheet = GetChildWin(L"sheet1");
            int hItem = tv_folder.GetRootItem();
            tv_folder.ExpandItem(hItem);
            int hcItem =tv_folder.GetChildItem(hItem);
            hTask = hcItem;
            tv_folder.ExpandItemAll(hcItem);
            tv_folder.ItemFocus(tv_folder.GetChildItem(hcItem));
            hcItem = tv_folder.GetNextItem(hcItem);
            hMessage = hcItem;
            tv_folder.ExpandItemAll(hcItem);
            AdjustTip();
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            return 1;
        }
    };
jrj/project/business/Affair/ProcessManagement.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,180 @@
#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) ProcessManagement :  public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
    public:
        ProcessManagement(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static ProcessManagement* CreateInstance(void* implPtr, void* hWnd)
        {
            ProcessManagement* pWin = new ProcessManagement(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 OnCmdDispatch(xstring comdid)
        {
            if(comdid == L"xmDelete")
            {
                int MB_OKCANCEL = 1;
                int IDOK  = 1;
                int ret =MessageBox(GetHWND(),L"确认删除流程?",L"提示",MB_OKCANCEL);
                if(ret == IDOK)
                {
                    int row = dw_list.GetRow();
                    xstring TaskID = dw_list.GetItemString(row,L"TaskID");
                    xml x = ViewObject::RetrieveData(L"/sale/data/business/DelProcessManagement",L"TaskID",TaskID);
                    xstring status = x.xml();
                    if(status.find(L"ok") == 1)
                    {
                        alert(L"删除成功");
                        dw_list.DeleteRow(row);
                    }else
                    {
                        alert(L"删除失败");
                    }
                }
                return 1;
            }
            else if (comdid == L"xmRefresh")
            {
                OnRetrieve();
            }
            else if (comdid == L"AA")
            {
                AA();
            }
            return 0;
        }
        int AA()
        {
                //xstring FobUnitPriceEx=dw_cell.GetItemString(row,colFOBPrice);
            xstring FobUnitPriceEx=L"$123.0";
            if(FobUnitPriceEx==L"$") FobUnitPriceEx=L"123";
            //alert(FobUnitPriceEx.find(L"$").toString());
            if(FobUnitPriceEx.find(L"$") >=0) FobUnitPriceEx=FobUnitPriceEx.right(FobUnitPriceEx.length() - 1);
            trace(FobUnitPriceEx);
        }
        //触发鼠标离开后tran事件,通过查找某个参数得到对应的列
        int OnBaseItemChanged(TEvent* evt, int p)
        {
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring colname=hdr.colname;
            xstring value = hdr.data;
            xstring dwname = L"dw_list";
            if(value != L"")
            {
                KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='"+dwname+L"']/trans[@for='"+colname+L"']");
                ViewObject::TransData(nlist, dw_list, hdr.row, colname, value);
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&ProcessManagement::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&ProcessManagement::OnSetFocus);
            AttachEvent(L"dw_list",L"DWV_ITEMCHANGED", (FEvent)&ProcessManagement::OnBaseItemChanged);
            return 1;
        }
        int  OnRetrieve()
        {
            xml x;
            xaserverarg arg;
            if (getUrl(L"/sale/data/business/ProcessManagement",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 onload()
        {
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/Business3/template/ProcessManagement");
            dw_list.SetColumnState(L"TaskID",false);
            OnRetrieve();
            OnAttachEvent();
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            return 1;
        }
    };
jrj/project/business/Affair/message.business.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,427 @@
#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) MessageBusinessWin :  public xframe
    {
    public:
        //xdwgrid    dw_list;
        xdwtable dw_base;
        xnode    m_agentNode;    //Agent Condition
        xwin        sheet;
        bool      readonly;
        xstring      MessageID;
        xstring     bill;
    public:
        MessageBusinessWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static MessageBusinessWin* CreateInstance(void* implPtr, void* hWnd)
        {
            MessageBusinessWin* pWin = new MessageBusinessWin(implPtr, (HWND)hWnd);
            return pWin;
        }
        int SetAgent()
        {
            return 1;
            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 OnItemChanged(TEvent* evt, int p)
        {
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring colname=hdr.colname;
            xstring value = hdr.data;
            int row = hdr.row;
            if(colname==L"Category")
            {
                if(value==L"供应商申请")
                {
                    dw_base.SetItemString(1,L"Receiver",L"fdp-011");
                    dw_base.SetItemString(1,L"Subject",L"请添加");
                }
                return 1;
                bool changed = false;
                xml x = ViewObject::RetrieveData(L"/sale/data/business/message/maint",L"typ",value);
                if(x)
                {
                    xstring xpage_ = x.documentElement().getAttribute(L"xpage");
                    xstring templaterpt = x.documentElement().getAttribute(L"template");
                    if(xpage_ !=L"")
                    {
                        xstring s = L"<hbox name='agent'>";
                        s += L"<xpage  url='" + xpage_ + L"'   name='contentex'/>";
                        s += L"</hbox>";
                        SetAgentNode (GetAgentNode(L"agent"),s);
                        SwitchLayer(L"sheet2",L"frame");
                        sheet = GetChildWin(L"contentex");
                        changed = true;
                    }
                }
                if(!changed)
                {
                    sheet  = 0;
                    SwitchLayer(L"sheet1",L"frame");
                }
            }
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid==L"xmSend")
            {
                if(!readonly) OnSend();
                return 1;
            }
            else if(comdid==L"xmSave")
            {
                if(!readonly) OnSave();
                return 1;
            }
            else if(comdid==L"xmCancel")
            {
                CloseWindow();
                return 1;
            }
            if(sheet && comdid !=L"")
            {
                int ret =SendMessage(GetHWND(),0x401,(LPARAM)comdid,0);
                if(ret) return ret;
            }
            return 0;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnDWClick(TEvent* evt, int p)
        {
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xstring colname = hdr.colname;
            if (value == L"收件人:")
            {
                xaserverarg arg2 ;
                xaserverarg parg2 = GetArg();
                OpenWindow(L"dev:xpage[UserGroupPersonSelect.vx]",arg2);
                if(arg2.GetArgString(L"comdid")==L"xmOk")
                {
                    xstring data = arg2.GetArgString(L"data");
                    xml x2;
                    x2.loadXML(data);
                    KXMLDOMNodeList nodes = x2.selectNodes(L"/root/item");
                    trace(x2.xml());
                    int len = nodes.length();
                    xstring Names = L"";
                    for(int i=0;i<len; i++)
                    {
                        KXMLDOMElement t= nodes.item(i);
                        if(t.getAttribute(L"Name"))
                        {
                            xstring Name = t.getAttribute(L"Name");
                            if(Names==L"")
                                Names = Name;
                            else if(Names.find(Name) < 0) Names+=L";"+Name;
                        }
                    }
                    dw_base.SetItemString(1,L"Receiver",Names);
                }
                return 1;
            }
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&MessageBusinessWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&MessageBusinessWin::OnSetFocus);
            AttachEvent(L"dw_base",L"DWV_ITEMCHANGED", (FEvent)&MessageBusinessWin::OnItemChanged);
            AttachEvent(L"dw_base",L"DWV_CLICKED", (FEvent)&MessageBusinessWin::OnDWClick);
            return 1;
        }
        int OnSave()
        {
            xml x ;
            xaserverarg arg1 = MakeArg(L"scriptbox");
            xstring murl = L"/sale/data/Business/message/update";
            if(MessageID==L"") murl = L"/sale/data/Business/message/add2";
            if(xurl::get(murl, arg1.GetString(),x)!=1)
            {
                alert((xstring)L"error1:\r\n"+x.text());
                return 1;
            }
            if(MessageID==L"") MessageID= dw_base.GetGuid(1);
            alert(L"已保存到草稿箱");
            return 1;
            xaserverarg arg;
            if(sheet)
            {
                SendMessage(sheet.GetHWND(),0x401,L"GetEntityData:"+arg,0);
                xstring data = arg.GetArgString(L"EntityData");
                murl = L"/sale/data/Business/message/attach/update";
                arg1.AddArg(L"url",L"message/attach");
                arg1.AddArg(L"content",data);
                arg1.AddArg(L"param",MessageID);
                if(xurl::get(murl, arg1.GetString(),x)!=1)
                {
                    alert((xstring)L"error2:\r\n"+x.text());
                    return 1;
                }
            }
            return 1;
        }
        int OnSend()
        {
            xml x ;
            //xaserverarg arg1 = MakeArg(L"outbox");
            xaserverarg arg1 = MakeArg(L"inbox");
            xstring murl = L"/sale/data/Business/message/update";
            if(MessageID==L"") murl = L"/sale/data/Business/message/add2";
            trace(arg1.GetString());
            if(xurl::get(murl, arg1.GetString(),x)!=1)
            {
                alert((xstring)L"error1:\r\n"+x.text());
                return 1;
            }
            if(MessageID==L"") MessageID= dw_base.GetGuid(1);
            alert(L"发送完成");
            CloseWindow();
            return 1;
            xaserverarg arg;
            if(sheet)
            {
                SendMessage(sheet.GetHWND(),0x401,L"GetEntityData:"+arg,0);
                xstring data = arg.GetArgString(L"EntityData");
                murl = L"/sale/data/Business/message/attach/update";
                arg1.AddArg(L"url",L"message/attach");
                arg1.AddArg(L"content",data);
                arg1.AddArg(L"param",MessageID);
                if(xurl::get(murl, arg1.GetString(),x)!=1)
                {
                    alert((xstring)L"error2:\r\n"+x.text());
                    return 1;
                }
            }
            return 1;
        }
        xaserverarg MakeArg(xstring folder)
        {
            //ThingImpl:AddMessage($MessageID,$Folder,$EntityNo, $EntityID, $Subject, $Category, $Reciever, $Content)
            //ThingImpl:UpdateMessage($MessageID,$Folder,$EntityNo, $EntityID, $Subject, $Category, $Reciever, $Content)
            xaserverarg arg;
            if(MessageID==L"")
            {
                dw_base.SetGuid(1,ViewObject::GetGuid());
                arg.AddArg(L"MessageID", dw_base.GetGuid(1));
                arg.AddArg(L"EntityID", dw_base.GetGuid(1));
            }
            else
            {
                arg.AddArg(L"MessageID", MessageID);
                arg.AddArg(L"EntityID", MessageID);
            }
            arg.AddArg(L"Folder", folder);
            arg.AddArg(L"EntityNo", dw_base.GetItemString(1,L"EntityNo"));
            arg.AddArg(L"Subject", dw_base.GetItemString(1,L"Subject"));
            arg.AddArg(L"Category", dw_base.GetItemString(1,L"Category"));
            arg.AddArg(L"Reciever", dw_base.GetItemString(1,L"Receiver"));
            arg.AddArg(L"Note", dw_base.GetItemString(1,L"Note"));
            //arg.AddArg(L"Content", dw_base.GetItemString(1,L"Content"));
            arg.AddArg(L"Content",xcontrol(GetControl(L"sle_search")).GetText());
            arg.AddArg(L"Content2",bill);
            return arg;
        }
        int  OnRetrieve()
        {
            xml x;
            xaserverarg arg;
            arg.AddArg(L"id",MessageID);
            if (getUrl(L"/sale/data/business/list/fetch",arg.GetString(),x)!=1)
            {
                trace(x.text());
                return -1;
            }else
            {
                dw_base.Retrieve(x);
                dw_base.Redraw();
                if(readonly) dw_base.SetReadOnly(true);
                if(x.selectSingleNode(L"root/Content"))
                {
                    xstring str = x.selectSingleNode(L"root/Content").text();
                    str = str.replace(L"\n",L"\r\n");
                    GetControl(L"content").SetText(str);
                }
                //alert(x.xml());
                if(x.selectSingleNode(L"root/Content2"))
                {
                    xstring str2 = x.selectSingleNode(L"root/Content2").text();
                    xstring tm=L"";
                    xstring EntityID=L"";
                    xstring Category=L"";
                    int pos = str2.find(L"EntityID=L");
                    if(pos >= 0)
                    {
                        tm = str2.mid(pos + L"EntityID=L".length(),64);
                        if(tm.find(L" ")>0) tm = tm.left(tm.find(L" "));
                        EntityID=tm;
                    }
                    pos = str2.find(L"Category=L");
                    if(pos >= 0)
                    {
                        tm = str2.mid(pos+L"Category=L".length(),64);
                        if(tm.find(L" ")>0) tm = tm.left(tm.find(L" "));
                        Category=tm;
                    }
                    trace(L"EntityID:"+EntityID);
                    trace(L"Category:"+Category);
                    if(EntityID != L"" && Category != L"")
                    {
                        xstring eleStr = L"<row EntityID='"+EntityID+L"'";
                        eleStr += L" category='" + Category + L"'/>";
                        bill = L"EntityID=L"+EntityID+L" Category=L" + Category;
                        ShowDetail(eleStr);
                    }
                }
            }
            return 1;
        }
        int ShowDetail(xstring eleStr)
        {
            xaserverarg arg;
            arg.AddArg(L"content",eleStr);
            xml doc;
            if(getUrl(L"/sale/data/vpage/vstart/task",arg.GetString(),doc)!=1)
            {
                trace((xstring)L"error->:"+doc.xml());
                return 0;
            }
            if(doc.xml() == L"")
                return -1;
            htmlctrl ht = GetControl(L"taskinfo");
            ht.SetContent(doc.xml());
            ht.Redraw();
            return 1;
        }
        int onload()
        {
            SetArg();
            dw_base = GetControl(L"dw_base");
            dw_base.openUrl(L"/sale/view/business3/template/message/maint");
            dw_base.SetColHeaderHeight(0);
            dw_base.SetRowSelectorWidth(0);
            dw_base.SetHScrollState(false);
            dw_base.SetVScrollState(false);
            dw_base.SetItemString(1,L"Category",L"普通");
            OnAttachEvent();
            readonly = false;
            MessageID = L"";
            bill = L"";
            SetAgent();
            if(GetWinParam())
            {
                xaserverarg arg = GetArg();
                MessageID = arg.GetArgString(L"id");
                if(arg.GetArgString(L"readonly")==L"1") readonly=true;
                OnRetrieve();
                if(arg.GetArgString(L"EntityID")!=L"")
                {
                    xstring str = L"<row EntityID='"+arg.GetArgString(L"EntityID")+L"'";
                    str += L" category='" + arg.GetArgString(L"EntityName")+L"'/>";
                    bill = L"EntityID=L"+arg.GetArgString(L"EntityID")+L" Category=L" + arg.GetArgString(L"EntityName");
                    ShowDetail(str);
                }
            }
            return 1;
        }
        int onloaded()
        {
            return 1;
        }
    };
jrj/project/business/Affair/message.supplier.cpp
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,230 @@
#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) SupplierMessageWin :  public xframe
    {
    public:
        xdwtable dw_base;
        //xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
    public:
        SupplierMessageWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static SupplierMessageWin* CreateInstance(void* implPtr, void* hWnd)
        {
            SupplierMessageWin* pWin = new SupplierMessageWin(implPtr, (HWND)hWnd);
            return pWin;
        }
        int SetAgent()
        {
            return 1;
            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 UpLoad(xstring name)
        {
            xstring str = name.mid(0,2);
            str = str.toUpper();
            int ret1 = xaserver::Upload(L"supplier"+str, name+L".jpg", GetHWND(),L"",false);
            return ret1;
        }
        int OnItemClick(TEvent* evt, int p)
        {
            DWNMHDR& hdr1 = *(DWNMHDR*)evt->notify.pnmh;
            xstring colname1= hdr1.colname;
            DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
            xstring value = hdr.data;
            xaserverarg arg;
            if(value == L"上传附件")
            {
                xstring strguid = publiccode::GetGuid();
                //alert(strguid);
                int ret1 = UpLoad(strguid);
                if(ret1  == -1)
                    return -1;
                if(ret1  == 0)
                {
                    alert(L"上传附件失败");
                    return -1;
                }
                else
                {
                    alert(L"上传附件成功");
                    xstring strimage=dw_base.GetItemString(1,L"ImageList1");
                    //alert(strimage);
                    if(strimage==L"")
                        strimage=L"<ImageList></ImageList>";
                    xml y;
                    y.loadXML(strimage);
                    KXMLDOMElement ele= y.documentElement();
                    xml x;
                    xstring xx = L"<ImageList><image>"+strguid+L".jpg</image></ImageList>";
                    x.loadXML(xx);
                    KXMLDOMElement e=  x.selectSingleNode(L"//image");
                    ele.appendChild(e);
                    dw_base.SetItemString(1,L"ImageList1",ele.xml());
                    dw_base.Redraw();
                }
            }
            if(value == L"查看")
            {
                arg.AddArg(L"src",dw_base.GetItemString(1,L"ImageList1"));
                openUrl(L"/sale/view/SupplierV3/xpage/supplierattachment/picture", arg);
                dw_base.SetItemString(1,L"ImageList1",arg.GetArgString(L"src"));
            }
            return 1;
        }
        int GetEntityData(xaserverarg arg)
        {
            xml x;
            dw_base.DwUpdateAllTo(x);
            arg.AddArg(L"EntityData",x.xml());
            return 1;
        }
        xaserverarg GetArg(xstring comdid)
        {
            if(comdid.find(L":")>=0)
            {
                xaserverarg arg = comdid.mid(comdid.find(L":")+1,64).toInt();
                return arg;
            }
            return 0;
        }
        int GetEntityInfo(xaserverarg arg)
        {
            arg.AddArg(L"EntityName",L"Supplier");
            arg.AddArg(L"EntityID",dw_base.GetGuid(1));
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid.find(L"GetEntityInfo:")==0) return GetEntityInfo(GetArg(comdid));
            else if(comdid.find(L"GetEntityData:")==0) return GetEntityData(GetArg(comdid));
            else if(comdid==L"xmAddRow") return OnAddRow();
            else if(comdid==L"xmDeleteRow") return OnDeleteRow();
            return 0;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent(L"WM_XCOMMAND", (FEvent)&SupplierMessageWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent(L"WM_SETFOCUS", (FEvent)&SupplierMessageWin::OnSetFocus);
            AttachEvent(L"dw_base",L"DWV_CLICKED", (FEvent)&SupplierMessageWin::OnItemClick);
        }
        int OnAddRow()
        {
            xdwtable dw_obj = dw_base.FindDwTable(L"item");
            dw_obj.InsertRow(0);
            return 1;
        }
        int OnDeleteRow()
        {
            xdwtable dw_obj = dw_base.GetCurTable();
            dw_obj.DeleteRow(0);
            return 1;
        }
        /*
        int  OnRetrieve()
        {
            xml x = new xml;
            x.setNativePointer(xml::CreateInstance());
            xaserverarg arg = new xaserverarg;
            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()
        {
            dw_base = GetControl(L"dw_base");
            dw_base.openUrl(L"/sale/view/SupplierV3/template/supplier/simplebase");
            dw_base.SetColHeaderHeight(0);
            dw_base.SetRowSelectorWidth(0);
            //dw_base.SetHScrollState(false);
            //dw_base.SetVScrollState(false);
            OnAttachEvent();
            return 1;
        }
        int onloaded()
        {
            SetAgent();
            return 1;
        }
    };