From b1d01ea6fa62ce12c2e592b3315186f6b3c8359d Mon Sep 17 00:00:00 2001 From: xj qian <qianxj15@sina.com> Date: 星期三, 17 七月 2024 15:20:38 +0800 Subject: [PATCH] Merge branch 'master' of http://116.62.18.175:6699/r/mis-prj --- jrj/project/business/SystemSettings/ProcessManagement_A.cpp | 513 +++ jrj/project/business/SystemSettings/view.assignadjust.cpp | 278 + jrj/project/business/BasicCode/TestingCompanyMaint.cpp | 1 jrj/project/business/SystemSettings/Organization_A.cpp | 513 +++ jrj/project/business/SystemSettings/AddUserGroup.cpp | 183 + jrj/project/business/SystemSettings/Developer.Synch.cpp | 432 ++ jrj/ext-jrj/ext-jrj.vcxproj.filters | 72 jrj/project/business/SystemSettings/FlowTermImport.cpp | 177 + jrj/project/business/SystemSettings/GroupManagerList_A.cpp | 1576 ++++++++++ jrj/project/business/SystemSettings/TestRetrieveing.cpp | 67 jrj/project/business/SystemSettings/AddUser.cpp | 229 + jrj/project/business/SystemSettings/Buglist.Developer.hxsoft_A.cpp | 1576 ++++++++++ jrj/project/business/SystemSettings/level.Customer.v3.cpp | 375 ++ jrj/project/business/BasicCode/ForwarderMaint.cpp | 2 jrj/project/business/BasicCode/CustomerMarketMaint.cpp | 1 jrj/project/business/SystemSettings/Data.config.cpp | 571 +++ jrj/project/business/SystemSettings/UserImport.cpp | 329 ++ jrj/project/business/SystemSettings/SysUser.cpp | 330 ++ jrj/project/business/SystemSettings/BindComputer.cpp | 106 jrj/project/business/SystemSettings/Role.config.cpp | 548 +++ jrj/project/business/SystemSettings/LogList.cpp | 217 + jrj/project/business/BasicCode/ShipcompanyMaint.cpp | 1 jrj/project/business/SystemSettings/FlowTermSelect.cpp | 176 + jrj/project/business/SystemSettings/SysLoginRecord.cpp | 101 jrj/project/business/BasicCode/ExpressMaint.cpp | 1 jrj/project/business/SystemSettings/Flow3.cpp | 476 +++ jrj/project/business/SystemSettings/Resource.select.data.config.cpp | 93 jrj/project/business/SystemSettings/maint.Level.Customer3.cpp | 88 jrj/project/business/SystemSettings/UserPassDlg.cpp | 147 jrj/ext-jrj/ext-jrj.vcxproj | 69 30 files changed, 9,247 insertions(+), 1 deletions(-) diff --git a/jrj/ext-jrj/ext-jrj.vcxproj b/jrj/ext-jrj/ext-jrj.vcxproj index 4013c16..26b4f29 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj +++ b/jrj/ext-jrj/ext-jrj.vcxproj @@ -817,6 +817,75 @@ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\AddUser.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\AddUserGroup.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\BindComputer.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Buglist.Developer.hxsoft_A.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Data.config.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Developer.Synch.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Flow3.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\FlowTermImport.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\FlowTermSelect.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\GroupManagerList_A.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\level.Customer.v3.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\LogList.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\maint.Level.Customer3.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Organization_A.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\ProcessManagement_A.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Resource.select.data.config.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Role.config.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\SysLoginRecord.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\SysUser.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\TestRetrieveing.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\UserImport.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\UserPassDlg.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\view.assignadjust.cpp"> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> + </ClCompile> <ClCompile Include="..\project\business\VATNotify\list.vatnotify.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> </ClCompile> diff --git a/jrj/ext-jrj/ext-jrj.vcxproj.filters b/jrj/ext-jrj/ext-jrj.vcxproj.filters index 965a48d..7fdd5ce 100644 --- a/jrj/ext-jrj/ext-jrj.vcxproj.filters +++ b/jrj/ext-jrj/ext-jrj.vcxproj.filters @@ -118,6 +118,9 @@ <Filter Include="project\business\BasicCode"> <UniqueIdentifier>{64c23153-69c8-4db3-9225-9e5375e489ff}</UniqueIdentifier> </Filter> + <Filter Include="project\business\SystemSettings"> + <UniqueIdentifier>{9d76dee1-2190-4b2c-8f17-bd2e54140f7d}</UniqueIdentifier> + </Filter> </ItemGroup> <ItemGroup> <ClInclude Include="framework.h"> @@ -1019,5 +1022,74 @@ <ClCompile Include="..\project\business\BasicCode\TypeList.maint.supplier.cpp"> <Filter>project\business\BasicCode</Filter> </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\AddUser.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\AddUserGroup.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\BindComputer.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Buglist.Developer.hxsoft_A.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Data.config.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Developer.Synch.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Flow3.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\FlowTermImport.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\FlowTermSelect.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\GroupManagerList_A.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\level.Customer.v3.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\LogList.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\maint.Level.Customer3.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Organization_A.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\ProcessManagement_A.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Resource.select.data.config.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\Role.config.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\SysLoginRecord.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\SysUser.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\TestRetrieveing.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\UserImport.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\UserPassDlg.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> + <ClCompile Include="..\project\business\SystemSettings\view.assignadjust.cpp"> + <Filter>project\business\SystemSettings</Filter> + </ClCompile> </ItemGroup> </Project> \ No newline at end of file diff --git a/jrj/project/business/BasicCode/CustomerMarketMaint.cpp b/jrj/project/business/BasicCode/CustomerMarketMaint.cpp index ec84f4f..c220d4d 100644 --- a/jrj/project/business/BasicCode/CustomerMarketMaint.cpp +++ b/jrj/project/business/BasicCode/CustomerMarketMaint.cpp @@ -17,6 +17,7 @@ xstring ContactID; xdwtable dw_base; xcell dw_cell; + xstring m_EntityID = L""; public: CustomerMarketMaint(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: diff --git a/jrj/project/business/BasicCode/ExpressMaint.cpp b/jrj/project/business/BasicCode/ExpressMaint.cpp index ce669d1..440ba75 100644 --- a/jrj/project/business/BasicCode/ExpressMaint.cpp +++ b/jrj/project/business/BasicCode/ExpressMaint.cpp @@ -17,6 +17,7 @@ xstring m_username; xstring ContactID; xcell dw_cell; + xstring m_EntityID = L""; public: ExpressMaint(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: diff --git a/jrj/project/business/BasicCode/ForwarderMaint.cpp b/jrj/project/business/BasicCode/ForwarderMaint.cpp index 89951e0..cf41bc5 100644 --- a/jrj/project/business/BasicCode/ForwarderMaint.cpp +++ b/jrj/project/business/BasicCode/ForwarderMaint.cpp @@ -18,7 +18,7 @@ xstring m_username; xstring ContactID; xcell dw_cell; - + xstring m_EntityID = L""; public: ForwarderMaint(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: diff --git a/jrj/project/business/BasicCode/ShipcompanyMaint.cpp b/jrj/project/business/BasicCode/ShipcompanyMaint.cpp index 1d88656..bf9d254 100644 --- a/jrj/project/business/BasicCode/ShipcompanyMaint.cpp +++ b/jrj/project/business/BasicCode/ShipcompanyMaint.cpp @@ -16,6 +16,7 @@ xstring m_username; xstring ContactID; xdwtable dw_base; + xstring m_EntityID = L""; xcell dw_cell; public: ShipcompanyMaint(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} diff --git a/jrj/project/business/BasicCode/TestingCompanyMaint.cpp b/jrj/project/business/BasicCode/TestingCompanyMaint.cpp index 12a369a..c511fff 100644 --- a/jrj/project/business/BasicCode/TestingCompanyMaint.cpp +++ b/jrj/project/business/BasicCode/TestingCompanyMaint.cpp @@ -17,6 +17,7 @@ xstring ContactID; xdwtable dw_base; xcell dw_cell; + xstring m_EntityID = L""; public: TestingCompanyMaint(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: diff --git a/jrj/project/business/SystemSettings/AddUser.cpp b/jrj/project/business/SystemSettings/AddUser.cpp new file mode 100644 index 0000000..3d9c416 --- /dev/null +++ b/jrj/project/business/SystemSettings/AddUser.cpp @@ -0,0 +1,229 @@ +use "win.vl" +use "treeview.vm" +use "dev:vm[xdwgrid.vm]" +use "dev:vm[xdwtable.vm]" +use "pref.vl" +use "dev:vm[xml.vm]" +use "dev:vm[xaserverarg.vm]" +use "dev:vm[xaserver.vm]" +use "dev:vm[xutil.vm]" +use "dev:code[pa.tpp]" +use "dev:vm[control.vm]" +#include "dev:xpage[SysUser.vx]" + +unit vbusiness.xpage tpp +[ + class pa + { + string note; + int hitem; + int row; + int wid; + treeview__ tv; + xdwgrid__ dw; + win__ pwin; + } +] + +unit vbusiness.xpage +[ + AddUser is extend win__; + about AddUser + [ + control: + + method: + [ + pa p; + + int SetAgent() + { + return 1; + } + //焦点激活处理函数 + int OnSetFocus(ref TEvent evt,int param) + { + int SetAgent(); + + //重置工具条 + return 1; + } + int AppendItem(xml__ x,msxml::IXMLDOMElement r,string item){ + var e = x.GetXmlDoc().createElement(item); + //xcontrol xc = GetControl(item); + control__ xc = new control__; + xc.setNativePointer(this.GetControl(item)); + e.text = xc.GetText(); + r.appendChild(e); + return 1; + } + + int OnSave() + { + control__ xc = new control__; + /*xc=GetControl("EmployeeNo"); + if (xc.GetText()=="") + { + alert("用户代码不能为空!"); + return 0; + }*/ + xc=GetControl("UserName"); + if (xc.GetText()=="") + { + alert("用户名称不能为空!"); + return 0; + } + xml__ x = new xml__; + x.setNativePointer(x.CreateInstance()); + xaserverarg__ arg = new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + x.LoadXml("<SysUser/>"); + var r = x.GetXmlDoc().documentElement; + string guid; + string guid1; + if (p.note=="修改") + { + msxml::IXMLDOMElement ele=xdwgrid__::GetRowElement(p.row); + guid = ele.selectSingleNode("UserID").text; + //guid=ele.getAttribute("guid"); + //if (ele.selectSingleNode("empid")) + // r.appendChild(ele.selectSingleNode("empid")); + } + else + guid=win__::GetGuid(); + //guid1=win32::GetGuid(); + r.setAttribute("guid",guid); + //r.setAttribute("guid1",guid1); + //AppendItem(x,r,"EmployeeNo"); + AppendItem(x,r,"UserName"); + AppendItem(x,r,"PassWord"); + AppendItem(x,r,"Status"); + //trace(x.GetXml()); + //return 1; + arg.AddArg("content",x.GetXml()); + int ls_item = treeview__::GetSelectedItem(p.wid); + msxml::IXMLDOMElement e=treeview__::GetItemData(p.wid,ls_item); + string gpguid=e.selectSingleNode("@guid").text; + arg.AddArg("gpguid",gpguid); + if (xaserver__::ExecXAction(GetServerUrl(),"[update.User.xa]",arg.GetString())==1) + { + alert("ok"); + if (p.note=="修改") + { + xdwgrid__ dw = new xdwgrid__; + //dw.setNativePointer(p.dw_user); + int row = dw.GetNextSelectRow(0); + //dw.SetItemString(row,"UserName",""); + msxml::IXMLDOMElement e; + e = x.GetXmlDoc().documentElement; + string ls_pass = e.selectSingleNode("PassWord").text; + string ls_status = e.selectSingleNode("Status").text; + dw.SetItemString(row,"PassWord",ls_pass); + dw.SetItemString(row,"Status",ls_status); + dw.Redraw(); + } + else + { + //---------- + //p.pwin.OnTreeSelChanged(); + } + } + else + { + alert("保存出错!"); + return 0; + } + return 1; + } + + int ClearItem(string item) + { + control__ xc = new control__; + xc.setNativePointer(GetControl(item)); + xc.SetText(""); + return 1; + } + //命令发布函数 + int OnCmdDispatch(string comdid) + { + if (comdid=="cb_cancel") + CloseWindow(); + else if(comdid=="cb_ok") + { + int r=OnSave(); + if (r==1) + CloseWindow(); + } + else if(comdid=="cb_save") + { + OnSave(); + p.note="新增"; + win__::SetWindowText(GetHWND(),p.note+"用户"); + ClearItem("userno"); + ClearItem("username"); + ClearItem("pwd"); + } + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int param) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent("WM_SETFOCUS",OnSetFocus); + } + + int OnInitial() + { + SetAgent(); + + OnAttachEvent(); + + return 1; + } + + int SetItem(string value,string item){ + control__ xc = new control__; + xc.setNativePointer(GetControl(item)); + xc.SetText(value); + return 1; + } + int onload() + { + OnInitial(); + p = new pa; + + if(this.GetParam()) + { + p=GetParam(); + win__::SetWindowText(GetHWND(),p.note+"用户"); + if (p.note=="修改") + { + xdwgrid__ dw = new xdwgrid__; + dw.setNativePointer(p.dw); + msxml::IXMLDOMElement ele=dw.GetRowElement(p.row); + //if(ele.selectSingleNode("EmployeeNo")) + //SetItem(ele.selectSingleNode("EmployeeNo").text,"EmployeeNo"); + if(ele.selectSingleNode("UserName")) + SetItem(ele.selectSingleNode("UserName").text,"UserName"); + if(ele.selectSingleNode("PassWord")) + SetItem(ele.selectSingleNode("PassWord").text,"PassWord"); + if(ele.selectSingleNode("Status")) + SetItem(ele.selectSingleNode("Status").text,"Status"); + trace("Aa"); + return 1; + } + } + return 1; + } + ] + + ] +] \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/AddUserGroup.cpp b/jrj/project/business/SystemSettings/AddUserGroup.cpp new file mode 100644 index 0000000..fc7a253 --- /dev/null +++ b/jrj/project/business/SystemSettings/AddUserGroup.cpp @@ -0,0 +1,183 @@ +use "win.vl" +use "treeview.vm" +use "dev:vm[xdwgrid.vm]" +use "dev:vm[xdwtable.vm]" +use "pref.vl" +use "dev:vm[xml.vm]" +use "dev:vm[xaserverarg.vm]" +use "dev:vm[xaserver.vm]" +use "dev:vm[xutil.vm]" +use "dev:code[pa.tpp]" +use "dev:vm[control.vm]" + +unit vbusiness.xpage tpp +[ + class pa + { + string note; + int hitem; + int row; + int wid; + treeview__ tv; + xdwgrid__ dw; + win__ pwin; + } +] + +unit vbusiness.xpage +[ + + AddUserGroup is extend win__; + about AddUserGroup + [ + control: + + method: + [ + pa p; + + int SetAgent() + { + return 1; + } + //焦点激活处理函数 + int OnSetFocus(ref TEvent evt,int p) + { + int SetAgent(); + + //重置工具条 + return 1; + } + int AppendItem(xml__ x,msxml::IXMLDOMElement r,string item){ + var e = x.GetXmlDoc().createElement(item); + control__ xc = new control__; + xc.setNativePointer(this.GetControl(item)); + e.text = xc.GetText(); + r.appendChild(e); + return 1; + } + int AppendAttrib(xml__ x,msxml::IXMLDOMElement r,string item){ + var e = x.GetXmlDoc().createElement(item); + //xcontrol xc = GetControl(item); + control__ xc = new control__; + xc.setNativePointer(this.GetControl(item)); + e.text = xc.GetText(); + r.setAttribute(item,xc.GetText()); + return 1; + } + //命令发布函数 + int OnCmdDispatch(string comdid) + { + if (comdid=="cb_cancel") + CloseWindow(); + else if(comdid=="cb_ok") + { + int wid = p.wid; + xml__ x = new xml__; + x.setNativePointer(x.CreateInstance()); + xaserverarg__ arg = new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + x.LoadXml("<row/>"); + var r = x.GetXmlDoc().documentElement; + string gpguid; + if (p.note=="修改") + { + msxml::IXMLDOMElement ele = treeview__::GetItemData(wid,p.hitem); + gpguid=ele.selectSingleNode("@JobID").text; + } + else + gpguid=win__::GetGuid(); + r.setAttribute("JobID",gpguid); + AppendAttrib(x,r,"JobName"); + AppendAttrib(x,r,"JobType"); + //AppendItem(x,r,"JobName"); + //AppendItem(x,r,"JobType"); + //trace(x.GetXml()); + //return 1; + arg.AddArg("content",x.GetXml()); + if (xaserver__::ExecXAction(GetServerUrl(),"[update.Usergroup.xa]",arg.GetString())==1) + { + control__ xc = new control__; + xc.setNativePointer(this.GetControl("JobName")); + //p.tv.Redraw(); + if (p.note=="修改") + { + treeview__::SetItemData(wid,p.hitem,r); + treeview__::SetItemLabel(wid,p.hitem,xc.GetText()); + } + else + { + int root = treeview__::GetRootItem(wid); + treeview__::InsertChildItem(wid,root,xc.GetText(),r,15); + } + CloseWindow(); + } + else + { + alert("保存出错!"); + } + } + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int p) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent("WM_SETFOCUS",OnSetFocus); + } + + int OnInitial() + { + SetAgent(); + + OnAttachEvent(); + + return 1; + } + + int SetItem(string value,string item){ + control__ xc = new control__; + xc.setNativePointer(GetControl(item)); + xc.SetText(value); + return 1; + } + + int onload() + { + OnInitial(); + p = new pa; + + if(this.GetParam()) + { + p=GetParam(); + win__::SetWindowText(GetHWND(),p.note+"用户组"); + if (p.note=="修改") + { + int wid = p.wid; + msxml::IXMLDOMElement ele=treeview__::GetItemData(wid,p.hitem); + //trace(ele.xml); + //SetItem(ele.selectSingleNode("gpno").text,"gpno"); + //SetItem(ele.selectSingleNode("gpname").text,"gpname"); + string ls_guid = ele.selectSingleNode("@JobID").text; + string ls_name = ele.selectSingleNode("@JobName").text; + string ls_type = ele.selectSingleNode("@JobType").text; + SetItem(ls_guid,"JobID"); + SetItem(ls_name,"JobName"); + SetItem(ls_type,"JobType"); + } + } + + return 1; + } + ] + + ] +] \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/BindComputer.cpp b/jrj/project/business/SystemSettings/BindComputer.cpp new file mode 100644 index 0000000..0af3e7f --- /dev/null +++ b/jrj/project/business/SystemSettings/BindComputer.cpp @@ -0,0 +1,106 @@ +use"lang.vl" +use "win.vl" +use "dev:vm[xdwgrid.vm]" + +unit vbusiness.vpage +[ + BindComputerDlgNew is extend win__; + about BindComputerDlgNew + [ + field: + + method: + [ + xdwgrid__ dw_list; + int OnRetrieve() + { + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg = this.GetParam(); + if(arg.GetArgString("BindComputer")) + { + string sbys= arg.GetArgString("BindComputer"); + //alert(sbys); + x.LoadXml(sbys); + + } + else + { + + x.LoadXml("<args></args>"); + } + + dw_list.Retrieve(x.GetXmlDoc().selectSingleNode("args")); + dw_list.ResetUpdateStatus(); + dw_list.Redraw(); + return 1; + } + int OnAddRow(xdwgrid__ dw) + { + dw.InsertRow(0); + return 1; + } + + int OnDelRow(xdwgrid__ dw) + { + int row = dw.GetRow(); + if(row<1 || row > dw.GetRowCount()) return -1; + dw.DeleteRow(row); + return 1; + } + //命令发布函数 + int OnCmdDispatch(string comdid) + { + dw_list.AcceptText(); + xaserverarg__ arg = new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg = win__::GetParam(); + arg.AddArg("comdid",comdid); + if (comdid=="ok") + { + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + dw_list.DwUpdateAllTo(x.GetXmlDoc()); + arg.AddArg("xml",x.GetXml()); + CloseWindow(); + } + else if(comdid=="close") + CloseWindow(); + else if(comdid == "add") + OnAddRow(dw_list); + else if(comdid == "del") + OnDelRow(dw_list); + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int p) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + } + int onload() + { + OnAttachEvent(); + + dw_list = new xdwgrid__; + dw_list.setNativePointer(GetControl("dw_list")); + dw_list.SetDataObject(GetServerUrl(),"dev:sheet[SysUser.tpl/BindComputer]"); + dw_list.SetReadOnly(true); + if(this.GetParam()) + { + OnRetrieve(); + } + return 1; + } + ] + ] +] \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft_A.cpp b/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft_A.cpp new file mode 100644 index 0000000..ca9b3d6 --- /dev/null +++ b/jrj/project/business/SystemSettings/Buglist.Developer.hxsoft_A.cpp @@ -0,0 +1,1576 @@ +#include <wobject/xstring.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/ximageview.hpp> + +#include "vbusiness/vframe/maint.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" +#include "viewobject/saleorder.view.hpp" +#include "viewobject/quote.view.hpp" +#include "viewobject/shoppingcart.view.hpp" +#include "viewobject/productLibrary.view.hpp" +#include "xcontrol/xcheckbox.hpp" +#include "xcontrol/xshtml.hpp" + +class __declspec(dllexport) ProductLibrary4Win : public xframe +{ +public: + //产品库产品列表 + xdwgrid dw_list; + //购物车产品列表 + xdwgrid dwc_list; + + //产品缓存对象 + //xdataset g_xdoc_product; + //xdataset g_xdoc_shoppingcart; + + xcombobox cbx_goodscar; + //是否多选 + + xnode m_agentNode; //Agent Condition + xtreeview tv_folder; + xstring agentFor; + KXMLDOMElement imageElement; + xstring m_customer; + +public: + ProductLibrary4Win(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} +public: + static ProductLibrary4Win* CreateInstance(void* implPtr, void* hWnd) + { + ProductLibrary4Win* pWin = new ProductLibrary4Win(implPtr, (HWND)hWnd); + return pWin; + } +public: + int FillGoodsCarList() + { + xcombobox xc = GetControl(L"frame:cbx_goodscar"); + if (!xc) return 0; + xml x = ShoppingCartView::GetRoleList(); + if (!x) return 0; + xc.SetText(L"==选择购物车==L"); + + KXMLDOMNodeList nlist = x.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"); + xc.AddItem( name); + } + return 1; + } + + 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) + { + bstring s = agent.xml(); + m_agentNode = SetAgentNode(anode, s); + //FillGoodsCarList(); + } + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent * evt, int param) + { + //重置工具条 + SetAgent(); + return 1; + } + + KXMLDOMElement OnGetCarListRowElement(int row = 0) + { + if (row < 1) row = dwc_list.GetRow(); + if (row < 1 || row > dwc_list.GetRowCount()) return KXMLDOMElement(); + KXMLDOMElement e = dw_list.GetRowElement(row); + return e; + } + + int OnShowImage(xstring skuid) + { + ximageview im = GetControl(L"im1"); + //im.RemoveImage(); + im.Reset(); + + xml xp ; + xaserverarg arg_pic; + arg_pic.AddArg(L"SKUID", skuid); + if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU", arg_pic.GetString(), xp) != 1) + { + trace(xstring(L"xxx")+xp.xml()); + } + else + { + //trace(skuid+L" "+xp.GetXml()); + imageElement = xp.documentElement(); + KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image"); + int lenp = nlistp.length(); + for (int ip = 0; ip < lenp; ip++) + { + KXMLDOMElement xitem = nlistp.item(ip); + xstring picname = xitem.selectSingleNode(L"PicPath").text(); + xstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); + if (picname == L"/business/products/Thumbs//") + picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; + im.AddImages(picname, (LPTSTR)L""); + } + im.Redraw(); + //win32::SendMessage(im.GetId(),0x000f,0,1); + //win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true); + } + return 1; + } + + int OnShowImage(xstring skuid, xstring customerItemNo) + { + ximageview im = GetControl(L"im1"); + //im.RemoveImage(); + im.Reset(); + + xml xp ; + xaserverarg arg_pic ; + arg_pic.AddArg(L"SKUID", skuid); + arg_pic.AddArg(L"CustomerID", m_customer); + arg_pic.AddArg(L"CustomerItemNo", customerItemNo); + + if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKU", arg_pic.GetString(), xp) != 1) + { + trace(L"error:" + xstring(xp.xml(),true)); + } + else + { + imageElement = xp.documentElement(); + KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image"); + int lenp = nlistp.length(); + for (int ip = 0; ip < lenp; ip++) + { + KXMLDOMElement xitem = nlistp.item(ip); + bstring picname = xitem.selectSingleNode(L"PicPath").text(); + bstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); + if (picname == L"/business/products/Thumbs//") + picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; + im.AddImages(picname, L""); + } + im.Redraw(); + } + return 1; + } + + int OnRowChanged(TEvent * evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + + xshtml xs = GetControl(L"html_detail"); + xstring html = makeHtml(row); + xs.SetContent(html); + xs.Redraw(); + + xstring id = dw_list.GetGuid(row); + OnShowImage(id); + trace(id); + return 1; + } + + int OnGoodsCarRowChanged(TEvent * evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + + xshtml xs = GetControl(L"html_detail"); + xstring html = makeGoodscarHtml(row); + xs.SetContent(html); + xs.Redraw(); + if (m_customer) + { + xstring id = dw_list.GetItemString(row, L"SKUID"); + xstring customerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); + OnShowImage(id, customerItemNo); + } + + return 1; + } + + int DeleteRow(int row) + { + int IDOK = 1; + int MB_OKCANCEL = 1; + int MB_ICONQUESTION = 32; + if (MessageBoxW(GetHWND(), L"确认删除指定的项,删除后将不能恢复?", L"提示", MB_OKCANCEL | MB_ICONQUESTION) != IDOK) return 1; + xstring id = dw_list.GetGuid(row); + + if (ProductLibraryView::DeleteItem(id) == 1) dw_list.DeleteRow(0); + return 1; + } + + int SetSelectState(xdwgrid dw_obj, int state) + { + if (state == 1) + { + dw_obj.SetSelectionMode(3); + } + else if (state == -1) + { + dw_obj.SelectRow(0, false); + dw_obj.SetSelectionMode(0); + } + return 1; + } + int OnCkbCLick(TEvent * evt, int p) + { + xcheckbox cbx_1 = GetControl(L"frame:cbx1"); + int state = cbx_1.GetCheck(); + return SetSelectState(dw_list, state); + } + + int OnCkbCLick2(TEvent * evt, int p) + { + xcheckbox cbx_2 = GetControl(L"frame:cbx2"); + int state = cbx_2.GetCheck(); + return SetSelectState(dwc_list, state); + } + + xml GetGoodsPropList(xstring guid) + { + xml x; + xaserverarg arg; + arg.AddArg(L"guid", guid); + if (xurl::get(L"/sale/data/SO/goods/goodsprop/list", arg.GetString(), x) != 1) + { + bstring error = x.text(); + alert(error); + } + return x; + } + + xml GetGoodsPropListEx(xstring guid) + { + xml x; + xstring fields = L"<data>"; + //fields +=L"<field name='HighestPrice' label='最高价'/>"; + //fields +=L"<field name='LowestPrice' label='最低价'/>"; + + //fields +=L"<field name='BulkPrice' label='散货价'/>"; + //fields +=L"<field name='CardPrice' label='纸卡价'/>"; + //fields +=L"<field name='BuyPrice' label='采购价'/>"; + //fields +=L"<field name='SupplierID' label='货源'/>"; + + fields += L"<field name='Packing' label='包装方式'/>"; + fields += L"<field name='PackingRate' label='每箱数量'/>"; + fields += L"<field name='VolumeDesc' label='包装尺码'/>"; + fields += L"<field name='GWPerPkg' label='毛重'/>"; + fields += L"<field name='NWPerPkg' label='净重'/>"; + //fields +=L"<field name='DeveloperID' label='开发人员'/>"; + fields += L"<field name='AttributeValue_1' label='产品属性'/>"; + //fields +=L"<field name='Remark' label='备注'/>"; + + fields += L"</data>"; + x.loadXML(fields); + + return x; + } + + xstring makeHtml(int row) + { + xstring id = dw_list.GetItemString(row, L"@guid"); + xml x = GetGoodsPropList(id); + xml x1 = GetGoodsPropListEx(id); + + xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >编号:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"SKUNo") + + L"</span> <span style='font-weight:700;width:50;font-size:10pt' >类项:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"RefNo") + + L"</span></div>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >公司型号:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"GoodsNo") + + L"</span></div>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >品名:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"CName") + + L"</span></div>"; + if (dw_list.GetItemString(row, L"CSpec") != L"") + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >规格:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"CSpec") + + L"</span></div>"; + + KXMLDOMNodeList fieldsEx = x1.selectNodes(L"data/field"); + xstring ls_detail = L""; + xstring ls_item = L""; + xstring name; + xstring label; + int len = fieldsEx.length(); + int i = 0; + + for (i = 0; i < len; true) + { + int cnt = 0; + ls_item = L""; + while (cnt < 2) + { + name = fieldsEx.item(i).selectSingleNode(L"@name").text(); + label = fieldsEx.item(i).selectSingleNode(L"@label").text(); + ls_item += L"<td>" + label + L"</td>" + L"<td style='text-align:center'>" + dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; + cnt++; + i++; + if (i == len)break; + } + ls_detail += L"<tr>" + ls_item + L"</tr>"; + } + html += (xstring)L"<div style='margin-left:8px;margin-right:16px;'>" + + + L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" + + ls_detail + + L"</table>" + + L"</div>"; + + xstring ls_star = L""; + KXMLDOMNodeList fields = x.selectNodes(L"data/field"); + len = fields.length(); + + ls_detail = L""; + if (len > 0) + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >技术要求:</span></div>"; + for (i = 0; i < len; true) + { + ls_item = L""; + + int count = 0; + while (count < 2) + { + name = fields.item(i).selectSingleNode(L"@name").text(); + label = fields.item(i).selectSingleNode(L"@label").text(); + if (name == L"QualityTerm" || name == L"PackTerm" || label == L"质量" || label == L"包装质量" || label == L"技术要求") + { + i++; + if (i >= len)count = 2; + continue; + } + else if (dw_list.GetItemString( row, (LPCTSTR)name) == L"") + { + KXMLDOMNodeList options = fields.item(i).selectNodes(L"item"); + int tlen = options.length(); + xstring terms = L""; + for (int k = 0; k < tlen; k++) + { + if (xstring(options.item(k).text())) + { + if (k > 0) terms += L", L"; + terms += (xstring)L"[" + options.item(k).text() + L"]"; + } + } + ls_star += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >" + label + L"*:</span><span style='width:90;font-size:10pt'>" + terms + L"</span></div>"; + } + else + { + ls_item = L"<td>" + label + L"</td>" + L"<td>" + dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; + count++; + } + i++; + if (i >= len)count = 2; + } + ls_item = L"<tr>" + ls_item + L"</tr>"; + ls_detail += ls_item; + } + + html += (xstring)L"<div style='margin-left:8px;margin-right:16px;'>" + + +L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" + + ls_detail + + L"</table>" + + L"</div>"; + if (dw_list.GetItemString(row, L"QualityTerm") != L"") + { + html += L"<div style='height:12px'/>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >质量:</span></div>"; + html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row, L"QualityTerm") + L"</span></div>"; + } + + if (dw_list.GetItemString(row, L"PackTerm") != L"") + { + html += L"<div style='height:12px'/>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >包装质量:</span></div>"; + html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row, L"PackTerm") + L"</span></div>"; + } + + if (dw_list.GetItemString( row, L"Remark") != L"") + { + //html += L"<div style='height:12px'/>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >备注:</span></div>"; + html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString( row, L"Remark") + L"</span></div>"; + } + + html += L"<div style='height:24px'/>"; + + //星标项 + html += ls_star; + + //显示图片 + /* + if (id != L"") + { + xml xp=new xml; + xp.setNativePointer(xml::CreateInstance()); + xaserverarg arg_pic=new xaserverarg; + arg_pic.setNativePointer(arg_pic.CreateInstance()); + arg_pic.AddArg(L"SKUID",id); + if(url::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1) + { + trace(L"xxx",xp.GetXml()); + }else { + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >图片:</span>" ; + KXMLDOMElement ep= xp.selectSingleNode(L"ImageList"); + if (ep) + { + if (ep.SelectNodes(L"image")){ + KXMLDOMNodeList nlistp = ep.SelectNodes(L"image"); + int ip=0; + int lenp = nlistp.length; + for(ip=0;ip<lenp;ip++) + { + KXMLDOMElement xitemp = nlistp.item(ip); + xstring filename = xitemp.selectSingleNode(L"PicPath").text; + //trace(filename); + html += L"<control visible='layer' controlclass='ximage' data='' src='http://192.168.7.241:7001" + filename +L"'/>"; + } + } + } + html += L"</div>"; + } + }else { + xstring picname = L"1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,L"ImgName"); //ItemID+L".jpg"; + xstring str = picname.mid(0,2); + str = str.upper(); + xstring serversrc =L"http://192.168.7.241:1001/business/products/chanpin/"+str+L"/"+picname; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >图片:</span>"; + html += L"<control visible='layer' controlclass='ximage' data='' src='"+ serversrc +L"'/></div>"; + } + */ + html += L"</body></html>"; + //trace(html); + return html; + } + + xstring makeGoodscarHtml(int row) + { + xstring No = dwc_list.GetItemString(row, L"RefNo");//获取属性值id + xml x = GetGoodsPropList(No); + + xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >编号:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"No") + + L"</span></div>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >品名:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CName") + + L"</span></div>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >规格:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CSpec") + + L"</span></div>"; + + KXMLDOMNodeList fields = x.selectNodes(L"data/field"); + int len = fields.length(); + html += (xstring)L"<table>" + + L"<colgroup span='1' width='80'/>" + + L"<colgroup span='1' width='120'/>" + + L"<colgroup span='1' width='420'/>"; + html += L"<tr>"; + html += L"<td style='text-align:center'>编号</td><td style='text-align:center'>项目</td><td style='text-align:center'>内容</td>"; + html += L"</tr>"; + for (int i = 0; i < len; i++) + { + xstring name = fields.item(i).selectSingleNode(L"@name").text(); + xstring label = fields.item(i).selectSingleNode(L"@label").text(); + html += L"<tr>"; + if (i == 0) + html += L"<td rowspan='" + xstring(len) + L"'>" + No + L"</td><td >" + label + L"</td><td >" + L"</td>"; + else + html += L"<td >" + label + L"</td><td >" +dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; + html += L"</tr>"; + } + + html += L"<tr>"; + html += L"<td rowspan='3'>" +dw_list.GetItemString( row, L"PackCode") + L"</td><td >包装方式</td><td >" + + dw_list.GetItemString(row, L"CPack") + L"</td>"; + html += L"</tr>"; + html += L"<tr height='48'>"; + html += L"<td >包装要求</td><td >" +dw_list.GetItemString( row, L"PackQualityTerm") + L"</td>"; + html += L"</tr>"; + html += L"<tr>"; + html += L"<td >侧唛</td><td ></td>"; + html += L"</tr>"; + + html += L"<tr height='72'>"; + html += L"<td>" +dw_list.GetItemString( row, L"QualityCode") + L"</td><td >质量要求</td><td >" + + dw_list.GetItemString(row, L"QualityTerm") + L"</td>"; + html += L"</tr>"; + + html += L"</table>"; + + html += L"</body></html>"; + return html; + + } + + int CarGoodsDelete() + { + return 1; + } + + xstring Up(xstring name) { + xstring str = name.mid(0, 2); + str = str.toUpper(); + return xaserver::UploadFile(L"product" + str, name + L".jpg", GetHWND(), L"", false); + } + + int OnAddImage() { + if (m_customer != L"") return OnAddImageEx(); + int row = dw_list.GetNextSelectRow(1); + if (row < 1) row = dw_list.GetRow(); + if (row < 1 || row > dw_list.GetRowCount()) return 0; + + KXMLDOMElement e = dw_list.GetRowElement(row); + xstring skuid = dw_list.GetItemString( row, L"@guid"); + xstring SKUNo = dw_list.GetItemString( row, L"SKUNo"); + xstring id = ViewObject::GetGuid(); + xstring ret1 = Up(id); + if (ret1 == L"-1") return -1; + if (ret1 == L"0") + { + alert(L"上传图片失败"); + return -1; + } + xstring originfile = ret1; + xstring ext = originfile.right(7); + if (ext.find(L".") >= 0) + ext = ext.mid(ext.find(L".") + 1, 9999); + else + ext = L"jpg"; + + // 图片名加入数据库 + xml x ; + x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" + + L"<ProductPictureID>" + id + L"</ProductPictureID>" + + L"<OriginFile>" + originfile + L"</OriginFile>" + + L"<FileExt>" + ext + L"</FileExt>" + + L"<SKUID>" + skuid + L"</SKUID>" + + L"<Name>[" + SKUNo.trim() + L"]</Name>" + + L"<FileName>" + id + L".jpg</FileName>" + + L"</Item>" + ); + + xaserverarg arg; + arg.AddArg(L"content", x.xml()); + if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) + { + alert(x.text()); + return -1; + } + dw_list.SetItemString(row, L"pic", L"*"); + dw_list.Redraw(); + //刷新一下界面,显示图片 + OnShowImage(skuid); + return 1; + } + + int OnAddImageEx() { + int row = dwc_list.GetNextSelectRow(1); + if (row < 1) row = dwc_list.GetRow(); + if (row < 1 || row > dwc_list.GetRowCount()) return 0; + + KXMLDOMElement e = dw_list.GetRowElement( row); + xstring skuid =dw_list.GetItemString( row, L"SKUID"); + xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring"); + xstring CustomerID = m_customer; + xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); + xstring id = ViewObject::GetGuid(); + xstring ret1 = Up(id); + if (ret1 == L"-1") return -1; + if (ret1 == L"0") + { + alert(L"上传图片失败"); + return -1; + } + xstring originfile = ret1; + xstring ext = originfile.right(7); + if (ext.find(L".") >= 0) + ext = ext.mid(ext.find(L".") + 1, 9999); + else + ext = L"jpg"; + + // 图片名加入数据库 + xml x; + x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" + + L"<ProductPictureID>" + id + L"</ProductPictureID>" + + L"<OriginFile>" + originfile + L"</OriginFile>" + + L"<FileExt>" + ext + L"</FileExt>" + + L"<SKUID>" + skuid + L"</SKUID>" + + L"<CustomerItemNo>" + CustomerItemNo + L"</CustomerItemNo>" + + L"<CustomerID>" + CustomerID + L"</CustomerID>" + + L"<Name>[" + SKUNo.trim() + L"]</Name>" + + L"<FileName>" + id + L".jpg</FileName>" + + L"</Item>" + ); + + xaserverarg arg; + arg.AddArg(L"content", x.xml()); + if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) + { + alert(x.text()); + return -1; + } + dwc_list.SetItemString(row, L"pic", L"*"); + dwc_list.Redraw(); + //刷新一下界面,显示图片 + OnShowImage(skuid, CustomerItemNo); + return 1; + } + + int OnDeleteImageEx() + { + int row = dwc_list.GetNextSelectRow(1); + if (row < 1) row = dwc_list.GetRow(); + if (row < 1 || row > dwc_list.GetRowCount()) return 0; + + ximageview im = GetControl(L"im1"); + int index = im.GetSelectIndex(); + int count = im.GetImageCount(); + + if (count < 1) return 1; + + KXMLDOMNodeList images = imageElement.selectNodes(L"image"); + int length = images.length(); + if (length < index) return 1; + + int MB_OKCANCEL = 0x00000001; + int IDOK = 1; + if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1; + + xstring id = images.item(index).selectSingleNode(L"@guid").text(); + + xml x ; + xaserverarg arg; + arg.setNativePointer(arg.CreateInstance()); + xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>"; + arg.AddArg(L"content", str); + if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) + { + alert(x.text()); + return -1; + } + if (count == 1) + { + dwc_list.SetItemString(row, L"pic", L""); + dwc_list.Redraw(); + } + + xstring skuid =dw_list.GetItemString( row, L"SKUID"); + xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring"); + xstring CustomerID = m_customer; + xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); + OnShowImage(skuid, CustomerItemNo); + + return 1; + } + + int OnDeleteImage() { + if (m_customer != L"") return OnDeleteImageEx(); + + int row = dw_list.GetNextSelectRow(1); + if (row < 1) row = dw_list.GetRow(); + if (row < 1 || row > dw_list.GetRowCount()) return 0; + + ximageview im = GetControl(L"im1"); + int index = im.GetSelectIndex(); + int count = im.GetImageCount(); + + if (count < 1) return 1; + + KXMLDOMNodeList images = imageElement.selectNodes(L"image"); + int length = images.length(); + if (length < index) return 1; + + int MB_OKCANCEL = 0x00000001; + int IDOK = 1; + if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1; + + xstring id = images.item(index).selectSingleNode(L"@guid").text(); + + xml x; + xaserverarg arg; + xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>"; + arg.AddArg(L"content", str); + if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) + { + alert(x.text()); + return -1; + } + if (count == 1) + { + dw_list.SetItemString(row, L"pic", L""); + dw_list.Redraw(); + } + + KXMLDOMElement e1 = dw_list.GetRowElement(row); + xstring skuid = e1.getAttribute(L"guid"); + OnShowImage(skuid); + + return 1; + } + int OnPreviewImage() + { + int row = dw_list.GetNextSelectRow(1); + if (row < 1) row = dw_list.GetRow(); + if (row < 1 || row > dw_list.GetRowCount()) return 0; + KXMLDOMElement e = dw_list.GetRowElement(row); + //KXMLDOMElement e = dw_list.GetRowElement(row); + //alert(e.xml); + xstring id = dw_list.GetItemString( row, L"@guid"); + //alert(id); + + HTREEITEM hItem = tv_folder.GetSelectedItem(); + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + xstring categoryid = e1.selectSingleNode(L"@guid").text(); + //alert(categoryid); + xaserverarg* arg = new xaserverarg; + arg->AddArg(L"SKUID", id); + arg->AddArg(L"CategoryID", categoryid); + + OpenWindow(L"dev:xpage[PictureView.Product3.vx]", (LPARAM)arg); + + return 1; + } + + int ItemMaint() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + KXMLDOMElement e = tv_folder.GetItemData(hItem); + //xstring no = e.getAttribute(L"no"); + //if(no==L"") return 1; + xstring guid = e.getAttribute(L"guid"); + if (guid == L"") return 1; + + /* + if(no==L"NP0000FS" || no==L"UP0000FS") + { + OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]"); + }else + { + int pr = g_xdoc_product; + OpenWindow(L"dev:xpage[ProductLibraryItemMaint.vx]",pr); + } + */ + //KXMLDOMElement ele = g_xdoc_product.getRowElement(L"data/Item", 1); + //alert(ele.xml); +#ifdef shouldfinished + int pr = g_xdoc_product; + OpenWindow(L"dev:xpage[ProductLibraryItemMaint3.vx]", pr); +#endif + return 1; + } + + int ItemAdd() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + + KXMLDOMElement e = tv_folder.GetItemData(hItem); + //alert(e.xml); + /*xstring no = e.getAttribute(L"no"); + if(no==L"") return 1; + if(no==L"NP0000FS" || no==L"UP0000FS") + { + OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]"); + }else + { + int p = no; + OpenWindow(L"dev:xpage[SO.autolist.goodslib.add.vx]",p); + }*/ + xstring guid = e.getAttribute(L"guid"); + if (guid == L"") return 1; + xaserverarg arg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"guid", e.getAttribute(L"guid")); + if (name == L"个人产品") + arg.AddArg(L"FolderID", e.getAttribute(L"guid")); + else + arg.AddArg(L"CategoryID", e.getAttribute(L"guid")); + xstring No = e.getAttribute(L"CategoryNo"); + if (No == L"") No = e.getAttribute(L"no"); + xstring Name = e.getAttribute(L"CName"); + if (Name == L"") Name = e.getAttribute(L"cname"); + arg.AddArg(L"No", No); + arg.AddArg(L"CName", Name); + OpenWindow(L"dev:xpage[Quick.Input.NewProduct.vx]", (LPARAM)&arg); + + if (arg.GetArgString(L"data.modify") == L"1")RetrieveData(); + + return 1; + } + + int OnAddFolder() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + xstring selectname = tv_folder.GetItemLabel(hItem); + + xaserverarg arg; + if (hItem != hTopItem) + { + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring folder = e.getAttribute(L"guid"); + if (folder != L"") + { + arg.AddArg(L"parentCategoryID", folder); + OpenWindow(L"dev:xpage[UserFolderMaint.vx]",(LPARAM)&arg); + /*if(arg.GetArgString(L"FolderID")!=L"") + { + int child = tv_folder.GetChildItem(hItem); + if(!child) + { + ExpandItem(hItem); + } + else + { + KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement); + KXMLDOMElement e2 = e1.cloneNode(0); + e2. + } + }*/ + } + } + + return 1; + } + + int OnMaintFolder() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + xstring selectname = tv_folder.GetItemLabel(hItem); + + xaserverarg arg; + if (name == L"个人库" && selectname == L"新产品" && tv_folder.GetParentItem(hItem) == hTopItem) return 1; + if (hItem != hTopItem) + { + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring folder = e.getAttribute(L"guid"); + if (folder != L"") + { + arg.AddArg(L"CategoryID", folder); + OpenWindow(L"dev:xpage[UserFolderMaint.vx]", (LPARAM)&arg); + if (arg.GetArgString(L"label") != L"") + { + tv_folder.SetItemLabel(hItem, arg.GetArgString(L"label")); + } + } + } + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + int hCursor; + xstring name = L""; + if (comdid == L"xmRefresh") + { + return RetrieveData(); + } + else if (comdid == L"xmCarGoodsDelete") + { + CarGoodsDelete(); + return 1; + } + else if (comdid == L"xmAddFolder") + { + return OnAddFolder(); + } + else if (comdid == L"xmMaintFolder") + { + return OnMaintFolder(); + } + else if (comdid == L"xmClose") + { + CloseWindow(); + return 1; + } + else if (comdid == L"xmCarGoodsMaint") + { +#ifdef shouldfinish + OpenWindow(L"dev:xpage[ShoppingCartProductMaint.vx]", trust(g_xdoc_shoppingcart as int)); +#endif + return 1; + } + else if (comdid == L"xmCarMaint") + { + OpenWindow(L"dev:xpage[SO.autolist.Shopcar.vx]"); + return 1; + } + else if (comdid == L"xmSaleOrder") + { + int rw = dwc_list.GetNextSelectRow(1); + xstring content = L"<data>"; + while (rw > 0) + { + KXMLDOMElement xe = OnGetCarListRowElement(rw); + content += xe.xml(); + rw = dwc_list.GetNextSelectRow(rw + 1); + + } + content += L"</data>"; + xaserverarg carg; + carg.setNativePointer(carg.CreateInstance()); + carg.AddArg(L"content", content); + OpenWindow(L"dev:xpage[SO.Simulation.Import.vx]", (LPARAM) & carg); + return 1; + } + else if (comdid == L"xmEnquiry") + { + int rw = dwc_list.GetNextSelectRow(1); + xstring content = L"<data>"; + while (rw > 0) + { + KXMLDOMElement xe = OnGetCarListRowElement(rw); + content += xe.xml(); + rw = dwc_list.GetNextSelectRow(rw + 1); + } + content += L"</data>"; + xaserverarg carg; + carg.setNativePointer(carg.CreateInstance()); + carg.AddArg(L"content", content); + OpenWindow(L"dev:xpage[Enquiry.Import.vx]", (LPARAM)&carg); + return 1; + } + else if (comdid == L"xmPurchar") + { + int rw = dwc_list.GetNextSelectRow(1); + xstring content = L"<data>"; + while (rw > 0) + { + KXMLDOMElement xe = OnGetCarListRowElement(rw); + content += xe.xml(); + rw = dwc_list.GetNextSelectRow(rw + 1); + } + content += L"</data>"; + xaserverarg carg ; + carg.AddArg(L"content", content); + OpenWindow(L"dev:xpage[PO.Import.vx]", (LPARAM)&carg); + return 1; + } + else if (comdid == L"xmSearch") + { + RetrieveData(); + return 1; + } + else if (comdid == L"xmQuote") + { + int rw = dwc_list.GetNextSelectRow(1); + xstring content = L"<data>"; + while (rw > 0) + { + KXMLDOMElement xe = OnGetCarListRowElement(rw); + content += xe.xml(); + rw = dwc_list.GetNextSelectRow(rw + 1); + } + content += L"</data>"; + xaserverarg carg; + carg.AddArg(L"content", content); + OpenWindow(L"dev:xpage[Quote.Import.vx]", (LPARAM) & carg); + return 1; + } + else if (comdid == L"xmAdd") + { + return ItemAdd(); + } + else if (comdid == L"xmDelete") + { + int row = dw_list.GetRow(); + if (row < 1) return 1; + xstring skuid = dw_list.GetItemString( row, L"@guid"); + xml skuid_x = ViewObject::RetrieveData(L"/sale/data/ProductLibrary3/ProductNumberone", L"SKUID", skuid); + xstring skuidEx = skuid_x.text(); + int skuid1 = skuidEx.toInt(); + if (skuid1) + { + if (skuid1 > 0) + { + alert(L"订单已有产品,不允许删除!"); + return 1; + } + } + + DeleteRow(row); + + return 1; + } + else if (comdid == L"xmCarAdd") + { + HCURSOR hCursor = xutil::SetCursorWait(); + name = xcontrol(GetControl(L"frame:ed_goodscar")).GetText(); + if (name != L"") + { + if (ShoppingCartView::AddCar(name) == 1) + { + tv_folder.InsertChildItem(LookupTopFolder(tv_folder.GetSelectedItem()), + name, 0, 35); + } + } + xutil::RestoreCursor(hCursor); + return 1; + } + else if (comdid == L"xmMaint") + { + return ItemMaint(); + } + else if (comdid == L"xmAddImage") + { + return OnAddImage(); + } + else if (comdid == L"xmDeleteImage") + { + return OnDeleteImage(); + } + else if (comdid == L"xmPreviewImage") + { + return OnPreviewImage(); + } + else if (comdid == L"xmPropConfigure") + { +#ifdef shouldfinish + int r = cast(g_xdoc_product.getData(L"data/Item", L"@guid") as int); + OpenWindow(L"dev:xpage[Product.ItemProp.Maint.vx]", r); +#endif + return 1; + } + else if (comdid == L"xmRertieve") + { + /* + int hItem1 = tv_folder.GetSelectedItem(); + KXMLDOMElement e2= tv_folder.GetItemData(hItem1); + xstring no1 = e2.getAttribute(L"no"); + xml x2 = vcontrol::RetrieveData(L"/sale/data/SO/goods/usergoods/listex1",L"parent",no1); + g_xdoc_product.Retrieve(x2); + */ + return 1; + } + else if (comdid == L"xmToCar") + { + name = xcontrol(GetControl(L"frame:cbx_goodscar")).GetText(); + if (name == L"==选择购物车==L") + { + alert(L"请选择购物车"); + return 1; + } + int xrow = dw_list.GetNextSelectRow(1); + xstring goodsid = L""; + xstring html = L"<data>"; + while (xrow > 0) + { + KXMLDOMElement e =dw_list.GetRowElement(xrow); + goodsid = ProductLibraryView::GetElementString(e, L"@guid"); + html += L"<item goodid='" + goodsid + L"' id ='" + ProductLibraryView::GetGuid() + L"'/>"; + xrow = dw_list.GetNextSelectRow(xrow + 1); + } + html += L"</data>"; + trace(html); + if (ShoppingCartView::GoodsImport(name, html) == 1) + alert(L"添加错误!"); + else + alert(L"添加成功"); + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, int 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 MakeGoodsFolderItem(HTREEITEM hItem, xstring sno) + { + xml x = ProductLibraryView::GetTreeChildItems3(sno); + if (!x) return 0; + + KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"CName"); + xstring no = e.getAttribute(L"CategoryNo"); + xstring label = no.trim() + L" " + name; + + HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15); + xstring child = e.getAttribute(L"Childs"); + if (child == L"") + tv_folder.SetItemChild(h, 1); + else if (child != L"0") + tv_folder.SetItemChild(h, 1); + } + return 1; + } + + //插入新产品目录子项 + int MakeUserGoodsFolderItem(HTREEITEM hItem, xstring sno) + { + xml x = ProductLibraryView::GetTreeUserChildItems3(sno); + if (!x) return 0; + + KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"CName"); + xstring no = e.getAttribute(L"CategoryNo"); + xstring label = no.trim() + L" " + name; + + HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15); + xstring child = e.getAttribute(L"Childs"); + if (child == L"") + tv_folder.SetItemChild(h, 1); + else if (child != L"0") + tv_folder.SetItemChild(h, 1); + } + return 1; + } + + //插入购物车项 + int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) + { + KXMLDOMNodeList nlist = ele.selectNodes(L"item"); + int len = nlist.length(); + if (len > 0) tv_folder.SetItemChild(hItem, 1); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"name"); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); + ExpandCatChildFolder(h, e, 35); + } + return 1; + } + int MakeGoodCarFolderItem(HTREEITEM hItem) + { + xml x = ShoppingCartView::GetRoleList(); + if (!x) return 0; + KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"name"); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); + ExpandCatChildFolder(h, e, 35); + } + return 1; + } + + int ExpandItem(HTREEITEM hItem) + { + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + HTREEITEM child = tv_folder.GetChildItem(hItem); + xstring no = L""; + KXMLDOMElement e; + if (name == L"公司库" && !child) + { + no = L""; + if (hTopItem != hItem) + { + e = tv_folder.GetItemData(hItem); + no = e.getAttribute(L"categoryid"); + } + else + { + e = tv_folder.GetItemData(hItem); + no = e.getAttribute(L"categoryid"); + } + MakeGoodsFolderItem(hItem, no); + } + else if (name == L"个人库" && !child) + { + no = L""; + if (hTopItem != hItem) + { + e = tv_folder.GetItemData(hItem); + no = e.getAttribute(L"categoryid"); + MakeUserGoodsFolderItem(hItem, no); + } + } + else if (name == L"购物车" && !child) + { + if (hItem == hTopItem)MakeGoodCarFolderItem(hItem); + } + return 1; + } + + //树展开 + int OnTreeExpanding(TEvent * evt, int p) + { + NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; + HTREEITEM hItem = nmtv.itemNew.hItem; + return ExpandItem(hItem); + } + + int ResetAgent(xstring agentAsk) + { + if (agentFor != agentAsk) + { + agentFor = agentAsk; + m_agentNode = 0; + SetAgent(); + } + return 1; + } + + HTREEITEM LookupCustomerFolder(HTREEITEM hItem) + { + while (true) + { + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + xstring str = e1.getAttribute(L"no"); + if (str.find(L"Customer:") >= 0) return hItem; + hItem = tv_folder.GetParentItem(hItem); + if (hItem == 0) break; + } + return 0; + } + + xstring LookupCustomer(HTREEITEM hItem) + { + hItem = LookupCustomerFolder(hItem); + if (hItem == 0) return L""; + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + xstring str = e1.getAttribute(L"no"); + return str.mid(xstring(L"Customer:").length(), 9999); + } + + int RetrieveData() + { + ximageview im = GetControl(L"im1"); + HTREEITEM hItem = tv_folder.GetSelectedItem(); + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + xstring selectname = tv_folder.GetItemLabel(hItem); + + xcontrol query = GetControl(L"sl_search"); + xstring queryString = query.GetText(); + + if (hItem == hTopItem) + { + dw_list.Reset(); + dw_list.SetReadOnly(true); + dw_list.Redraw(); + dwc_list.Reset(); + dwc_list.SetReadOnly(true); + dwc_list.Redraw(); + + im.Reset(); + im.Redraw(); + + + xshtml xs1 = GetControl(L"html_detail"); + xs1.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); + + if (name != L"公司库") return 1; + } + //return 1; + + HCURSOR hCursor = xutil::SetCursorWait(); + + if (name == L"购物车") + { + if (selectname != name) + { + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + xstring str = e1.getAttribute(L"no"); + alert(str); + if (str.find(L"Customer:") == 0 || str.find(L"SO:") == 0) + { + m_customer = LookupCustomer(hItem); + if (str.find(L"Customer:") == 0) + dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodscustomerlist"); + else + dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodssolist"); + dwc_list.Reset(); + dwc_list.SetReadOnly(true); + dw_list.Retrieve(ShoppingCartView::GetGoodsList(str, queryString)); + } + else if (e1.getAttribute(L"categoryid") != L"") + { + xstring categoryid = e1.getAttribute(L"categoryid"); + dwc_list.SetDataObject(ProductLibraryView::GetMaintListForm3(categoryid)); + dwc_list.SetReadOnly(true); + dwc_list.Reset(); + dw_list.Retrieve(ProductLibraryView::GetMaintList3(categoryid, queryString, L"")); + dwc_list.Redraw(); + } + else + { + dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); + dwc_list.SetReadOnly(true); + dwc_list.Reset(); + dw_list.Retrieve(ShoppingCartView::GetGoodsList(selectname, queryString)); + } + //dwc_list.PostRetrieve(); + dwc_list.Redraw(); + + xshtml xs = GetControl(L"html_detail"); + if (dwc_list.GetRowCount() >= 1) + { + xs.SetContent(makeGoodscarHtml(1)); + + if (m_customer != L"") + { + xstring skuid =dw_list.GetItemString( 1, L"SKUID"); + xstring customerItemNo =dw_list.GetItemString( 1, L"CustomerItemNo"); + OnShowImage(skuid, customerItemNo); + } + } + else + { + im.Reset(); + im.Redraw(); + + xs = GetControl(L"html_detail"); + xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); + } + xs.Redraw(); + } + } + else + { + + if (name == L"个人库" || name == L"公司库") + { + xstring no = L"N000005"; + if (name == L"个人库") no = L"U000005"; + + if (hItem != hTopItem) + { + KXMLDOMElement e = tv_folder.GetItemData(hItem); + no = e.getAttribute(L"guid"); + } + else + return 1; + + /* dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no).GetXmlDoc()); + dw_list = GetControl(L"dw_list"); + dw_list.Reset(); + dw_list.SetReadOnly(true); + */ + + if (name == L"个人库") + dw_list.Retrieve(ProductLibraryView::GetMaintRoleList3(no)); + else + { + if (queryString != L"") + { + + if (no == L"N000005") + dw_list.Retrieve(ProductLibraryView::GetMaintList3(L"", queryString, L"")); + else + dw_list.Retrieve(ProductLibraryView::GetMaintList3(no, queryString, L"")); + } + else + { + if (no == L"N000005") return 1; + dw_list.Retrieve(ProductLibraryView::GetMaintList3(no)); + } + } + //dw_list.PostRetrieve(); + dw_list.Redraw(); + + xshtml xs = GetControl(L"html_detail"); + if (dw_list.GetRowCount() > 0) + { + xs.SetContent(makeHtml(1)); + xstring id = dw_list.GetItemString( 1, L"@guid"); + OnShowImage(id); + } + else + { + im.Reset(); + im.Redraw(); + + xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); + } + xs.Redraw(); + } + } + xutil::RestoreCursor(hCursor); + + return 1; + } + + int OnTreeSelChanged(TEvent * evt, int p) + { + NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; + HTREEITEM hItem = nmtv.itemNew.hItem; + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + xstring selectname = tv_folder.GetItemLabel(hItem); + ximageview im = GetControl(L"im1"); + m_customer = L""; + //alert(name); + if (name == L"购物车") + { + if (agentFor != L"goodscar")SwitchLayer(L"goodscarsheet", L"sheetframe"); + ResetAgent(L"goodscar"); + } + else + { + if (agentFor != L"goodslib")SwitchLayer(L"goodslibsheet", L"sheetframe"); + if (name == L"个人库") + ResetAgent(L"userlib"); + else + ResetAgent(L"goodslib"); + } + //RetrieveData(); + PostMessage(GetHWND(), 0x401, (WPARAM)L"xmRefresh", 0); + + return 1; + } + + int ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) + { + KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement& e = * new KXMLDOMElement(nlist.item(i)); + xstring name = e.getAttribute(L"cname"); + xstring sImage = e.getAttribute(L"image"); + int image = 15; + //if(sImage) image = sImage.toInt(); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); + tv_folder.SetItemChild(h, 1); + ExpandChildFolder(h, e); + } + return 1; + } + + int InitialFolder() + { + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); + ExpandChildFolder(0, e); + return 1; + } + + int OnViewZoomChange(TEvent* evt, int lParam) + { + ximageview im = GetControl(L"im1"); + xcombobox xc = GetControl(L"precent"); + xstring text = xc.GetLBText(); + int p = text.toInt(); + if (p == 0) p = 100; + im.Preview(p); + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductLibrary4Win::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductLibrary4Win::OnSetFocus); + AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnRowChanged); + AttachEvent(L"dwc_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnGoodsCarRowChanged); + AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ProductLibrary4Win::OnTreeExpanding); + AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ProductLibrary4Win::OnTreeSelChanged); + AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick); //checkbox打钩事件 + AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick2); //checkbox打钩事件 + + AttachEvent(L"im1", L"IMG_LDBCLICK", (FEvent)&ProductLibrary4Win::OnImgDBClicked); + AttachEvent(L"precent", L"CBN_SELCHANGE", (FEvent)&ProductLibrary4Win::OnViewZoomChange); + + return 1; + } + + int onload() + { + agentFor = L"goodslib"; + m_customer = 0; + + OnAttachEvent(); + + tv_folder = GetControl(L"tv_folder"); + dw_list = GetControl(L"dw_list"); + dwc_list = GetControl(L"dwc_list"); + + InitialFolder(); + + dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"")); + dw_list = GetControl(L"dw_list"); + dw_list.SetReadOnly(true); + + dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); + dwc_list.SetReadOnly(true); + + tv_folder.ExpandItem(tv_folder.GetRootItem()); + tv_folder.ItemFocus(tv_folder.GetRootItem()); + + if (dw_list.GetRowCount()) + { + xshtml xs = GetControl(L"html_detail"); + xs.SetContent(makeHtml(1)); + } + + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + + int OnImgDBClicked(TEvent * evt, int pr) + { + IMGNNMHDR& nmtv = *(IMGNNMHDR*)evt->notify.pnmh; + xstring src = nmtv.path; + /*if(src.length() > 60) + src = src.right(44); + else + src=src.mid(src.find(L"Thumbs", 0)+6, 50); + */ + xaserverarg& arg = *new xaserverarg; + //arg.AddArg(L"src",L"/business/products/chanpin"+src); + arg.AddArg(L"src", src); + + //win::OpenWindow(L"dev:xpage[BigPicture.vx]",arg); + + int h = openUrl(L"/sale/view/ProductLibrary/xpage/bigpictureview", &arg); + return 1; + /* + xwin x = new xwin; + x.setNativePointer(h); + m_winHwnd = x.GetHWND(); + + xstring sh = doc.GetXml(); + int p = cast(sh as int); + win32::SendMessage(m_winHwnd, 0x401, p, 0); + */ + return 1; + } +}; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Data.config.cpp b/jrj/project/business/SystemSettings/Data.config.cpp new file mode 100644 index 0000000..f5b5019 --- /dev/null +++ b/jrj/project/business/SystemSettings/Data.config.cpp @@ -0,0 +1,571 @@ +use "lang.vl" +use "win.vl" +use "treeview.vm" +use "dev:vm[xutil.vm]" +use "dev:vm[xdwtable.vm]" +use "dev:vm[xdwgrid.vm]" +use "dev:vm[combobox.vm]" +use "frame.vl" +use "file.vl" +use "dev:vm[xlayersheet.vm]" +use "publiccode.vl" + +unit vbusiness.vpage +[ + DataConfig is extend frame; + about DataConfig + [ + field: + + method: + [ + treeview__ dw_tree; + xdwgrid__ dw_list; + xdwgrid__ dw_role; + combobox__ dw_ddlb; + xlayersheet__ m_sheet; + + int alert(string str) + { + TApp::alert(this,str,3); + return 0; + } + int createTree(msxml::IXMLDOMElement e, int parentItem) + { + if(treeview__::GetChildItem(dw_tree.GetId(), parentItem) > 0) return 0; + + var list=e.selectNodes("item"); + int i=0,s=list.length; + msxml::IXMLDOMElement xitem; + for (i=0;i<s;i++) + { + xitem= list.item(s - i - 1); + string Name=xitem.selectSingleNode("name").text; + string image = xitem.selectSingleNode("image").text; + int curItem=treeview__::InsertItem(dw_tree.GetId(), parentItem,0,Name,xitem,image.toInt()); + string child=xitem.selectSingleNode("child").text; + if (child != "0") + treeview__::SetItemChild1(dw_tree.GetId(), curItem,1); + } + return 1; + } + + int OnTreeExpanding(ref TNotifyEvent evt,int p) + { + ref NMTREEVIEW nmtv = evt.pnmh; + int sitem = nmtv.itemNew.hItem; + + int i = combobox__::GetCurSel(dw_ddlb.GetId()); + msxml::IXMLDOMElement e = treeview__::GetItemData(dw_tree.GetId(), sitem); + string id = e.selectSingleNode("id").text; + string xid = e.selectSingleNode("tree").text; + int hCursor = xutil__::SetCursorWait(); + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("pid",id); + arg.AddArg("tree",xid); + //if(xaserver__::ExecXQuery(GetServerUrl(),"[selectRoleInt.xq]",arg.GetString(),x)!=1) + if(url::get("/sale/data/Role.config/pref/user/select",arg.GetString(),x)!=1) + { + trace("错误返回="+x.GetXml()); + return -1; + } + + msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement; + createTree(ele, sitem); + xutil__::RestoreCursor(hCursor); + return 1; + } + + int OnRetrieve(string id) + { + int hIcon= xutil__::SetCursorWait(); + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("id",id); + trace(id); + arg.AddArg("flag","-1"); + //if(xaserver__::ExecXQuery(GetServerUrl(),"[selectRoleInt.xq]",arg.GetString(),x)!=1) + if(url::get("/sale/data/Role.config/pref/maint/data",arg.GetString(),x)!=1) + { + trace("错误返回1="+x.GetXml()); + return -1; + } + + if(x.GetXml() == "") + x.LoadXml("<root><items/><roles/></root>"); + + xml__ x1 = new xml__; + x1.setNativePointer(xml__ ::CreateInstance()); + if(x.GetXmlDoc().selectSingleNode("root/items")) + { + dw_list.Retrieve(x.GetXmlDoc().selectSingleNode("root/items")); + dw_list.SetReadOnly(true); + dw_list.Redraw(); + } + else + { + x1.LoadXml("<items/>"); + dw_list.Retrieve(x1); + dw_list.SetReadOnly(true); + dw_list.Redraw(); + } + if(x.GetXmlDoc().selectSingleNode("root/roles")) + { + dw_role.Retrieve(x.GetXmlDoc().selectSingleNode("root/roles")); + dw_role.SetReadOnly(true); + dw_role.Redraw(); + } + else + { + x1.LoadXml("<roles/>"); + dw_role.Retrieve(x1); + dw_role.SetReadOnly(true); + dw_role.Redraw(); + } + xutil__::RestoreCursor(hIcon); + return 1; + } + + int OnTreeSelecded( ref TNotifyEvent evt,int p) + { + ref NMTREEVIEW nmtv = evt.pnmh; + int hItem = nmtv.itemNew.hItem; + int wid = dw_tree.GetId(); + msxml::IXMLDOMElement ele =treeview__::GetItemData(wid,hItem); + + string id = ele.SelectSingleNode("id").text; + OnRetrieve(id); + + return 1; + } + + int OnSelect() + { + int nIndex = combobox__::GetCurSel(dw_ddlb.GetId()); + + combobox__ dw_ddlbdata = new combobox__; + dw_ddlbdata.setNativePointer(this.GetControl("dw_ddlbdata")); + int h = combobox__::FindString(dw_ddlbdata.GetId(), nIndex.toString()); + param p; + xnode__ bnode; + xnode__ anode = new xnode__; + anode.setNativePointer(GetAgentNode("tree")); + if(h < 0) + { + string str = "<vbox><xtree name='dw_tree"+nIndex.toString()+"' imagelist='0'/></vbox>"; + bnode = new xnode__; + bnode.setNativePointer(SetAgentNodeContent(anode,str)); + + p = combobox__::GetItemData(dw_ddlb.GetId(), nIndex); + msxml::IXMLDOMElement ele = p; + + dw_tree = new treeview__; + dw_tree.setNativePointer(this.GetControl("dw_tree"+nIndex.toString())); + + createTree(ele, 0); + AttachEvent("dw_tree"+nIndex.toString(), "TVN_ITEMEXPANDING",OnTreeExpanding); + AttachEvent("dw_tree"+nIndex.toString(), "TVN_SELCHANGED",OnTreeSelecded); + + int sk = combobox__::AddItem(dw_ddlbdata.GetId(), nIndex.toString()); + p = bnode; + combobox__::SetItemData(dw_ddlbdata.GetId(), sk, p); + } + else + { + p = combobox__::GetItemData(dw_ddlbdata.GetId(), h); + bnode = p; + SetAgentNodeContent(anode,bnode); + + dw_tree = new treeview__; + dw_tree.setNativePointer(this.GetControl("dw_tree"+nIndex.toString())); + } + + return 1; + } + + int OnSave() + { + int m = treeview__::GetSelectedItem(dw_tree.GetId()); + if(m == 0) return 0; + + int wid = dw_tree.GetId(); + int hItem=treeview__::GetSelectedItem(wid); + msxml::IXMLDOMElement ele =treeview__::GetItemData(wid,hItem); + string id = ele.SelectSingleNode("id").text; + string tpy = ele.SelectSingleNode("type").text; + + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + dw_list.DwUpdateAllToEx(x.GetXmlDoc()); + msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; + e.SetAttribute("id", id); + e.SetAttribute("type", tpy); + + xml__ x1 = new xml__; + x1.setNativePointer(xml__ ::CreateInstance()); + dw_role.DwUpdateAllToEx(x1.GetXmlDoc()); + msxml::IXMLDOMElement e1 = x1.GetXmlDoc().documentElement; + e.AppendChild(e1); + + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("content", e.xml); + arg.AddArg("dbmap", "Data.config.dbmap"); + //if(xaserver__::ExecXAction(GetServerUrl(),"[onSave.xa]",arg.GetString(),x)!=1) + if(url::get("/sale/data/Role.config/pref/save",arg.GetString(),x)!=1) + //if(url::get("/workflow/action/datarole.resource/bill.update",arg.GetString(),x)!=1) + { + trace("error:"+x.GetXml()); + alert("保存出错!"); + return 0; + } + if(x.GetXmlDoc().selectSingleNode("error")) + { + alert("保存出错2!"); + return 0; + } + dw_list.ResetUpdateStatus(); + dw_role.ResetUpdateStatus(); + alert("保存成功!"); + + return 1; + } + + int OnSelectDdlb(ref TNotifyEvent evt,int p) + { + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + dw_list.DwUpdateAllToEx(x.GetXmlDoc()); + msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; + if(e) + { + var list = e.SelectNodes("//*[@update.new='1' or @update.modify='1' or @update.delete='1']"); + int s = list.length; + if(s>0) + { + int ret = win__::MessageBox(this.GetHWND(), "当前修改记录未保存,是否保存?","提示",4); + if(ret == 6) + OnSave(); + } + } + + OnSelect(); + + int m = treeview__::GetSelectedItem(dw_tree.GetId()); + string id; + if(m == 0) + { + id = ""; + } + else + { + msxml::IXMLDOMElement ele =treeview__::GetItemData(dw_tree.GetId(),m); + id = ele.SelectSingleNode("id").text; + } + OnRetrieve(id); + + return 1; + } + + int createTreeRoot() + { + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("pid",""); + arg.AddArg("tree","0"); + //if(xaserver__::ExecXQuery(GetServerUrl(),"[selectRoleInt.xq]",arg.GetString(),x)!=1) + if(url::get("/sale/data/Role.config/pref/user/select",arg.GetString(),x)!=1) + { + trace("错误返回="+x.GetXml()); + return -1; + } + msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; + var list = e.SelectNodes("*"); + int i; + int len = list.length; + msxml::IXMLDOMElement ele; + for(i=0; i<len; i++) + { + ele= list.item(i); + string name = ele.selectSingleNode("@tree").text; + int sk = combobox__::AddItem(dw_ddlb.GetId(), name); + param p = ele; + combobox__::SetItemData(dw_ddlb.GetId(), sk, p); + } + if(len > 0) + { + combobox__::SetCurSel(dw_ddlb.GetId(), 0); + OnSelect(); + } + OnRetrieve(""); + return 1; + } + + int OnSetFocus(ref TEvent evt,int p) + { + SetAgent("data"); + return 1; + } + + string GetPath() + { + int h = treeview__::GetSelectedItem(dw_tree.GetId()); + if(h == 0) return 0; + + int tv = dw_tree.GetId(); + string str = treeview__::GetItemLabel(tv, h); + int k = treeview__::GetParentItem(tv, h); + while(k > 0) + { + string tmp = treeview__::GetItemLabel(tv, k); + str = tmp+"\\" + str; + k = treeview__::GetParentItem(tv, k); + } + return str; + } + + int OnAddRole() + { + int m = treeview__::GetSelectedItem(dw_tree.GetId()); + if(m == 0) return -1; + msxml::IXMLDOMElement ele =treeview__::GetItemData(dw_tree.GetId(),m); + string tpy=""+ele.selectSingleNode("type").text; + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("dataUrl","/sale/data/Role.config/pref/model/select"); + openUrl("/sale/view/Role.config/xpage/role/select/user", arg); + string str = arg.GetArgString("item"); + if(str == "") return -1; + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + x.LoadXml(str); + var list=x.GetXmlDoc().selectNodes("items/item"); + int i=0,s=list.length; + msxml::IXMLDOMElement xitem; + int row = dw_role.GetRowCount() + 1; + string treepath = GetPath(); + for (i=0;i<s;i++) + { + xitem= list.item(i); + string id = ""+xitem.selectSingleNode("@id").text; + string name=""+xitem.selectSingleNode("@name").text; + //string tpy=""+xitem.selectSingleNode("@type").text; + dw_role.InsertRow(0); + dw_role.SetItemString(row + i, "id", id); + dw_role.SetItemString(row + i, "name", ""+treepath); + dw_role.SetItemDisplayString(row + i, "name", name); + dw_role.SetItemString(row + i, "type", tpy); + } + return 1; + } + + int OnAddRow() + { + int m = treeview__::GetSelectedItem(dw_tree.GetId()); + if(m == 0) return 0; + + int k = m_sheet.GetSheetIndex(); + if(k == 0) + //openUrl("/sale/view/role.config/xpage/data/select/resource", dw_list); + OpenWindow("dev:xpage[Resource.select.data.config.vx]", dw_list); + else + OnAddRole(); + + return 1; + } + + int OnDelRow() + { + int k = m_sheet.GetSheetIndex(); + int row; + string hr_type; + msxml::IXMLDOMElement e; + if(k == 0) + { + row = dw_list.GetRow(); + if(row<1 || row > dw_list.GetRowCount()) return -1; + e = dw_list.GetRowElement(row); + if(e.selectSingleNode("fromparent")) + { + hr_type = e.selectSingleNode("fromparent").text; + if(hr_type != "") + { + alert("继承的权限无权删除!"); + return 0; + } + } + dw_list.DeleteRow(row); + } + else + { + row = dw_role.GetRow(); + if(row<1 || row > dw_role.GetRowCount()) return -1; + e = dw_role.GetRowElement(row); + if(e.selectSingleNode("fromparent")) + { + hr_type = e.selectSingleNode("fromparent").text; + if(hr_type != "") + { + alert("继承的权限无权删除!"); + return 0; + } + } + dw_role.DeleteRow(row); + } + + return 1; + } + + int OnSetCopy(xdwgrid__ dw, msxml::IXMLDOMElement e, string name) + { + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + msxml::IXMLDOMElement ele; + bool f = false; + + int count = dw.GetRowCount(); + if(count == 0) + { + x.LoadXml("<" + name + "s/>"); + ele = x.GetXmlDoc().documentElement; + } + else + { + msxml::IXMLDOMElement e1 = dw.GetRowElement(1); + ele = e1.parentNode; + } + var li = e.SelectNodes(name); + int i; + int len = li.length; + string treepath = GetPath(); + for(i=0; i<len; i++) + { + msxml::IXMLDOMElement ele1= li.item(i); + if(ele1.selectSingleNode("fromparent")) + { + string str = ele1.selectSingleNode("fromparent").text; + if(str != "") continue; + } + xml__ x1 = new xml__; + x1.setNativePointer(xml__::CreateInstance()); + x1.LoadXml(ele1.xml); + msxml::IXMLDOMElement ele2 = x1.GetXmlDoc().documentElement; + ele2.setAttribute("update.new","1"); + ele2.setAttribute("update.modify","1"); + ele2.setAttribute("guid",publiccode::GetGuid()); + if(ele2.selectSingleNode("name")) + ele2.selectSingleNode("name").text = treepath; + //ele1.selectSingleNode("@guid").text = publiccode::GetGuid(); + //ele1.selectSingleNode("@update.new").text = "1"; + //ele1.selectSingleNode("@update.modify").text = "1"; + ele.appendChild(ele2); + } + dw.Retrieve(ele); + dw.SetReadOnly(true); + dw.Redraw(); + + return 1; + } + + int OnCopy() + { + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + int p = arg.__nativept; + OpenWindow("dev:xpage[Data.config.copy.vx]", p); + string id = arg.GetArgString("id"); + string f = arg.GetArgString("flag"); + if(id == "") return 1; + + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + if(url::get("/sale/data/Role.config/pref/maint/data",arg.GetString(),x)!=1) + { + trace("错误返回="+x.GetXml()); + return -1; + } + + if(x.GetXml() == "") + x.LoadXml("<root><items/><roles/></root>"); + + msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; + + if(f == "0" || f == "1") + { + msxml::IXMLDOMElement ele1 = e.selectSingleNode("items"); + OnSetCopy(dw_list, ele1, "item"); + } + + if(f == "0" || f == "2") + { + msxml::IXMLDOMElement ele2 = e.selectSingleNode("roles") + OnSetCopy(dw_role, ele2, "role"); + } + + return 1; + } + + int OnCmdDispatch(string comdid) + { + if(comdid == "Config") + openUrl("/sale/view/role.config/xpage/data/resource/config"); + if(comdid == "RightQuery") + openUrl("/sale/view/role.config/xpage/data/modulerightquery"); + else if(comdid == "New") + OnAddRow(); + else if(comdid == "Del") + OnDelRow(); + else if(comdid == "Save") + OnSave(); + else if(comdid == "Copy") + OnCopy(); + else if(comdid == "xmProdDivi") + openUrl("/sale/view/RoleAccount3/xpage/data/proddivi"); + return 0; + } + + int OnXCommand(ref TXCommandEvent evt,int p) + { + return OnCmdDispatch(evt.pStrID); + } + + int onload() + { + SetAgent("data"); + + dw_list = new xdwgrid__; + dw_list.setNativePointer(GetControl("dw_list")); + dw_list.openUrl("/sale/view/Role.config/template/data/config/resourceOrg"); + dw_list.SetReadOnly(false); + + dw_role = new xdwgrid__; + dw_role.setNativePointer(GetControl("dw_role")); + //dw_role.SetDataObject(GetServerUrl(), "dev:sheet[leftFrame.tpl/role]"); + //dw_role.openUrl(m_vface+"/template/role/config/role"); + dw_role.openUrl("/sale/view/Role.config/template/role/config/role"); + dw_role.SetReadOnly(false); + + dw_ddlb = new combobox__; + dw_ddlb.setNativePointer(this.GetControl("dw_ddlb")); + + m_sheet = new xlayersheet__; + m_sheet.setNativePointer(this.GetControl("m_sheet")); + + AttachEvent("WM_XCOMMAND",OnXCommand); + AttachEvent("WM_SETFOCUS",OnSetFocus); + AttachEvent("dw_ddlb","CBN_SELCHANGE",OnSelectDdlb); + + createTreeRoot(); + + return 1; + } + ] + ] +] \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Developer.Synch.cpp b/jrj/project/business/SystemSettings/Developer.Synch.cpp new file mode 100644 index 0000000..8789e6e --- /dev/null +++ b/jrj/project/business/SystemSettings/Developer.Synch.cpp @@ -0,0 +1,432 @@ +#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) DeveloperSynch : public xframe + { + public: + xtreeview tv_gs; + xsedit dw_log; + + int nItems; + int nCount; + + xstring sContent; + public: + DeveloperSynch(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static DeveloperSynch* CreateInstance(void* implPtr, void* hWnd) + { + DeveloperSynch* pWin = new DeveloperSynch(implPtr, (HWND)hWnd); + return pWin; + } + xstring ProcessDevCmd(xstring cmd,xstring ext, xstring aurl=L"", bool needlogin=false) + { + if(aurl == L"") aurl = GetServerUrl(); + //alert(aurl); + xstring d = xaserver::ProcessCmd(aurl,L"uri.hxsoft.com/xaserver/developer "+cmd,ext,needlogin); + return d; + } + + xstring ProcessDevCmd2(xstring cmd,xstring ext, xstring aurl=L"", bool needlogin=false) + { + if(aurl == L"") aurl = GetServerUrl(); + //alert(aurl); + xstring d = xaserver::ProcessCmd(aurl,L"uri.hxsoft.com/xaserver/dev:"+cmd,ext,needlogin); + return d; + } + + int GetProjectItem(int hItem) + { + int pitem = hItem; + xstring typ; + while(true) + { + int h =tv_gs.GetItemData(tv_gs.GetId(), pitem); + KXMLDOMElement e = trust(h as KXMLDOMElement); + typ = GetEleString(e, L"@tagname"); + if(typ==L"project")break; + pitem =tv_gs.GetParentItem(tv_gs.GetId(), pitem); + if(pitem<=0)break; + } + return pitem; + } + + int GetP2Item(int hItem) + { + int hDomainItem; + int hP2Item = hItem; + while(true) + { + hDomainItem =tv_gs.GetParentItem(tv_gs.GetId(), hP2Item); + if(xtreeview::GetParentItem(tv_gs.GetId(), hDomainItem)<=0)break; + hP2Item = hDomainItem; + } + return hP2Item; + } + + xstring GetItemGuid(int hItem) + { + int h =tv_gs.GetItemData(tv_gs.GetId(), hItem); + KXMLDOMElement e = trust(h as KXMLDOMElement); + xstring guid = e.GetAttribute(L"guid"); + return guid; + } + + xaserverarg GetDataArg(int hItem, xaserverarg arg) + { + int h =tv_gs.GetItemData(tv_gs.GetId(), hItem); + KXMLDOMElement e = trust(h as KXMLDOMElement); + xstring node = GetEleString(e, L"@tagname"); + //WriteLog(e.xml); + if(node==L"File" || node==L"file") + { + xstring caption = e.getAttribute(L"caption"); + + int hP2Item = 0; + int hDomainItem = 0; + if(xtreeview::GetParentItem(tv_gs.GetId(), hItem)<=0) + { + hDomainItem = hItem; + }else + { + hP2Item = GetP2Item(hItem); + hDomainItem =tv_gs.GetParentItem(tv_gs.GetId(), hP2Item); + } + + //find project folder + xstring prjguid=L""; + int pitem = GetProjectItem(hItem); + if(pitem > 0) + prjguid = GetItemGuid(pitem); + + //xaserverarg arg ; + //; + arg.AddArg(L"project.guid",prjguid); + if(hP2Item) + { + if(hP2Item != hItem) + { + xstring guid = e.getAttribute(L"guid"); + arg.AddArg(L"guid",guid); + } + xstring guid2 = GetItemGuid(hP2Item); + arg.AddArg(L"root.guid",guid2); + }else if(hDomainItem > 0) + { + xstring guid3 = GetItemGuid(hDomainItem); + arg.AddArg(L"domain.guid",guid3); + } + return 1; + } + else if(node==L"folder" || node==L"project") + return 2; + else + return 0; + } + + int SaveData(int hItem) + { + xcontrol xc = GetControl(L"surl"); + xstring surl = xc.GetText(); + if(surl == L"") + { + alert(L"请输入同步服务器地址"); + return 1; + } + + xstring name =tv_gs.GetItemLabel(hItem); + xaserverarg arg ; + ; + int ret = GetDataArg(hItem, arg); + //alert(arg.GetString()); + if(ret == 0) + { + WriteLog(name+L" 失败, 原因:获取工程或文件夹失败!"); + return -1; + } + else if(ret == 2) + { + ret = SynchFolder(hItem); + if(ret == -1) + WriteLog(name+L" 失败, 原因:获取文件数据失败!"); + else if(ret == 0) + WriteLog(name+L" 失败, 原因:复制文件失败!"); + else + WriteLog(name); + return -1; + } + SynchFolder(hItem); + arg.AddArg(L"__name",name); + arg.AddArg(L"__url",surl); + synchServer(arg); + if(name.right(3) == L".vx" || name.right(5) == L".xpage") + { + arg.AddArg(L"__name",name + L"[Code]"); + arg.AddArg(L"iscode",L"yes"); + synchServer(arg); + } + return 1; + } + + xstring GetFolderPath(int hItem) + { + int k = hItem; + if(k == 0) return L""; + xstring src = L""; + //xstring name = L""; + while(k > 0) + { + int h =tv_gs.GetItemData(tv_gs.GetId(), k); + k =tv_gs.GetParentItem(tv_gs.GetId(), k); + KXMLDOMElement e = trust(h as KXMLDOMElement); + xstring node = GetEleString(e, L"@tagname"); + if(node != L"File" && node != L"file") + { + xstring tmp = GetEleString(e, L"@src"); + //if(name == L"") name = GetEleString(e, L"@caption"); + if(tmp != L"") + { + SynchFolder(k); + if(src == L"") src = tmp; + else + { + int j = 1; + int s = tmp.length()(); + xstring t = tmp.right(j).left(1); + while(t != L"\\" && j < s) + { + //WriteLog(t); + j++; + t = tmp.right(j).left(1); + } + if(j >= s) + src = tmp+ L"\\" + src; + else + src = tmp.left(s - j)+ L"\\" + src; + } + } + } + } + if(src == L"") + { + //WriteLog(name+L" 同步失败, 原因:获取文件数据失败0!"); + return L""; + } + //if(src.left(9) ==L"Projects\\") src = src.mid(9, src.length()()); + src = L"\\" + src;//.replace(L"Projects\\",L""); + //WriteLog(src); + return src; + } + + int SynchFolder(int hItem) + { + xstring src = GetFolderPath(hItem); + if(src== L"") return -1; + if(xaserver::FileCopy(L"devfolder8001", src, L"devfolder5001", src) != 1) + return 0; + //WriteLog(src); + return 1; + } + + int synchServer(xaserverarg arg) + { + xstring name = arg.GetArgString(L"__name"); + xstring surl = arg.GetArgString(L"__url"); + xstring d = ProcessDevCmd(L"getobject",arg.GetString()); + if(d == L"") + { + WriteLog(name+L" 失败, 原因:获取文件数据失败!"); + return -1; + } + //WriteLog(d); + arg.AddArg(L"content",d); + ProcessDevCmd(L"saveobject",arg.GetString(), surl,true); + WriteLog(name); + return 1; + } + + int WriteLog(xstring str) + { + if(sContent == L"") + sContent = str; + else + sContent += L"\r\n" + str; + //alert(sContent); + dw_log.SetContent(sContent, L""); + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + SetAgent(); + return 1; + } + + int Add(int hItem) + { + if(nCount >99) + { + alert(L"同时同步的数量不能大于100个!"); + return 1; + } + nItems[nCount] = hItem; + nCount++; + return 1; + } + + int Del(int hItem) + { + for(int i=0; i<nCount; i++) + { + int p = nItems[i]; + if(p == hItem) break; + } + if(i<nCount) + { + for(int j=i; j<nCount - 1; j++) + { + int k = nItems[j + 1]; + nItems[j] = k; + } + nCount --; + } + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid != L"synch") return 1; + + HCURSOR hCursor = xutil::SetCursorWait(); + sContent = L""; + for(int i=0; i<nCount; i++) + { + int p = nItems[i]; + //int h =tv_gs.GetItemData(tv_gs.GetId(), p); + //KXMLDOMElement e = trust(h as KXMLDOMElement); + //alert(e.xml); + SaveData(p); + xtreeview::SetChecked(tv_gs.GetId(), p,0); + } + xutil::RestoreCursor(hCursor); + nCount = 0; + return 0; + } + + int OnTreeCheckBoxSel(TEvent* evt, LPARAM p) + { + TVNNMHDR* nmtv = (TVNNMHDR*)evt->notify.pnmh; + + int hItem = nmtv.FromItem; + + HCURSOR hCursor = xutil::SetCursorWait(); + int hwnd = nmtv.hwndFrom; + + int c = 1 -tv_gs.GetChecked(hwnd, hItem); + if(c == 1) + Add(hItem); + else + Del(hItem); + xutil::RestoreCursor(hCursor); + return 1; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&DeveloperSynch::OnXCommand); + //获取焦点事件,用于重置工具条 + //AttachEvent(L"WM_SETFOCUS",OnSetFocus); + AttachEvent(L"DevExplorer",L"TVN_CHECKBOXSEL", (FEvent)&DeveloperSynch::OnTreeCheckBoxSel); + AttachEvent(L"DevExplorer", L"TVN_ITEMEXPANDING", (FEvent)&DeveloperSynch::OnTreeExpanding); + return 1; + } + + int OnTreeExpanding(TEvent* evt, LPARAM lparam) + { + TVNNMHDR* nmtv = (TVNNMHDR*)evt->notify.pnmh; + int hItem = nmtv.itemNew.hItem; + int cItem=xtreeview::GetChildItem(tv_gs.GetId(), hItem); + if(cItem > 0) return 1; + int p =tv_gs.GetItemData(tv_gs.GetId(), hItem); + KXMLDOMElement ele = trust(p as KXMLDOMElement); + xstring src =GetEleString(ele, L"@src"); + xstring tagname =GetEleString(ele, L"@tagname"); + if (src == L"" || tagname == L"file" || tagname == L"File") return 1; + OnSetTree(hItem, GetFolderPath(hItem)); + + return 1; + } + + int OnSetTree(int pItem, KXMLDOMElement e) + { + KXMLDOMNodeList li=e.selectNodes(L"*"); + int i=0; + int s=li.length(); + for (i=0;i<s;i++){ + KXMLDOMElement ele= li.item(s - i - 1); + xstring caption = GetEleString(ele, L"@caption"); + xstring src =GetEleString(ele, L"@src"); + xstring image =GetEleString(ele, L"@image"); + int p = trust(ele as int); + int hItem=xtreeview::InsertItem(tv_gs.GetId(), pItem,0,caption,p,image.toInt()); + xstring tagname =GetEleString(ele, L"@tagname"); + if (src != L"" && tagname != L"file" && tagname != L"File") + xtreeview::SetItemChild1(tv_gs.GetId(), hItem,1); + OnSetTree(hItem, ele); + } + + return 1; + } + + int OnSetTree(int hItem, xstring src) + { + xml x=new xml; + + xaserverarg arg; + ; + arg.AddArg(L"src",src); + if(xaserver::ExecXQuery(GetServerUrl(),L"[Developer.Tree.xq]",arg.GetString(),x)!=1) + { + alert(L"读取节点失败!"); + return 1; + } + KXMLDOMElement e = x.documentElement(); + OnSetTree(hItem, e); + return 1; + } + + int onload() + { + nCount = 0; + tv_gs = GetControl(L"DevExplorer"); + dw_log = GetControl(L"xlog"); + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + OnSetTree(0, L"Projects/projects.xhw"); + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Flow3.cpp b/jrj/project/business/SystemSettings/Flow3.cpp new file mode 100644 index 0000000..b12854a --- /dev/null +++ b/jrj/project/business/SystemSettings/Flow3.cpp @@ -0,0 +1,476 @@ +#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) flow : public xframe + { + public: + xtreeview tv_1; + xlayersheet tab_1; + xdwgrid dw_flow; + xdwgrid dw_state; + xdwgrid dw_button; + xdwgrid dw_role; + xdwgrid dw_bill; + xdwgrid dw_scene; + xdwgrid dw_buttonright; + xdwgrid dw_datafieldright; + xstring flowid; + + xtreeview tv_folder; + + xnode m_agentNode; //Agent Condition + public: + flow(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static flow* CreateInstance(void* implPtr, void* hWnd) + { + flow* pWin = new flow(implPtr, (HWND)hWnd); + return pWin; + } + xstring GetSheetType(int index) + { + if (index == 0) return L"flowitem"; + else if (index == 1) return L"state"; + else if (index == 2) return L"actionrole"; + else if (index == 3) return L"button"; + else if (index == 4) return L"role"; + else if (index == 5) return L"bill"; + else if (index == 6) return L"scene"; + else if (index ==7) return L"fieldrole"; + else return L"unkown"; + } + xdwgrid GetSheetDwgrid(int index) + { + xstring typ = GetSheetType(index); + if(typ==L"flowitem") return dw_flow; + if(typ==L"actionrole") return dw_buttonright; + if(typ==L"state") return dw_state; + if(typ==L"button") return dw_button; + if(typ==L"role") return dw_role; + if(typ==L"bill") return dw_bill; + if(typ==L"scene") return dw_scene; + if(typ==L"fieldrole") return dw_datafieldright; + return 0; + } + xdwgrid GetSheetDbmap(int index) + { + xstring typ = GetSheetType(index); + if(typ==L"flowitem") return "flow.dbmap"; + if(typ==L"actionrole") return "workflow.actionrole.dbmap"; + if(typ==L"state") return "state.dbmap"; + if(typ==L"button") return "button.dbmap"; + if(typ==L"role") return "role.dbmap"; + if(typ==L"bill") return "bill.dbmap"; + if(typ==L"scene") return "scene.dbmap"; + if(typ==L"fieldrole") return "workflow.datarole.dbmap"; + return 0; + } + + xstring GetDwname(xstring typ) + { + if(typ==L"flowitem") return L"/sale/view/Flow3/template/flow"; + if(typ==L"actionrole") return L"/sale/view/Flow3/template/buttonright"; + if(typ==L"state") return L"/sale/view/Flow3/template/state"; + if(typ==L"button") return L"/sale/view/Flow3/template/button"; + if(typ==L"role") return L"/sale/view/Flow3/template/role"; + if(typ==L"bill") return L"/sale/view/Flow3/template/bill"; + if(typ==L"scene") return L"/sale/view/Flow3/template/scene"; + if(typ==L"fieldrole") return L"/sale/view/Flow3/template/datafieldright"; + return L""; + } + + 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 OnSave() + { + if(flowid==L"") return 1; + + xstring sdbmap; + xml x ; + + int index = tab_1.GetSheetIndex(); + sdbmap = (xstring)GetSheetDbmap(index); + xdwgrid dw_list = GetSheetDwgrid(index); + dw_list.DwUpdateAllToEx(x); + //trace(x.xml()); + + KXMLDOMNodeList ls = x.documentElement().selectNodes(L"*[@update.modify='1' and @update.new='1']"); + int len = ls.length(); + for(int k=0;k<len;k++) + { + KXMLDOMElement e; + if(ls.item(k).selectSingleNode(L"flowID")) + { + e = ls.item(k).selectSingleNode(L"flowID"); + e.setAttribute(L"update.modify",L"1"); + e.text() = flowid; + }else + { + e = x.createElement(L"flowID"); + e.setAttribute(L"update.modify",L"1"); + e.text() = flowid; + ls.item(k).appendChild(e); + } + } + + xaserverarg arg ; + ; + arg.AddArg(L"content",x.xml()); + arg.AddArg(L"sdbmap",sdbmap); + trace(x.xml()); + if(xurl::get(L"/sale/data/Flow3/save/flow", arg.GetString(),x)!=1) + { + xstring error = x.text(); + alert(L"err:"+error); + return 1; + } + + dw_list.ResetUpdateStatus(); + + //alert(x.xml()); + alert(L"保存成功!"); + + return 1; + } + int OnAddrow() + { + int i = tab_1.GetSheetIndex(); + xdwgrid dw_list = GetSheetDwgrid(i); + dw_list.InsertRow(0); + + return 1; + } + + int OnInsertrow() + { + int i = tab_1.GetSheetIndex(); + xdwgrid dw_list = GetSheetDwgrid(i); + dw_list.InsertRow(dw_list.GetRow()); + return 1; + } + + int OnDeleterow() + { + int i = tab_1.GetSheetIndex(); + xdwgrid dw_list = GetSheetDwgrid(i); + dw_list.DeleteRow(0); + + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + SetAgent(); + + //alert(evt.hWnd.toString()); + + return 1; + } + + int OnClicked(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + xstring colname=hdr.colname; + + //trace(colname); + + xaserverarg arg ; + ; + + xstring comdid =L""; + xstring data=L""; + xstring display=L""; + xdwgrid dw_list; + + int index = tab_1.GetSheetIndex(); + dw_list = GetSheetDwgrid(index); + + arg.AddArg(L"sdata",L""); + arg.AddArg(L"flowid",flowid); + + if(colname==L"billID") + { + arg.AddArg(L"stype",L"bill"); + arg.AddArg(L"datacolumn",L"billID"); + arg.AddArg(L"displaycolumn",L"billName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/bill"); + } + else if(colname==L"stateSource") + { + arg.AddArg(L"stype",L"state"); + arg.AddArg(L"datacolumn",L"stateID"); + arg.AddArg(L"displaycolumn",L"stateName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/state"); + } + else if(colname==L"state") + { + arg.AddArg(L"stype",L"state"); + arg.AddArg(L"datacolumn",L"stateID"); + arg.AddArg(L"displaycolumn",L"stateName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/state"); + } + else if(colname==L"stateTarget") + { + arg.AddArg(L"stype",L"state"); + arg.AddArg(L"datacolumn",L"stateID"); + arg.AddArg(L"displaycolumn",L"stateName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/state"); + } + else if(colname==L"roles") + { + arg.AddArg(L"stype",L"role"); + arg.AddArg(L"datacolumn",L"roleName"); + arg.AddArg(L"displaycolumn",L"roleName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/role"); + } + else if(colname==L"flowAction") + { + arg.AddArg(L"stype",L"button"); + arg.AddArg(L"datacolumn",L"buttonName"); + arg.AddArg(L"displaycolumn",L"buttonName"); + arg.AddArg(L"dwname",L"/sale/view/Flow3/template/button"); + } + else + return 1; + + OpenWindow(L"dev:xpage[FlowTermSelect.vx]",arg); + comdid = arg.GetArgString(L"comdid"); + + if(comdid==L"xmOk") + { + data = arg.GetArgString(L"data"); + display = arg.GetArgString(L"display"); + dw_list.SetItemDisplayString(row,colname,display); + dw_list.SetItemString(row,colname,data); + dw_list.Redraw(); + } + + return 1; + } + + int OnImport() + { + int i = tab_1.GetSheetIndex(); + xdwgrid dw_list = GetSheetDwgrid(i); + + xaserverarg arg ; + ; + arg.SetArg(L"stype",GetSheetType(i),L"xstring"); + arg.SetArg(L"sdata",L"ddd",L"xstring"); + arg.SetArg(L"flowID",flowid,L"xstring"); + int obj = cast(dw_list as int); + arg.SetArg(L"dwobj",obj.toString(),L"xstring"); + arg.SetArg(L"dwname",GetDwname(GetSheetType(i)),L"xstring"); + OpenWindow(L"dev:xpage[FlowTermImport.vx]",arg); + + return 1; + } + + int OnRetrieve() + { + if(flowid==L"") return 1; + + xml x ; + + xaserverarg arg ; + ; + + //int i = tab_1.GetSheetIndex(); + for(int i=0;i<7;i++) + { + //alert(i.toString()); + arg.SetArg(L"stype",GetSheetType(i),L"xstring"); + arg.SetArg(L"sdata",L"ddd",L"xstring"); + arg.SetArg(L"flowID",flowid,L"xstring"); + + //trace(arg.GetString()); + if (getUrl(L"/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1) + { + //trace(x.text()); + //return -1; + continue; + } + xdwgrid dw_list = GetSheetDwgrid(i); + dw_list.Retrieve(x); + dw_list.Redraw(); + } + + return 1; + } + + int OnTreeSelChanged(TEvent* evt, int p) + { + NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; + + HTREEITEM hItem = nmtv.itemNew.hItem; + KXMLDOMElement& e = *(KXMLDOMElement*)tv_1.GetItemData(hItem); + flowid = e.getAttribute(L"flowID"); + + HCURSOR hCursor = xutil::SetCursorWait(); + SetFlowChart(e); + OnRetrieve(); + xutil::RestoreCursor(hCursor); + + return 1; + } + + int OnTabSelectSheet(TEvent* evt, int p) + { + //OnRetrieve(); + + return 1; + } + + int SetFlowChart(KXMLDOMElement e) + { + xstring flowUrl = e.getAttribute(L"flowchart"); + xflowchart flowchart = GetControl(L"flowchart"); + xml f ; + + if(flowUrl != L"") + { + if(xaserver::FetchXml(flowUrl,L"",f)==1) + { + flowchart.LoadEx(f.documentElement()); + } + }else + { + f.loadXML(L"<sheet/>"); + flowchart.LoadEx(f.documentElement()); + } + return 1; + } + + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if (comdid == L"xmSave") + return OnSave(); + if (comdid == L"xmAddrow") + return OnAddrow(); + if (comdid == L"xmInsertrow") + return OnInsertrow(); + if (comdid == L"xmDeleterow") + return OnDeleterow(); + if (comdid == L"xmImport") + return OnImport(); + + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&flow::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&flow::OnSetFocus); + + AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&flow::OnTreeSelChanged); + AttachEvent(L"tab_1",L"LYSN_SELECTEDSHEET", (FEvent)&flow::OnTabSelectSheet); + AttachEvent(L"dw_flow",L"DWV_CLICKED", (FEvent)&flow::OnClicked); + AttachEvent(L"dw_buttonright",L"DWV_CLICKED", (FEvent)&flow::OnClicked); + AttachEvent(L"dw_button",L"DWV_CLICKED", (FEvent)&flow::OnClicked); + AttachEvent(L"dw_state",L"DWV_CLICKED", (FEvent)&flow::OnClicked); + + return 1; + } + + int CreateFlowFloder() + { + + xml x = ViewObject::RetrieveData(L"/sale/data/flow3/flowfolder"); + if(x) + { + KXMLDOMNodeList nlist = x.selectNodes(L"//item"); + int len = nlist.length(); + int hItem = 0; + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"flowName"); + xstring no = e.getAttribute(L"flowNo"); + xstring label = name;//no.trim() + L" " + name; + int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),22); + //tv_folder.SetItemChild(h,1); + } + } + + return 1; + } + + int onload() + { + flowid = L""; + tv_folder = GetControl(L"tv_folder"); + CreateFlowFloder(); + + tv_1 = GetControl(L"tv_1"); + tab_1 = GetControl(L"tab_1"); + dw_flow = GetControl(L"dw_flow"); + dw_flow.openUrl(L"/sale/view/Flow3/template/flow"); + dw_state = GetControl(L"dw_state"); + dw_state.openUrl(L"/sale/view/Flow3/template/state"); + dw_button = GetControl(L"dw_button"); + dw_button.openUrl(L"/sale/view/Flow3/template/button"); + dw_role = GetControl(L"dw_role"); + dw_role.openUrl(L"/sale/view/Flow3/template/role"); + dw_bill = GetControl(L"dw_bill"); + dw_bill.openUrl(L"/sale/view/Flow3/template/bill"); + dw_scene = GetControl(L"dw_scene"); + dw_scene.openUrl(L"/sale/view/Flow3/template/scene"); + dw_buttonright = GetControl(L"dw_buttonright"); + dw_buttonright.openUrl(L"/sale/view/Flow3/template/buttonright"); + dw_datafieldright = GetControl(L"dw_datafieldright"); + dw_datafieldright.openUrl(L"/sale/view/Flow3/template/datafieldright"); + + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + SetAgent(); + + OnRetrieve(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/FlowTermImport.cpp b/jrj/project/business/SystemSettings/FlowTermImport.cpp new file mode 100644 index 0000000..13cdf5c --- /dev/null +++ b/jrj/project/business/SystemSettings/FlowTermImport.cpp @@ -0,0 +1,177 @@ +#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) FlowTermImport : public xframe + { + public: + xdwgrid dw_list; + xstring stype; + xstring sdata; + xstring flowid; + xstring datacolumn; + xstring displaycolumn; + xdwgrid dw_obj; + + xnode m_agentNode; //Agent Condition + public: + FlowTermImport(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static FlowTermImport* CreateInstance(void* implPtr, void* hWnd) + { + FlowTermImport* pWin = new FlowTermImport(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 OnOK(xstring comdid) + { + int row = dw_list.GetNextSelectRow(1); + if(row < 1 && dw_list.GetRowCount()==1) row = 1; + if (row<1) + { + alert(L"请选择项!"); + return 1; + } + + while (row>0) + { + int nrow = dw_obj.InsertRow(0); + int columnCount = dw_obj.GetColumnCount(); + for(int i=1;i<=columnCount;i++) + { + if(dw_list.GetColumnName(i)==L"guid") continue; + dw_obj.SetItemString(nrow,i,dw_list.GetItemString(row,i)); + if(dw_list.GetItemDisplayString(row,i)!=L"") + dw_obj.SetItemDisplayString(nrow,i,dw_list.GetItemDisplayString(row,i)); + } + row = dw_list.GetNextSelectRow(row + 1); + } + + CloseWindow(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if (comdid==L"xmOk") + { + OnOK(comdid); + return 1; + } + else if (comdid==L"xmCancel") + { + CloseWindow(); + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&FlowTermImport::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&FlowTermImport::OnSetFocus); + return 1; + } + + int OnRetrieve() + { + xml x ; + + xaserverarg arg ; + ; + + arg.AddArg(L"stype",stype); + arg.AddArg(L"sdata",sdata); + arg.AddArg(L"flowID",flowid); + + if (getUrl(L"/sale/data/Flow3/retrieve/flowimport",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + } + return 1; + } + + int onload() + { + SetArg(); + dw_list = GetControl(L"dw_list"); + //dw_list.openUrl(L"xxx"); + if(GetWinParam()) + { + xaserverarg arg = GetArg(); + stype = arg.GetArgString(L"stype"); + sdata = arg.GetArgString(L"sdata"); + flowid = arg.GetArgString(L"flowid"); + + xstring dwname = arg.GetArgString(L"dwname"); + int dwobj = arg.GetArgString(L"dwobj").toInt(); + dw_obj = cast(dwobj as xdwgrid); + + dw_list.openUrl(dwname); + OnRetrieve(); + dw_list.SetSelectionMode(3); + } + + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + //SetAgent(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/FlowTermSelect.cpp b/jrj/project/business/SystemSettings/FlowTermSelect.cpp new file mode 100644 index 0000000..ce9d2bb --- /dev/null +++ b/jrj/project/business/SystemSettings/FlowTermSelect.cpp @@ -0,0 +1,176 @@ +#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) FlowTermSelect : public xframe + { + public: + xdwgrid dw_list; + xstring stype; + xstring sdata; + xstring flowid; + xstring datacolumn; + xstring displaycolumn; + + xnode m_agentNode; //Agent Condition + public: + FlowTermSelect(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static FlowTermSelect* CreateInstance(void* implPtr, void* hWnd) + { + FlowTermSelect* pWin = new FlowTermSelect(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 OnOK(xstring comdid) + { + xaserverarg arg ; + arg = GetArg(); + + arg.AddArg(L"comdid",comdid); + + int row = dw_list.GetNextSelectRow(1); + if(row < 1 && dw_list.GetRowCount()==1) row = 1; + if (row<1) + { + alert(L"请选择项!"); + return 1; + } + + while (row>0) + { + KXMLDOMElement e = dw_list.GetRowElement(row); + xstring data = e.selectSingleNode(datacolumn).text()+(xstring)L""; + xstring display = e.selectSingleNode(displaycolumn).text()+ (xstring)L""; + arg.AddArg(L"data",data); + arg.AddArg(L"display",display); + row = dw_list.GetNextSelectRow(row + 1); + } + CloseWindow(); + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if (comdid==L"xmOk") + { + OnOK(comdid); + return 1; + } + else if (comdid==L"xmCancel") + { + CloseWindow(); + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&FlowTermSelect::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&FlowTermSelect::OnSetFocus); + return 1; + } + + int OnRetrieve() + { + xml x ; + + xaserverarg arg ; + ; + + arg.AddArg(L"stype",stype); + arg.AddArg(L"sdata",sdata); + arg.AddArg(L"flowID",flowid); + + if (getUrl(L"/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + } + return 1; + } + + int onload() + { + SetArg(); + dw_list = GetControl(L"dw_list"); + //dw_list.openUrl(L"xxx"); + if(GetWinParam()) + { + xaserverarg arg = GetArg(); + stype = arg.GetArgString(L"stype"); + sdata = arg.GetArgString(L"sdata"); + flowid = arg.GetArgString(L"flowid"); + + datacolumn = arg.GetArgString(L"datacolumn"); + displaycolumn = arg.GetArgString(L"displaycolumn"); + + xstring dwname = arg.GetArgString(L"dwname"); + dw_list.openUrl(dwname); + OnRetrieve(); + dw_list.SetSelectionMode(1); + } + + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + //SetAgent(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/GroupManagerList_A.cpp b/jrj/project/business/SystemSettings/GroupManagerList_A.cpp new file mode 100644 index 0000000..ca9b3d6 --- /dev/null +++ b/jrj/project/business/SystemSettings/GroupManagerList_A.cpp @@ -0,0 +1,1576 @@ +#include <wobject/xstring.hpp> +#include <wobject/xdouble.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> +#include <xcontrol/ximageview.hpp> + +#include "vbusiness/vframe/maint.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" +#include "viewobject/saleorder.view.hpp" +#include "viewobject/quote.view.hpp" +#include "viewobject/shoppingcart.view.hpp" +#include "viewobject/productLibrary.view.hpp" +#include "xcontrol/xcheckbox.hpp" +#include "xcontrol/xshtml.hpp" + +class __declspec(dllexport) ProductLibrary4Win : public xframe +{ +public: + //产品库产品列表 + xdwgrid dw_list; + //购物车产品列表 + xdwgrid dwc_list; + + //产品缓存对象 + //xdataset g_xdoc_product; + //xdataset g_xdoc_shoppingcart; + + xcombobox cbx_goodscar; + //是否多选 + + xnode m_agentNode; //Agent Condition + xtreeview tv_folder; + xstring agentFor; + KXMLDOMElement imageElement; + xstring m_customer; + +public: + ProductLibrary4Win(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} +public: + static ProductLibrary4Win* CreateInstance(void* implPtr, void* hWnd) + { + ProductLibrary4Win* pWin = new ProductLibrary4Win(implPtr, (HWND)hWnd); + return pWin; + } +public: + int FillGoodsCarList() + { + xcombobox xc = GetControl(L"frame:cbx_goodscar"); + if (!xc) return 0; + xml x = ShoppingCartView::GetRoleList(); + if (!x) return 0; + xc.SetText(L"==选择购物车==L"); + + KXMLDOMNodeList nlist = x.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"); + xc.AddItem( name); + } + return 1; + } + + 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) + { + bstring s = agent.xml(); + m_agentNode = SetAgentNode(anode, s); + //FillGoodsCarList(); + } + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent * evt, int param) + { + //重置工具条 + SetAgent(); + return 1; + } + + KXMLDOMElement OnGetCarListRowElement(int row = 0) + { + if (row < 1) row = dwc_list.GetRow(); + if (row < 1 || row > dwc_list.GetRowCount()) return KXMLDOMElement(); + KXMLDOMElement e = dw_list.GetRowElement(row); + return e; + } + + int OnShowImage(xstring skuid) + { + ximageview im = GetControl(L"im1"); + //im.RemoveImage(); + im.Reset(); + + xml xp ; + xaserverarg arg_pic; + arg_pic.AddArg(L"SKUID", skuid); + if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU", arg_pic.GetString(), xp) != 1) + { + trace(xstring(L"xxx")+xp.xml()); + } + else + { + //trace(skuid+L" "+xp.GetXml()); + imageElement = xp.documentElement(); + KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image"); + int lenp = nlistp.length(); + for (int ip = 0; ip < lenp; ip++) + { + KXMLDOMElement xitem = nlistp.item(ip); + xstring picname = xitem.selectSingleNode(L"PicPath").text(); + xstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); + if (picname == L"/business/products/Thumbs//") + picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; + im.AddImages(picname, (LPTSTR)L""); + } + im.Redraw(); + //win32::SendMessage(im.GetId(),0x000f,0,1); + //win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true); + } + return 1; + } + + int OnShowImage(xstring skuid, xstring customerItemNo) + { + ximageview im = GetControl(L"im1"); + //im.RemoveImage(); + im.Reset(); + + xml xp ; + xaserverarg arg_pic ; + arg_pic.AddArg(L"SKUID", skuid); + arg_pic.AddArg(L"CustomerID", m_customer); + arg_pic.AddArg(L"CustomerItemNo", customerItemNo); + + if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKU", arg_pic.GetString(), xp) != 1) + { + trace(L"error:" + xstring(xp.xml(),true)); + } + else + { + imageElement = xp.documentElement(); + KXMLDOMNodeList nlistp = xp.selectNodes(L"ImageList/image"); + int lenp = nlistp.length(); + for (int ip = 0; ip < lenp; ip++) + { + KXMLDOMElement xitem = nlistp.item(ip); + bstring picname = xitem.selectSingleNode(L"PicPath").text(); + bstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); + if (picname == L"/business/products/Thumbs//") + picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; + im.AddImages(picname, L""); + } + im.Redraw(); + } + return 1; + } + + int OnRowChanged(TEvent * evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + + xshtml xs = GetControl(L"html_detail"); + xstring html = makeHtml(row); + xs.SetContent(html); + xs.Redraw(); + + xstring id = dw_list.GetGuid(row); + OnShowImage(id); + trace(id); + return 1; + } + + int OnGoodsCarRowChanged(TEvent * evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + + xshtml xs = GetControl(L"html_detail"); + xstring html = makeGoodscarHtml(row); + xs.SetContent(html); + xs.Redraw(); + if (m_customer) + { + xstring id = dw_list.GetItemString(row, L"SKUID"); + xstring customerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); + OnShowImage(id, customerItemNo); + } + + return 1; + } + + int DeleteRow(int row) + { + int IDOK = 1; + int MB_OKCANCEL = 1; + int MB_ICONQUESTION = 32; + if (MessageBoxW(GetHWND(), L"确认删除指定的项,删除后将不能恢复?", L"提示", MB_OKCANCEL | MB_ICONQUESTION) != IDOK) return 1; + xstring id = dw_list.GetGuid(row); + + if (ProductLibraryView::DeleteItem(id) == 1) dw_list.DeleteRow(0); + return 1; + } + + int SetSelectState(xdwgrid dw_obj, int state) + { + if (state == 1) + { + dw_obj.SetSelectionMode(3); + } + else if (state == -1) + { + dw_obj.SelectRow(0, false); + dw_obj.SetSelectionMode(0); + } + return 1; + } + int OnCkbCLick(TEvent * evt, int p) + { + xcheckbox cbx_1 = GetControl(L"frame:cbx1"); + int state = cbx_1.GetCheck(); + return SetSelectState(dw_list, state); + } + + int OnCkbCLick2(TEvent * evt, int p) + { + xcheckbox cbx_2 = GetControl(L"frame:cbx2"); + int state = cbx_2.GetCheck(); + return SetSelectState(dwc_list, state); + } + + xml GetGoodsPropList(xstring guid) + { + xml x; + xaserverarg arg; + arg.AddArg(L"guid", guid); + if (xurl::get(L"/sale/data/SO/goods/goodsprop/list", arg.GetString(), x) != 1) + { + bstring error = x.text(); + alert(error); + } + return x; + } + + xml GetGoodsPropListEx(xstring guid) + { + xml x; + xstring fields = L"<data>"; + //fields +=L"<field name='HighestPrice' label='最高价'/>"; + //fields +=L"<field name='LowestPrice' label='最低价'/>"; + + //fields +=L"<field name='BulkPrice' label='散货价'/>"; + //fields +=L"<field name='CardPrice' label='纸卡价'/>"; + //fields +=L"<field name='BuyPrice' label='采购价'/>"; + //fields +=L"<field name='SupplierID' label='货源'/>"; + + fields += L"<field name='Packing' label='包装方式'/>"; + fields += L"<field name='PackingRate' label='每箱数量'/>"; + fields += L"<field name='VolumeDesc' label='包装尺码'/>"; + fields += L"<field name='GWPerPkg' label='毛重'/>"; + fields += L"<field name='NWPerPkg' label='净重'/>"; + //fields +=L"<field name='DeveloperID' label='开发人员'/>"; + fields += L"<field name='AttributeValue_1' label='产品属性'/>"; + //fields +=L"<field name='Remark' label='备注'/>"; + + fields += L"</data>"; + x.loadXML(fields); + + return x; + } + + xstring makeHtml(int row) + { + xstring id = dw_list.GetItemString(row, L"@guid"); + xml x = GetGoodsPropList(id); + xml x1 = GetGoodsPropListEx(id); + + xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >编号:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"SKUNo") + + L"</span> <span style='font-weight:700;width:50;font-size:10pt' >类项:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"RefNo") + + L"</span></div>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >公司型号:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"GoodsNo") + + L"</span></div>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >品名:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"CName") + + L"</span></div>"; + if (dw_list.GetItemString(row, L"CSpec") != L"") + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >规格:</span><span style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"CSpec") + + L"</span></div>"; + + KXMLDOMNodeList fieldsEx = x1.selectNodes(L"data/field"); + xstring ls_detail = L""; + xstring ls_item = L""; + xstring name; + xstring label; + int len = fieldsEx.length(); + int i = 0; + + for (i = 0; i < len; true) + { + int cnt = 0; + ls_item = L""; + while (cnt < 2) + { + name = fieldsEx.item(i).selectSingleNode(L"@name").text(); + label = fieldsEx.item(i).selectSingleNode(L"@label").text(); + ls_item += L"<td>" + label + L"</td>" + L"<td style='text-align:center'>" + dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; + cnt++; + i++; + if (i == len)break; + } + ls_detail += L"<tr>" + ls_item + L"</tr>"; + } + html += (xstring)L"<div style='margin-left:8px;margin-right:16px;'>" + + + L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" + + ls_detail + + L"</table>" + + L"</div>"; + + xstring ls_star = L""; + KXMLDOMNodeList fields = x.selectNodes(L"data/field"); + len = fields.length(); + + ls_detail = L""; + if (len > 0) + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >技术要求:</span></div>"; + for (i = 0; i < len; true) + { + ls_item = L""; + + int count = 0; + while (count < 2) + { + name = fields.item(i).selectSingleNode(L"@name").text(); + label = fields.item(i).selectSingleNode(L"@label").text(); + if (name == L"QualityTerm" || name == L"PackTerm" || label == L"质量" || label == L"包装质量" || label == L"技术要求") + { + i++; + if (i >= len)count = 2; + continue; + } + else if (dw_list.GetItemString( row, (LPCTSTR)name) == L"") + { + KXMLDOMNodeList options = fields.item(i).selectNodes(L"item"); + int tlen = options.length(); + xstring terms = L""; + for (int k = 0; k < tlen; k++) + { + if (xstring(options.item(k).text())) + { + if (k > 0) terms += L", L"; + terms += (xstring)L"[" + options.item(k).text() + L"]"; + } + } + ls_star += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >" + label + L"*:</span><span style='width:90;font-size:10pt'>" + terms + L"</span></div>"; + } + else + { + ls_item = L"<td>" + label + L"</td>" + L"<td>" + dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; + count++; + } + i++; + if (i >= len)count = 2; + } + ls_item = L"<tr>" + ls_item + L"</tr>"; + ls_detail += ls_item; + } + + html += (xstring)L"<div style='margin-left:8px;margin-right:16px;'>" + + +L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" + + ls_detail + + L"</table>" + + L"</div>"; + if (dw_list.GetItemString(row, L"QualityTerm") != L"") + { + html += L"<div style='height:12px'/>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >质量:</span></div>"; + html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row, L"QualityTerm") + L"</span></div>"; + } + + if (dw_list.GetItemString(row, L"PackTerm") != L"") + { + html += L"<div style='height:12px'/>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >包装质量:</span></div>"; + html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row, L"PackTerm") + L"</span></div>"; + } + + if (dw_list.GetItemString( row, L"Remark") != L"") + { + //html += L"<div style='height:12px'/>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >备注:</span></div>"; + html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString( row, L"Remark") + L"</span></div>"; + } + + html += L"<div style='height:24px'/>"; + + //星标项 + html += ls_star; + + //显示图片 + /* + if (id != L"") + { + xml xp=new xml; + xp.setNativePointer(xml::CreateInstance()); + xaserverarg arg_pic=new xaserverarg; + arg_pic.setNativePointer(arg_pic.CreateInstance()); + arg_pic.AddArg(L"SKUID",id); + if(url::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1) + { + trace(L"xxx",xp.GetXml()); + }else { + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >图片:</span>" ; + KXMLDOMElement ep= xp.selectSingleNode(L"ImageList"); + if (ep) + { + if (ep.SelectNodes(L"image")){ + KXMLDOMNodeList nlistp = ep.SelectNodes(L"image"); + int ip=0; + int lenp = nlistp.length; + for(ip=0;ip<lenp;ip++) + { + KXMLDOMElement xitemp = nlistp.item(ip); + xstring filename = xitemp.selectSingleNode(L"PicPath").text; + //trace(filename); + html += L"<control visible='layer' controlclass='ximage' data='' src='http://192.168.7.241:7001" + filename +L"'/>"; + } + } + } + html += L"</div>"; + } + }else { + xstring picname = L"1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,L"ImgName"); //ItemID+L".jpg"; + xstring str = picname.mid(0,2); + str = str.upper(); + xstring serversrc =L"http://192.168.7.241:1001/business/products/chanpin/"+str+L"/"+picname; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >图片:</span>"; + html += L"<control visible='layer' controlclass='ximage' data='' src='"+ serversrc +L"'/></div>"; + } + */ + html += L"</body></html>"; + //trace(html); + return html; + } + + xstring makeGoodscarHtml(int row) + { + xstring No = dwc_list.GetItemString(row, L"RefNo");//获取属性值id + xml x = GetGoodsPropList(No); + + xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >编号:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"No") + + L"</span></div>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >品名:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CName") + + L"</span></div>"; + html += L"<div ><span style='font-weight:700;width:50;font-size:10pt' >规格:</span><span style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CSpec") + + L"</span></div>"; + + KXMLDOMNodeList fields = x.selectNodes(L"data/field"); + int len = fields.length(); + html += (xstring)L"<table>" + + L"<colgroup span='1' width='80'/>" + + L"<colgroup span='1' width='120'/>" + + L"<colgroup span='1' width='420'/>"; + html += L"<tr>"; + html += L"<td style='text-align:center'>编号</td><td style='text-align:center'>项目</td><td style='text-align:center'>内容</td>"; + html += L"</tr>"; + for (int i = 0; i < len; i++) + { + xstring name = fields.item(i).selectSingleNode(L"@name").text(); + xstring label = fields.item(i).selectSingleNode(L"@label").text(); + html += L"<tr>"; + if (i == 0) + html += L"<td rowspan='" + xstring(len) + L"'>" + No + L"</td><td >" + label + L"</td><td >" + L"</td>"; + else + html += L"<td >" + label + L"</td><td >" +dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; + html += L"</tr>"; + } + + html += L"<tr>"; + html += L"<td rowspan='3'>" +dw_list.GetItemString( row, L"PackCode") + L"</td><td >包装方式</td><td >" + + dw_list.GetItemString(row, L"CPack") + L"</td>"; + html += L"</tr>"; + html += L"<tr height='48'>"; + html += L"<td >包装要求</td><td >" +dw_list.GetItemString( row, L"PackQualityTerm") + L"</td>"; + html += L"</tr>"; + html += L"<tr>"; + html += L"<td >侧唛</td><td ></td>"; + html += L"</tr>"; + + html += L"<tr height='72'>"; + html += L"<td>" +dw_list.GetItemString( row, L"QualityCode") + L"</td><td >质量要求</td><td >" + + dw_list.GetItemString(row, L"QualityTerm") + L"</td>"; + html += L"</tr>"; + + html += L"</table>"; + + html += L"</body></html>"; + return html; + + } + + int CarGoodsDelete() + { + return 1; + } + + xstring Up(xstring name) { + xstring str = name.mid(0, 2); + str = str.toUpper(); + return xaserver::UploadFile(L"product" + str, name + L".jpg", GetHWND(), L"", false); + } + + int OnAddImage() { + if (m_customer != L"") return OnAddImageEx(); + int row = dw_list.GetNextSelectRow(1); + if (row < 1) row = dw_list.GetRow(); + if (row < 1 || row > dw_list.GetRowCount()) return 0; + + KXMLDOMElement e = dw_list.GetRowElement(row); + xstring skuid = dw_list.GetItemString( row, L"@guid"); + xstring SKUNo = dw_list.GetItemString( row, L"SKUNo"); + xstring id = ViewObject::GetGuid(); + xstring ret1 = Up(id); + if (ret1 == L"-1") return -1; + if (ret1 == L"0") + { + alert(L"上传图片失败"); + return -1; + } + xstring originfile = ret1; + xstring ext = originfile.right(7); + if (ext.find(L".") >= 0) + ext = ext.mid(ext.find(L".") + 1, 9999); + else + ext = L"jpg"; + + // 图片名加入数据库 + xml x ; + x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" + + L"<ProductPictureID>" + id + L"</ProductPictureID>" + + L"<OriginFile>" + originfile + L"</OriginFile>" + + L"<FileExt>" + ext + L"</FileExt>" + + L"<SKUID>" + skuid + L"</SKUID>" + + L"<Name>[" + SKUNo.trim() + L"]</Name>" + + L"<FileName>" + id + L".jpg</FileName>" + + L"</Item>" + ); + + xaserverarg arg; + arg.AddArg(L"content", x.xml()); + if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) + { + alert(x.text()); + return -1; + } + dw_list.SetItemString(row, L"pic", L"*"); + dw_list.Redraw(); + //刷新一下界面,显示图片 + OnShowImage(skuid); + return 1; + } + + int OnAddImageEx() { + int row = dwc_list.GetNextSelectRow(1); + if (row < 1) row = dwc_list.GetRow(); + if (row < 1 || row > dwc_list.GetRowCount()) return 0; + + KXMLDOMElement e = dw_list.GetRowElement( row); + xstring skuid =dw_list.GetItemString( row, L"SKUID"); + xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring"); + xstring CustomerID = m_customer; + xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); + xstring id = ViewObject::GetGuid(); + xstring ret1 = Up(id); + if (ret1 == L"-1") return -1; + if (ret1 == L"0") + { + alert(L"上传图片失败"); + return -1; + } + xstring originfile = ret1; + xstring ext = originfile.right(7); + if (ext.find(L".") >= 0) + ext = ext.mid(ext.find(L".") + 1, 9999); + else + ext = L"jpg"; + + // 图片名加入数据库 + xml x; + x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" + + L"<ProductPictureID>" + id + L"</ProductPictureID>" + + L"<OriginFile>" + originfile + L"</OriginFile>" + + L"<FileExt>" + ext + L"</FileExt>" + + L"<SKUID>" + skuid + L"</SKUID>" + + L"<CustomerItemNo>" + CustomerItemNo + L"</CustomerItemNo>" + + L"<CustomerID>" + CustomerID + L"</CustomerID>" + + L"<Name>[" + SKUNo.trim() + L"]</Name>" + + L"<FileName>" + id + L".jpg</FileName>" + + L"</Item>" + ); + + xaserverarg arg; + arg.AddArg(L"content", x.xml()); + if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) + { + alert(x.text()); + return -1; + } + dwc_list.SetItemString(row, L"pic", L"*"); + dwc_list.Redraw(); + //刷新一下界面,显示图片 + OnShowImage(skuid, CustomerItemNo); + return 1; + } + + int OnDeleteImageEx() + { + int row = dwc_list.GetNextSelectRow(1); + if (row < 1) row = dwc_list.GetRow(); + if (row < 1 || row > dwc_list.GetRowCount()) return 0; + + ximageview im = GetControl(L"im1"); + int index = im.GetSelectIndex(); + int count = im.GetImageCount(); + + if (count < 1) return 1; + + KXMLDOMNodeList images = imageElement.selectNodes(L"image"); + int length = images.length(); + if (length < index) return 1; + + int MB_OKCANCEL = 0x00000001; + int IDOK = 1; + if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1; + + xstring id = images.item(index).selectSingleNode(L"@guid").text(); + + xml x ; + xaserverarg arg; + arg.setNativePointer(arg.CreateInstance()); + xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>"; + arg.AddArg(L"content", str); + if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) + { + alert(x.text()); + return -1; + } + if (count == 1) + { + dwc_list.SetItemString(row, L"pic", L""); + dwc_list.Redraw(); + } + + xstring skuid =dw_list.GetItemString( row, L"SKUID"); + xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring"); + xstring CustomerID = m_customer; + xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); + OnShowImage(skuid, CustomerItemNo); + + return 1; + } + + int OnDeleteImage() { + if (m_customer != L"") return OnDeleteImageEx(); + + int row = dw_list.GetNextSelectRow(1); + if (row < 1) row = dw_list.GetRow(); + if (row < 1 || row > dw_list.GetRowCount()) return 0; + + ximageview im = GetControl(L"im1"); + int index = im.GetSelectIndex(); + int count = im.GetImageCount(); + + if (count < 1) return 1; + + KXMLDOMNodeList images = imageElement.selectNodes(L"image"); + int length = images.length(); + if (length < index) return 1; + + int MB_OKCANCEL = 0x00000001; + int IDOK = 1; + if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1; + + xstring id = images.item(index).selectSingleNode(L"@guid").text(); + + xml x; + xaserverarg arg; + xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>"; + arg.AddArg(L"content", str); + if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) + { + alert(x.text()); + return -1; + } + if (count == 1) + { + dw_list.SetItemString(row, L"pic", L""); + dw_list.Redraw(); + } + + KXMLDOMElement e1 = dw_list.GetRowElement(row); + xstring skuid = e1.getAttribute(L"guid"); + OnShowImage(skuid); + + return 1; + } + int OnPreviewImage() + { + int row = dw_list.GetNextSelectRow(1); + if (row < 1) row = dw_list.GetRow(); + if (row < 1 || row > dw_list.GetRowCount()) return 0; + KXMLDOMElement e = dw_list.GetRowElement(row); + //KXMLDOMElement e = dw_list.GetRowElement(row); + //alert(e.xml); + xstring id = dw_list.GetItemString( row, L"@guid"); + //alert(id); + + HTREEITEM hItem = tv_folder.GetSelectedItem(); + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + xstring categoryid = e1.selectSingleNode(L"@guid").text(); + //alert(categoryid); + xaserverarg* arg = new xaserverarg; + arg->AddArg(L"SKUID", id); + arg->AddArg(L"CategoryID", categoryid); + + OpenWindow(L"dev:xpage[PictureView.Product3.vx]", (LPARAM)arg); + + return 1; + } + + int ItemMaint() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + KXMLDOMElement e = tv_folder.GetItemData(hItem); + //xstring no = e.getAttribute(L"no"); + //if(no==L"") return 1; + xstring guid = e.getAttribute(L"guid"); + if (guid == L"") return 1; + + /* + if(no==L"NP0000FS" || no==L"UP0000FS") + { + OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]"); + }else + { + int pr = g_xdoc_product; + OpenWindow(L"dev:xpage[ProductLibraryItemMaint.vx]",pr); + } + */ + //KXMLDOMElement ele = g_xdoc_product.getRowElement(L"data/Item", 1); + //alert(ele.xml); +#ifdef shouldfinished + int pr = g_xdoc_product; + OpenWindow(L"dev:xpage[ProductLibraryItemMaint3.vx]", pr); +#endif + return 1; + } + + int ItemAdd() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + + KXMLDOMElement e = tv_folder.GetItemData(hItem); + //alert(e.xml); + /*xstring no = e.getAttribute(L"no"); + if(no==L"") return 1; + if(no==L"NP0000FS" || no==L"UP0000FS") + { + OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]"); + }else + { + int p = no; + OpenWindow(L"dev:xpage[SO.autolist.goodslib.add.vx]",p); + }*/ + xstring guid = e.getAttribute(L"guid"); + if (guid == L"") return 1; + xaserverarg arg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"guid", e.getAttribute(L"guid")); + if (name == L"个人产品") + arg.AddArg(L"FolderID", e.getAttribute(L"guid")); + else + arg.AddArg(L"CategoryID", e.getAttribute(L"guid")); + xstring No = e.getAttribute(L"CategoryNo"); + if (No == L"") No = e.getAttribute(L"no"); + xstring Name = e.getAttribute(L"CName"); + if (Name == L"") Name = e.getAttribute(L"cname"); + arg.AddArg(L"No", No); + arg.AddArg(L"CName", Name); + OpenWindow(L"dev:xpage[Quick.Input.NewProduct.vx]", (LPARAM)&arg); + + if (arg.GetArgString(L"data.modify") == L"1")RetrieveData(); + + return 1; + } + + int OnAddFolder() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + xstring selectname = tv_folder.GetItemLabel(hItem); + + xaserverarg arg; + if (hItem != hTopItem) + { + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring folder = e.getAttribute(L"guid"); + if (folder != L"") + { + arg.AddArg(L"parentCategoryID", folder); + OpenWindow(L"dev:xpage[UserFolderMaint.vx]",(LPARAM)&arg); + /*if(arg.GetArgString(L"FolderID")!=L"") + { + int child = tv_folder.GetChildItem(hItem); + if(!child) + { + ExpandItem(hItem); + } + else + { + KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement); + KXMLDOMElement e2 = e1.cloneNode(0); + e2. + } + }*/ + } + } + + return 1; + } + + int OnMaintFolder() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + xstring selectname = tv_folder.GetItemLabel(hItem); + + xaserverarg arg; + if (name == L"个人库" && selectname == L"新产品" && tv_folder.GetParentItem(hItem) == hTopItem) return 1; + if (hItem != hTopItem) + { + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring folder = e.getAttribute(L"guid"); + if (folder != L"") + { + arg.AddArg(L"CategoryID", folder); + OpenWindow(L"dev:xpage[UserFolderMaint.vx]", (LPARAM)&arg); + if (arg.GetArgString(L"label") != L"") + { + tv_folder.SetItemLabel(hItem, arg.GetArgString(L"label")); + } + } + } + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + int hCursor; + xstring name = L""; + if (comdid == L"xmRefresh") + { + return RetrieveData(); + } + else if (comdid == L"xmCarGoodsDelete") + { + CarGoodsDelete(); + return 1; + } + else if (comdid == L"xmAddFolder") + { + return OnAddFolder(); + } + else if (comdid == L"xmMaintFolder") + { + return OnMaintFolder(); + } + else if (comdid == L"xmClose") + { + CloseWindow(); + return 1; + } + else if (comdid == L"xmCarGoodsMaint") + { +#ifdef shouldfinish + OpenWindow(L"dev:xpage[ShoppingCartProductMaint.vx]", trust(g_xdoc_shoppingcart as int)); +#endif + return 1; + } + else if (comdid == L"xmCarMaint") + { + OpenWindow(L"dev:xpage[SO.autolist.Shopcar.vx]"); + return 1; + } + else if (comdid == L"xmSaleOrder") + { + int rw = dwc_list.GetNextSelectRow(1); + xstring content = L"<data>"; + while (rw > 0) + { + KXMLDOMElement xe = OnGetCarListRowElement(rw); + content += xe.xml(); + rw = dwc_list.GetNextSelectRow(rw + 1); + + } + content += L"</data>"; + xaserverarg carg; + carg.setNativePointer(carg.CreateInstance()); + carg.AddArg(L"content", content); + OpenWindow(L"dev:xpage[SO.Simulation.Import.vx]", (LPARAM) & carg); + return 1; + } + else if (comdid == L"xmEnquiry") + { + int rw = dwc_list.GetNextSelectRow(1); + xstring content = L"<data>"; + while (rw > 0) + { + KXMLDOMElement xe = OnGetCarListRowElement(rw); + content += xe.xml(); + rw = dwc_list.GetNextSelectRow(rw + 1); + } + content += L"</data>"; + xaserverarg carg; + carg.setNativePointer(carg.CreateInstance()); + carg.AddArg(L"content", content); + OpenWindow(L"dev:xpage[Enquiry.Import.vx]", (LPARAM)&carg); + return 1; + } + else if (comdid == L"xmPurchar") + { + int rw = dwc_list.GetNextSelectRow(1); + xstring content = L"<data>"; + while (rw > 0) + { + KXMLDOMElement xe = OnGetCarListRowElement(rw); + content += xe.xml(); + rw = dwc_list.GetNextSelectRow(rw + 1); + } + content += L"</data>"; + xaserverarg carg ; + carg.AddArg(L"content", content); + OpenWindow(L"dev:xpage[PO.Import.vx]", (LPARAM)&carg); + return 1; + } + else if (comdid == L"xmSearch") + { + RetrieveData(); + return 1; + } + else if (comdid == L"xmQuote") + { + int rw = dwc_list.GetNextSelectRow(1); + xstring content = L"<data>"; + while (rw > 0) + { + KXMLDOMElement xe = OnGetCarListRowElement(rw); + content += xe.xml(); + rw = dwc_list.GetNextSelectRow(rw + 1); + } + content += L"</data>"; + xaserverarg carg; + carg.AddArg(L"content", content); + OpenWindow(L"dev:xpage[Quote.Import.vx]", (LPARAM) & carg); + return 1; + } + else if (comdid == L"xmAdd") + { + return ItemAdd(); + } + else if (comdid == L"xmDelete") + { + int row = dw_list.GetRow(); + if (row < 1) return 1; + xstring skuid = dw_list.GetItemString( row, L"@guid"); + xml skuid_x = ViewObject::RetrieveData(L"/sale/data/ProductLibrary3/ProductNumberone", L"SKUID", skuid); + xstring skuidEx = skuid_x.text(); + int skuid1 = skuidEx.toInt(); + if (skuid1) + { + if (skuid1 > 0) + { + alert(L"订单已有产品,不允许删除!"); + return 1; + } + } + + DeleteRow(row); + + return 1; + } + else if (comdid == L"xmCarAdd") + { + HCURSOR hCursor = xutil::SetCursorWait(); + name = xcontrol(GetControl(L"frame:ed_goodscar")).GetText(); + if (name != L"") + { + if (ShoppingCartView::AddCar(name) == 1) + { + tv_folder.InsertChildItem(LookupTopFolder(tv_folder.GetSelectedItem()), + name, 0, 35); + } + } + xutil::RestoreCursor(hCursor); + return 1; + } + else if (comdid == L"xmMaint") + { + return ItemMaint(); + } + else if (comdid == L"xmAddImage") + { + return OnAddImage(); + } + else if (comdid == L"xmDeleteImage") + { + return OnDeleteImage(); + } + else if (comdid == L"xmPreviewImage") + { + return OnPreviewImage(); + } + else if (comdid == L"xmPropConfigure") + { +#ifdef shouldfinish + int r = cast(g_xdoc_product.getData(L"data/Item", L"@guid") as int); + OpenWindow(L"dev:xpage[Product.ItemProp.Maint.vx]", r); +#endif + return 1; + } + else if (comdid == L"xmRertieve") + { + /* + int hItem1 = tv_folder.GetSelectedItem(); + KXMLDOMElement e2= tv_folder.GetItemData(hItem1); + xstring no1 = e2.getAttribute(L"no"); + xml x2 = vcontrol::RetrieveData(L"/sale/data/SO/goods/usergoods/listex1",L"parent",no1); + g_xdoc_product.Retrieve(x2); + */ + return 1; + } + else if (comdid == L"xmToCar") + { + name = xcontrol(GetControl(L"frame:cbx_goodscar")).GetText(); + if (name == L"==选择购物车==L") + { + alert(L"请选择购物车"); + return 1; + } + int xrow = dw_list.GetNextSelectRow(1); + xstring goodsid = L""; + xstring html = L"<data>"; + while (xrow > 0) + { + KXMLDOMElement e =dw_list.GetRowElement(xrow); + goodsid = ProductLibraryView::GetElementString(e, L"@guid"); + html += L"<item goodid='" + goodsid + L"' id ='" + ProductLibraryView::GetGuid() + L"'/>"; + xrow = dw_list.GetNextSelectRow(xrow + 1); + } + html += L"</data>"; + trace(html); + if (ShoppingCartView::GoodsImport(name, html) == 1) + alert(L"添加错误!"); + else + alert(L"添加成功"); + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, int 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 MakeGoodsFolderItem(HTREEITEM hItem, xstring sno) + { + xml x = ProductLibraryView::GetTreeChildItems3(sno); + if (!x) return 0; + + KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"CName"); + xstring no = e.getAttribute(L"CategoryNo"); + xstring label = no.trim() + L" " + name; + + HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15); + xstring child = e.getAttribute(L"Childs"); + if (child == L"") + tv_folder.SetItemChild(h, 1); + else if (child != L"0") + tv_folder.SetItemChild(h, 1); + } + return 1; + } + + //插入新产品目录子项 + int MakeUserGoodsFolderItem(HTREEITEM hItem, xstring sno) + { + xml x = ProductLibraryView::GetTreeUserChildItems3(sno); + if (!x) return 0; + + KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"CName"); + xstring no = e.getAttribute(L"CategoryNo"); + xstring label = no.trim() + L" " + name; + + HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15); + xstring child = e.getAttribute(L"Childs"); + if (child == L"") + tv_folder.SetItemChild(h, 1); + else if (child != L"0") + tv_folder.SetItemChild(h, 1); + } + return 1; + } + + //插入购物车项 + int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) + { + KXMLDOMNodeList nlist = ele.selectNodes(L"item"); + int len = nlist.length(); + if (len > 0) tv_folder.SetItemChild(hItem, 1); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"name"); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); + ExpandCatChildFolder(h, e, 35); + } + return 1; + } + int MakeGoodCarFolderItem(HTREEITEM hItem) + { + xml x = ShoppingCartView::GetRoleList(); + if (!x) return 0; + KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + xstring name = e.getAttribute(L"name"); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); + ExpandCatChildFolder(h, e, 35); + } + return 1; + } + + int ExpandItem(HTREEITEM hItem) + { + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + HTREEITEM child = tv_folder.GetChildItem(hItem); + xstring no = L""; + KXMLDOMElement e; + if (name == L"公司库" && !child) + { + no = L""; + if (hTopItem != hItem) + { + e = tv_folder.GetItemData(hItem); + no = e.getAttribute(L"categoryid"); + } + else + { + e = tv_folder.GetItemData(hItem); + no = e.getAttribute(L"categoryid"); + } + MakeGoodsFolderItem(hItem, no); + } + else if (name == L"个人库" && !child) + { + no = L""; + if (hTopItem != hItem) + { + e = tv_folder.GetItemData(hItem); + no = e.getAttribute(L"categoryid"); + MakeUserGoodsFolderItem(hItem, no); + } + } + else if (name == L"购物车" && !child) + { + if (hItem == hTopItem)MakeGoodCarFolderItem(hItem); + } + return 1; + } + + //树展开 + int OnTreeExpanding(TEvent * evt, int p) + { + NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; + HTREEITEM hItem = nmtv.itemNew.hItem; + return ExpandItem(hItem); + } + + int ResetAgent(xstring agentAsk) + { + if (agentFor != agentAsk) + { + agentFor = agentAsk; + m_agentNode = 0; + SetAgent(); + } + return 1; + } + + HTREEITEM LookupCustomerFolder(HTREEITEM hItem) + { + while (true) + { + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + xstring str = e1.getAttribute(L"no"); + if (str.find(L"Customer:") >= 0) return hItem; + hItem = tv_folder.GetParentItem(hItem); + if (hItem == 0) break; + } + return 0; + } + + xstring LookupCustomer(HTREEITEM hItem) + { + hItem = LookupCustomerFolder(hItem); + if (hItem == 0) return L""; + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + xstring str = e1.getAttribute(L"no"); + return str.mid(xstring(L"Customer:").length(), 9999); + } + + int RetrieveData() + { + ximageview im = GetControl(L"im1"); + HTREEITEM hItem = tv_folder.GetSelectedItem(); + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + xstring selectname = tv_folder.GetItemLabel(hItem); + + xcontrol query = GetControl(L"sl_search"); + xstring queryString = query.GetText(); + + if (hItem == hTopItem) + { + dw_list.Reset(); + dw_list.SetReadOnly(true); + dw_list.Redraw(); + dwc_list.Reset(); + dwc_list.SetReadOnly(true); + dwc_list.Redraw(); + + im.Reset(); + im.Redraw(); + + + xshtml xs1 = GetControl(L"html_detail"); + xs1.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); + + if (name != L"公司库") return 1; + } + //return 1; + + HCURSOR hCursor = xutil::SetCursorWait(); + + if (name == L"购物车") + { + if (selectname != name) + { + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + xstring str = e1.getAttribute(L"no"); + alert(str); + if (str.find(L"Customer:") == 0 || str.find(L"SO:") == 0) + { + m_customer = LookupCustomer(hItem); + if (str.find(L"Customer:") == 0) + dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodscustomerlist"); + else + dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodssolist"); + dwc_list.Reset(); + dwc_list.SetReadOnly(true); + dw_list.Retrieve(ShoppingCartView::GetGoodsList(str, queryString)); + } + else if (e1.getAttribute(L"categoryid") != L"") + { + xstring categoryid = e1.getAttribute(L"categoryid"); + dwc_list.SetDataObject(ProductLibraryView::GetMaintListForm3(categoryid)); + dwc_list.SetReadOnly(true); + dwc_list.Reset(); + dw_list.Retrieve(ProductLibraryView::GetMaintList3(categoryid, queryString, L"")); + dwc_list.Redraw(); + } + else + { + dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); + dwc_list.SetReadOnly(true); + dwc_list.Reset(); + dw_list.Retrieve(ShoppingCartView::GetGoodsList(selectname, queryString)); + } + //dwc_list.PostRetrieve(); + dwc_list.Redraw(); + + xshtml xs = GetControl(L"html_detail"); + if (dwc_list.GetRowCount() >= 1) + { + xs.SetContent(makeGoodscarHtml(1)); + + if (m_customer != L"") + { + xstring skuid =dw_list.GetItemString( 1, L"SKUID"); + xstring customerItemNo =dw_list.GetItemString( 1, L"CustomerItemNo"); + OnShowImage(skuid, customerItemNo); + } + } + else + { + im.Reset(); + im.Redraw(); + + xs = GetControl(L"html_detail"); + xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); + } + xs.Redraw(); + } + } + else + { + + if (name == L"个人库" || name == L"公司库") + { + xstring no = L"N000005"; + if (name == L"个人库") no = L"U000005"; + + if (hItem != hTopItem) + { + KXMLDOMElement e = tv_folder.GetItemData(hItem); + no = e.getAttribute(L"guid"); + } + else + return 1; + + /* dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no).GetXmlDoc()); + dw_list = GetControl(L"dw_list"); + dw_list.Reset(); + dw_list.SetReadOnly(true); + */ + + if (name == L"个人库") + dw_list.Retrieve(ProductLibraryView::GetMaintRoleList3(no)); + else + { + if (queryString != L"") + { + + if (no == L"N000005") + dw_list.Retrieve(ProductLibraryView::GetMaintList3(L"", queryString, L"")); + else + dw_list.Retrieve(ProductLibraryView::GetMaintList3(no, queryString, L"")); + } + else + { + if (no == L"N000005") return 1; + dw_list.Retrieve(ProductLibraryView::GetMaintList3(no)); + } + } + //dw_list.PostRetrieve(); + dw_list.Redraw(); + + xshtml xs = GetControl(L"html_detail"); + if (dw_list.GetRowCount() > 0) + { + xs.SetContent(makeHtml(1)); + xstring id = dw_list.GetItemString( 1, L"@guid"); + OnShowImage(id); + } + else + { + im.Reset(); + im.Redraw(); + + xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); + } + xs.Redraw(); + } + } + xutil::RestoreCursor(hCursor); + + return 1; + } + + int OnTreeSelChanged(TEvent * evt, int p) + { + NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; + HTREEITEM hItem = nmtv.itemNew.hItem; + HTREEITEM hTopItem = LookupTopFolder(hItem); + xstring name = tv_folder.GetItemLabel(hTopItem); + xstring selectname = tv_folder.GetItemLabel(hItem); + ximageview im = GetControl(L"im1"); + m_customer = L""; + //alert(name); + if (name == L"购物车") + { + if (agentFor != L"goodscar")SwitchLayer(L"goodscarsheet", L"sheetframe"); + ResetAgent(L"goodscar"); + } + else + { + if (agentFor != L"goodslib")SwitchLayer(L"goodslibsheet", L"sheetframe"); + if (name == L"个人库") + ResetAgent(L"userlib"); + else + ResetAgent(L"goodslib"); + } + //RetrieveData(); + PostMessage(GetHWND(), 0x401, (WPARAM)L"xmRefresh", 0); + + return 1; + } + + int ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) + { + KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement& e = * new KXMLDOMElement(nlist.item(i)); + xstring name = e.getAttribute(L"cname"); + xstring sImage = e.getAttribute(L"image"); + int image = 15; + //if(sImage) image = sImage.toInt(); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); + tv_folder.SetItemChild(h, 1); + ExpandChildFolder(h, e); + } + return 1; + } + + int InitialFolder() + { + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); + ExpandChildFolder(0, e); + return 1; + } + + int OnViewZoomChange(TEvent* evt, int lParam) + { + ximageview im = GetControl(L"im1"); + xcombobox xc = GetControl(L"precent"); + xstring text = xc.GetLBText(); + int p = text.toInt(); + if (p == 0) p = 100; + im.Preview(p); + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductLibrary4Win::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductLibrary4Win::OnSetFocus); + AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnRowChanged); + AttachEvent(L"dwc_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnGoodsCarRowChanged); + AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ProductLibrary4Win::OnTreeExpanding); + AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ProductLibrary4Win::OnTreeSelChanged); + AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick); //checkbox打钩事件 + AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick2); //checkbox打钩事件 + + AttachEvent(L"im1", L"IMG_LDBCLICK", (FEvent)&ProductLibrary4Win::OnImgDBClicked); + AttachEvent(L"precent", L"CBN_SELCHANGE", (FEvent)&ProductLibrary4Win::OnViewZoomChange); + + return 1; + } + + int onload() + { + agentFor = L"goodslib"; + m_customer = 0; + + OnAttachEvent(); + + tv_folder = GetControl(L"tv_folder"); + dw_list = GetControl(L"dw_list"); + dwc_list = GetControl(L"dwc_list"); + + InitialFolder(); + + dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"")); + dw_list = GetControl(L"dw_list"); + dw_list.SetReadOnly(true); + + dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); + dwc_list.SetReadOnly(true); + + tv_folder.ExpandItem(tv_folder.GetRootItem()); + tv_folder.ItemFocus(tv_folder.GetRootItem()); + + if (dw_list.GetRowCount()) + { + xshtml xs = GetControl(L"html_detail"); + xs.SetContent(makeHtml(1)); + } + + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + + int OnImgDBClicked(TEvent * evt, int pr) + { + IMGNNMHDR& nmtv = *(IMGNNMHDR*)evt->notify.pnmh; + xstring src = nmtv.path; + /*if(src.length() > 60) + src = src.right(44); + else + src=src.mid(src.find(L"Thumbs", 0)+6, 50); + */ + xaserverarg& arg = *new xaserverarg; + //arg.AddArg(L"src",L"/business/products/chanpin"+src); + arg.AddArg(L"src", src); + + //win::OpenWindow(L"dev:xpage[BigPicture.vx]",arg); + + int h = openUrl(L"/sale/view/ProductLibrary/xpage/bigpictureview", &arg); + return 1; + /* + xwin x = new xwin; + x.setNativePointer(h); + m_winHwnd = x.GetHWND(); + + xstring sh = doc.GetXml(); + int p = cast(sh as int); + win32::SendMessage(m_winHwnd, 0x401, p, 0); + */ + return 1; + } +}; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/LogList.cpp b/jrj/project/business/SystemSettings/LogList.cpp new file mode 100644 index 0000000..07f77fb --- /dev/null +++ b/jrj/project/business/SystemSettings/LogList.cpp @@ -0,0 +1,217 @@ +#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) ViewLogList : public xwin + { + public: + xdwgrid dw_list; + xoffice dw_office; + xcell dw_cell; + xnode m_agentNode; //Agent Condition + xstring m_category; + xstring argStr; + xstring searchStr; + public: + ViewLogList(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {} + public: + static ViewLogList* CreateInstance(void* implPtr, void* hWnd) + { + ViewLogList* pWin = new ViewLogList(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) + { + HCURSOR hCursor = 0; + if(comdid==L"xmQuery") + { + xaserverarg ar ; + + ar.AddArg(L"argurl",L"/sale/view/Total3/arg/LogListItem"); + if(argStr !=L"") + ar.AddArg(L"arg",argStr); + OpenWindow(L"dev:xpage[view.total.arg.vx]",ar); + xstring arstr = ar.GetArgString(L"arg"); + if(arstr != L"" && ar.GetArgString(L"action")==L"ok") + { + argStr = arstr; + hCursor = xutil::SetCursorWait(); + OnRetrieve(L"/sale/data/Total3/total/GDNTotal/Item/LogList",argStr); + + xutil::RestoreCursor(hCursor); + } + + else + { + argStr=L""; + OnRetrieve(L"/sale/data/Total3/total/GDNTotal/Item/LogList",argStr); + } + + return 1; + } + if(comdid==L"xmAnalysis") + { + hCursor = xutil::SetCursorWait(); + xstring str = dw_list.DataAnalysis(L""); + xaserverarg arg; + ; + arg.AddArg(L"html", str); + + OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg); + xutil::RestoreCursor(hCursor); + return 1; + } + if(comdid==L"xmSearch") return OnSearch(); + return 0; + } + + int OnSearch() + { + 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_list.Filter(L"*",searchStr); + return 1; + } + return 1; + } + + + + int OnCombboChanged(TEvent* evt, LPARAM lParam) + { + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if(h > -1) + { + HCURSOR hCursor = xutil::SetCursorWait(); + KXMLDOMElement e = xcombobox::GetItemData(evt->command.hCtrl, h); + + PostMessage(GetHWND(),0x401,(LPARAM)L"xmQuery",0); + //OnCmdDispatch(L"xmQuery"); + xutil::RestoreCursor(hCursor); + } + return 1; + } + + + + //命令处理事件 + 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; + int row = hdr.row; + + if(row < 1) return 1; + + return 1; + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewLogList::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewLogList::OnSetFocus); + AttachEvent(L"cb_report",L"CBN_SELCHANGE", (FEvent)&ViewLogList::OnCombboChanged); + AttachEvent(L"dw_report",L"DWV_CLICKED", (FEvent)&ViewLogList::OnDWClick); + return 1; + } + + int OnRetrieve(xstring dataurl, xstring argstr) + { + dw_list.Reset(); + + xml x ; + + xaserverarg arg ; + ; + arg.AddArg(L"arg",argstr); + //alert(argstr); + + if (xurl::get(dataurl,arg.GetString(),x)!=1) + { + //alert(x.xml()); + trace(x.text()); + dw_list.Redraw(); + return -1; + } + //alert(x.xml()); + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + + return 1; + } + + int onload() + { + dw_list = GetControl(L"dw_report"); + dw_office = GetControl(L"dw_office"); + dw_cell = GetControl(L"dw_cell"); + dw_list.openUrl(L"/sale/view/Total3/template/business/gdn/LogList/ship/full"); + + argStr =L""; + xcombobox xc = GetControl(L"cb_report"); + + + OnAttachEvent(); + return 1; + } + + int onloaded() + { + SetAgent(); + OnCmdDispatch(L"xmQuery"); + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Organization_A.cpp b/jrj/project/business/SystemSettings/Organization_A.cpp new file mode 100644 index 0000000..8f92f1c --- /dev/null +++ b/jrj/project/business/SystemSettings/Organization_A.cpp @@ -0,0 +1,513 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +class __declspec(dllexport) SO3list : public listwin +{ +public: + string m_sType; //树选中的类型 + string m_sTypeTxt; //树选中的数据 + string urlTree; + string myDataUrl; + string rows; + xcombobox ddlb_1; + xcombobox cbx_datashow; + + int changeddlb; + + xtreeview tv_folder; + xdwgrid dw_goods; + xdwgrid dw_source; +public: + SO3list(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} +public: + static SO3list* CreateInstance(void* implPtr, void* hWnd) + { + SO3list* pWin = new SO3list(implPtr, (HWND)hWnd); + return pWin; + } + + //process tree + //查找当前树项的顶级目录 + HTREEITEM LookupTopFolder(HTREEITEM hItem) + { + HTREEITEM hRoot = tv_folder.GetRootItem(); + while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); + return hItem; + } + + int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) + { + KXMLDOMNodeList nlist = ele.selectNodes(L"item"); + int len = nlist.length(); + if (len > 0) tv_folder.SetItemChild(hItem, 1); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + string name = e.getAttribute(L"name"); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); + ExpandCatChildFolder(h, e, 35); + } + return 1; + } + + int ExpandFolderItem(HTREEITEM hItem, string no) + { + KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),urlTree, L"no", no, L"rows", rows); + if (!x) return 0; + KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + string name = e.getAttribute(L"name"); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); + ExpandCatChildFolder(h, e, 35); + } + return 1; + } + + //树展开 + int OnTreeExpanding(TEvent* evt, int p) + { + NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; + HTREEITEM hItem = nmtv.itemNew.hItem; + HTREEITEM hTopItem = LookupTopFolder(hItem); + string name = tv_folder.GetItemLabel(hTopItem); + HTREEITEM child = tv_folder.GetChildItem(hItem); + + KXMLDOMElement e = tv_folder.GetItemData(hItem); + if (!child)ExpandFolderItem(hItem, e.getAttribute(L"no")); + + return 1; + } + + //展开子文件 + int ExpandChildFolder(HTREEITEM 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); + string 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(); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); + if (child != L"no") tv_folder.SetItemChild(h, 1); + //ExpandChildFolder(h, e); + } + return 1; + } + + //初始化文件夹 + int InitialFolder() + { + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); + if (e) + ExpandChildFolder(0, e); + return 1; + } + + int OnTreeSelChanged(TEvent* evt, LPARAM p) + { + if (changeddlb) return 1; + return OnPreRetrieve(); + } + + int ViewUpdate(LPARAM pr, xstring updateItem, xaserverarg arg) + { + if (updateItem == L"del") + { + int DelRow = dw_list.GetRow(); + dw_list.DeleteRow(DelRow); + return 1; + } + else if (updateItem == L"setstate") + { + int row = dw_list.GetRow(); + if (row < 1) return 1; + KXMLDOMElement ele = dw_list.GetRowElement(row); + string id = GetEntityIDName(1); + string entity = ele.selectSingleNode(id).text(); + //trace(entity); + SetAgent(L"list", entity); + if (arg.GetArgString(L"state") != L"") + //this.dw_list.SetItemString(row, "ApprovalStatus", arg.GetArgString(L"state")); + dw_list.SetItemString(row, L"ApplyStatus", arg.GetArgString(L"state")); + if (arg.GetArgString(L"billstatus") != L"") + { + xstring billstatus = arg.GetArgString(L"billstatus"); + xstring statusName = GetBillStatusName(billstatus); + dw_list.SetItemString(row, L"ApprovalStatus", billstatus); + dw_list.SetItemDisplayString(row, L"ApprovalStatus", statusName); + } + + dw_list.Redraw(); + } + return 1; + } + + bool IsEmptyQueryStr(string queryStr) + { + if (queryStr == L"") return true; + if (queryStr == L"<items join='and'/>") return true; + if (queryStr == L"<items join=\"and\"/>") return true; + //trace(queryStr); + return false; + } + + //检索 + int OnPreRetrieve() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + if (!hItem) return 1; + + HCURSOR hCursor = xutil::SetCursorWait(); + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + string no = e1.getAttribute(L"no"); + KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),myDataUrl, L"no", no, L"QueryTxt", m_QueryTxt, L"rows", rows); + if (x) + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + else + { + dw_list.Reset(); + dw_list.Redraw(); + dw_goods.Reset(); + dw_goods.Redraw(); + } + dw_list.SetReadOnly(true); + xutil::RestoreCursor(hCursor); + return 1; + /* + xaserverarg arg = new xaserverarg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"pageindex", m_pageIndex.toString(),""); //第几页 + arg.AddArg(L"pagenumber", m_pageNumber.toString(),""); //每页数量 + arg.AddArg(L"QueryTxt", m_QueryTxt,""); //查询条件 + arg.AddArg(L"sType",m_sType,""); + arg.AddArg(L"sTypeTxt",m_sTypeTxt,""); + xml x = ViewObject::MakeXml(); + + KXMLDOMElement n = m_configDoc.selectSingleNode(L"//list/dwview[@type='dwgrid'][1]"); + if(n) + { + KXMLDOMElement e = n; + if(e.selectSingleNode(L"@dataUrl")) + { + string dataUrl = e.selectSingleNode(L"@dataUrl").text; + if(dataUrl.left(1)!="/") dataUrl = GetEntityName(1)+"/"+dataUrl; + getUrl(dataUrl, arg.GetString(), x); + KXMLDOMElement ele=x.GetXmlDoc().documentElement; + if(dw_pages.ptr_native_) + { + if(ele.selectSingleNode(L"@TotalPage")) + { + string s=ele.selectSingleNode(L"@TotalPage").text; //总数量 + dw_pages.SetMaxPage(s.toInt()); + } + } + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + } + else + { + SetEntityData(arg); + } + } + else + { + SetEntityData(arg); + } + */ + } + + //历史数据 + int Onhistroydata() + { + int row = dw_list.GetNextSelectRow(1); + if (row > 0) + { + KXMLDOMElement e = dw_list.GetRowElement(row); + xaserverarg& arg = * new xaserverarg; + string sCustomerID = e.selectSingleNode(L"CustomerID").text(); + arg.AddArg(L"CustomerID", sCustomerID, L""); + string sCustomerName = e.selectSingleNode(L"CustomerName").text(); + arg.AddArg(L"CustomerName", sCustomerName, L""); + arg.AddArg(L"EntityName", GetEntityName(1), L""); + arg.AddArg(L"EntityID", GetEntityID(1), L""); + openUrl(L"/sale/view/SO/xpage/histroydata", &arg); + } + return 1; + } + + //xcombobox下拉 + int OnSelectDdlb(TEvent* evt, LPARAM p) + { + changeddlb = 1; + HWND wid = ddlb_1.GetHWND(); + int CB_GETCURSEL = 0x0147; + int nIndex =SendMessage(wid, CB_GETCURSEL, 0, 0); + KXMLDOMElement e = ddlb_1.GetElement(); + KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); + string no = e2.selectSingleNode(L"@element").text(); + + HTREEITEM hItem = tv_folder.GetRootItem(); + while (tv_folder.GetChildItem(hItem)) + tv_folder.DeleteItem(tv_folder.GetChildItem(hItem)); + ExpandFolderItem(hItem, no); + + changeddlb = 0; + return 1; + } + + + int OnSelectDataShowDdlb(TEvent* evt, LPARAM p) + { + HWND wid = cbx_datashow.GetHWND(); + int CB_GETCURSEL = 0x0147; + int nIndex = SendMessage(wid, CB_GETCURSEL, 0, 0); + KXMLDOMElement e = cbx_datashow.GetElement(); + KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); + rows = e2.selectSingleNode(L"@rows").text(); + OnPreRetrieve(); + + return 1; + } + + int PreOnCmdDispatch(xstring comdid) + { + if (comdid == L"action:bill.new") + { + xstring s = publiccode::GetUser().id; + xstring no = publiccode::GetUser().no; + if (no != L"00303" && no != L"admin") + { + KXMLDOMDocument supplier_x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SupplierV3/entity/FindBySaleType", L"id", s); + if (supplier_x) + { + if ((xstring)supplier_x.text() != L"业务员") + { + alert(L"当前角色不是业务员不能新增单子,请重新选择角色"); + return 0; + } + } + } + } + if (comdid == L"action:bill.annex") + { + xstring deptname = publiccode::GetUser().deptname; + if (deptname == L"采购部") + { + return 1; + } + + int row = dw_list.GetRow(); + if (row < 1) return 1; + xstring guid = dw_list.GetItemString(row, L"SOID"); + xaserverarg& arg = * new xaserverarg(); + + if (guid.length() <= 0)return 1; + + arg.AddArg(L"entityid", guid); + arg.AddArg(L"Type", L"Y"); + OpenWindow(L"dev:xpage[maint.Document.SO3.v3.vx]", arg); + + return 0; + } + if (comdid == L"action:bill.histroydata") return Onhistroydata(); + else if (comdid == L"action:bill.refresh") + { + changeddlb = 1; + HTREEITEM RItem = tv_folder.GetRootItem(); + while (tv_folder.GetChildItem(RItem)) + tv_folder.DeleteItem(tv_folder.GetChildItem(RItem)); + ExpandFolderItem(RItem, L"Category:Customer"); + tv_folder.ExpandItem(RItem); + tv_folder.ItemFocus(RItem); + changeddlb = 0; + return OnPreRetrieve(); + } + if (comdid == L"action:bill.saveas") + { + dw_list.SaveAs(L""); + return 1; + } + if (comdid == L"action:bill.SourceRemark") return OnSourceRemark(); + + return 1; + } + + int OnSourceRemark() + { + xstring name = L"外销合同"; + KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name); + KXMLDOMNodeList items = x.selectNodes(L"data/Item"); + KXMLDOMNode t = items.item(0); + xstring Content = L""; + if (t.selectSingleNode(L"Content")) + { + Content = t.selectSingleNode(L"Content").text(); + } + xaserverarg& arg = *new xaserverarg; + arg.AddArg(L"value", Content); + OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg); + + return 1; + } + + int OnRowChanged(TEvent* evt, LPARAM p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + + + if (row < 1) return 1; + + //fixed one event only one process + listwin::OnRowChanged(evt, p); + + HCURSOR hCursor = xutil::SetCursorWait(); + + xstring SONo = dw_list.GetItemString(row, L"SONo"); + KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SaleOrder/maint/item", L"id", SONo); + if (x) + dw_goods.Retrieve(x); + else + dw_goods.Reset(); + dw_goods.Redraw(); + dw_goods.SetReadOnly(true); + + x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SaleOrder/maint/itemwithsource", L"id", SONo); + if (x) + dw_source.Retrieve(x); + else + dw_source.Reset(); + dw_source.Redraw(); + dw_source.SetReadOnly(true); + + xutil::RestoreCursor(hCursor); + + return 1; + } + + + int AttachListon() + { + AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&SO3list::OnTreeSelChanged); //树选择 + AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&SO3list::OnRowChanged);//绑定行更改触发事件OnRowChanged + //AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&listwin::OnDoubleClicked); + AttachEvent(L"cbx_1", L"CBN_SELCHANGE", (FEvent)&SO3list::OnSelectDdlb);//绑定下拉框更改触发事件OnSelectDdlb + AttachEvent(L"cbx_datashow", L"CBN_SELCHANGE", (FEvent)&SO3list::OnSelectDataShowDdlb);//绑定选择数据显示下拉列表事件OnSelectDataShowDdlb + return 1; + } + + int onload() + { + changeddlb = 0; + listwin::onload(); + ddlb_1 = GetControl(L"cbx_1"); + cbx_datashow = GetControl(L"cbx_datashow"); + dw_goods = GetControl(L"dw_goods"); + dw_goods.openUrl(GetServerUrl(),L"/sale/view/SaleOrder/template/item"); + dw_source = GetControl(L"dw_source"); + dw_source.openUrl(GetServerUrl(), L"/sale/view/SaleOrder/template/sourceitem"); + + dw_goods.SetColumnState(L"ItemID", false); + dw_goods.SetColumnState(L"LineType", false); + dw_goods.SetColumnState(L"Brand", false); + dw_goods.SetColumnState(L"Assortment", false); + dw_goods.SetColumnState(L"ClassifyID", false); + dw_goods.SetColumnState(L"UnitFreight", false); + //dw_goods.SetColumnState(L"CName",false);//隐藏列 + + dw_goods.SetColumnState(L"Brand", false); + dw_goods.SetColumnState(L"SKUNo", false); + dw_goods.SetColumnState(L"SOLineNo", false); + dw_goods.SetColumnState(L"CustomerPONo", false); + dw_goods.SetColumnState(L"ScheduleShipDate", false); + + dw_goods.SetColumnState(L"PackTechNote", false); + dw_goods.SetColumnState(L"EnquiryPriceListID", false); + dw_goods.SetColumnState(L"Submitter", false); + dw_goods.SetColumnState(L"POSupplierID", false); + dw_goods.SetColumnState(L"QuoteLineID", false); + + dw_list.SetColumnState(L"CreatorID", false); + dw_list.SetColumnState(L"SOID", false); + + + string groupname = publiccode::GetUser().groupname; + if (groupname == L"采购小组") + { + dw_list.SetColumnState(L"USDAmount", false); + dw_list.SetColumnState(L"RMBAmount", false); + + dw_goods.SetColumnState(L"UnitPrice", false); + dw_goods.SetColumnState(L"Amount", false); + dw_goods.SetColumnState(L"UnitCommPrice", false); + dw_goods.SetColumnState(L"CommissionRate", false); + + dw_source.SetColumnState(L"UnitPrice", false); + dw_source.SetColumnState(L"Amount", false); + dw_source.SetColumnState(L"FOBAmount", false); + dw_source.SetColumnState(L"BuyUnitPrice", false); + dw_source.SetColumnState(L"BuyAmount", false); + dw_source.SetColumnState(L"CostRate", false); + } + + rows = L"500"; + myDataUrl = L"/sale/data/SaleOrder/folder/list"; + urlTree = L"/sale/data/SaleOrder/folder"; + tv_folder = GetControl(L"tv_folder"); + tv_folder.SetLineAtRoot(true); + InitialFolder(); + + return 1; + } + + int onloaded() + { + listwin::onloaded(); + + //attach my control event + AttachListon(); + + dw_list.SetColumnState(L"SOID", false); + + HTREEITEM hItem = tv_folder.GetRootItem(); + ExpandFolderItem(hItem, L"Category:Customer"); + tv_folder.ExpandItem(hItem); + //tv_folder.ItemFocus(tv_folder.GetChildItem(hItem)); + tv_folder.ItemFocus(hItem); + + + return -1; + } + + int ProcessUsedArg(xaserverarg arg) + { + HTREEITEM hItem = tv_folder.GetCaretItem(); + if (hItem ) return 1; + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring no = e.getAttribute(L"no"); + if (no.find(L"Customer:") >= 0) + { + arg.AddArg(L"CustomerID", e.getAttribute(L"id")); + xstring name = e.getAttribute(L"name"); + if (name.find(L"(L") >= 0) name = name.left(name.find(L"(L")); + arg.AddArg(L"CustomerName", name); + } + return 1; + } +}; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/ProcessManagement_A.cpp b/jrj/project/business/SystemSettings/ProcessManagement_A.cpp new file mode 100644 index 0000000..8f92f1c --- /dev/null +++ b/jrj/project/business/SystemSettings/ProcessManagement_A.cpp @@ -0,0 +1,513 @@ +#include <wobject/xstring.hpp> +#include <xcontrol/xtreeview.hpp> +#include <xcontrol/xdwgrid.hpp> + +#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" +#include "viewobject/view.base.hpp" + +class __declspec(dllexport) SO3list : public listwin +{ +public: + string m_sType; //树选中的类型 + string m_sTypeTxt; //树选中的数据 + string urlTree; + string myDataUrl; + string rows; + xcombobox ddlb_1; + xcombobox cbx_datashow; + + int changeddlb; + + xtreeview tv_folder; + xdwgrid dw_goods; + xdwgrid dw_source; +public: + SO3list(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} +public: + static SO3list* CreateInstance(void* implPtr, void* hWnd) + { + SO3list* pWin = new SO3list(implPtr, (HWND)hWnd); + return pWin; + } + + //process tree + //查找当前树项的顶级目录 + HTREEITEM LookupTopFolder(HTREEITEM hItem) + { + HTREEITEM hRoot = tv_folder.GetRootItem(); + while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); + return hItem; + } + + int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) + { + KXMLDOMNodeList nlist = ele.selectNodes(L"item"); + int len = nlist.length(); + if (len > 0) tv_folder.SetItemChild(hItem, 1); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + string name = e.getAttribute(L"name"); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); + ExpandCatChildFolder(h, e, 35); + } + return 1; + } + + int ExpandFolderItem(HTREEITEM hItem, string no) + { + KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),urlTree, L"no", no, L"rows", rows); + if (!x) return 0; + KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); + int len = nlist.length(); + for (int i = 0; i < len; i++) + { + KXMLDOMElement e = nlist.item(i); + string name = e.getAttribute(L"name"); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); + ExpandCatChildFolder(h, e, 35); + } + return 1; + } + + //树展开 + int OnTreeExpanding(TEvent* evt, int p) + { + NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; + HTREEITEM hItem = nmtv.itemNew.hItem; + HTREEITEM hTopItem = LookupTopFolder(hItem); + string name = tv_folder.GetItemLabel(hTopItem); + HTREEITEM child = tv_folder.GetChildItem(hItem); + + KXMLDOMElement e = tv_folder.GetItemData(hItem); + if (!child)ExpandFolderItem(hItem, e.getAttribute(L"no")); + + return 1; + } + + //展开子文件 + int ExpandChildFolder(HTREEITEM 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); + string 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(); + HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); + if (child != L"no") tv_folder.SetItemChild(h, 1); + //ExpandChildFolder(h, e); + } + return 1; + } + + //初始化文件夹 + int InitialFolder() + { + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); + if (e) + ExpandChildFolder(0, e); + return 1; + } + + int OnTreeSelChanged(TEvent* evt, LPARAM p) + { + if (changeddlb) return 1; + return OnPreRetrieve(); + } + + int ViewUpdate(LPARAM pr, xstring updateItem, xaserverarg arg) + { + if (updateItem == L"del") + { + int DelRow = dw_list.GetRow(); + dw_list.DeleteRow(DelRow); + return 1; + } + else if (updateItem == L"setstate") + { + int row = dw_list.GetRow(); + if (row < 1) return 1; + KXMLDOMElement ele = dw_list.GetRowElement(row); + string id = GetEntityIDName(1); + string entity = ele.selectSingleNode(id).text(); + //trace(entity); + SetAgent(L"list", entity); + if (arg.GetArgString(L"state") != L"") + //this.dw_list.SetItemString(row, "ApprovalStatus", arg.GetArgString(L"state")); + dw_list.SetItemString(row, L"ApplyStatus", arg.GetArgString(L"state")); + if (arg.GetArgString(L"billstatus") != L"") + { + xstring billstatus = arg.GetArgString(L"billstatus"); + xstring statusName = GetBillStatusName(billstatus); + dw_list.SetItemString(row, L"ApprovalStatus", billstatus); + dw_list.SetItemDisplayString(row, L"ApprovalStatus", statusName); + } + + dw_list.Redraw(); + } + return 1; + } + + bool IsEmptyQueryStr(string queryStr) + { + if (queryStr == L"") return true; + if (queryStr == L"<items join='and'/>") return true; + if (queryStr == L"<items join=\"and\"/>") return true; + //trace(queryStr); + return false; + } + + //检索 + int OnPreRetrieve() + { + HTREEITEM hItem = tv_folder.GetSelectedItem(); + if (!hItem) return 1; + + HCURSOR hCursor = xutil::SetCursorWait(); + KXMLDOMElement e1 = tv_folder.GetItemData(hItem); + string no = e1.getAttribute(L"no"); + KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),myDataUrl, L"no", no, L"QueryTxt", m_QueryTxt, L"rows", rows); + if (x) + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + else + { + dw_list.Reset(); + dw_list.Redraw(); + dw_goods.Reset(); + dw_goods.Redraw(); + } + dw_list.SetReadOnly(true); + xutil::RestoreCursor(hCursor); + return 1; + /* + xaserverarg arg = new xaserverarg; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg(L"pageindex", m_pageIndex.toString(),""); //第几页 + arg.AddArg(L"pagenumber", m_pageNumber.toString(),""); //每页数量 + arg.AddArg(L"QueryTxt", m_QueryTxt,""); //查询条件 + arg.AddArg(L"sType",m_sType,""); + arg.AddArg(L"sTypeTxt",m_sTypeTxt,""); + xml x = ViewObject::MakeXml(); + + KXMLDOMElement n = m_configDoc.selectSingleNode(L"//list/dwview[@type='dwgrid'][1]"); + if(n) + { + KXMLDOMElement e = n; + if(e.selectSingleNode(L"@dataUrl")) + { + string dataUrl = e.selectSingleNode(L"@dataUrl").text; + if(dataUrl.left(1)!="/") dataUrl = GetEntityName(1)+"/"+dataUrl; + getUrl(dataUrl, arg.GetString(), x); + KXMLDOMElement ele=x.GetXmlDoc().documentElement; + if(dw_pages.ptr_native_) + { + if(ele.selectSingleNode(L"@TotalPage")) + { + string s=ele.selectSingleNode(L"@TotalPage").text; //总数量 + dw_pages.SetMaxPage(s.toInt()); + } + } + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetReadOnly(true); + } + else + { + SetEntityData(arg); + } + } + else + { + SetEntityData(arg); + } + */ + } + + //历史数据 + int Onhistroydata() + { + int row = dw_list.GetNextSelectRow(1); + if (row > 0) + { + KXMLDOMElement e = dw_list.GetRowElement(row); + xaserverarg& arg = * new xaserverarg; + string sCustomerID = e.selectSingleNode(L"CustomerID").text(); + arg.AddArg(L"CustomerID", sCustomerID, L""); + string sCustomerName = e.selectSingleNode(L"CustomerName").text(); + arg.AddArg(L"CustomerName", sCustomerName, L""); + arg.AddArg(L"EntityName", GetEntityName(1), L""); + arg.AddArg(L"EntityID", GetEntityID(1), L""); + openUrl(L"/sale/view/SO/xpage/histroydata", &arg); + } + return 1; + } + + //xcombobox下拉 + int OnSelectDdlb(TEvent* evt, LPARAM p) + { + changeddlb = 1; + HWND wid = ddlb_1.GetHWND(); + int CB_GETCURSEL = 0x0147; + int nIndex =SendMessage(wid, CB_GETCURSEL, 0, 0); + KXMLDOMElement e = ddlb_1.GetElement(); + KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); + string no = e2.selectSingleNode(L"@element").text(); + + HTREEITEM hItem = tv_folder.GetRootItem(); + while (tv_folder.GetChildItem(hItem)) + tv_folder.DeleteItem(tv_folder.GetChildItem(hItem)); + ExpandFolderItem(hItem, no); + + changeddlb = 0; + return 1; + } + + + int OnSelectDataShowDdlb(TEvent* evt, LPARAM p) + { + HWND wid = cbx_datashow.GetHWND(); + int CB_GETCURSEL = 0x0147; + int nIndex = SendMessage(wid, CB_GETCURSEL, 0, 0); + KXMLDOMElement e = cbx_datashow.GetElement(); + KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]"); + rows = e2.selectSingleNode(L"@rows").text(); + OnPreRetrieve(); + + return 1; + } + + int PreOnCmdDispatch(xstring comdid) + { + if (comdid == L"action:bill.new") + { + xstring s = publiccode::GetUser().id; + xstring no = publiccode::GetUser().no; + if (no != L"00303" && no != L"admin") + { + KXMLDOMDocument supplier_x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SupplierV3/entity/FindBySaleType", L"id", s); + if (supplier_x) + { + if ((xstring)supplier_x.text() != L"业务员") + { + alert(L"当前角色不是业务员不能新增单子,请重新选择角色"); + return 0; + } + } + } + } + if (comdid == L"action:bill.annex") + { + xstring deptname = publiccode::GetUser().deptname; + if (deptname == L"采购部") + { + return 1; + } + + int row = dw_list.GetRow(); + if (row < 1) return 1; + xstring guid = dw_list.GetItemString(row, L"SOID"); + xaserverarg& arg = * new xaserverarg(); + + if (guid.length() <= 0)return 1; + + arg.AddArg(L"entityid", guid); + arg.AddArg(L"Type", L"Y"); + OpenWindow(L"dev:xpage[maint.Document.SO3.v3.vx]", arg); + + return 0; + } + if (comdid == L"action:bill.histroydata") return Onhistroydata(); + else if (comdid == L"action:bill.refresh") + { + changeddlb = 1; + HTREEITEM RItem = tv_folder.GetRootItem(); + while (tv_folder.GetChildItem(RItem)) + tv_folder.DeleteItem(tv_folder.GetChildItem(RItem)); + ExpandFolderItem(RItem, L"Category:Customer"); + tv_folder.ExpandItem(RItem); + tv_folder.ItemFocus(RItem); + changeddlb = 0; + return OnPreRetrieve(); + } + if (comdid == L"action:bill.saveas") + { + dw_list.SaveAs(L""); + return 1; + } + if (comdid == L"action:bill.SourceRemark") return OnSourceRemark(); + + return 1; + } + + int OnSourceRemark() + { + xstring name = L"外销合同"; + KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/TradeFinance3/GetSetUpRemarks", L"Type", name); + KXMLDOMNodeList items = x.selectNodes(L"data/Item"); + KXMLDOMNode t = items.item(0); + xstring Content = L""; + if (t.selectSingleNode(L"Content")) + { + Content = t.selectSingleNode(L"Content").text(); + } + xaserverarg& arg = *new xaserverarg; + arg.AddArg(L"value", Content); + OpenWindow(L"dev:xpage[memo.edit.new.vx]", arg); + + return 1; + } + + int OnRowChanged(TEvent* evt, LPARAM p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + + + if (row < 1) return 1; + + //fixed one event only one process + listwin::OnRowChanged(evt, p); + + HCURSOR hCursor = xutil::SetCursorWait(); + + xstring SONo = dw_list.GetItemString(row, L"SONo"); + KXMLDOMDocument x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SaleOrder/maint/item", L"id", SONo); + if (x) + dw_goods.Retrieve(x); + else + dw_goods.Reset(); + dw_goods.Redraw(); + dw_goods.SetReadOnly(true); + + x = ViewObject::RetrieveData(GetServerUrl(),L"/sale/data/SaleOrder/maint/itemwithsource", L"id", SONo); + if (x) + dw_source.Retrieve(x); + else + dw_source.Reset(); + dw_source.Redraw(); + dw_source.SetReadOnly(true); + + xutil::RestoreCursor(hCursor); + + return 1; + } + + + int AttachListon() + { + AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&SO3list::OnTreeSelChanged); //树选择 + AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&SO3list::OnRowChanged);//绑定行更改触发事件OnRowChanged + //AttachEvent(L"dw_list", L"DWV_DOUBLECLICKED", (FEvent)&listwin::OnDoubleClicked); + AttachEvent(L"cbx_1", L"CBN_SELCHANGE", (FEvent)&SO3list::OnSelectDdlb);//绑定下拉框更改触发事件OnSelectDdlb + AttachEvent(L"cbx_datashow", L"CBN_SELCHANGE", (FEvent)&SO3list::OnSelectDataShowDdlb);//绑定选择数据显示下拉列表事件OnSelectDataShowDdlb + return 1; + } + + int onload() + { + changeddlb = 0; + listwin::onload(); + ddlb_1 = GetControl(L"cbx_1"); + cbx_datashow = GetControl(L"cbx_datashow"); + dw_goods = GetControl(L"dw_goods"); + dw_goods.openUrl(GetServerUrl(),L"/sale/view/SaleOrder/template/item"); + dw_source = GetControl(L"dw_source"); + dw_source.openUrl(GetServerUrl(), L"/sale/view/SaleOrder/template/sourceitem"); + + dw_goods.SetColumnState(L"ItemID", false); + dw_goods.SetColumnState(L"LineType", false); + dw_goods.SetColumnState(L"Brand", false); + dw_goods.SetColumnState(L"Assortment", false); + dw_goods.SetColumnState(L"ClassifyID", false); + dw_goods.SetColumnState(L"UnitFreight", false); + //dw_goods.SetColumnState(L"CName",false);//隐藏列 + + dw_goods.SetColumnState(L"Brand", false); + dw_goods.SetColumnState(L"SKUNo", false); + dw_goods.SetColumnState(L"SOLineNo", false); + dw_goods.SetColumnState(L"CustomerPONo", false); + dw_goods.SetColumnState(L"ScheduleShipDate", false); + + dw_goods.SetColumnState(L"PackTechNote", false); + dw_goods.SetColumnState(L"EnquiryPriceListID", false); + dw_goods.SetColumnState(L"Submitter", false); + dw_goods.SetColumnState(L"POSupplierID", false); + dw_goods.SetColumnState(L"QuoteLineID", false); + + dw_list.SetColumnState(L"CreatorID", false); + dw_list.SetColumnState(L"SOID", false); + + + string groupname = publiccode::GetUser().groupname; + if (groupname == L"采购小组") + { + dw_list.SetColumnState(L"USDAmount", false); + dw_list.SetColumnState(L"RMBAmount", false); + + dw_goods.SetColumnState(L"UnitPrice", false); + dw_goods.SetColumnState(L"Amount", false); + dw_goods.SetColumnState(L"UnitCommPrice", false); + dw_goods.SetColumnState(L"CommissionRate", false); + + dw_source.SetColumnState(L"UnitPrice", false); + dw_source.SetColumnState(L"Amount", false); + dw_source.SetColumnState(L"FOBAmount", false); + dw_source.SetColumnState(L"BuyUnitPrice", false); + dw_source.SetColumnState(L"BuyAmount", false); + dw_source.SetColumnState(L"CostRate", false); + } + + rows = L"500"; + myDataUrl = L"/sale/data/SaleOrder/folder/list"; + urlTree = L"/sale/data/SaleOrder/folder"; + tv_folder = GetControl(L"tv_folder"); + tv_folder.SetLineAtRoot(true); + InitialFolder(); + + return 1; + } + + int onloaded() + { + listwin::onloaded(); + + //attach my control event + AttachListon(); + + dw_list.SetColumnState(L"SOID", false); + + HTREEITEM hItem = tv_folder.GetRootItem(); + ExpandFolderItem(hItem, L"Category:Customer"); + tv_folder.ExpandItem(hItem); + //tv_folder.ItemFocus(tv_folder.GetChildItem(hItem)); + tv_folder.ItemFocus(hItem); + + + return -1; + } + + int ProcessUsedArg(xaserverarg arg) + { + HTREEITEM hItem = tv_folder.GetCaretItem(); + if (hItem ) return 1; + KXMLDOMElement e = tv_folder.GetItemData(hItem); + xstring no = e.getAttribute(L"no"); + if (no.find(L"Customer:") >= 0) + { + arg.AddArg(L"CustomerID", e.getAttribute(L"id")); + xstring name = e.getAttribute(L"name"); + if (name.find(L"(L") >= 0) name = name.left(name.find(L"(L")); + arg.AddArg(L"CustomerName", name); + } + return 1; + } +}; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Resource.select.data.config.cpp b/jrj/project/business/SystemSettings/Resource.select.data.config.cpp new file mode 100644 index 0000000..ea28235 --- /dev/null +++ b/jrj/project/business/SystemSettings/Resource.select.data.config.cpp @@ -0,0 +1,93 @@ +use "dev:code[Data.resource.config.vx]" + +unit vbusiness.vpage +[ + resourceselectRole is extend DataRConfig; + about resourceselectRole + [ + field: + + method: + [ + int ForChild() + { + this.dw_list.SetReadOnly(true); + return 0; + } + + int OnSelectAll() + { + if(this.dw_list.GetRowCount() > 0 ) + this.dw_list.SelectRow(1,true); + + this.dw_list.SelectRow(0,true); + this.dw_list.Redraw(); + return 1; + } + + int OnSelectNo() + { + this.dw_list.SelectRow(0,false); + this.dw_list.Redraw(); + return 1; + } + + int OnOk() + { + xdwgrid__ dw_param = this.GetParam(); + if (dw_param) + { + int row = this.dw_list.GetNextSelectRow(1); + int dw_row = dw_param.GetRowCount(); + while (row>0){ + msxml::IXMLDOMElement e = this.dw_list.GetRowElement(row); + string scetegory = e.selectSingleNode("cetegory").text; + string sResource = e.selectSingleNode("resource").text; + string sName = e.selectSingleNode("name").text; + string sResConfigID = e.selectSingleNode("ResConfigID").text; + dw_row += 1; + dw_param.InsertRow(-1); + dw_param.SetItemString(dw_row,"cetegory",scetegory); + dw_param.SetItemString(dw_row,"resource",sResource); + dw_param.SetItemString(dw_row,"name",sName); + dw_param.SetItemString(dw_row,"ResConfigID",sResConfigID); + + this.dw_list.SelectRow(row,false); + row = this.dw_list.GetNextSelectRow(row + 1); + } + this.dw_list.Redraw(); + } + CloseWindow(); + return 1; + } + + int OnCancel() + { + win__::CloseWindow(); + return 1; + } + + int OnCmdDispatch(string comdid) + { + if (comdid=="SelectAll") OnSelectAll(); + else if (comdid=="SelectNo") OnSelectNo(); + else if (comdid=="Ok") OnOk(); + else if (comdid=="Cancel") OnCancel(); + return 0; + } + + int OnXCommand(ref TXCommandEvent evt,int p) + { + return OnCmdDispatch(evt.pStrID); + } + + int onload() + { + DataRConfig::onload(); + this.dw_list.SetSelectionMode(3); + + AttachEvent("WM_XCOMMAND",OnXCommand); + } + ] + ] +] \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/Role.config.cpp b/jrj/project/business/SystemSettings/Role.config.cpp new file mode 100644 index 0000000..f0287cc --- /dev/null +++ b/jrj/project/business/SystemSettings/Role.config.cpp @@ -0,0 +1,548 @@ +use "lang.vl" +use "win.vl" +use "treeview.vm" +use "dev:vm[xutil.vm]" +use "dev:vm[xdwtable.vm]" +use "dev:vm[xdwgrid.vm]" +use "sys.base.vl" + +use "dev:vm[xcell.vm]" + +unit vbusiness.vpage +[ + Roleconfig is extend TProject; + about Roleconfig + [ + field: + + method: + [ + treeview__ tv_menu; + xdwtable__ dw_list; + xdwgrid__ dw_param; + xdwgrid__ dw_role; + string m_status; + + int SetAgent() + { + string xfNodeAgentArea = "agentarea"; + xnode__ anode = new xnode__; + anode.setNativePointer(GetAgentNode(xfNodeAgentArea)); + var xframeElement = win__::GetElement(); + var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]"); + if(agent) + { + string s = agent.xml+""; + SetAgentNodeContent (anode,s); + } + return 1; + } + + int createTree(string id, int parentItem) + { + if(treeview__::GetChildItem(tv_menu.GetId(), parentItem) > 0) return 0; + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("pid",id); + //if(xaserver__::ExecXQuery(GetServerUrl(),"[leftFrame.xq]",arg.GetString(),x)!=1) + //if(url::get(m_iface+"/pref/tree",arg.GetString(),x)!=1) + if(url::get("/sale/data/Role.config/pref/tree",arg.GetString(),x)!=1) + { + trace(x.GetXml()); + return -1; + } + //trace(x.GetXml()); + var list=x.GetXmlDoc().selectNodes("items/item"); + int i=0,s=list.length; + msxml::IXMLDOMElement xitem; + for (i=0;i<s;i++) + { + xitem= list.item(s - i - 1); + string id = xitem.selectSingleNode("ModuleID").text; + string Name=""; + if(xitem.selectSingleNode("ModuleName")) Name=xitem.selectSingleNode("ModuleName").text; + string image = 15; + if(xitem.selectSingleNode("ModuelImage")) image=xitem.selectSingleNode("ModuelImage").text; + int curItem=treeview__::InsertItem(tv_menu.GetId(), parentItem,0,Name,id,image.toInt()); + string child=xitem.selectSingleNode("@child").text;//item.getAttribute("HasChild"); + if (child != "0") + treeview__::SetItemChild1(tv_menu.GetId(), curItem,1); + } + } + + int OnNew() + { + int i =1; + while(dw_list.GetColumnName(i) != "") + { + dw_list.SetItemString(1, i, ""); + i++; + } + dw_list.ResetUpdateStatus(); + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + x.LoadXml("<item><ModuelPage/><status _displaystring='启用'>Y</status><type _displaystring='菜单'>0</type><ModuelImage>17</ModuelImage><ModuelParam><args/></ModuelParam><roles/></item>"); + dw_list.Retrieve(x); + dw_list.ResetUpdateStatus(); + dw_list.Redraw(); + dw_param.Retrieve(x.GetXmlDoc().selectSingleNode("item/ModuelParam/args")); + dw_param.ResetUpdateStatus(); + dw_param.Redraw(); + dw_role.Retrieve(x.GetXmlDoc().selectSingleNode("item/roles")); + dw_role.ResetUpdateStatus(); + dw_role.Redraw(); + return 1; + } + + int OnAddRow(xdwgrid__ dw) + { + dw.InsertRow(0); + return 1; + } + + int OnDelRow(xdwgrid__ dw) + { + int row = dw.GetRow(); + if(row<1 || row > dw.GetRowCount()) return -1; + dw.DeleteRow(row); + return 1; + } +/* + int openUrl(string aurl, param para) + { + int pos = aurl.find("/",0); + if(pos<0) return ""; + string iface = aurl.left(pos); + string root = aurl.mid(pos + 1,9999); + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + if( iface.find(".vface",0)<0 ) + { + return -1; + } + else + { + string typ = iface.mid(iface.find(".",0) + 1,9999); + xaserver__::LoadUrl("","dev:"+typ+"["+iface+"]","",x); + } + var doc = x.GetXmlDoc(); + var n = doc.selectSingleNode("//resource[@url='" + root+"']/@src"); + if(n) + { + string xq = n.text; + return OpenWindow(xq, para); + }else + { + n = doc.selectSingleNode("//group[@for='worknode']/resource[@url='" + root+"']"); + if(n) + { + string vface = n.selectSingleNode("@vface").text; + string view = n.selectSingleNode("@view").text; + string config = n.selectSingleNode("@config").text; + if(config != "" ) + { + xaserverarg__ arg = para; + arg.AddArg("config",config); + } + + if(vface=="."|| vface=="") + { + var v = doc.selectSingleNode("//resource[@url='" + view+"']/@src"); + if(v) + { + return OpenWindow(v.text, para); + } + }else + return openUrl(vface+"/"+view,para); + } + } + return -1; + } +*/ + int OnAddRole() + { + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + //OpenWindow("dev:xpage[selectRole.vx]", arg); + //openUrl(m_vface+"/xpage/role/select/user", arg); + openUrl("/sale/view/Role.config/xpage/role/select/user", arg); + string str = arg.GetArgString("item"); + if(str == "") return -1; + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + x.LoadXml(str); + var list=x.GetXmlDoc().selectNodes("items/item"); + int i=0,s=list.length; + msxml::IXMLDOMElement xitem; + int row = dw_role.GetRowCount() + 1; + for (i=0;i<s;i++) + { + xitem= list.item(i); + string id = ""+xitem.selectSingleNode("@id").text; + string name=""+xitem.selectSingleNode("@name").text; + string tpy=""+xitem.selectSingleNode("@type").text; + dw_role.InsertRow(0); + dw_role.SetItemString(row + i, "id", id); + dw_role.SetItemString(row + i, "name", name); + dw_role.SetItemString(row + i, "type", tpy); + } + return 1; + } + + int OnDel() + { + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + dw_list.DwUpdateAllTo(x.GetXmlDoc()); + msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; + string id = e.selectSingleNode("@guid").text; + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("id", id); + //trace(id); + //if(xaserver__::ExecXQuery(GetServerUrl(),"[deleteModule.xq]",arg.GetString(),x)!=1) + //if(url::get(m_iface+"/pref/delete",arg.GetString(),x)!=1) + if(url::get("/sale/data/Role.config/pref/delete",arg.GetString(),x)!=1) + { + trace("error:"+x.GetXml()); + alert("删除出错!"); + return 0; + } + if(x.GetXmlDoc().selectSingleNode("error")) + { + alert("请先删除子项!"); + return 0; + } + int sitem = treeview__::GetSelectedItem(tv_menu.GetId()); + treeview__::DeleteItem(tv_menu.GetId(), sitem); + return 1; + } + + int OnSave() + { + dw_param.AcceptText(); + dw_list.AcceptText(); + /*int aa=1,bb=1; + xpoint p; + dw_list.getNullCell(p); + int xx = p.x; + trace(xx); + int yy = p.y; + trace(yy); + string zz = dw_list.GetColumnName(yy); + trace(zz);*/ + + int m = treeview__::GetSelectedItem(tv_menu.GetId()); + if(m == 0) return -1; + + int n = treeview__::GetRootItem(tv_menu.GetId()); + if(m == n) + if(m_status == "update.modify") + { + alert("根节点不能修改!"); + return 1; + } + + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + dw_list.DwUpdateAllTo(x.GetXmlDoc()); + msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; + e.SetAttribute(m_status, "1"); + //trace(e.xml); + //return 1; + + xml__ x1 = new xml__; + x1.setNativePointer(xml__ ::CreateInstance()); + dw_param.DwUpdateAllTo(x1.GetXmlDoc()); + msxml::IXMLDOMElement p = x1.GetXmlDoc().documentElement; + e.AppendChild(p); + + xml__ x2 = new xml__; + x2.setNativePointer(xml__ ::CreateInstance()); + dw_role.DwUpdateAllToEx(x2.GetXmlDoc()); + msxml::IXMLDOMElement r = x2.GetXmlDoc().documentElement; + e.AppendChild(r); + + //trace(e.xml); + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("content", e.xml); + arg.AddArg("dbmap", "Role.config.dbmap"); + //if(xaserver__::ExecXQuery(GetServerUrl(),"[saveModule.xq]",arg.GetString(),x)!=1) + //if(url::get(m_iface+"/pref/save",arg.GetString(),x)!=1) + if(url::get("/sale/data/Role.config/pref/save",arg.GetString(),x)!=1) + { + trace("error:"+x.GetXml()); + alert("保存出错!"); + return 0; + } + //trace(x.GetXml()); + if(x.GetXmlDoc().selectSingleNode("error")) + { + alert("保存出错2!"); + return 0; + } + dw_list.ResetUpdateStatus(); + dw_param.ResetUpdateStatus(); + dw_role.ResetUpdateStatus(); + + string id = e.selectSingleNode("@guid").text; + string name = ""; + if(e.selectSingleNode("ModuleName")) + name = e.selectSingleNode("ModuleName").text; + string image = 15; + if(e.selectSingleNode("ModuelImage")) + image = e.selectSingleNode("ModuelImage").text; + int sitem = treeview__::GetSelectedItem(tv_menu.GetId()); + if(m_status == "update.new") + treeview__::InsertChildItem(tv_menu.GetId(), sitem, name, id, image.toInt()); + else if(m_status == "update.modify") + treeview__::SetItemLabel(tv_menu.GetId(), sitem, name); + + if(m_status == "update.new") + { + OnNew(); + int sitem = treeview__::GetSelectedItem(tv_menu.GetId()); + string xxid = treeview__::GetItemData(tv_menu.GetId(), sitem); + dw_list.SetItemString(1, "ModulePID", xxid); + } + alert("保存成功!"); + return 1; + } + + int OnCmdDispatch(string comdid) + { + int hCursor = xutil__::SetCursorWait(); + if(comdid == "New") + { + m_status = "update.new"; + OnNew(); + int sitem = treeview__::GetSelectedItem(tv_menu.GetId()); + string id = treeview__::GetItemData(tv_menu.GetId(), sitem); + dw_list.SetItemString(1, "ModulePID", id); + } + else if(comdid == "addparam") + OnAddRow(dw_param); + else if(comdid == "delparam") + OnDelRow(dw_param); + else if(comdid == "addrole") + OnAddRole(); + else if(comdid == "delrole") + OnDelRow(dw_role); + else if(comdid == "Del") + OnDel(); + else if(comdid == "Save") + OnSave(); + + xutil__::RestoreCursor(hCursor); + return 0; + } + + int OnTreeMoveNode(ref TNotifyEvent evt,int p) + { + ref TVNNMHDR nmtv = evt.pnmh; + int xfrom = nmtv.FromItem; + int xto = nmtv.ToItem; + + int ret = win__::MessageBox(this.GetHWND(), "确定移动节点!","提示:",1); + //trace(ret); + if(ret == 2) + { + treeview__::DeleteItem(tv_menu.GetId(), xto); + return -1; + } + + string fid = treeview__::GetItemData(tv_menu.GetId(), xfrom); + int xpto = treeview__::GetParentItem(tv_menu.GetId(), xto); + string tid = treeview__::GetItemData(tv_menu.GetId(), xpto); + + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("from", fid); + arg.AddArg("to", tid); + trace(arg.GetString()); + //if(url::get(m_iface+"/pref/tree/move",arg.GetString(),x)!=1) + if(url::get("/sale/data/Role.config/pref/tree/move",arg.GetString(),x)!=1) + { + trace("error:"+x.GetXml()); + alert("移动节点出错!"); + treeview__::DeleteItem(tv_menu.GetId(), xto); + return 0; + } + treeview__::DeleteItem(tv_menu.GetId(), xfrom); + return 1; + } + + int OnTreeExpanding(ref TNotifyEvent evt,int p) + { + ref NMTREEVIEW nmtv = evt.pnmh; + int sitem = nmtv.itemNew.hItem; + + string id = treeview__::GetItemData(tv_menu.GetId(), sitem); + int hCursor = xutil__::SetCursorWait(); + createTree(id, sitem); + xutil__::RestoreCursor(hCursor); + return 1; + } + + int OnTreeSelChanged(ref TNotifyEvent evt,int p) + { + ref NMTREEVIEW nmtv = evt.pnmh; + int hItem = nmtv.itemNew.hItem; + + int hCursor = xutil__::SetCursorWait(); + string id = treeview__::GetItemData(tv_menu.GetId(), hItem); + //trace(id); + m_status = "update.modify"; + + OnNew(); + + int xItem = treeview__::GetRootItem(tv_menu.GetId()); + if(hItem == xItem) + { + string label = treeview__::GetItemLabel(tv_menu.GetId(), xItem); + dw_list.SetItemString(1, "ModuleName", label); + dw_list.ResetUpdateStatus(); + return 0; + } + + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + dw_list.Retrieve(x); + dw_list.Redraw(); + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("id",id); + //if(xaserver__::ExecXQuery(GetServerUrl(),"[leftMenu.xq]",arg.GetString(),x)!=1) + //if(url::get(m_iface+"/pref/maint",arg.GetString(),x)!=1) + if(url::get("/sale/data/Role.config/pref/maint",arg.GetString(),x)!=1) + { + trace(x.GetXml()); + return -1; + } + dw_list.Retrieve(x); + dw_list.ResetUpdateStatus(); + dw_list.Redraw(); + if(x.GetXmlDoc().selectSingleNode("item/ModuelParam/args")) + { + dw_param.Retrieve(x.GetXmlDoc().selectSingleNode("item/ModuelParam/args")); + dw_param.ResetUpdateStatus(); + dw_param.Redraw(); + } + if(x.GetXmlDoc().selectSingleNode("item/roles")) + { + dw_role.Retrieve(x.GetXmlDoc().selectSingleNode("item/roles")); + dw_role.ResetUpdateStatus(); + dw_role.SetReadOnly(true); + dw_role.Redraw(); + } + //msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement; + + xutil__::RestoreCursor(hCursor); + return 1; + } + + int OnSetFocus(ref TEvent evt,int p) + { + SetAgent(); + return 1; + } + + int OnXCommand(ref TXCommandEvent evt,int p) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnItemChanged(ref TNotifyEvent evt,int p) + { + ref DWNMHDR hdr = evt.pnmh; + string colname=hdr.colname; + if(colname == "type") + { + string value = hdr.data; + //trace(colname, value); + if(value == "0") + dw_list.SetItemString(1, "ModuelImage", "17"); + else + dw_list.SetItemString(1, "ModuelImage", "16"); + } + return 1; + } + + int OnDBClick(ref TNotifyEvent evt,int p) + { + ref DWNMHDR hdr = evt.pnmh; + string colname=hdr.colname; + if(colname == "type") + { + string value = hdr.data; + //trace(colname, value); + if(value == "0") + dw_list.SetItemString(1, "ModuelImage", "17"); + else + dw_list.SetItemString(1, "ModuelImage", "16"); + } + return 1; + } + + int OnItemError(ref TNotifyEvent evt,int p) + { + ref DWNMHDR hdr = evt.pnmh; + string colname=hdr.colname; + trace(colname); + int e = hdr.idFrom; + trace(e); + + return 1; + } + + int onload() + { + tv_menu = new treeview__; + tv_menu.setNativePointer(GetControl("tv_folder")); + int hItem = treeview__::InsertChildItem(tv_menu.GetId(), 0, "模块", "", 17); + createTree("null", hItem); + treeview__::ExpandItemEx(tv_menu.GetId(), hItem); + + dw_list = new xdwtable__; + dw_list.setNativePointer(GetControl("dw_base")); + //dw_list.SetDataObject(GetServerUrl(), "dev:sheet[leftFrame.tpl/module]"); + //dw_list.openUrl(m_vface+"/template/role/config/module"); + dw_list.openUrl("/sale/view/Role.config/template/role/config/module"); + dw_list.SetColHeaderHeight(0); + dw_list.SetRowSelectorWidth(0); + dw_list.SetScrollState(false); + + dw_param = new xdwgrid__; + dw_param.setNativePointer(GetControl("dw_param")); + //dw_param.SetDataObject(GetServerUrl(), "dev:sheet[leftFrame.tpl/param]"); + //dw_param.openUrl(m_vface+"/template/role/config/param"); + dw_param.openUrl("/sale/view/Role.config/template/role/config/param"); + + dw_role = new xdwgrid__; + dw_role.setNativePointer(GetControl("dw_role")); + //dw_role.SetDataObject(GetServerUrl(), "dev:sheet[leftFrame.tpl/role]"); + //dw_role.openUrl(m_vface+"/template/role/config/role"); + dw_role.openUrl("/sale/view/Role.config/template/role/config/role"); + dw_role.SetReadOnly(false); + + AttachEvent("tv_folder", "TVN_ITEMEXPANDING",OnTreeExpanding); + AttachEvent("tv_folder", "TVN_SELCHANGED",OnTreeSelChanged); + AttachEvent("tv_folder", "TVN_ENDDRAG",OnTreeMoveNode); + AttachEvent("WM_XCOMMAND",OnXCommand); + AttachEvent("WM_SETFOCUS",OnSetFocus); + AttachEvent("dw_base","DWV_ITEMCHANGED",OnItemChanged); + AttachEvent("dw_base","DWV_DOUBLECLICKED",OnDBClick); + AttachEvent("dw_base","DWV_ITEMERROR",OnItemError); + + SetAgent(); + + return 1; + } + ] + ] +] \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/SysLoginRecord.cpp b/jrj/project/business/SystemSettings/SysLoginRecord.cpp new file mode 100644 index 0000000..72012a6 --- /dev/null +++ b/jrj/project/business/SystemSettings/SysLoginRecord.cpp @@ -0,0 +1,101 @@ +#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) SysLoginRecord : public xframe + { + public: + xdwgrid dw_logrecord; + xdwtable dw_arg; + public: + SysLoginRecord(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static SysLoginRecord* CreateInstance(void* implPtr, void* hWnd) + { + SysLoginRecord* pWin = new SysLoginRecord(implPtr, (HWND)hWnd); + return pWin; + } + int OnRetrieve() + { + xcontrol xc_text =GetControl(L"QueryTxt"); + xcontrol xc_cbx = GetControl(L"cbx_type"); + xstring ls_querytxt; + xstring ls_querytype; + ls_querytxt = xc_text.GetText(); + ls_querytype = xc_cbx.GetText(); + xml x ; + xaserverarg arg ; + arg.AddArg(L"sType",ls_querytype); + arg.AddArg(L"QueryText",ls_querytxt); + arg.AddArg(L"QueryArg",GetQueryArg()); + //alert(ls_querytxt); + if (xurl::get(L"/sale/data/Total3/total/GDNTotal/Item/GetSysLoginLog",arg.GetString(),x) == 1) + { + //trace(x.xml()); + dw_logrecord.Retrieve(x); + dw_logrecord.Redraw(); + dw_logrecord.SetSelectionMode(1); + } + else + alert(L"查不到"); + return 1; + } + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + HCURSOR hCursor = xutil::SetCursorWait(); + if(comdid==L"ContSearch") + OnRetrieve(); + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + xstring GetQueryArg() + { + dw_arg.AcceptText(); + xml x ; + + dw_arg.DwUpdateAllTo(x); + return x.xml(); + } + + + int OnAttachEvent() + { + AttachEvent(L"WM_XCOMMAND", (FEvent)&SysLoginRecord::OnXCommand); + return 1; + } + + int onload() + { + dw_logrecord = GetControl(L"dw_logrecord"); + dw_logrecord.openUrl(L"/sale/view/SysUser/template/SysLoginRecord"); + dw_arg = GetControl(L"dw_arg"); + dw_arg.openUrl(L"/sale/view/AR/template/queryarg"); + dw_arg.SetColHeaderHeight(0); + dw_arg.SetRowSelectorWidth(0); + dw_arg.SetHScrollState(false); + dw_arg.SetVScrollState(false); + return 0; + } + int onloaded() + { + //alert(L"xxx"); + OnAttachEvent(); + //OnRetrieve(); + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/SysUser.cpp b/jrj/project/business/SystemSettings/SysUser.cpp new file mode 100644 index 0000000..51322ba --- /dev/null +++ b/jrj/project/business/SystemSettings/SysUser.cpp @@ -0,0 +1,330 @@ +use "win.vl" +use "treeview.vm" +use "dev:vm[xdwgrid.vm]" +use "dev:vm[xdwtable.vm]" +use "pref.vl" +use "dev:vm[xml.vm]" +use "dev:vm[xaserverarg.vm]" +use "dev:vm[xaserver.vm]" +use "dev:vm[xutil.vm]" +use "dev:code[pa.tpp]" +use "list.vl" + +unit vbusiness.xpage +[ + SysUser is extend list; + about SysUser + [ + + method: + [ + treeview__ tv_usergroup; + xdwgrid__ dw_user; + xnode__ m_agentNode; + string strJobID; + int SetAgent() + { + string xfNodeAgentArea = "agentarea"; + xnode__ anode = new xnode__; + anode.setNativePointer(GetAgentNode(xfNodeAgentArea)); + var xframeElement = GetElement(); + var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); + if(agent) + { + string s = agent.xml; + SetAgentNodeContent (anode,s); + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(ref TEvent evt,int param) + { + SetAgent(); + //重置工具条 + return 1; + } + + int SetEntityData(param p) + { + xml__ x=new xml__; + x.setNativePointer(x.CreateInstance()); + xaserverarg__ arg = new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + string str = this.m_QueryTxt; + //trace(ele.xml); + //alert(str); + arg.AddArg("guid",str); + //trace(strJobID); + if (xaserver__::ExecXQuery("","[list.SysUser.xq]",arg.GetString(),x) == 1) + { + dw_user.AcceptText(); + dw_user.Retrieve(x); + dw_user.Redraw(); + } + return 1; + } + + int OnTreeSelChanged(ref TNotifyEvent evt,int p) + { + ref NMTREEVIEW nmtv = evt.pnmh; + int hItem = nmtv.itemNew.hItem; + + int wid = tv_usergroup.GetId(); + int hitem=treeview__::GetSelectedItem(wid); + int rootItem = treeview__::GetRootItem(wid); + //if (hItem <=0 || hItem == rootItem) + // return 0; + msxml::IXMLDOMElement ele = treeview__::GetItemData(wid,hitem); + //trace("ok"); + if (ele) + { + xml__ x=new xml__; + x.setNativePointer(x.CreateInstance()); + xaserverarg__ arg = new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + strJobID = ele.selectSingleNode("@JobID").text; + //trace(ele.xml); + //alert(strJobID); + arg.AddArg("guid",strJobID); + //trace(strJobID); + if (xaserver__::ExecXQuery("","[list.SysUser.xq]",arg.GetString(),x) == 1) + { + dw_user.AcceptText(); + dw_user.Retrieve(x); + dw_user.Redraw(); + } + } + + return 1; + } + + int xmImport() + { + + int wid = tv_usergroup.GetId(); + int hitem=treeview__::GetSelectedItem(wid); + if (!hitem) + { + alert("请选择职位!"); + return 0; + } + OpenWindow("dev:xpage[UserImport.vx]",this); + //openUrl("系统用户.vface/xpage/SysUser/UserImport", this); + return 1; + } + int OnSave() + { + xml__ x=new xml__; + x.setNativePointer(x.CreateInstance()); + dw_user.DwUpdateAllToEx(x.GetXmlDoc()); + xaserverarg__ arg = new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("content",x.GetXml()); + arg.AddArg("dbmap","SysUser.dbmap"); + if(getUrl("/sale/data/SysUser/SysUser",arg.GetString(),x)!=1) + { + //trace("error:"+x.GetXml()); + alert("保存失败"); + } + else{ + if(x.GetXmlDoc().selectSingleNode("erroe")) + { + alert("保存出错2! "); + return 0; + } + //trace(x.GetXml()); + dw_user.ResetUpdateStatus(); + win__::MessageBox(GetHWND(),"保存成功!","提示",0); + } + +/* arg.AddArg("xdata",x.GetXml()); + //arg.AddArg("jobguid",strJobID); + //trace(x.GetXml()); + //trace(strJobID); + //if (getUrl("/sale/data/SysUser/SysUser",arg.GetString(),x) != 1) + //trace(xaserver__::ExecXAction(GetServerUrl(),"[SysUser.xa]",arg.GetString(),x)); + if (xaserver__::ExecXAction(GetServerUrl(),"[SysUser.xa]",arg.GetString(),x)!=1) + { + //trace("error:"+x.GetXml()); + alert("保存失败"); + } + else{ + if(x.GetXmlDoc().selectSingleNode("ERROR")) + { + alert("保存出错2! "); + return 0; + } + win__::MessageBox(GetHWND(),"保存成功!","提示",0); + }*/ + return 1; + } + int OnAddRow() + { + int wid = tv_usergroup.GetId(); + int hitem=treeview__::GetSelectedItem(wid); + if(hitem==0) + { + alert("请先选择职位类型!"); + } + else + { + int row = dw_user.InsertRow(0); + dw_user.SetItemString(row,"Status","Y"); + } + return 1; + } + + int OnInsertRow() + { + int wid = tv_usergroup.GetId(); + int hitem=treeview__::GetSelectedItem(wid); + if(hitem==0) + { + alert("请先选择职位类型!"); + } + else + { + int crow=dw_user.GetRow(); + int row=dw_user.InsertRow(crow); + dw_user.SetItemString(row,"Status","Y"); + } + return 1; + } + + int OnDeleteRow() + { + int row=dw_user.GetRow(); + dw_user.DeleteRow(row); + return 1; + } + + int OnJobType() + { + openUrl("组织架构.vface/worknode/Hr/HrJob"); + return 1; + } + + int OnClicked(ref TNotifyEvent evt,int p) + { + ref DWNMHDR hdr = evt.pnmh; + int row = hdr.row; + int col=hdr.col ; + string colname=dw_user.GetColumnName(col); + msxml::IXMLDOMElement xrow = dw_user.GetRowElement(row); + string BindComputer=xrow.selectSingleNode("BindComputer").text; + xaserverarg__ arg = new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + if(BindComputer != "" ) + { + arg.AddArg("BindComputer",BindComputer); + } + + string comdid; + if(colname=="BindComputer") + { + openUrl("系统用户.vface/xpage/SysUser/BindComputer/dialog", arg); + comdid = arg.GetArgString("comdid"); + if(comdid=="ok") + { + string strxml = arg.GetArgString("xml"); + dw_user.SetItemDisplayString(row,colname,strxml); + dw_user.SetItemString(row,colname,strxml); + dw_user.Redraw(); + } + } + return 1; + } + + int OnResetPass() + { + xaserverarg__ arg = new xaserverarg__; + int pt = arg.CreateInstance(); + arg.setNativePointer(pt); + + int row = dw_user.GetRow(); + if(row < 1) return 1; + arg.AddArg("user", dw_user.GetItemString(row,"EmployeeNo")); + + OpenWindow("dev:xpage[ResetUserPassDlg.vx]",pt); + return 1; + } + + int Onlog() + { + openUrl("/sale/view/SysUser/xpage/SysUser/SysLoginRecord"); + return 1; + } + //命令发布函数 + int OnCmdDispatch(string comdid) + { + if (comdid =="Save") OnSave(); + else if (comdid =="AddRow") OnAddRow(); + else if (comdid =="InsertRow") OnInsertRow(); + else if (comdid =="DeleteRow") OnDeleteRow(); + else if (comdid =="JobType") OnJobType(); + else if (comdid=="xmImport") xmImport(); + else if (comdid == "xmLog") Onlog(); + else if(comdid=="_cb_grid_search") return GridSearchEx(); + else if(comdid=="xmResetPass") return OnResetPass(); + else if(comdid=="xmResetPassEx") OpenWindow("dev:xpage[SysForcePassward.vx]"); + return 0; + } + + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int param) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent("WM_SETFOCUS",OnSetFocus); + //获得树的选择事件 + AttachEvent("tv_usergroup", "TVN_SELCHANGED",OnTreeSelChanged); + //AttachEvent("dw_user","DWV_ITEMBEINGEDIT",OnClicked); + AttachEvent("dw_user","DWV_DOUBLECLICKED",OnClicked); + } + + int OnInitial() + { + SetAgent(); + + OnAttachEvent(); + return 1; + } + + int onload() + { + m_agentNode = new xnode__; + + tv_usergroup = new treeview__; + tv_usergroup.setNativePointer(this.GetControl("tv_usergroup")); + dw_user = new xdwgrid__; + dw_user.setNativePointer(this.GetControl("dw_user")); + dw_user.SetDataObject(GetServerUrl(),"dev:sheet[SysUser.tpl/UserList]"); + dw_user.SetReadOnly(true); + dw_user.SetSelectionMode(1); + + OnInitial(); + int wid = tv_usergroup.GetId(); + int root = treeview__::GetRootItem(wid); + treeview__::ExpandItem(wid,root); + + xml__ x=new xml__; + x.setNativePointer(xml__::CreateInstance()); + x.LoadXml("<Config/>"); + this.m_configDoc = x.GetXmlDoc(); + rowSearch("系统用户.vface/template/SysUser/list"); + GridSearchEx(); + + return 1; + } + ] + + ] +] \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/TestRetrieveing.cpp b/jrj/project/business/SystemSettings/TestRetrieveing.cpp new file mode 100644 index 0000000..d61909f --- /dev/null +++ b/jrj/project/business/SystemSettings/TestRetrieveing.cpp @@ -0,0 +1,67 @@ +#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) TestRetrieveingWin: public xframe + { + public: + //xdwgrid dw_list; + + xnode m_agentNode; //Agent Condition + public: + TestRetrieveingWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static TestRetrieveingWin* CreateInstance(void* implPtr, void* hWnd) + { + TestRetrieveingWin* pWin = new TestRetrieveingWin(implPtr, (HWND)hWnd); + return pWin; + } + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid==L"RetrieveFinished") + { + CloseWindow(); + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&TestRetrieveingWin::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&TestRetrieveingWin::OnSetFocus); + return 1; + } + + int onload() + { + OnAttachEvent(); + + return 1; + } + + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/UserImport.cpp b/jrj/project/business/SystemSettings/UserImport.cpp new file mode 100644 index 0000000..801196b --- /dev/null +++ b/jrj/project/business/SystemSettings/UserImport.cpp @@ -0,0 +1,329 @@ +use "win.vl" +use "treeview.vm" +use "dev:vm[xdwgrid.vm]" +use "dev:vm[xdwtable.vm]" +use "pref.vl" +use "dev:vm[xml.vm]" +use "dev:vm[xaserverarg.vm]" +use "dev:vm[xaserver.vm]" +use "dev:vm[xutil.vm]" +use "dev:code[SysUser.vx]" +use "frame.vl" +use "file.vl" +unit vbusiness.xpage +[ + UserImport is extend frame; + about UserImport + [ + field: + [ + SysUser lw_obj; + xdwgrid__ dw_list; + treeview__ tv_org; + xnode__ m_agentNode; //Agent Condition + string m_agentCond; //Agent Node + string m_sTxt; + string is_orgid; + ] + + method: + [ + int SetAgent() + { + string xfNodeAgentArea = "agentarea"; + xnode__ anode = new xnode__; + anode.setNativePointer(GetAgentNode(xfNodeAgentArea)); + var xframeElement = GetElement(); + var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); + if(agent) + { + string s = agent.xml; + SetAgentNodeContent (anode,s); + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(ref TEvent evt,int param) + { + SetAgent(); + //重置工具条 + return 1; + } + + int OnRetrieve(string ls_orgid) + { + + xml__ x=new xml__; + x.setNativePointer(x.CreateInstance()); + xaserverarg__ arg = new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("OrgID",ls_orgid); + //trace(ls_orgid); + //if (xaserver__::ExecXQuery(GetServerUrl(),"[MSSqlHrEmployee.xq]",arg.GetString(),x) == 1) + if (url::get("SysUser.config/UserSelect.xq",arg.GetString(),x) == 1) + { + dw_list.Retrieve(x); + dw_list.Redraw(); + } + //trace(x.GetXml()); + return 1; + } + + int OnOK() + { + if (GetParam()) + { + lw_obj = new SysUser; + lw_obj.setNativePointer(GetParam()); + lw_obj = GetParam(); + } + else + return 0; + + int row = dw_list.GetNextSelectRow(1); + trace(row); + if (row<1) + { + alert("请选择人员!"); + return 1; + } + + string sPositionID,sPositionName; + string sOrgID,sOrgName; + string sJobID,sJobName; + int wid = lw_obj.tv_usergroup.GetId(); + int hitem=treeview__::GetSelectedItem(wid); + msxml::IXMLDOMElement ele = treeview__::GetItemData(wid,hitem); + + + while (row>0) + { + trace(row); + msxml::IXMLDOMElement e = dw_list.GetRowElement(row); + trace(e.xml); + string sEmployeeNo = e.selectSingleNode("EmployeeNo").text+""; + string sOldEmpNo = e.selectSingleNode("OldEmpNo").text+""; + string sPersonID = e.selectSingleNode("PersonID").text+""; + string sPersonName = e.selectSingleNode("Name").text+""; + string sPassWord = xutil__::MD5(sOldEmpNo); + + /* + xml__ xx = new xml__; + xx.setNativePointer(xml__ ::CreateInstance()); + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("userno",sOldEmpNo); + arg.AddArg("password",sPassWord); + if(url::get("/sale/data/SysUser/GetOldPassWord",arg.GetString(),xx)==1) + { + if(xx.GetXml()!="") + { + msxml::IXMLDOMElement ex = xx.GetXmlDoc().documentElement; + sPassWord = ""+ex.text; + } + }*/ + + int nRow = lw_obj.dw_user.InsertRow(0); + lw_obj.dw_user.SetItemString(nRow,"EmployeeNo",sEmployeeNo); + lw_obj.dw_user.SetItemString(nRow,"UserName",sOldEmpNo); + lw_obj.dw_user.SetItemString(nRow,"PassWord",sPassWord); + lw_obj.dw_user.SetItemString(nRow,"PersonID",sPersonID); + lw_obj.dw_user.SetItemDisplayString(nRow,"PersonID",sPersonName); + lw_obj.dw_user.SetItemString(nRow,"Status","Y"); + lw_obj.dw_user.SetItemDisplayString(nRow,"Status","有效"); + lw_obj.dw_user.SetItemString(nRow,"OldEmpNo",sOldEmpNo); + /* + lw_obj.dw_user.SetItemString(nRow,"PositionID",sPositionID); + lw_obj.dw_user.SetItemDisplayString(nRow,"PositionID",sPositionName); + lw_obj.dw_user.SetItemString(nRow,"OrgID",sOrgID); + lw_obj.dw_user.SetItemDisplayString(nRow,"OrgID",sOrgName); + lw_obj.dw_user.SetItemString(nRow,"JobID",sJobID); + lw_obj.dw_user.SetItemDisplayString(nRow,"JobID",sJobName); + + lw_obj.dw_user.SetItemString(nRow,"Status","Y"); + lw_obj.dw_user.SetItemDisplayString(nRow,"Status","有效"); + string sdate = TApp::GetCurDate()+""; + lw_obj.dw_user.SetItemString(nRow,"StartDate",sdate+""); + lw_obj.dw_user.SetItemString(nRow,"EndDate","2050-12-31");*/ + + row = dw_list.GetNextSelectRow(row + 1); + trace(row); + } + CloseWindow(); + return 1; + } + int OnSubTree(string id,int parentitem) + { + int wid = tv_org.GetId(); + if (treeview__::GetChildItem(wid,parentitem) >0) return 1; + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("sguid",id); + if(url::post("/sale/data/OrganizationStruct/tree.child.OrgChart",arg.GetString(),x)!=1) + { + trace(x.GetXml()); + return -1; + } + //trace(x.GetXml()); + var list=x.GetXmlDoc().selectNodes("//item"); + int i=0,s=list.length; + msxml::IXMLDOMElement xitem; + string sName; + string sguid; + string stype; + if (s >0) + { + for (i=0;i<s;i++) + { + xitem= list.item(i); + sName = xitem.SelectSingleNode("name").text; + sguid = xitem.SelectSingleNode("id").text; + stype = xitem.SelectSingleNode("typ").text; + //int curItem = tv_org.InsertChildItemEx(wid,parentitem,sName,xitem,15,4); + int curItem=0; + if (stype =="Org") + { + curItem=tv_org.InsertChildItemEx(wid,parentitem,sName,xitem,15,4); + tv_org.SetItemChild1(wid,curItem,1); + } + else + { + curItem=tv_org.InsertChildItemEx(wid,parentitem,sName,xitem,21,21); + } + //OnSubTree(sguid,curItem); + } + } + return 1; + } + + int OnCreateTree(string id,int parentitem) + { + //while (tv_1.GetRootItem()>0) + // tv_1.DeleteItem(tv_1.GetRootItem()); + int wid = tv_org.GetId(); + xml__ x = new xml__; + x.setNativePointer(xml__ ::CreateInstance()); + x.LoadXml("<item><id>"+id+"</id><no/><name>凤凰集团</name><typ>Org</typ></item>"); + //msxml::IXMLDOMDocument root = x.GetXmlDoc(); + //msxml::IXMLDOMElement RDoc = x.GetXmlDoc().documentElement; + //msxml::IXMLDOMElement ele = RDoc.SelectSingleNode("//Org"); + msxml::IXMLDOMElement ele = x.GetXmlDoc().SelectSingleNode("//item"); + int hItem = treeview__::InsertChildItemEx(wid,0,"凤凰集团",ele,15,4); + treeview__::SetItemChild1(wid,hItem,1); + return 1; + + /*xaserverarg__ arg=new xaserverarg__; + arg.setNativePointer(arg.CreateInstance()); + arg.AddArg("sguid",id); + if(url::post("/sale/data/OrganizationStruct/tree.child.OrgChart",arg.GetString(),x)!=1) + { + trace(x.GetXml()); + return -1; + } + //trace(x.GetXml()); + var list=x.GetXmlDoc().selectNodes("//item"); + int i=0,s=list.length; + msxml::IXMLDOMElement xitem; + string sName; + string sguid; + if (s >0) + { + for (i=0;i<s;i++) + { + xitem= list.item(i); + sName = xitem.SelectSingleNode("@name").text; + sguid = xitem.SelectSingleNode("@id").text; + int curItem = tv_org.InsertChildItemEx(wid,hItem,sName,xitem,15,4); + tv_org.SetItemChild1(wid,curItem,1); + //OnSubTree(sguid,curItem); + } + } + return 1;*/ + } + + int OnTreeExpanding(ref TNotifyEvent evt,int p) + { + ref NMTREEVIEW nmtv = evt.pnmh; + int sitem = nmtv.itemNew.hItem; + + int hCursor = xutil__::SetCursorWait(); + //string id = treeview__::GetItemData(tv_org.GetId(), sitem); + msxml::IXMLDOMElement ele = treeview__::GetItemData(tv_org.GetId(),sitem); + string id = ele.SelectSingleNode("id").text; + OnSubTree(id, sitem); + xutil__::RestoreCursor(hCursor); + return 1; + } + + int OnTreeSelChanged(ref TXCommandEvent evt,int p) + { + int wid = tv_org.GetId(); + int hitem=treeview__::GetSelectedItem(wid); + msxml::IXMLDOMElement ele = treeview__::GetItemData(wid,hitem); + if (ele) + { + string ls_orgid = ele.SelectSingleNode("id").text; + is_orgid = ls_orgid; + OnRetrieve(ls_orgid); + } + return 1; + } + //命令发布函数 + int OnCmdDispatch(string comdid) + { + if (comdid=="cb_import") + OnOK(); + else if (comdid=="cb_close") + CloseWindow(); + return 0; + } + + //命令处理事件 + int OnXCommand(ref TXCommandEvent evt,int p) + { + return OnCmdDispatch(evt.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent("WM_XCOMMAND",OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent("WM_SETFOCUS",OnSetFocus); + //获得树的选择事件 + AttachEvent("tv_org", "TVN_SELCHANGED",OnTreeSelChanged); + AttachEvent("tv_org", "TVN_ITEMEXPANDING",OnTreeExpanding); + } + + int OnInitial() + { + SetAgent(); + OnAttachEvent(); + return 1; + } + + int onload() + { + tv_org = new treeview__ ; + tv_org.setNativePointer(this.GetControl("tv_org")); + dw_list = new xdwgrid__; + dw_list.setNativePointer(this.GetControl("dw_list")); + dw_list.openUrl("系统用户.vface/template/SysUser/EmpSelect"); + dw_list.SetSelectionMode(3); //3 + dw_list.SetReadOnly(true); + + OnInitial(); + OnCreateTree("00000000-0000-0000-0000-000000000000", 0); + int wid = tv_org.GetId(); + int root = treeview__::GetRootItem(wid); + treeview__::ExpandItem(wid,root); + OnRetrieve("00000000-0000-0000-0000-000000000000"); + return 1; + } + ] + + ] +] \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/UserPassDlg.cpp b/jrj/project/business/SystemSettings/UserPassDlg.cpp new file mode 100644 index 0000000..2dc14b5 --- /dev/null +++ b/jrj/project/business/SystemSettings/UserPassDlg.cpp @@ -0,0 +1,147 @@ +#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) UserPassDlg : public xframe + { + public: + //xdwgrid dw_list; + + xnode m_agentNode; //Agent Condition + + static xstring MD5(xstring) native from "XUtil.dll" alias "?MD5@IXFUtil@XFrame@Hxsoft@@SAPA_WPA_W@Z"; + public: + UserPassDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static UserPassDlg* CreateInstance(void* implPtr, void* hWnd) + { + UserPassDlg* pWin = new UserPassDlg(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"xmCancel") + { + CloseWindow(); + return 1; + } + else if(comdid==L"xmOk") + { + if(xcontrol(GetControl(L"old_pass")).GetText()==L"") + { + alert(L"请输入旧口令!"); + SetFocus(xcontrol(GetControl(L"old_pass")).GetId()); + return 1; + } + + xstring ostr = xcontrol(GetControl(L"old_pass")).GetText(); + xstring str1 = xcontrol(GetControl(L"new_pass")).GetText(); + xstring str2 = xcontrol(GetControl(L"new_pass1")).GetText(); + if(str1 != str2) + { + alert(L"两遍新口令不一致!"); + SetFocus(xcontrol(GetControl(L"new_pass1")).GetId()); + return 1; + } + + xstring oldpass = MD5(ostr); + xstring newpass = MD5(str1); + + xml x; + + xaserverarg arg ; + ; + arg.AddArg(L"old_password",oldpass); + arg.AddArg(L"new_password",newpass); + + if(getUrl(L"/sale/data/SysUser/update/password",arg.GetString(),x)!=1) + { + alert(L"修改失败"); + } + else{ + if(x.selectSingleNode(L"error")) + { + alert(x.selectSingleNode(L"error").text()); + return 1; + } + MessageBox(GetHWND(),L"修改口令成功!",L"提示",0); + CloseWindow(); + } + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&UserPassDlg::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&UserPassDlg::OnSetFocus); + return 1; + } + + int onload() + { + + //const int EM_SETPASSWORDCHAR =0x00CC; + //win32::SendMessage(GetControl(L"old_pass").GetId(),EM_SETPASSWORDCHAR,42,0); + //win32::SendMessage(GetControl(L"new_pass").GetId(),EM_SETPASSWORDCHAR,42,0); + //win32::SendMessage(GetControl(L"new_pass1").GetId(),EM_SETPASSWORDCHAR,42,0); + + OnAttachEvent(); + + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + }; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/level.Customer.v3.cpp b/jrj/project/business/SystemSettings/level.Customer.v3.cpp new file mode 100644 index 0000000..9326ae6 --- /dev/null +++ b/jrj/project/business/SystemSettings/level.Customer.v3.cpp @@ -0,0 +1,375 @@ +#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) levelCustomerv3 : public listwin +{ +public: + xdwgrid dw_goods; + xtreeview tv_1; + xcombobox ddlb_1; + int changeddlb; + + xstring m_sType; //type + xstring m_sTypeTxt; //选中树的data +// xstring m_searchtxt; + int PIndex; + xnode m_agentNode; //Agent Condition + xstring m_agentCond; //Agent Node + +public: + levelCustomerv3(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} +public: + static levelCustomerv3* CreateInstance(void* implPtr, void* hWnd) + { + levelCustomerv3* pWin = new levelCustomerv3(implPtr, (HWND)hWnd); + return pWin; + } + int OnPreRetrieve() + { + xml x ; + + xaserverarg arg ; + ; + arg.AddArg(L"pageindex", xstring(PIndex)); //第几页 + arg.AddArg(L"pagenumber", xstring(m_pageNumber)); //每页数量 + arg.AddArg(L"QueryTxt",m_QueryTxt ); + arg.AddArg(L"sType", m_sType);//没有参数 + arg.AddArg(L"sTypeTxt", m_sTypeTxt);//没有参数 + + if(getUrl(L"/sale/data/"+GetEntityName(1)+L"/entity/list",arg.GetString(),x)!=1) + { + alert(L"出现错误请联系管理员!"); + return 0; + }else + { + KXMLDOMElement e=x.documentElement(); + if(listwin::dw_pages.ptr_native_ && e.selectSingleNode(L"@TotalPage")) + { + xstring s=e.selectSingleNode(L"@TotalPage").text(); //总数量 + listwin::dw_pages.SetMaxPage(s.toInt()); + } + listwin::dw_list.Retrieve(x); + listwin::dw_list.Redraw(); + listwin::dw_list.SetReadOnly(true); + } + return 1; + } + + int OnChangePages(TEvent* evt, int p) + { + PAGENMHDR& h = *(PAGENMHDR*)evt->notify.pnmh; + + int c = h.cur; + HCURSOR hCursor = xutil::SetCursorWait(); + OnRetrieve(); + PIndex=c; + xutil::RestoreCursor(hCursor); + return 1; + } + + int ViewUpdate(int pr,xstring updateItem,xaserverarg arg) + { + if(updateItem == L"refresh") + { + xdwpages zz = GetControl(L"pages"); + int h = zz.SetCurPage(1); + OnRetrieve(); + } + return 1; + } + + //树选择 + int OnTreeSelChanged(TEvent* evt, int p) + { + if (changeddlb != 1) + { + + HTREEITEM h=tv_1.GetSelectedItem(); + KXMLDOMElement e = tv_1.GetItemData(h); + + xstring t = e.selectSingleNode(L"@type").text(); + m_sType=t+L""; + xstring txt = e.selectSingleNode(L"@code").text(); + if (txt == L"") + txt = e.selectSingleNode(L"@name").text(); + m_sTypeTxt= txt+L""; + + PIndex= 1; + OnRetrieve(); + } + return 1; + } + + int createSubTree(HTREEITEM h, KXMLDOMElement ele) + { + KXMLDOMNodeList nlist=ele.selectNodes(L"item"); + int i; + int s=nlist.length(); + if (s>0) + for (i=0; i<s; i++) + { + KXMLDOMElement* e = new KXMLDOMElement(nlist.item(i)); + xstring name = e->selectSingleNode(L"@name").text(); + HTREEITEM hw = tv_1.InsertChildItem(h, name, (LPARAM)e, 15); + createSubTree(hw, *e); + } + return 1; + } + + + int OnCreateTree(xstring sType) + { + + while (tv_1.GetRootItem()>0) + tv_1.DeleteItem(tv_1.GetRootItem()); + + xml x ; + + xaserverarg arg ; + ; + arg.AddArg(L"sType",sType); + if(getUrl(L"/sale/data/"+GetEntityName(1)+L"/pref/list/tree",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + KXMLDOMNodeList nlist=x.selectNodes(L"root/item"); + int len = nlist.length(); + if (len >0) + { + int i; + for (i=0;i <len; i++) + { + KXMLDOMElement* e = new KXMLDOMElement(nlist.item(i)); + xstring name = e->selectSingleNode(L"@name").text(); + HTREEITEM hw = tv_1.InsertChildItem(0, name, (LPARAM)e, 15); + + createSubTree(hw, *e); + tv_1.ExpandItem(hw); + } + tv_1.ExpandItem(0); + } + } + + return 1; + } + + //xcombobox下拉 + int OnSelectDdlb(TEvent* evt, int p) + { + changeddlb = 1; + + int CB_GETCURSEL = 0x0147; + int nIndex = SendMessageW(ddlb_1.GetHWND(), CB_GETCURSEL, 0, 0); + KXMLDOMElement e = ddlb_1.GetElement();//GetitemData(wid,nIndex);//ddlb_1.GetElement(); + KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring((nIndex + 1)) + L"]"); + xstring text = e2.selectSingleNode(L"@element").text(); + OnCreateTree(text); + changeddlb = 0; + return 1; + } + + int OnDeleteRow() + { + int row = listwin::dw_list.GetNextSelectRow(1); + if (row < 1){ + row = listwin::dw_list.GetRow(); + if (row < 1) { + return -1; + } + } + + KXMLDOMElement e = listwin::dw_list.GetRowElement(row); + xstring sguid = e.selectSingleNode(L"@guid").text(); + xstring sName = e.selectSingleNode(L"Name").text()+(xstring)L""; + int MB_YESNO = 0x00000004; + int IDYES = 6; + if(MessageBox(GetHWND(),L"确认要删除客户 "+sName+L" 的信息吗?",L"提示",MB_YESNO)!=IDYES) return 1; + xml x ; + + xaserverarg arg ; + ; + arg.AddArg(L"guid",sguid); + if (xurl::post(L"/sale/data/"+GetEntityName(1)+L"/entity/delete",arg.GetString(),x) != 1) + { + xstring error = x.text(); + trace(error); + } + else + { + listwin::dw_list.DeleteRow(row); + } + return 1; + } + + int OnSelectAllRow() + { + int rows = listwin::dw_list.GetRowCount(); + if(rows < 1) return -1; + listwin::dw_list.SelectRow(1, rows, true); + listwin::dw_list.Redraw(); + return 1; + } + + int OnRClick(TEvent* evt, int p) + { + return 1; + } + int OnLogOff() + { + return 1; + } + //设置层级弹出窗与保存 + int OnLevelCustomer() + { + xaserverarg arg ; + ; + OpenWindow(L"dev:xpage[maint.Level.Customer3.vx]", arg); + + xml ux ; + + ux.loadXML(L"<Partys/>"); + KXMLDOMElement ele = ux.documentElement(); + + if(arg.GetArgString(L"ok")==L"true") + { + xml x ; + + x.loadXML(arg.GetArgString(L"arg")); + KXMLDOMElement uele = x.documentElement(); + xstring ParentPartyID = uele.selectSingleNode(L"//ParentPartyID").text(); + xstring ParentPartyName = L""; + xstring GroupPartyID = uele.selectSingleNode(L"//GroupPartyID").text(); + xstring GroupPartyName = L""; + + if( uele.selectSingleNode(L"//ParentPartyID/@_displaystring")) + ParentPartyName = uele.selectSingleNode(L"//ParentPartyID/@_displaystring").text(); + if(uele.selectSingleNode(L"//GroupPartyID/@_displaystring")) + GroupPartyName = uele.selectSingleNode(L"//GroupPartyID/@_displaystring").text(); + + int row = dw_list.GetNextSelectRow(1); + while(row > 0) + { + dw_list.SetItemString(row,L"ParentPartyID",ParentPartyID); + dw_list.SetItemDisplayString(row,L"ParentPartyID",ParentPartyName); + dw_list.SetItemString(row,L"GroupPartyID",GroupPartyID); + dw_list.SetItemDisplayString(row,L"GroupPartyID",GroupPartyName); + ele.appendChild(dw_list.GetRowElement(row).cloneNode(-1)); + row = dw_list.GetNextSelectRow(row + 1); + } + dw_list.Redraw(); + arg.AddArg(L"content",ele.xml()); + if (getUrl(L"/sale/data/CustomerV3/level/update",arg.GetString(),x)!=1) + { + trace(x.text()); + alert(L"设置错误!"); + return -1; + }else + { + alert(L"设置成功!"); + } + } + return 1; + } + + int PreOnCmdDispatch(xstring comdid) + { + if(comdid.find(L"action:LogOff",0)>=0) return OnLogOff(); + if(comdid.find(L"action:bill.delete",0)>=0) return OnDeleteRow(); + //if(comdid==L"action:search1") return GridSearch(); + if(comdid==L"action:bill.refresh") + { + return OnRetrieve(); + } + if(comdid==L"action:level.customer") + { + return OnLevelCustomer(); + } + + return 1; + } + + int OnRowChangedEx(TEvent* evt, int p) + { + DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; + int row = hdr.row; + KXMLDOMElement ele = listwin::dw_list.GetRowElement(row); + xstring entity = ele.selectSingleNode(L"CustomerID").text(); + xml x ; + + xaserverarg arg ; + ; + arg.AddArg(L"EntityID",entity); + if (getUrl(L"/sale/data/CustomerV3/entity/customeritem",arg.GetString(),x)!=1) + { + trace(x.text()); + return -1; + }else + { + dw_goods.Retrieve(x); + dw_goods.Redraw(); + dw_goods.SetReadOnly(true); + } + return 1; + } + + + int PostOnAttachEvent() + { + //获得树的选择事件 + AttachEvent(L"tv_1", L"TVN_SELCHANGED", (FEvent)&levelCustomerv3::OnTreeSelChanged); + AttachEvent(L"cbx_1",L"CBN_SELCHANGE", (FEvent)&levelCustomerv3::OnSelectDdlb); + AttachEvent(L"pages",L"PAGE_CLICK", (FEvent)&levelCustomerv3::OnChangePages); + AttachEvent(L"dw_list",L"DWV_RCLICKED", (FEvent)&levelCustomerv3::OnRClick);//鼠标右键 + //AttachEvent(L"dw_list",L"DWV_CLICKED",OnClick);//鼠标右键 + AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&levelCustomerv3::OnRowChangedEx); + + return 1; + } + + int onload() + { + PIndex=1; + listwin::m_QueryTxt =L""; //查询条件 + m_sType=L""; //type + m_sTypeTxt=L""; //选中树的data + + listwin::onload(); + + tv_1 = GetControl(L"tv_1"); + ddlb_1 = GetControl(L"cbx_1"); + + changeddlb = 0; + OnCreateTree(L"Source"); + dw_goods = GetControl(L"dw_goods"); + dw_goods.openUrl(L"/sale/view/CustomerV3/template/customer/customeritem"); + + return 1; + } + + int onloaded() + { + listwin::onloaded(); + + xstring EntityID; + int row = dw_list.GetRow(); + if(row<0 || row>dw_list.GetRowCount()) return (xstring)L""; + KXMLDOMElement ele = dw_list.GetRowElement(row); + xstring id = listwin::m_configDoc.selectSingleNode(L"//entity/EntityID[1]").text(); + if(ele.selectSingleNode(id)) + EntityID = ele.selectSingleNode(id).text(); + + return 1; + } + +}; \ No newline at end of file diff --git a/jrj/project/business/SystemSettings/maint.Level.Customer3.cpp b/jrj/project/business/SystemSettings/maint.Level.Customer3.cpp new file mode 100644 index 0000000..4416535 --- /dev/null +++ b/jrj/project/business/SystemSettings/maint.Level.Customer3.cpp @@ -0,0 +1,88 @@ +#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) MaintLevelCustomerWin : public xframe + { + public: + xdwtable dw_arg; + xaserverarg arg; + + public: + MaintLevelCustomerWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static MaintLevelCustomerWin* CreateInstance(void* implPtr, void* hWnd) + { + MaintLevelCustomerWin* pWin = new MaintLevelCustomerWin(implPtr, (HWND)hWnd); + return pWin; + } + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid==L"xmOk") + { + xml x ; + + dw_arg.AcceptText(); + dw_arg.DwUpdateAllTo(x); + if(arg) + { + arg.AddArg(L"arg",x.xml()); + arg.AddArg(L"ok",L"true"); + } + CloseWindow(); + + return 1; + } + else if(comdid==L"xmCancel") + { + if(arg)arg.AddArg(L"ok",L"false"); + CloseWindow(); + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&MaintLevelCustomerWin::OnXCommand); + return 1; + } + + int onload() + { + SetArg(); + dw_arg = GetControl(L"dw_arg"); + + if(GetWinParam())arg = GetArg(); + + xstring dw = L"/sale/view/CustomerV3/template/customer/level.maint"; + dw_arg.openUrl(dw); + + dw_arg.SetColHeaderHeight(0); + dw_arg.SetRowSelectorWidth(0); + dw_arg.SetHScrollState(false); + dw_arg.SetVScrollState(false); + + + OnAttachEvent(); + + return 1; + } + + }; diff --git a/jrj/project/business/SystemSettings/view.assignadjust.cpp b/jrj/project/business/SystemSettings/view.assignadjust.cpp new file mode 100644 index 0000000..326e9c8 --- /dev/null +++ b/jrj/project/business/SystemSettings/view.assignadjust.cpp @@ -0,0 +1,278 @@ +#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) AssignAdjustWin : public xframe + { + public: + xdwgrid dw_list; + xnode m_agentNode; //Agent Condition + KXMLDOMElement rptEle; + xstring argStr; + xstring searchStr; + int hWndRetrieveTip; + bool dataretrieveing; + public: + AssignAdjustWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} + public: + static AssignAdjustWin* CreateInstance(void* implPtr, void* hWnd) + { + AssignAdjustWin* pWin = new AssignAdjustWin(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 OnSave() + { + xml x ; + + dw_list.AcceptText(); + dw_list.DwUpdateAllToEx(x); + xaserverarg arg ; + + + xml x0; + x0.loadXML(L"<data/>"); + KXMLDOMNodeList t = x.selectNodes(L"data/node()[(@update.new='1') or (@update.modify='1') or (@update.delete='1') ]"); + KXMLDOMElement e1= x0.documentElement(); + + xstring val0 = x.xml(); + for(int i=0; i < t.length(); i++) + { + KXMLDOMElement e= t.item(i); + e1.appendChild(e); + } + + x = ViewObject::RetrieveData(rptEle.getAttribute(L"update"),L"content",x0.xml()); + xstring str = x.documentElement().getAttribute(L"text"); + if(str == L"true") + { + dw_list.ResetUpdateStatus(); + alert(L"保存成功!"); + }else + { + alert(L"保存失败!"); + } + return 1; + } + + //焦点激活处理函数 + int OnSetFocus(TEvent* evt, LPARAM param) + { + //重置工具条 + SetAgent(); + return 1; + } + + int OnMultiDeal() + { + dw_list.AcceptText(); + int row = dw_list.GetNextSelectRow(1); + xstring SalespersonID = dw_list.GetItemString(row, L"SalespersonID"); + xstring Sales = dw_list.GetItemDisplayString(row, L"SalespersonID"); + while(row > 0 && row <= dw_list.GetRowCount()) + { + row = dw_list.GetNextSelectRow(row + 1); + dw_list.SetItemString(row, L"SalespersonID", SalespersonID); + dw_list.SetItemDisplayString(row, L"SalespersonID", Sales); + + } + dw_list.Redraw(); + } + + + int OnSearch() + { + 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_list.Filter(L"*",searchStr); + return 1; + } + return 1; + } + + //命令发布函数 + int OnCmdDispatch(xstring comdid) + { + if(comdid==L"xmSave")return OnSave(); + if(comdid==L"xmMultiDeal")return OnMultiDeal(); + if(comdid==L"xmSearch") return OnSearch(); + if(comdid==L"xmAnalysis") + { + //hCursor = xutil::SetCursorWait(); + xstring str = dw_list.DataAnalysis(L""); + xaserverarg arg; + ; + arg.AddArg(L"html", str); + + OpenWindow(L"dev:xpage[data.vanalysis.vx]", arg); + //xutil::RestoreCursor(hCursor); + return 1; + } + if(comdid==L"xmQuery") + { + if(rptEle) + { + xstring argUrl = rptEle.getAttribute(L"arg"); + if(argUrl !=L"") + { + xaserverarg ar ; + + ar.AddArg(L"argurl",argUrl); + if(argStr !=L"") + ar.AddArg(L"arg",argStr); + OpenWindow(L"dev:xpage[view.total.arg.vx]",ar); + xstring arstr = ar.GetArgString(L"arg"); + if(arstr != L"" && ar.GetArgString(L"action")==L"ok") + { + argStr = arstr; + OnRetrieve(rptEle.getAttribute(L"data"),argStr); + } + } + else + { + argStr=L""; + OnRetrieve(rptEle.getAttribute(L"data"),argStr); + } + } + return 1; + } + return 0; + } + + //命令处理事件 + int OnXCommand(TEvent* evt, LPARAM param) + { + return OnCmdDispatch(evt->xcommand.pStrID); + } + + int OnAttachEvent() + { + //绑定工具条点击事件 + AttachEvent(L"WM_XCOMMAND", (FEvent)&AssignAdjustWin::OnXCommand); + //获取焦点事件,用于重置工具条 + AttachEvent(L"WM_SETFOCUS", (FEvent)&AssignAdjustWin::OnSetFocus); + + AttachEvent(L"cb_report",L"CBN_SELCHANGE", (FEvent)&AssignAdjustWin::OnCombboChanged); + return 1; + } + + int OnCombboChanged(TEvent* evt, LPARAM lParam) + { + int h = xcombobox::GetCurSel(evt->command.hCtrl); + if(h > -1) ShowList(h); + return 1; + } + + int SwitchReport(KXMLDOMElement e) + { + rptEle = e; + xstring dwname = e.getAttribute(L"template"); + dw_list.openUrl(dwname); + dw_list.Redraw(); + return 1; + } + + int ShowList(int h) + { + KXMLDOMElement xframeElement = GetElement(); + KXMLDOMElement e = xframeElement.selectSingleNode(L"//xcombobox[@name='cb_report']/item["+(h+1).toString()+L"]"); + if(e) SwitchReport(e); + PostMessage(GetHWND(),0x401,(LPARAM)L"xmQuery",0); + return 1; + } + + int ShowRetrieveingTip() + { + dataretrieveing = true; + xwin pwin = OpenWindow(L"dev:xpage[TestRetrieveing.vx]",0); + hWndRetrieveTip =pwin.GetHWND(); + return 1; + } + int CloseRetrieveTip() + { + dataretrieveing = false; + SendMessage(hWndRetrieveTip,0x401, (LPARAM)L"RetrieveFinished",0); + hWndRetrieveTip = 0; + + return 1; + } + + int OnRetrieve(xstring dataurl, xstring argstr) + { + if(!rptEle) return 0; + dw_list.Reset(); + + xml x ; + + xaserverarg arg ; + ; + arg.AddArg(L"arg",argstr); + if (xurl::get(dataurl,arg.GetString(),x)!=1) + { + + trace(L"错误信息=L"+(xstring)x.text()); + dw_list.Redraw(); + return -1; + }else + { + dw_list.Retrieve(x); + dw_list.Redraw(); + dw_list.SetSelectionMode(4); + //dw_list.SetReadOnly(true); + } + return 1; + } + + int onload() + { + rptEle = 0; + dw_list = GetControl(L"dw_list"); + OnAttachEvent(); + + hWndRetrieveTip = 0; + dataretrieveing = false; + ShowList(0); + return 1; + } + + int onloaded() + { + SetAgent(); + + return 1; + } + }; \ No newline at end of file -- Gitblit v1.9.3