From bf115a00a40d3af1fae7521d38b9b2ca70fcc161 Mon Sep 17 00:00:00 2001
From: LiFan <2308045698@qq.com>
Date: 星期三, 17 七月 2024 11:22:32 +0800
Subject: [PATCH] update SystemSetting
---
jrj/project/business/SystemSettings/ProcessManagement_A.cpp | 513 +++
jrj/project/business/SystemSettings/view.assignadjust.cpp | 267 +
jrj/project/business/SystemSettings/Organization_A.cpp | 513 +++
jrj/project/business/SystemSettings/AddUserGroup.cpp | 183 +
jrj/project/business/SystemSettings/Developer.Synch.cpp | 415 ++
jrj/ext-jrj/ext-jrj.vcxproj.filters | 72
jrj/project/business/SystemSettings/FlowTermImport.cpp | 162 +
jrj/project/business/SystemSettings/GroupManagerList_A.cpp | 1576 ++++++++++
jrj/project/business/SystemSettings/TestRetrieveing.cpp | 52
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 | 359 ++
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 | 203 +
jrj/project/business/SystemSettings/FlowTermSelect.cpp | 161 +
jrj/project/business/SystemSettings/SysLoginRecord.cpp | 89
jrj/project/business/SystemSettings/Flow3.cpp | 464 +++
jrj/project/business/SystemSettings/Resource.select.data.config.cpp | 93
jrj/project/business/SystemSettings/maint.Level.Customer3.cpp | 72
jrj/project/business/SystemSettings/UserPassDlg.cpp | 131
jrj/ext-jrj/ext-jrj.vcxproj | 69
25 files changed, 9,083 insertions(+), 0 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/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..ba7e601
--- /dev/null
+++ b/jrj/project/business/SystemSettings/Developer.Synch.cpp
@@ -0,0 +1,415 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+ class DeveloperSynch : public xframe
+ {
+ xtreeview tv_gs;
+ xsedit dw_log;
+
+ int[100] nItems;
+ int nCount;
+
+ string sContent;
+
+ string ProcessDevCmd(string cmd,string ext, string aurl="", bool needlogin=false)
+ {
+ if(aurl == "") aurl = GetServerUrl();
+ //alert(aurl);
+ string d = xaserver::ProcessCmd(aurl,"uri.hxsoft.com/xaserver/developer "+cmd,ext,needlogin);
+ return d;
+ }
+
+ string ProcessDevCmd2(string cmd,string ext, string aurl="", bool needlogin=false)
+ {
+ if(aurl == "") aurl = GetServerUrl();
+ //alert(aurl);
+ string d = xaserver::ProcessCmd(aurl,"uri.hxsoft.com/xaserver/dev:"+cmd,ext,needlogin);
+ return d;
+ }
+
+ int GetProjectItem(int hItem)
+ {
+ int pitem = hItem;
+ string typ;
+ while(true)
+ {
+ int h = xtreeview::GetItemData(tv_gs.GetId(), pitem);
+ msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement);
+ typ = GetEleString(e, "@tagname");
+ if(typ=="project")break;
+ pitem = xtreeview::GetParentItem(tv_gs.GetId(), pitem);
+ if(pitem<=0)break;
+ }
+ return pitem;
+ }
+
+ int GetP2Item(int hItem)
+ {
+ int hDomainItem;
+ int hP2Item = hItem;
+ while(true)
+ {
+ hDomainItem = xtreeview::GetParentItem(tv_gs.GetId(), hP2Item);
+ if(xtreeview::GetParentItem(tv_gs.GetId(), hDomainItem)<=0)break;
+ hP2Item = hDomainItem;
+ }
+ return hP2Item;
+ }
+
+ string GetItemGuid(int hItem)
+ {
+ int h = xtreeview::GetItemData(tv_gs.GetId(), hItem);
+ msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement);
+ string guid = e.GetAttribute("guid");
+ return guid;
+ }
+
+ xaserverarg GetDataArg(int hItem, xaserverarg arg)
+ {
+ int h = xtreeview::GetItemData(tv_gs.GetId(), hItem);
+ msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement);
+ string node = GetEleString(e, "@tagname");
+ //WriteLog(e.xml);
+ if(node=="File" || node=="file")
+ {
+ string caption = e.getAttribute("caption");
+
+ int hP2Item = 0;
+ int hDomainItem = 0;
+ if(xtreeview::GetParentItem(tv_gs.GetId(), hItem)<=0)
+ {
+ hDomainItem = hItem;
+ }else
+ {
+ hP2Item = GetP2Item(hItem);
+ hDomainItem = xtreeview::GetParentItem(tv_gs.GetId(), hP2Item);
+ }
+
+ //find project folder
+ string prjguid="";
+ int pitem = this.GetProjectItem(hItem);
+ if(pitem > 0)
+ prjguid = GetItemGuid(pitem);
+
+ //xaserverarg arg = new xaserverarg;
+ //arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("project.guid",prjguid);
+ if(hP2Item)
+ {
+ if(hP2Item != hItem)
+ {
+ string guid = e.getAttribute("guid");
+ arg.AddArg("guid",guid);
+ }
+ string guid2 = GetItemGuid(hP2Item);
+ arg.AddArg("root.guid",guid2);
+ }else if(hDomainItem > 0)
+ {
+ string guid3 = GetItemGuid(hDomainItem);
+ arg.AddArg("domain.guid",guid3);
+ }
+ return 1;
+ }
+ else if(node=="folder" || node=="project")
+ return 2;
+ else
+ return 0;
+ }
+
+ int SaveData(int hItem)
+ {
+ xcontrol xc = GetControl("surl");
+ string surl = xc.GetText();
+ if(surl == "")
+ {
+ alert("请输入同步服务器地址");
+ return 1;
+ }
+
+ string name = xtreeview::GetItemLabel(tv_gs.GetId(), hItem);
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ int ret = GetDataArg(hItem, arg);
+ //alert(arg.GetString());
+ if(ret == 0)
+ {
+ WriteLog(name+" 失败, 原因:获取工程或文件夹失败!");
+ return -1;
+ }
+ else if(ret == 2)
+ {
+ ret = SynchFolder(hItem);
+ if(ret == -1)
+ WriteLog(name+" 失败, 原因:获取文件数据失败!");
+ else if(ret == 0)
+ WriteLog(name+" 失败, 原因:复制文件失败!");
+ else
+ WriteLog(name);
+ return -1;
+ }
+ SynchFolder(hItem);
+ arg.AddArg("__name",name);
+ arg.AddArg("__url",surl);
+ synchServer(arg);
+ if(name.right(3) == ".vx" || name.right(5) == ".xpage")
+ {
+ arg.AddArg("__name",name + "[Code]");
+ arg.AddArg("iscode","yes");
+ synchServer(arg);
+ }
+ return 1;
+ }
+
+ string GetFolderPath(int hItem)
+ {
+ int k = hItem;
+ if(k == 0) return "";
+ string src = "";
+ //string name = "";
+ while(k > 0)
+ {
+ int h = xtreeview::GetItemData(tv_gs.GetId(), k);
+ k = xtreeview::GetParentItem(tv_gs.GetId(), k);
+ msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement);
+ string node = GetEleString(e, "@tagname");
+ if(node != "File" && node != "file")
+ {
+ string tmp = GetEleString(e, "@src");
+ //if(name == "") name = GetEleString(e, "@caption");
+ if(tmp != "")
+ {
+ SynchFolder(k);
+ if(src == "") src = tmp;
+ else
+ {
+ int j = 1;
+ int s = tmp.length();
+ string t = tmp.right(j).left(1);
+ while(t != "\\" && j < s)
+ {
+ //WriteLog(t);
+ j++;
+ t = tmp.right(j).left(1);
+ }
+ if(j >= s)
+ src = tmp+ "\\" + src;
+ else
+ src = tmp.left(s - j)+ "\\" + src;
+ }
+ }
+ }
+ }
+ if(src == "")
+ {
+ //WriteLog(name+" 同步失败, 原因:获取文件数据失败0!");
+ return "";
+ }
+ //if(src.left(9) =="Projects\\") src = src.mid(9, src.length());
+ src = "\\" + src;//.replace("Projects\\","");
+ //WriteLog(src);
+ return src;
+ }
+
+ int SynchFolder(int hItem)
+ {
+ string src = GetFolderPath(hItem);
+ if(src== "") return -1;
+ if(xaserver::FileCopy("devfolder8001", src, "devfolder5001", src) != 1)
+ return 0;
+ //WriteLog(src);
+ return 1;
+ }
+
+ int synchServer(xaserverarg arg)
+ {
+ string name = arg.GetArgString("__name");
+ string surl = arg.GetArgString("__url");
+ string d = ProcessDevCmd("getobject",arg.GetString());
+ if(d == "")
+ {
+ WriteLog(name+" 失败, 原因:获取文件数据失败!");
+ return -1;
+ }
+ //WriteLog(d);
+ arg.AddArg("content",d);
+ ProcessDevCmd("saveobject",arg.GetString(), surl,true);
+ WriteLog(name);
+ return 1;
+ }
+
+ int WriteLog(string str)
+ {
+ if(sContent == "")
+ sContent = str;
+ else
+ sContent += "\r\n" + str;
+ //alert(sContent);
+ dw_log.SetContent(sContent, "");
+ return 1;
+ }
+
+ //焦点激活处理函数
+ int OnSetFocus(ref TEvent evt,int param)
+ {
+ //重置工具条
+ SetAgent();
+ return 1;
+ }
+
+ int Add(int hItem)
+ {
+ if(nCount >99)
+ {
+ alert("同时同步的数量不能大于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(string comdid)
+ {
+ if(comdid != "synch") return 1;
+
+ int hCursor = xutil::SetCursorWait();
+ sContent = "";
+ for(int i=0; i<nCount; i++)
+ {
+ int p = nItems[i];
+ //int h = xtreeview::GetItemData(tv_gs.GetId(), p);
+ //msxml::IXMLDOMElement e = trust(h as msxml::IXMLDOMElement);
+ //alert(e.xml);
+ SaveData(p);
+ xtreeview::SetChecked(tv_gs.GetId(), p,0);
+ }
+ xutil::RestoreCursor(hCursor);
+ nCount = 0;
+ return 0;
+ }
+
+ int OnTreeCheckBoxSel(ref TNotifyEvent evt,int p)
+ {
+ ref TVNNMHDR nmtv = trust(evt.pnmh as ref TVNNMHDR);
+ int hItem = nmtv.FromItem;
+ int hCursor = xutil::SetCursorWait();
+ int hwnd = nmtv.hwndFrom;
+ int c = 1 - xtreeview::GetChecked(hwnd, hItem);
+ if(c == 1)
+ Add(hItem);
+ else
+ Del(hItem);
+ xutil::RestoreCursor(hCursor);
+ return 1;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ //获取焦点事件,用于重置工具条
+ //AttachEvent("WM_SETFOCUS",OnSetFocus);
+ AttachEvent("DevExplorer","TVN_CHECKBOXSEL",OnTreeCheckBoxSel);
+ AttachEvent("DevExplorer", "TVN_ITEMEXPANDING",OnTreeExpanding);
+ return 1;
+ }
+
+ int OnTreeExpanding(ref TNotifyEvent evt,int lparam)
+ {
+ ref NMTREEVIEW nmtv = trust(evt.pnmh as ref NMTREEVIEW);
+ int hItem = nmtv.itemNew.hItem;
+ int cItem=xtreeview::GetChildItem(tv_gs.GetId(), hItem);
+ if(cItem > 0) return 1;
+ int p = xtreeview::GetItemData(tv_gs.GetId(), hItem);
+ msxml::IXMLDOMElement ele = trust(p as msxml::IXMLDOMElement);
+ string src =GetEleString(ele, "@src");
+ string tagname =GetEleString(ele, "@tagname");
+ if (src == "" || tagname == "file" || tagname == "File") return 1;
+ OnSetTree(hItem, GetFolderPath(hItem));
+
+ return 1;
+ }
+
+ int OnSetTree(int pItem, msxml::IXMLDOMElement e)
+ {
+ msxml::IXMLDOMNodeList li=e.selectNodes("*");
+ int i=0;
+ int s=li.length;
+ for (i=0;i<s;i++){
+ msxml::IXMLDOMElement ele= li.item(s - i - 1);
+ string caption = GetEleString(ele, "@caption");
+ string src =GetEleString(ele, "@src");
+ string image =GetEleString(ele, "@image");
+ int p = trust(ele as int);
+ int hItem=xtreeview::InsertItem(tv_gs.GetId(), pItem,0,caption,p,image.toInt());
+ string tagname =GetEleString(ele, "@tagname");
+ if (src != "" && tagname != "file" && tagname != "File")
+ xtreeview::SetItemChild1(tv_gs.GetId(), hItem,1);
+ OnSetTree(hItem, ele);
+ }
+
+ return 1;
+ }
+
+ int OnSetTree(int hItem, string src)
+ {
+ xml x=new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg=new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("src",src);
+ if(xaserver::ExecXQuery(GetServerUrl(),"[Developer.Tree.xq]",arg.GetString(),x)!=1)
+ {
+ alert("读取节点失败!");
+ return 1;
+ }
+ msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
+ OnSetTree(hItem, e);
+ return 1;
+ }
+
+ int onload()
+ {
+ nCount = 0;
+ tv_gs = GetControl("DevExplorer");
+ dw_log = GetControl("xlog");
+ OnAttachEvent();
+
+ return 1;
+ }
+
+ int onloaded()
+ {
+ OnSetTree(0, "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..53605d6
--- /dev/null
+++ b/jrj/project/business/SystemSettings/Flow3.cpp
@@ -0,0 +1,464 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+use "base.view.vd"
+use "xflowchart.wobject.wface.vd"
+
+unit trade
+[
+ class flow : public xframe
+ {
+ 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;
+ string flowid;
+
+ xtreeview tv_folder;
+
+ xnode m_agentNode; //Agent Condition
+
+ string GetSheetType(int index)
+ {
+ if (index == 0) return "flowitem";
+ else if (index == 1) return "state";
+ else if (index == 2) return "actionrole";
+ else if (index == 3) return "button";
+ else if (index == 4) return "role";
+ else if (index == 5) return "bill";
+ else if (index == 6) return "scene";
+ else if (index ==7) return "fieldrole";
+ else return "unkown";
+ }
+ xdwgrid GetSheetDwgrid(int index)
+ {
+ string typ = GetSheetType(index);
+ if(typ=="flowitem") return dw_flow;
+ if(typ=="actionrole") return dw_buttonright;
+ if(typ=="state") return dw_state;
+ if(typ=="button") return dw_button;
+ if(typ=="role") return dw_role;
+ if(typ=="bill") return dw_bill;
+ if(typ=="scene") return dw_scene;
+ if(typ=="fieldrole") return dw_datafieldright;
+ return 0;
+ }
+ xdwgrid GetSheetDbmap(int index)
+ {
+ string typ = GetSheetType(index);
+ if(typ=="flowitem") return "flow.dbmap";
+ if(typ=="actionrole") return "workflow.actionrole.dbmap";
+ if(typ=="state") return "state.dbmap";
+ if(typ=="button") return "button.dbmap";
+ if(typ=="role") return "role.dbmap";
+ if(typ=="bill") return "bill.dbmap";
+ if(typ=="scene") return "scene.dbmap";
+ if(typ=="fieldrole") return "workflow.datarole.dbmap";
+ return 0;
+ }
+
+ string GetDwname(string typ)
+ {
+ if(typ=="flowitem") return "/sale/view/Flow3/template/flow";
+ if(typ=="actionrole") return "/sale/view/Flow3/template/buttonright";
+ if(typ=="state") return "/sale/view/Flow3/template/state";
+ if(typ=="button") return "/sale/view/Flow3/template/button";
+ if(typ=="role") return "/sale/view/Flow3/template/role";
+ if(typ=="bill") return "/sale/view/Flow3/template/bill";
+ if(typ=="scene") return "/sale/view/Flow3/template/scene";
+ if(typ=="fieldrole") return "/sale/view/Flow3/template/datafieldright";
+ return "";
+ }
+
+
+ int SetAgent()
+ {
+ string xfNodeAgentArea = "agentarea";
+ xnode anode = GetAgentNode(xfNodeAgentArea);
+ if(m_agentNode)
+ {
+ SetAgentNodeContent (anode,m_agentNode);
+ }
+ else
+ {
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+ if(agent)
+ {
+ string s = agent.xml;
+ m_agentNode = SetAgentNodeContent (anode,s);
+ }
+ }
+ return 1;
+ }
+ int OnSave()
+ {
+ if(flowid=="") return 1;
+
+ string sdbmap;
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ int index = tab_1.GetSheetIndex();
+ sdbmap = GetSheetDbmap(index);
+ xdwgrid dw_list = GetSheetDwgrid(index);
+ dw_list.DwUpdateAllToEx(x.GetXmlDoc());
+ //trace(x.GetXml());
+
+ msxml::IXMLDOMNodeList ls = x.GetXmlDoc().documentElement.SelectNodes("*[@update.modify='1' and @update.new='1']");
+ int len = ls.length;
+ for(int k=0;k<len;k++)
+ {
+ msxml::IXMLDOMElement e;
+ if(ls.item(k).selectSingleNode("flowID"))
+ {
+ e = ls.item(k).selectSingleNode("flowID");
+ e.setAttribute("update.modify","1");
+ e.text = flowid;
+ }else
+ {
+ e = x.GetXmlDoc().createElement("flowID");
+ e.setAttribute("update.modify","1");
+ e.text = flowid;
+ ls.item(k).appendChild(e);
+ }
+ }
+
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("content",x.GetXml());
+ arg.AddArg("sdbmap",sdbmap);
+ trace(x.GetXml());
+ if(url::get("/sale/data/Flow3/save/flow", arg.GetString(),x)!=1)
+ {
+ string error = x.GetXmlDoc().text;
+ alert("err:"+error);
+ return 1;
+ }
+
+ dw_list.ResetUpdateStatus();
+
+ //alert(x.GetXml());
+ alert("保存成功!");
+
+ 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(ref TEvent evt,int param)
+ {
+ //重置工具条
+ SetAgent();
+
+ //alert(evt.hWnd.toString());
+
+ return 1;
+ }
+
+ int OnClicked(ref TNotifyEvent evt,int p)
+ {
+ ref DWNMHDR hdr = evt.pnmh;
+ int row = hdr.row;
+ string colname=hdr.colname;
+
+ //trace(colname);
+
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+
+ string comdid ="";
+ string data="";
+ string display="";
+ xdwgrid dw_list;
+
+ int index = tab_1.GetSheetIndex();
+ dw_list = GetSheetDwgrid(index);
+
+ arg.AddArg("sdata","");
+ arg.AddArg("flowid",flowid);
+
+ if(colname=="billID")
+ {
+ arg.AddArg("stype","bill");
+ arg.AddArg("datacolumn","billID");
+ arg.AddArg("displaycolumn","billName");
+ arg.AddArg("dwname","/sale/view/Flow3/template/bill");
+ }
+ else if(colname=="stateSource")
+ {
+ arg.AddArg("stype","state");
+ arg.AddArg("datacolumn","stateID");
+ arg.AddArg("displaycolumn","stateName");
+ arg.AddArg("dwname","/sale/view/Flow3/template/state");
+ }
+ else if(colname=="state")
+ {
+ arg.AddArg("stype","state");
+ arg.AddArg("datacolumn","stateID");
+ arg.AddArg("displaycolumn","stateName");
+ arg.AddArg("dwname","/sale/view/Flow3/template/state");
+ }
+ else if(colname=="stateTarget")
+ {
+ arg.AddArg("stype","state");
+ arg.AddArg("datacolumn","stateID");
+ arg.AddArg("displaycolumn","stateName");
+ arg.AddArg("dwname","/sale/view/Flow3/template/state");
+ }
+ else if(colname=="roles")
+ {
+ arg.AddArg("stype","role");
+ arg.AddArg("datacolumn","roleName");
+ arg.AddArg("displaycolumn","roleName");
+ arg.AddArg("dwname","/sale/view/Flow3/template/role");
+ }
+ else if(colname=="flowAction")
+ {
+ arg.AddArg("stype","button");
+ arg.AddArg("datacolumn","buttonName");
+ arg.AddArg("displaycolumn","buttonName");
+ arg.AddArg("dwname","/sale/view/Flow3/template/button");
+ }
+ else
+ return 1;
+
+ OpenWindow("dev:xpage[FlowTermSelect.vx]",cast(arg as int));
+ comdid = arg.GetArgString("comdid");
+
+ if(comdid=="xmOk")
+ {
+ data = arg.GetArgString("data");
+ display = arg.GetArgString("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 = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.SetArg("stype",GetSheetType(i),"string");
+ arg.SetArg("sdata","ddd","string");
+ arg.SetArg("flowID",flowid,"string");
+ int obj = cast(dw_list as int);
+ arg.SetArg("dwobj",obj.toString(),"string");
+ arg.SetArg("dwname",GetDwname(GetSheetType(i)),"string");
+ OpenWindow("dev:xpage[FlowTermImport.vx]",cast(arg as int));
+
+ return 1;
+ }
+
+ int OnRetrieve()
+ {
+ if(flowid=="") return 1;
+
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+
+ //int i = tab_1.GetSheetIndex();
+ for(int i=0;i<7;i++)
+ {
+ //alert(i.toString());
+ arg.SetArg("stype",GetSheetType(i),"string");
+ arg.SetArg("sdata","ddd","string");
+ arg.SetArg("flowID",flowid,"string");
+
+ //trace(arg.GetString());
+ if (getUrl("/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1)
+ {
+ //trace(x.GetXmlDoc().text);
+ //return -1;
+ continue;
+ }
+ xdwgrid dw_list = GetSheetDwgrid(i);
+ dw_list.Retrieve(x);
+ dw_list.Redraw();
+ }
+
+ return 1;
+ }
+
+ int OnTreeSelChanged(ref TNotifyEvent evt,int p)
+ {
+ ref NMTREEVIEW nmtv = cast(evt.pnmh as NMTREEVIEW);
+ int hItem = nmtv.itemNew.hItem;
+ msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
+ flowid = e.getAttribute("flowID");
+
+ int hCursor = xutil::SetCursorWait();
+ SetFlowChart(e);
+ OnRetrieve();
+ xutil::RestoreCursor(hCursor);
+
+ return 1;
+ }
+
+ int OnTabSelectSheet(ref TNotifyEvent evt,int p)
+ {
+ //OnRetrieve();
+
+ return 1;
+ }
+
+ int SetFlowChart(msxml::IXMLDOMElement e)
+ {
+ string flowUrl = e.getAttribute("flowchart");
+ xflowchart flowchart = GetControl("flowchart");
+ xml f = new xml;
+ f.setNativePointer(xml::CreateInstance());
+ if(flowUrl != "")
+ {
+ if(xaserver::FetchXml(flowUrl,"",f)==1)
+ {
+ flowchart.LoadEx(f.GetXmlDoc().documentElement);
+ }
+ }else
+ {
+ f.LoadXml("<sheet/>");
+ flowchart.LoadEx(f.GetXmlDoc().documentElement);
+ }
+ return 1;
+ }
+
+
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if (comdid == "xmSave")
+ return OnSave();
+ if (comdid == "xmAddrow")
+ return OnAddrow();
+ if (comdid == "xmInsertrow")
+ return OnInsertrow();
+ if (comdid == "xmDeleterow")
+ return OnDeleterow();
+ if (comdid == "xmImport")
+ return OnImport();
+
+ 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_folder", "TVN_SELCHANGED",OnTreeSelChanged);
+ AttachEvent("tab_1","LYSN_SELECTEDSHEET",OnTabSelectSheet);
+ AttachEvent("dw_flow","DWV_CLICKED",OnClicked);
+ AttachEvent("dw_buttonright","DWV_CLICKED",OnClicked);
+ AttachEvent("dw_button","DWV_CLICKED",OnClicked);
+ AttachEvent("dw_state","DWV_CLICKED",OnClicked);
+
+ return 1;
+ }
+
+ int CreateFlowFloder()
+ {
+
+ xml x = ViewObject::RetrieveData("/sale/data/flow3/flowfolder");
+ if(x)
+ {
+ msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("//item");
+ int len = nlist.length;
+ int hItem = 0;
+ for (int i = 0; i < len; i++)
+ {
+ msxml::IXMLDOMElement e = nlist.item(i);
+ string name = e.getAttribute("flowName");
+ string no = e.getAttribute("flowNo");
+ string label = name;//no.trim() + " " + name;
+ int h= tv_folder.InsertChildItem(hItem,label, trust(e as int),22);
+ //tv_folder.SetItemChild(h,1);
+ }
+ }
+
+ return 1;
+ }
+
+ int onload()
+ {
+ flowid = "";
+ tv_folder = GetControl("tv_folder");
+ CreateFlowFloder();
+
+ tv_1 = GetControl("tv_1");
+ tab_1 = GetControl("tab_1");
+ dw_flow = GetControl("dw_flow");
+ dw_flow.openUrl("/sale/view/Flow3/template/flow");
+ dw_state = GetControl("dw_state");
+ dw_state.openUrl("/sale/view/Flow3/template/state");
+ dw_button = GetControl("dw_button");
+ dw_button.openUrl("/sale/view/Flow3/template/button");
+ dw_role = GetControl("dw_role");
+ dw_role.openUrl("/sale/view/Flow3/template/role");
+ dw_bill = GetControl("dw_bill");
+ dw_bill.openUrl("/sale/view/Flow3/template/bill");
+ dw_scene = GetControl("dw_scene");
+ dw_scene.openUrl("/sale/view/Flow3/template/scene");
+ dw_buttonright = GetControl("dw_buttonright");
+ dw_buttonright.openUrl("/sale/view/Flow3/template/buttonright");
+ dw_datafieldright = GetControl("dw_datafieldright");
+ dw_datafieldright.openUrl("/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..4579e84
--- /dev/null
+++ b/jrj/project/business/SystemSettings/FlowTermImport.cpp
@@ -0,0 +1,162 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+ class FlowTermImport : public xframe
+ {
+ xdwgrid dw_list;
+ string stype;
+ string sdata;
+ string flowid;
+ string datacolumn;
+ string displaycolumn;
+ xdwgrid dw_obj;
+
+ xnode m_agentNode; //Agent Condition
+
+ int SetAgent()
+ {
+ string xfNodeAgentArea = "agentarea";
+ xnode anode = GetAgentNode(xfNodeAgentArea);
+ if(m_agentNode)
+ {
+ SetAgentNodeContent (anode,m_agentNode);
+ }
+ else
+ {
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+ if(agent)
+ {
+ string s = agent.xml;
+ m_agentNode = SetAgentNodeContent (anode,s);
+ }
+ }
+ return 1;
+ }
+
+ //焦点激活处理函数
+ int OnSetFocus(ref TEvent evt,int param)
+ {
+ //重置工具条
+ //SetAgent();
+ return 1;
+ }
+
+ int OnOK(string comdid)
+ {
+ int row = dw_list.GetNextSelectRow(1);
+ if(row < 1 && dw_list.GetRowCount()==1) row = 1;
+ if (row<1)
+ {
+ alert("请选择项!");
+ 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)=="guid") continue;
+ dw_obj.SetItemString(nrow,i,dw_list.GetItemString(row,i));
+ if(dw_list.GetItemDisplayString(row,i)!="")
+ dw_obj.SetItemDisplayString(nrow,i,dw_list.GetItemDisplayString(row,i));
+ }
+ row = dw_list.GetNextSelectRow(row + 1);
+ }
+
+ CloseWindow();
+ return 1;
+ }
+
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if (comdid=="xmOk")
+ {
+ OnOK(comdid);
+ return 1;
+ }
+ else if (comdid=="xmCancel")
+ {
+ CloseWindow();
+ return 1;
+ }
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ //获取焦点事件,用于重置工具条
+ AttachEvent("WM_SETFOCUS",OnSetFocus);
+ }
+
+ int OnRetrieve()
+ {
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+
+ arg.AddArg("stype",stype);
+ arg.AddArg("sdata",sdata);
+ arg.AddArg("flowID",flowid);
+
+ if (getUrl("/sale/data/Flow3/retrieve/flowimport",arg.GetString(),x)!=1)
+ {
+ trace(x.GetXmlDoc().text);
+ return -1;
+ }else
+ {
+ dw_list.Retrieve(x);
+ dw_list.Redraw();
+ dw_list.SetReadOnly(true);
+ }
+ return 1;
+ }
+
+ int onload()
+ {
+
+ dw_list = GetControl("dw_list");
+ //dw_list.openUrl("xxx");
+ if(GetParam())
+ {
+ xaserverarg arg = GetParam();
+ stype = arg.GetArgString("stype");
+ sdata = arg.GetArgString("sdata");
+ flowid = arg.GetArgString("flowid");
+
+ string dwname = arg.GetArgString("dwname");
+ int dwobj = arg.GetArgString("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..29f7b09
--- /dev/null
+++ b/jrj/project/business/SystemSettings/FlowTermSelect.cpp
@@ -0,0 +1,161 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+ class FlowTermSelect : public xframe
+ {
+ xdwgrid dw_list;
+ string stype;
+ string sdata;
+ string flowid;
+ string datacolumn;
+ string displaycolumn;
+
+ xnode m_agentNode; //Agent Condition
+
+ int SetAgent()
+ {
+ string xfNodeAgentArea = "agentarea";
+ xnode anode = GetAgentNode(xfNodeAgentArea);
+ if(m_agentNode)
+ {
+ SetAgentNodeContent (anode,m_agentNode);
+ }
+ else
+ {
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+ if(agent)
+ {
+ string s = agent.xml;
+ m_agentNode = SetAgentNodeContent (anode,s);
+ }
+ }
+ return 1;
+ }
+
+ //焦点激活处理函数
+ int OnSetFocus(ref TEvent evt,int param)
+ {
+ //重置工具条
+ //SetAgent();
+ return 1;
+ }
+
+ int OnOK(string comdid)
+ {
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg = GetParam();
+ arg.AddArg("comdid",comdid);
+
+ int row = dw_list.GetNextSelectRow(1);
+ if(row < 1 && dw_list.GetRowCount()==1) row = 1;
+ if (row<1)
+ {
+ alert("请选择项!");
+ return 1;
+ }
+
+ while (row>0)
+ {
+ msxml::IXMLDOMElement e = dw_list.GetRowElement(row);
+ string data = e.selectSingleNode(datacolumn).text+"";
+ string display = e.selectSingleNode(displaycolumn).text+"";
+ arg.AddArg("data",data);
+ arg.AddArg("display",display);
+ row = dw_list.GetNextSelectRow(row + 1);
+ }
+ CloseWindow();
+ return 1;
+ }
+
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if (comdid=="xmOk")
+ {
+ OnOK(comdid);
+ return 1;
+ }
+ else if (comdid=="xmCancel")
+ {
+ CloseWindow();
+ return 1;
+ }
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ //获取焦点事件,用于重置工具条
+ AttachEvent("WM_SETFOCUS",OnSetFocus);
+ }
+
+ int OnRetrieve()
+ {
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+
+ arg.AddArg("stype",stype);
+ arg.AddArg("sdata",sdata);
+ arg.AddArg("flowID",flowid);
+
+ if (getUrl("/sale/data/Flow3/retrieve/flowex",arg.GetString(),x)!=1)
+ {
+ trace(x.GetXmlDoc().text);
+ return -1;
+ }else
+ {
+ dw_list.Retrieve(x);
+ dw_list.Redraw();
+ dw_list.SetReadOnly(true);
+ }
+ return 1;
+ }
+
+ int onload()
+ {
+
+ dw_list = GetControl("dw_list");
+ //dw_list.openUrl("xxx");
+ if(GetParam())
+ {
+ xaserverarg arg = GetParam();
+ stype = arg.GetArgString("stype");
+ sdata = arg.GetArgString("sdata");
+ flowid = arg.GetArgString("flowid");
+
+ datacolumn = arg.GetArgString("datacolumn");
+ displaycolumn = arg.GetArgString("displaycolumn");
+
+ string dwname = arg.GetArgString("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..f781cf6
--- /dev/null
+++ b/jrj/project/business/SystemSettings/LogList.cpp
@@ -0,0 +1,203 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+ class ViewLogList : public xwin
+ {
+ xdwgrid dw_list;
+ xoffice dw_office;
+ xcell dw_cell;
+ xnode m_agentNode; //Agent Condition
+ string m_category;
+ string argStr;
+ string searchStr;
+
+ int SetAgent()
+ {
+ string xfNodeAgentArea = "agentarea";
+ xnode anode = GetAgentNode(xfNodeAgentArea);
+ if(m_agentNode)
+ {
+ SetAgentNodeContent (anode,m_agentNode);
+ }
+ else
+ {
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+ if(agent)
+ {
+ string s = agent.xml;
+ m_agentNode = SetAgentNodeContent (anode,s);
+ }
+ }
+ return 1;
+ }
+
+ //焦点激活处理函数
+ int OnSetFocus(ref TEvent evt,int param)
+ {
+ //重置工具条
+ SetAgent();
+ return 1;
+ }
+
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ int hCursor = 0;
+ if(comdid=="xmQuery")
+ {
+ xaserverarg ar = new xaserverarg;
+ ar.setNativePointer(ar.CreateInstance());
+ ar.AddArg("argurl","/sale/view/Total3/arg/LogListItem");
+ if(argStr !="")
+ ar.AddArg("arg",argStr);
+ OpenWindow("dev:xpage[view.total.arg.vx]",cast(ar as int));
+ string arstr = ar.GetArgString("arg");
+ if(arstr != "" && ar.GetArgString("action")=="ok")
+ {
+ argStr = arstr;
+ hCursor = xutil::SetCursorWait();
+ OnRetrieve("/sale/data/Total3/total/GDNTotal/Item/LogList",argStr);
+
+ xutil::RestoreCursor(hCursor);
+ }
+
+ else
+ {
+ argStr="";
+ OnRetrieve("/sale/data/Total3/total/GDNTotal/Item/LogList",argStr);
+ }
+
+ return 1;
+ }
+ if(comdid=="xmAnalysis")
+ {
+ hCursor = xutil::SetCursorWait();
+ string str = dw_list.DataAnalysis("");
+ xaserverarg arg=new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("html", str);
+ int obj = cast(dw_list as int);
+ arg.AddArg("obj",obj.toString());
+ OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int));
+ xutil::RestoreCursor(hCursor);
+ return 1;
+ }
+ if(comdid=="xmSearch") return OnSearch();
+ return 0;
+ }
+
+ int OnSearch()
+ {
+ xaserverarg arg=new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("text", searchStr);
+ OpenWindow("dev:xpage[search.dialog.vx]", cast(arg as int));
+ string str = arg.GetArgString("text");
+ if(str != searchStr)
+ {
+ searchStr = str;
+ dw_list.Filter("*",searchStr);
+ return 1;
+ }
+ return 1;
+ }
+
+
+
+ int OnCombboChanged(ref TCommandEvent evt,int lParam)
+ {
+ int h = xcombobox::GetCurSel(evt.hCtrl);
+ if(h > -1)
+ {
+ int hCursor = xutil::SetCursorWait();
+ msxml::IXMLDOMElement e = xcombobox::GetItemData(evt.hCtrl, h);
+
+ win32::PostMessage(GetHWND(),0x401,"xmQuery",0);
+ //OnCmdDispatch("xmQuery");
+ xutil::RestoreCursor(hCursor);
+ }
+ return 1;
+ }
+
+
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnDWClick(ref TNotifyEvent evt,int p)
+ {
+ ref DWNMHDR hdr = trust(evt.pnmh as ref DWNMHDR);
+ string value = hdr.data;
+ string colname = hdr.colname;
+ int row = hdr.row;
+
+ if(row < 1) return 1;
+
+ return 1;
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ //获取焦点事件,用于重置工具条
+ AttachEvent("WM_SETFOCUS",OnSetFocus);
+ AttachEvent("cb_report","CBN_SELCHANGE",OnCombboChanged);
+ AttachEvent("dw_report","DWV_CLICKED",OnDWClick);
+ }
+
+ int OnRetrieve(string dataurl, string argstr)
+ {
+ dw_list.Reset();
+
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("arg",argstr);
+ //alert(argstr);
+
+ if (url::get(dataurl,arg.GetString(),x)!=1)
+ {
+ //alert(x.GetXml());
+ trace(x.GetXmlDoc().text);
+ dw_list.Redraw();
+ return -1;
+ }
+ //alert(x.GetXml());
+ dw_list.Retrieve(x);
+ dw_list.Redraw();
+ dw_list.SetReadOnly(true);
+
+ return 1;
+ }
+
+ int onload()
+ {
+ dw_list = GetControl("dw_report");
+ dw_office = GetControl("dw_office");
+ dw_cell = GetControl("dw_cell");
+ dw_list.openUrl("/sale/view/Total3/template/business/gdn/LogList/ship/full");
+
+ argStr ="";
+ xcombobox xc = GetControl("cb_report");
+
+
+ OnAttachEvent();
+ return 1;
+ }
+
+ int onloaded()
+ {
+ SetAgent();
+ OnCmdDispatch("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..64f2570
--- /dev/null
+++ b/jrj/project/business/SystemSettings/SysLoginRecord.cpp
@@ -0,0 +1,89 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+use "base.view.vd"
+
+unit vbusiness
+[
+ class SysLoginRecord : public frame
+ {
+ xdwgrid dw_logrecord;
+ xdwtable dw_arg;
+ int OnRetrieve()
+ {
+ xcontrol xc_text =GetControl("QueryTxt");
+ xcontrol xc_cbx = GetControl("cbx_type");
+ string ls_querytxt;
+ string ls_querytype;
+ ls_querytxt = xc_text.GetText();
+ ls_querytype = xc_cbx.GetText();
+ xml x = new xml;
+ x.setNativePointer(x.CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("sType",ls_querytype);
+ arg.AddArg("QueryText",ls_querytxt);
+ arg.AddArg("QueryArg",GetQueryArg());
+ //alert(ls_querytxt);
+ if (url::get("/sale/data/Total3/total/GDNTotal/Item/GetSysLoginLog",arg.GetString(),x) == 1)
+ {
+ //trace(x.GetXml());
+ dw_logrecord.Retrieve(x);
+ dw_logrecord.Redraw();
+ dw_logrecord.SetSelectionMode(1);
+ }
+ else
+ alert("查不到");
+ return 1;
+ }
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ int hCursor = xutil::SetCursorWait();
+ if(comdid=="ContSearch")
+ OnRetrieve();
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int p)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ string GetQueryArg()
+ {
+ dw_arg.AcceptText();
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ dw_arg.DwUpdateAllTo(x.GetXmlDoc());
+ return x.GetXml();
+ }
+
+
+ int OnAttachEvent()
+ {
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ return 1;
+ }
+
+ int onload()
+ {
+ dw_logrecord = GetControl("dw_logrecord");
+ dw_logrecord.openUrl("/sale/view/SysUser/template/SysLoginRecord");
+ dw_arg = GetControl("dw_arg");
+ dw_arg.openUrl("/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("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..65769bf
--- /dev/null
+++ b/jrj/project/business/SystemSettings/TestRetrieveing.cpp
@@ -0,0 +1,52 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+ class TestRetrieveingWin: public xframe
+ {
+ //xdwgrid dw_list;
+
+ xnode m_agentNode; //Agent Condition
+
+ //焦点激活处理函数
+ int OnSetFocus(ref TEvent evt,int param)
+ {
+ //重置工具条
+ return 1;
+ }
+
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if(comdid=="RetrieveFinished")
+ {
+ CloseWindow();
+ return 1;
+ }
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ //获取焦点事件,用于重置工具条
+ AttachEvent("WM_SETFOCUS",OnSetFocus);
+ }
+
+ 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..92aeffc
--- /dev/null
+++ b/jrj/project/business/SystemSettings/UserPassDlg.cpp
@@ -0,0 +1,131 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+ class UserPassDlg : public xframe
+ {
+ //xdwgrid dw_list;
+
+ xnode m_agentNode; //Agent Condition
+
+ static string MD5(string) native from "XUtil.dll" alias "?MD5@IXFUtil@XFrame@Hxsoft@@SAPA_WPA_W@Z";
+ int SetAgent()
+ {
+ string xfNodeAgentArea = "agentarea";
+ xnode anode = GetAgentNode(xfNodeAgentArea);
+ if(m_agentNode)
+ {
+ SetAgentNodeContent (anode,m_agentNode);
+ }
+ else
+ {
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+ if(agent)
+ {
+ string s = agent.xml;
+ m_agentNode = SetAgentNodeContent (anode,s);
+ }
+ }
+ return 1;
+ }
+
+ //焦点激活处理函数
+ int OnSetFocus(ref TEvent evt,int param)
+ {
+ //重置工具条
+ SetAgent();
+ return 1;
+ }
+
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if(comdid=="xmCancel")
+ {
+ CloseWindow();
+ return 1;
+ }
+ else if(comdid=="xmOk")
+ {
+ if(GetControl("old_pass").GetText()=="")
+ {
+ alert("请输入旧口令!");
+ win32::SetFocus(GetControl("old_pass").GetId());
+ return 1;
+ }
+
+ string ostr = GetControl("old_pass").GetText();
+ string str1 = GetControl("new_pass").GetText();
+ string str2 = GetControl("new_pass1").GetText();
+ if(str1 != str2)
+ {
+ alert("两遍新口令不一致!");
+ win32::SetFocus(GetControl("new_pass1").GetId());
+ return 1;
+ }
+
+ string oldpass = MD5(ostr);
+ string newpass = MD5(str1);
+
+ xml x=new xml;
+ x.setNativePointer(x.CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("old_password",oldpass);
+ arg.AddArg("new_password",newpass);
+
+ if(getUrl("/sale/data/SysUser/update/password",arg.GetString(),x)!=1)
+ {
+ alert("修改失败");
+ }
+ else{
+ if(x.GetXmlDoc().selectSingleNode("error"))
+ {
+ alert(x.GetXmlDoc().selectSingleNode("error").text);
+ return 1;
+ }
+ win32::MessageBox(GetHWND(),"修改口令成功!","提示",0);
+ CloseWindow();
+ }
+ return 1;
+ }
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ //获取焦点事件,用于重置工具条
+ AttachEvent("WM_SETFOCUS",OnSetFocus);
+ }
+
+ int onload()
+ {
+
+ //const int EM_SETPASSWORDCHAR =0x00CC;
+ //win32::SendMessage(GetControl("old_pass").GetId(),EM_SETPASSWORDCHAR,42,0);
+ //win32::SendMessage(GetControl("new_pass").GetId(),EM_SETPASSWORDCHAR,42,0);
+ //win32::SendMessage(GetControl("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..a3615e3
--- /dev/null
+++ b/jrj/project/business/SystemSettings/level.Customer.v3.cpp
@@ -0,0 +1,359 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+class levelCustomerv3 : public listwin
+{
+ xdwgrid dw_goods;
+ xtreeview tv_1;
+ xcombobox ddlb_1;
+ int changeddlb;
+
+ string m_sType; //type
+ string m_sTypeTxt; //选中树的data
+// string m_searchtxt;
+ int PIndex;
+ xnode m_agentNode; //Agent Condition
+ string m_agentCond; //Agent Node
+
+
+ int OnPreRetrieve()
+ {
+ xml x = new xml;
+ x.setNativePointer(xml ::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("pageindex", PIndex.toString()); //第几页
+ arg.AddArg("pagenumber", m_pageNumber.toString()); //每页数量
+ arg.AddArg("QueryTxt",m_QueryTxt );
+ arg.AddArg("sType", m_sType);//没有参数
+ arg.AddArg("sTypeTxt", m_sTypeTxt);//没有参数
+
+ if(getUrl("/sale/data/"+GetEntityName(1)+"/entity/list",arg.GetString(),x)!=1)
+ {
+ alert("出现错误请联系管理员!");
+ return 0;
+ }else
+ {
+ msxml::IXMLDOMElement e=x.GetXmlDoc().documentElement;
+ if(listwin::dw_pages.ptr_native_ && e.selectSingleNode("@TotalPage"))
+ {
+ string s=e.selectSingleNode("@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(ref TNotifyEvent evt,int p)
+ {
+ ref PAGENMHDR h = evt.pnmh;
+ int c = h.cur;
+ int hCursor = xutil::SetCursorWait();
+ OnRetrieve();
+ PIndex=c;
+ xutil::RestoreCursor(hCursor);
+ return 1;
+ }
+
+ int ViewUpdate(int pr,string updateItem,xaserverarg arg)
+ {
+ if(updateItem == "refresh")
+ {
+ xdwpages zz = this.GetControl("pages");
+ int h = zz.SetCurPage(1);
+ OnRetrieve();
+ }
+ return 1;
+ }
+
+ //树选择
+ int OnTreeSelChanged(ref TNotifyEvent evt,int p)
+ {
+ if (changeddlb != 1)
+ {
+ int wid = tv_1.GetId();
+ int h=xtreeview::GetSelectedItem(wid);
+ msxml::IXMLDOMElement e = xtreeview::GetItemData(wid,h);
+
+ string t = e.SelectSingleNode("@type").text;
+ m_sType=t+"";
+ string txt = e.SelectSingleNode("@code").text;
+ if (txt == "")
+ txt = e.SelectSingleNode("@name").text;
+ m_sTypeTxt= txt+"";
+
+ PIndex= 1;
+ OnRetrieve();
+ }
+ return 1;
+ }
+
+ int createSubTree(int wid,int h, msxml::IXMLDOMElement ele)
+ {
+ msxml::IXMLDOMNodeList nlist=ele.SelectNodes("item");
+ int i;
+ int s=nlist.length;
+ if (s>0)
+ for (i=0; i<s; i++)
+ {
+ msxml::IXMLDOMElement e=nlist.item(i);
+ string name=e.SelectSingleNode("@name").text;
+ int hw=xtreeview::InsertChildItem(wid,h,name,trust(e as int),15);
+ createSubTree(wid,hw, e);
+ }
+ return 1;
+ }
+
+ int OnCreateTree(string sType)
+ {
+ int wid = tv_1.GetId();
+ while (xtreeview::GetRootItem(wid)>0)
+ xtreeview::DeleteItem(wid,xtreeview::GetRootItem(wid));
+
+ xml x = new xml;
+ x.setNativePointer(x.CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("sType",sType);
+ if(getUrl("/sale/data/"+GetEntityName(1)+"/pref/list/tree",arg.GetString(),x)!=1)
+ {
+ trace(x.GetXmlDoc().text);
+ return -1;
+ }else
+ {
+ msxml::IXMLDOMNodeList nlist=x.GetXmlDoc().SelectNodes("root/item");
+ int len = nlist.length;
+ if (len >0)
+ {
+ int i;
+ for (i=0;i <len; i++)
+ {
+ msxml::IXMLDOMElement e = nlist.item(i);
+ string name = e.SelectSingleNode("@name").text;
+ int h = xtreeview::InsertChildItem(wid,0,name,trust(e as int),15);
+ createSubTree(wid,h,e);
+ xtreeview::ExpandItem(wid,h);
+ }
+ xtreeview::ExpandItem(wid,0);
+ }
+ }
+
+ return 1;
+ }
+
+ //xcombobox下拉
+ int OnSelectDdlb(ref TNotifyEvent evt,int p)
+ {
+ changeddlb=1;
+ int wid = ddlb_1.GetId();
+ int CB_GETCURSEL = 0x0147;
+ int nIndex = win32::SendMessage(wid,CB_GETCURSEL,0,0);
+ msxml::IXMLDOMElement e = ddlb_1.GetElement();
+ msxml::IXMLDOMElement e2 = e.selectSingleNode("item["+(nIndex+1).toString()+"]");
+ string text=e2.selectSingleNode("@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;
+ }
+ }
+
+ msxml::IXMLDOMElement e = listwin::dw_list.GetRowElement(row);
+ string sguid = e.SelectSingleNode("@guid").text;
+ string sName = e.selectSingleNode("Name").text+"";
+ int MB_YESNO = 0x00000004;
+ int IDYES = 6;
+ if(win32::MessageBox(GetHWND(),"确认要删除客户 "+sName+" 的信息吗?","提示",MB_YESNO)!=IDYES) return 1;
+ xml x = new xml;
+ x.setNativePointer(x.CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("guid",sguid);
+ if (url::post("/sale/data/"+GetEntityName(1)+"/entity/delete",arg.GetString(),x) != 1)
+ {
+ string error = x.GetXmlDoc().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(ref TNotifyEvent evt,int p)
+ {
+ return 1;
+ }
+ int OnLogOff()
+ {
+ return 1;
+ }
+ //设置层级弹出窗与保存
+ int OnLevelCustomer()
+ {
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ OpenWindow("dev:xpage[maint.Level.Customer3.vx]", cast(arg as int));
+
+ xml ux = new xml;
+ ux.setNativePointer(ux.CreateInstance());
+ ux.LoadXml("<Partys/>");
+ msxml::IXMLDOMElement ele = ux.GetXmlDoc().documentElement;
+
+ if(arg.GetArgString("ok")=="true")
+ {
+ xml x = new xml;
+ x.setNativePointer(x.CreateInstance());
+ x.LoadXml(arg.GetArgString("arg"));
+ msxml::IXMLDOMElement uele = x.GetXmlDoc().documentElement;
+ string ParentPartyID = uele.selectSingleNode("//ParentPartyID").text;
+ string ParentPartyName = "";
+ string GroupPartyID = uele.selectSingleNode("//GroupPartyID").text;
+ string GroupPartyName = "";
+
+ if( uele.selectSingleNode("//ParentPartyID/@_displaystring"))
+ ParentPartyName = uele.selectSingleNode("//ParentPartyID/@_displaystring").text;
+ if(uele.selectSingleNode("//GroupPartyID/@_displaystring"))
+ GroupPartyName = uele.selectSingleNode("//GroupPartyID/@_displaystring").text;
+
+ int row = dw_list.GetNextSelectRow(1);
+ while(row > 0)
+ {
+ dw_list.SetItemString(row,"ParentPartyID",ParentPartyID);
+ dw_list.SetItemDisplayString(row,"ParentPartyID",ParentPartyName);
+ dw_list.SetItemString(row,"GroupPartyID",GroupPartyID);
+ dw_list.SetItemDisplayString(row,"GroupPartyID",GroupPartyName);
+ ele.appendChild(dw_list.GetRowElement(row).cloneNode(-1));
+ row = dw_list.GetNextSelectRow(row + 1);
+ }
+ dw_list.RedrawEx();
+ arg.AddArg("content",ele.xml);
+ if (getUrl("/sale/data/CustomerV3/level/update",arg.GetString(),x)!=1)
+ {
+ trace(x.GetXmlDoc().text);
+ alert("设置错误!");
+ return -1;
+ }else
+ {
+ alert("设置成功!");
+ }
+ }
+ return 1;
+ }
+
+ int PreOnCmdDispatch(string comdid)
+ {
+ if(comdid.find("action:LogOff",0)>=0) return OnLogOff();
+ if(comdid.find("action:bill.delete",0)>=0) return OnDeleteRow();
+ //if(comdid=="action:search1") return GridSearch();
+ if(comdid=="action:bill.refresh")
+ {
+ return OnRetrieve();
+ }
+ if(comdid=="action:level.customer")
+ {
+ return OnLevelCustomer();
+ }
+
+ return 1;
+ }
+
+ int OnRowChangedEx(ref TNotifyEvent evt,int p)
+ {
+ alert("999");
+ ref DWNMHDR hdr =cast(evt.pnmh as ref DWNMHDR);
+ int row = hdr.row;
+ msxml::IXMLDOMElement ele = listwin::dw_list.GetRowElement(row);
+ string entity = ele.selectSingleNode("CustomerID").text;
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("EntityID",entity);
+ if (getUrl("/sale/data/CustomerV3/entity/customeritem",arg.GetString(),x)!=1)
+ {
+ trace(x.GetXmlDoc().text);
+ return -1;
+ }else
+ {
+ dw_goods.Retrieve(x);
+ dw_goods.Redraw();
+ dw_goods.SetReadOnly(true);
+ }
+ return 1;
+ }
+
+
+ int PostOnAttachEvent()
+ {
+ //获得树的选择事件
+ AttachEvent("tv_1", "TVN_SELCHANGED",OnTreeSelChanged);
+ AttachEvent("cbx_1","CBN_SELCHANGE",OnSelectDdlb);
+ AttachEvent("pages","PAGE_CLICK",OnChangePages);
+ AttachEvent("dw_list","DWV_RCLICKED",OnRClick);//鼠标右键
+ //AttachEvent("dw_list","DWV_CLICKED",OnClick);//鼠标右键
+ AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChangedEx);
+
+ return 1;
+ }
+
+ int onload()
+ {
+ PIndex=1;
+ listwin::m_QueryTxt =""; //查询条件
+ m_sType=""; //type
+ m_sTypeTxt=""; //选中树的data
+
+ listwin::onload();
+
+ tv_1 = this.GetControl("tv_1");
+ ddlb_1 = this.GetControl("cbx_1");
+
+ changeddlb = 0;
+ OnCreateTree("Source");
+ dw_goods = GetControl("dw_goods");
+ dw_goods.openUrl("/sale/view/CustomerV3/template/customer/customeritem");
+
+ return 1;
+ }
+
+ int onloaded()
+ {
+ listwin::onloaded();
+
+ string EntityID;
+ int row = dw_list.GetRow();
+ if(row<0 || row>dw_list.GetRowCount()) return "";
+ msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
+ string id = listwin::m_configDoc.selectSingleNode("//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..3938f6f
--- /dev/null
+++ b/jrj/project/business/SystemSettings/maint.Level.Customer3.cpp
@@ -0,0 +1,72 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+
+unit trade
+[
+ class MaintLevelCustomerWin : public xframe
+ {
+ xdwtable dw_arg;
+ xaserverarg arg;
+
+
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if(comdid=="xmOk")
+ {
+ xml x = new xml;
+ x.setNativePointer(x.CreateInstance());
+ dw_arg.AcceptText();
+ dw_arg.DwUpdateAllTo(x.GetXmlDoc());
+ if(arg)
+ {
+ arg.AddArg("arg",x.GetXml());
+ arg.AddArg("ok","true");
+ }
+ CloseWindow();
+
+ return 1;
+ }
+ else if(comdid=="xmCancel")
+ {
+ if(arg)arg.AddArg("ok","false");
+ CloseWindow();
+ return 1;
+ }
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ }
+
+ int onload()
+ {
+ dw_arg = GetControl("dw_arg");
+
+ if(GetParam())arg = GetParam();
+
+ string dw = "/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;
+ }
+
+ };
+]
\ No newline at end of file
diff --git a/jrj/project/business/SystemSettings/view.assignadjust.cpp b/jrj/project/business/SystemSettings/view.assignadjust.cpp
new file mode 100644
index 0000000..f11d11a
--- /dev/null
+++ b/jrj/project/business/SystemSettings/view.assignadjust.cpp
@@ -0,0 +1,267 @@
+use "xcontrol.vframe.vbusiness.vd"
+use "xbase.vframe.vbusiness.vd"
+use "base.view.vd"
+use "datastore_bind.vd"
+
+
+unit trade
+[
+ class AssignAdjustWin : public xframe
+ {
+ xdwgrid dw_list;
+ xnode m_agentNode; //Agent Condition
+ msxml::IXMLDOMElement rptEle;
+ string argStr;
+ string searchStr;
+ int hWndRetrieveTip;
+ bool dataretrieveing;
+
+ int SetAgent()
+ {
+ string xfNodeAgentArea = "agentarea";
+ xnode anode = GetAgentNode(xfNodeAgentArea);
+ if(m_agentNode)
+ {
+ SetAgentNodeContent (anode,m_agentNode);
+ }
+ else
+ {
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
+ if(agent)
+ {
+ string s = agent.xml;
+ m_agentNode = SetAgentNodeContent (anode,s);
+ }
+ }
+ return 1;
+ }
+
+ int OnSave()
+ {
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ dw_list.AcceptText();
+ dw_list.DwUpdateAllToEx(x.GetXmlDoc());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(xaserverarg::CreateInstance());
+
+ xml x0 = ViewObject::MakeXml();
+ x0.LoadXml("<data/>");
+ msxml::IXMLDOMNodeList t = x.GetXmlDoc().selectNodes("data/node()[(@update.new='1') or (@update.modify='1') or (@update.delete='1') ]");
+ msxml::IXMLDOMElement e1= x0.GetXmlDoc().documentElement;
+
+ string val0 = x.GetXml();
+ for(int i=0; i < t.length; i++)
+ {
+ msxml::IXMLDOMElement e= t.item(i);
+ e1.appendChild(e);
+ }
+
+ x = ViewObject::RetrieveData(rptEle.getAttribute("update"),"content",x0.GetXml());
+ string str = x.GetXmlDoc().documentElement.getAttribute("text");
+ if(str == "true")
+ {
+ dw_list.ResetUpdateStatus();
+ alert("保存成功!");
+ }else
+ {
+ alert("保存失败!");
+ }
+ return 1;
+ }
+
+ //焦点激活处理函数
+ int OnSetFocus(ref TEvent evt,int param)
+ {
+ //重置工具条
+ SetAgent();
+ return 1;
+ }
+
+ int OnMultiDeal()
+ {
+ dw_list.AcceptText();
+ int row = dw_list.GetNextSelectRow(1);
+ string SalespersonID = dw_list.GetItemString(row, "SalespersonID");
+ string Sales = dw_list.GetItemDisplayString(row, "SalespersonID");
+ while(row > 0 && row <= dw_list.GetRowCount())
+ {
+ row = dw_list.GetNextSelectRow(row + 1);
+ dw_list.SetItemString(row, "SalespersonID", SalespersonID);
+ dw_list.SetItemDisplayString(row, "SalespersonID", Sales);
+
+ }
+ dw_list.Redraw();
+ }
+
+
+ int OnSearch()
+ {
+ xaserverarg arg=new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("text", searchStr);
+ OpenWindow("dev:xpage[search.dialog.vx]", cast(arg as int));
+ string str = arg.GetArgString("text");
+ if(str != searchStr)
+ {
+ searchStr = str;
+ dw_list.Filter("*",searchStr);
+ return 1;
+ }
+ return 1;
+ }
+
+ //命令发布函数
+ int OnCmdDispatch(string comdid)
+ {
+ if(comdid=="xmSave")return OnSave();
+ if(comdid=="xmMultiDeal")return OnMultiDeal();
+ if(comdid=="xmSearch") return OnSearch();
+ if(comdid=="xmAnalysis")
+ {
+ //hCursor = xutil::SetCursorWait();
+ string str = dw_list.DataAnalysis("");
+ xaserverarg arg=new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("html", str);
+ int obj = cast(dw_list as int);
+ arg.AddArg("obj",obj.toString());
+ OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int));
+ //xutil::RestoreCursor(hCursor);
+ return 1;
+ }
+ if(comdid=="xmQuery")
+ {
+ if(rptEle)
+ {
+ string argUrl = rptEle.getAttribute("arg");
+ if(argUrl !="")
+ {
+ xaserverarg ar = new xaserverarg;
+ ar.setNativePointer(ar.CreateInstance());
+ ar.AddArg("argurl",argUrl);
+ if(argStr !="")
+ ar.AddArg("arg",argStr);
+ OpenWindow("dev:xpage[view.total.arg.vx]",cast(ar as int));
+ string arstr = ar.GetArgString("arg");
+ if(arstr != "" && ar.GetArgString("action")=="ok")
+ {
+ argStr = arstr;
+ OnRetrieve(rptEle.getAttribute("data"),argStr);
+ }
+ }
+ else
+ {
+ argStr="";
+ OnRetrieve(rptEle.getAttribute("data"),argStr);
+ }
+ }
+ return 1;
+ }
+ return 0;
+ }
+
+ //命令处理事件
+ int OnXCommand(ref TXCommandEvent evt,int param)
+ {
+ return OnCmdDispatch(evt.pStrID);
+ }
+
+ int OnAttachEvent()
+ {
+ //绑定工具条点击事件
+ AttachEvent("WM_XCOMMAND",OnXCommand);
+ //获取焦点事件,用于重置工具条
+ AttachEvent("WM_SETFOCUS",OnSetFocus);
+
+ AttachEvent("cb_report","CBN_SELCHANGE",OnCombboChanged);
+ }
+
+ int OnCombboChanged(ref TCommandEvent evt,int lParam)
+ {
+ int h = xcombobox::GetCurSel(evt.hCtrl);
+ if(h > -1) ShowList(h);
+ return 1;
+ }
+
+ int SwitchReport(msxml::IXMLDOMElement e)
+ {
+ rptEle = e;
+ string dwname = e.getAttribute("template");
+ dw_list.openUrl(dwname);
+ dw_list.Redraw();
+ return 1;
+ }
+
+ int ShowList(int h)
+ {
+ msxml::IXMLDOMElement xframeElement = GetElement();
+ msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xcombobox[@name='cb_report']/item["+(h+1).toString()+"]");
+ if(e) SwitchReport(e);
+ win32::PostMessage(GetHWND(),0x401,"xmQuery",0);
+ return 1;
+ }
+
+ int ShowRetrieveingTip()
+ {
+ dataretrieveing = true;
+ xwin pwin = OpenWindow("dev:xpage[TestRetrieveing.vx]",0);
+ hWndRetrieveTip =pwin.GetHWND();
+ return 1;
+ }
+ int CloseRetrieveTip()
+ {
+ dataretrieveing = false;
+ win32::SendMessage(hWndRetrieveTip,0x401,"RetrieveFinished",0);
+ hWndRetrieveTip = 0;
+
+ return 1;
+ }
+
+ int OnRetrieve(string dataurl, string argstr)
+ {
+ if(!rptEle) return 0;
+ dw_list.Reset();
+
+ xml x = new xml;
+ x.setNativePointer(xml::CreateInstance());
+ xaserverarg arg = new xaserverarg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg("arg",argstr);
+ if (url::get(dataurl,arg.GetString(),x)!=1)
+ {
+
+ trace("错误信息="+x.GetXmlDoc().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("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