From 7a91c3a1ed37b0332d4ff0ebeae60bd6da3665c0 Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期二, 16 七月 2024 18:28:58 +0800 Subject: [PATCH] Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj --- jrj/project/business/BasicCode/ColorCardNew.cpp | 416 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 416 insertions(+), 0 deletions(-) diff --git a/jrj/project/business/BasicCode/ColorCardNew.cpp b/jrj/project/business/BasicCode/ColorCardNew.cpp new file mode 100644 index 0000000..d749027 --- /dev/null +++ b/jrj/project/business/BasicCode/ColorCardNew.cpp @@ -0,0 +1,416 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xlayersheet.hpp> +#include <xcontrol/xdatetimepick.hpp> + + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +using xml = KXMLDOMDocument; +class __declspec(dllexport) ColorCardNew : public listwin +{ +public: + xdwgrid dw_list; + xdwgrid dw_detail; + bool ismodify; + xnode m_agentNode; + xstring m_agentCond; +public: + ColorCardNew(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} +public: + static ColorCardNew* CreateInstance(void* implPtr, void* hWnd) + { + ColorCardNew* pWin = new ColorCardNew(implPtr, (HWND)hWnd); + return pWin; + } + int SetAgent() + { + xstring xfNodeAgentArea = L"agentarea"; + xnode anode = GetAgentNode(xfNodeAgentArea); + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMNode agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); + if(agent) + SetAgentNode(anode, agent.xml()); + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + SetAgent(); + + //重置工具条 + return 1; + } + int ProcessFlowAction(xstring guid,xstring comdid) + { + //int pr = pr1; + //xstring action = comdid;//.mid(comdid.find(L"action:",0)+7,9999); + /*if(action == L"bill.delete" || action == L"bill.deleteEx") + { + if (MessageBox(GetHWND(),L"是否确定删除记录!",L"提示1",1) == 2) + return 1; + }*/ + + xaserverarg arg0 ; + arg0.setNativePointer(arg0.CreateInstance()); + //arg0.AddArg(L"Action", action,L"xs:xstring"); + arg0.AddArg(L"EntityName", L"ColorCard",L"xs:xstring"); + arg0.AddArg(L"EntityIDName", L"ColorCardID",L"xs:xstring"); + arg0.AddArg(L"EntityID", guid,L"xs:xstring"); + arg0.AddArg(L"FunctionCode", comdid,L"xs:xstring"); + xml x = new xml; + + + if(xurl::get(L"/sale/data/Role.config/sys/sql/action", arg0.GetString(), x) != 1) + { + //ismodify=false; + //dw_list.SetReadOnly(ismodify); + return -1; + } + xstring kk=x.xml(); + if(kk.find(L"<root/>",0)>=0) + { + //ismodify=true; + //dw_list.SetReadOnly(ismodify); + return 1; + } + return -1; + } + + int ModifyProcessAction(xstring guid,xstring comdid) + { + if(ProcessFlowAction(guid,comdid)>0) + { + ismodify=true; + dw_list.SetReadOnly(ismodify); + return -1; + } + else + { + ismodify=false; + dw_list.SetReadOnly(ismodify); + return -1; + } + } + int DeleteProcessAction(xstring guid,xstring comdid) + { + if(ProcessFlowAction(guid,comdid)>0) + { + return -1; //没有权限 + } + else + { + return 1; //有权限 + } + } + + //根据ColorCardID加载Detail数据 + int OnRetrieveDetail(xstring ColorCardID) + { + xml x; + + xaserverarg arg; + + + arg.AddArg(L"ColorCardID",ColorCardID); + if (xurl::get(L"ColorCard/entity/list1",arg.GetString(),x) != 1) + { + trace(x.text()); + return -1; + } + dw_detail.Retrieve(x); + dw_detail.Redraw(); + dw_detail.SetReadOnly(ismodify); + return 1; + } + + int OnPreSave() + { + if (dw_list) + { + xstring colorCardCName; + xstring colorCardName; + xstring orgID; + int i; + int row = dw_list.GetRowCount(); + for (i=1; i<=row;i++) + { + colorCardCName=dw_list.GetItemString(i,L"ColorCardCName")+L""; + colorCardName=dw_list.GetItemString(i,L"ColorCardName")+L""; + orgID=dw_list.GetItemString(i,L"OrgID")+L""; + if (colorCardCName==L"" || !colorCardCName) + { + alert(L"第"+xstring(i)+L"行色卡名称中文为空"); + return -1; + } + if (colorCardName==L"" || !colorCardName) + { + alert(L"第"+ xstring(i) +L"行色卡名称为空"); + return -1; + } + if (orgID==L"" || !orgID) + { + alert(L"第"+ xstring(i) +L"行关联组织为空"); + return -1; + } + } + } + + return 1 ; + } + + //保存 + int OnSave() + { + dw_list.AcceptText(); + dw_detail.AcceptText(); + int rec; + rec = OnPreSave(); + if (rec == -1) + return -1; + xml x= new xml; + + dw_list.DwUpdateAllToEx(x); + xaserverarg arg; + + KXMLDOMElement e= x.selectSingleNode(L"root"); + arg.AddArg(L"content",e.xml()); + arg.AddArg(L"dbmap",L"ColorCard.dbmap"); + if (xurl::get(L"ColorCard/pref/colorcard.save",arg.GetString(),x) != 1) + { + trace(L"error:"+(xstring)x.xml()); + alert(L"保存失败!"); + return 0; + } + else + { + alert(L"保存成功!"); + dw_list.ResetUpdateStatus(); + } + dw_list.Redraw(); + } + + //新增 + int OnAdd() + { + dw_list.AcceptText(); + int nrow=dw_list.InsertRow(0); + dw_list.ShowRowTo(nrow); + xstring tempguid = publiccode::GetGuid(); + dw_list.SetItemString(nrow,L"ColorCardID",tempguid); + OnRetrieveDetail(tempguid); + return 1; + } + + //插入 + int OnInsert() + { + dw_list.AcceptText(); + int row = dw_list.GetRow(); + if(row<1) return 0; + int nrow=dw_list.InsertRow(row); + xstring tempguid = publiccode::GetGuid(); + dw_list.SetItemString(nrow,L"ColorCardID",tempguid); + OnRetrieveDetail(tempguid); + } + + //删除 + int OnDelete() + { + dw_list.AcceptText(); + int row = dw_list.GetRow(); + if(row<1) return 0; + xstring id=dw_list.GetItemString(row,L"ColorCardID"); + if(DeleteProcessAction(id,L"DeleteColorCard")<0) + { + alert(L"您没有权限删除该数据"); + return -1; + } + if(id !=L"") + { + xml x; + + xaserverarg arg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"ColorCardID", id); + if(xurl::get(L"ColorCard/pref/beforedelete",arg.GetString(),x)!=1) + { + trace(L"error:"+(xstring)x.xml()); + alert(L"删除出错!"); + return 0; + } + KXMLDOMElement e= x.documentElement(); + if(e.selectSingleNode(L"error")) + { + alert(e.selectSingleNode(L"error").text()); + return 0; + } + } + dw_list.DeleteRow(row); + } + + int OnAddRowDetail() + { + dw_detail.AcceptText(); + int nrow=dw_detail.InsertRow(0); + xstring tempguid = publiccode::GetGuid(); + dw_detail.SetItemString(dw_detail.GetRow(),L"ColorCardID",dw_list.GetItemString(dw_list.GetRow(),L"ColorCardID")); + dw_detail.SetItemString(dw_detail.GetRow(),L"ColorID",tempguid); + //OnRetrieveDetail(tempguid); + dw_detail.ShowRowTo(nrow); + + return 1; + } + + int OnInsertRowDetail() + { + dw_detail.AcceptText(); + int row = dw_detail.GetRow(); + if(row<1) return 0; + int nrow=dw_detail.InsertRow(row); + xstring tempguid = publiccode::GetGuid(); + dw_detail.SetItemString(dw_detail.GetRow(),L"ColorCardID",dw_list.GetItemString(dw_list.GetRow(),L"ColorCardID")); + dw_detail.SetItemString(dw_detail.GetRow(),L"ColorID",tempguid); + + return 1; + } + + int OnDelRowDetail() + { + int row = dw_detail.GetRow(); + int rowz = dw_list.GetRow(); + if(row<1)return 0; + dw_detail.DeleteRow(row); + KXMLDOMElement ez= dw_list.GetRowElement(rowz); + xml xz; + dw_detail.DwUpdateAllToEx(xz); + if (ez.selectSingleNode(L"root")) + ez.removeChild(ez.selectSingleNode(L"root")); + ez.appendChild(xz.documentElement()); + + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid==L"save") OnSave(); + else if(comdid==L"add") OnAdd(); + else if(comdid==L"insert") OnInsert(); + else if(comdid==L"del") OnDelete(); + else if(comdid==L"addrowDetail") OnAddRowDetail(); + else if(comdid==L"insertrowDetail") OnInsertRowDetail(); + else if(comdid==L"deleterowDetail") OnDelRowDetail(); + + return 1; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + //行改变事件 + int OnListRowChanged(TEvent* evt, int p) + { + dw_detail.AcceptText(); + + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + dw_list.Redraw(); + KXMLDOMElement e = dw_list.GetRowElement(row); + xstring ColorCardID = e.selectSingleNode(L"ColorCardID").text(); + OnRetrieveDetail(ColorCardID); + + return 1; + } + + int OnDetailChanged(TEvent* evt, int p) + { + int row = dw_list.GetRow(); + KXMLDOMElement e= dw_list.GetRowElement(row); + xml x; + + dw_detail.DwUpdateAllToEx(x); + if (e.selectSingleNode(L"root")) + e.removeChild(e.selectSingleNode(L"root")); + e.appendChild(x.documentElement()); + + return 0; + } + + int OnDwListClick(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + dw_list.Redraw(); + KXMLDOMElement e = dw_list.GetRowElement(row); + xstring ColorCardID = e.selectSingleNode(L"ColorCardID").text(); + ModifyProcessAction(ColorCardID,L"ModifyColorCard"); + + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ColorCardNew::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ColorCardNew::OnSetFocus); + //行改变事件 + AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&ColorCardNew::OnListRowChanged); + AttachEvent(L"dw_detail",L"DWV_ITEMCHANGED", (FEvent)&ColorCardNew::OnDetailChanged); + //AttachEvent(L"dw_list",L"DWV_ITEMCHANGED",OnDetailChanged); + AttachEvent(L"dw_list",L"DWV_CLICKED", (FEvent)&ColorCardNew::OnDwListClick); + + return 1; + } + + int OnRetrieve(xstring str) + { + xml x; + + xaserverarg arg; + + arg.AddArg(L"id",str); + if (xurl::get(L"ColorCard/entity/list",arg.GetString(),x) != 1) + { + trace(x.text()); + return -1; + } + //doc=x; + dw_list.Retrieve(x); + dw_list.Redraw(); + + return 1; + } + + int OnInitial() + { + SetAgent(); + + OnAttachEvent(); + + return 1; + } + + int onload() + { + + dw_list = GetControl(L"dw_list"); + dw_list.openUrl(L"产品设置.vface/template/ColorCard/list"); + + dw_detail = GetControl(L"dw_detail"); + dw_detail.openUrl(L"产品设置.vface/template/ColorCard/listex"); + OnInitial(); + + OnRetrieve(L"FND_ColorCard"); + + return 1; + } +}; \ No newline at end of file -- Gitblit v1.9.3