From a4d2315ee4ca3f6177b4fb2526bed2feff3d89be Mon Sep 17 00:00:00 2001
From: lifan <2308045698@qq.com>
Date: 星期三, 22 十月 2025 16:52:58 +0800
Subject: [PATCH] update
---
jrj/project/business/SystemSettings/Data.config.cpp | 1108 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 554 insertions(+), 554 deletions(-)
diff --git a/jrj/project/business/SystemSettings/Data.config.cpp b/jrj/project/business/SystemSettings/Data.config.cpp
index f5b5019..4a3fe1d 100644
--- a/jrj/project/business/SystemSettings/Data.config.cpp
+++ b/jrj/project/business/SystemSettings/Data.config.cpp
@@ -1,571 +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"
+#include <wobject/xstring.hpp>
+#include <wobject/xstring.hpp>
+#include <xcontrol/xtreeview.hpp>
+#include <xcontrol/xdwgrid.hpp>
+#include <wobject/xdouble.hpp>
+#include <xcontrol/xlayersheet.hpp>
-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;
+#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
+#include "viewobject/view.base.hpp"
- 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;
- }
+using xml = KXMLDOMDocument;
+class __declspec(dllexport) DataConfig : public xframe
+{
- 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;
- }
+public:
+ xtreeview dw_tree;
+ xdwgrid dw_list;
+ xdwgrid dw_role;
+ combobox dw_ddlb;
+ xlayersheet m_sheet;
+public:
+ DataConfig(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
+public:
+ static DataConfig* CreateInstance(void* implPtr, void* hWnd)
+ {
+ DataConfig* pWin = new DataConfig(implPtr, (HWND)hWnd);
+ return pWin;
+ }
+ int alert(xstring str)
+ {
+ TApp::alert(this, str, 3);
+ return 0;
+ }
+ int createTree(KXMLDOMElement e, HTREEITEM parentItem)
+ {
+ if (dw_tree.GetChildItem(parentItem) > 0) return 0;
- 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;
- }
+ var list = e.selectNodes(L"item");
+ int i = 0, s = list.length;
+ KXMLDOMElement xitem;
+ for (i = 0; i < s; i++)
+ {
+ xitem = list.item(s - i - 1);
+ xstring Name = xitem.selectSingleNode(L"name").text();
+ xstring image = xitem.selectSingleNode(L"image").text();
+ HTREEITEM curItem = dw_tree.InsertItem(parentItem, 0, Name, xitem, image.toInt());
+ xstring child = xitem.selectSingleNode(L"child").text();
+ if (child != L"0")
+ dw_tree.SetItemChild1(curItem, 1);
+ }
+ 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());
+ int OnTreeExpanding(TEvent* evt, LPARAM p)
+ {
+ NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
- 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();
+ HTREEITEM sitem = nmtv.itemNew.hItem;
- 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);
+ int i = dw_ddlb.GetCurSel();
+ KXMLDOMElement e = dw_tree.GetItemData(sitem);
+ xstring id = e.selectSingleNode(L"id").text();
+ xstring xid = e.selectSingleNode(L"tree").text();
+ HCURSOR hCursor = xutil::SetCursorWait();
+ xml x;
- 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();
+ xaserverarg arg;
+
+ arg.AddArg(L"pid", id);
+ arg.AddArg(L"tree", xid);
+ //if(xaserver::ExecXQuery(GetServerUrl(),L"[selectRoleInt.xq]",arg.GetString(),x)!=1)
+ if (xurl::get(L"/sale/data/Role.config/pref/user/select", arg.GetString(), x) != 1)
+ {
+ trace(L"错误返回=L" + (xstring)x.xml());
+ return -1;
+ }
- 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;
- }
+ KXMLDOMElement ele = x.documentElement();
+ createTree(ele, sitem);
+ xutil::RestoreCursor(hCursor);
+ 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)
+ int OnRetrieve(xstring id)
+ {
+ HCURSOR hIcon = xutil::SetCursorWait();
+ xml x;
+
+ xaserverarg arg;
+
+ arg.AddArg(L"id", id);
+ trace(id);
+ arg.AddArg(L"flag", L"-1");
+ //if(xaserver::ExecXQuery(GetServerUrl(),L"[selectRoleInt.xq]",arg.GetString(),x)!=1)
+ if (xurl::get(L"/sale/data/Role.config/pref/maint/data", arg.GetString(), x) != 1)
+ {
+ trace(L"错误返回1=L" + (xstring)x.xml());
+ return -1;
+ }
+
+ if ((xstring)x.xml() == L"")
+ x.loadXML(L"<root><items/><roles/></root>");
+
+ xml x1;
+
+ if (x.selectSingleNode(L"root/items"))
+ {
+ dw_list.Retrieve(x.selectSingleNode(L"root/items"));
+ dw_list.SetReadOnly(true);
+ dw_list.Redraw();
+ }
+ else
+ {
+ x1.loadXML(L"<items/>");
+ dw_list.Retrieve(x1);
+ dw_list.SetReadOnly(true);
+ dw_list.Redraw();
+ }
+ if (x.selectSingleNode(L"root/roles"))
+ {
+ dw_role.Retrieve(x.selectSingleNode(L"root/roles"));
+ dw_role.SetReadOnly(true);
+ dw_role.Redraw();
+ }
+ else
+ {
+ x1.loadXML(L"<roles/>");
+ dw_role.Retrieve(x1);
+ dw_role.SetReadOnly(true);
+ dw_role.Redraw();
+ }
+ xutil::RestoreCursor(hIcon);
+ return 1;
+ }
+
+ int OnTreeSelecded(TEvent* evt, LPARAM p)
+ {
+ NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
+
+ HTREEITEM hItem = nmtv.itemNew.hItem;
+ //int wid = dw_tree.GetId();
+ KXMLDOMElement ele = dw_tree.GetItemData(hItem);
+
+ xstring id = ele.selectSingleNode(L"id").text();
+ OnRetrieve(id);
+
+ return 1;
+ }
+
+ int OnSelect()
+ {
+ int nIndex = dw_ddlb.GetCurSel();
+
+ combobox dw_ddlbdata = new combobox;
+ dw_ddlbdata.setNativePointer(GetControl(L"dw_ddlbdata"));
+ int h = combobox::FindString(dw_ddlbdata.GetId(), xstring(nIndex));
+ param p;
+ xnode bnode;
+ xnode anode = new xnode;
+ anode.setNativePointer(GetAgentNode(L"tree"));
+ if (h < 0)
+ {
+ xstring str = L"<vbox><xtree name='dw_tree" + xstring(nIndex) + L"' imagelist='0'/></vbox>";
+ bnode = new xnode;
+ bnode.setNativePointer(SetAgentNode(anode, str));
+
+ p = combobox::GetItemData(dw_ddlb.GetId(), nIndex);
+ KXMLDOMElement ele = p;
+
+ dw_tree = new treeview;
+ dw_tree.setNativePointer(GetControl(L"dw_tree" + xstring(nIndex)));
+
+ createTree(ele, 0);
+ AttachEvent(L"dw_tree" + xstring(nIndex), L"TVN_ITEMEXPANDING", (FEvent)&DataConfig::OnTreeExpanding);
+ AttachEvent(L"dw_tree" + xstring(nIndex), L"TVN_SELCHANGED", (FEvent)&DataConfig::OnTreeSelecded);
+
+ int sk = combobox::AddItem(dw_ddlbdata.GetId(), xstring(nIndex));
+ p = bnode;
+ combobox::SetItemData(dw_ddlbdata.GetId(), sk, p);
+ }
+ else
+ {
+ p = combobox::GetItemData(dw_ddlbdata.GetId(), h);
+ bnode = p;
+ SetAgentNode(anode, bnode);
+
+ dw_tree = new treeview;
+ dw_tree.setNativePointer(GetControl(L"dw_tree" + xstring(nIndex)));
+ }
+
+ return 1;
+ }
+
+ int OnSave()
+ {
+ HTREEITEM m = dw_tree.GetSelectedItem();
+ if (m == 0) return 0;
+
+ //int wid = dw_tree.GetId();
+ HTREEITEM hItem = dw_tree.GetSelectedItem();
+ KXMLDOMElement ele = dw_tree.GetItemData(hItem);
+ xstring id = ele.selectSingleNode(L"id").text();
+ xstring tpy = ele.selectSingleNode(L"type").text();
+
+ xml x;
+
+ dw_list.DwUpdateAllToEx(x);
+ KXMLDOMElement e = x.documentElement();
+ e.setAttribute(L"id", id);
+ e.setAttribute(L"type", tpy);
+
+ xml x1;
+
+ dw_role.DwUpdateAllToEx(x1);
+ KXMLDOMElement e1 = x1.documentElement();
+ e.appendChild(e1);
+
+ xaserverarg arg;
+
+ arg.AddArg(L"content", e.xml());
+ arg.AddArg(L"dbmap", L"Data.config.dbmap");
+ //if(xaserver::ExecXAction(GetServerUrl(),L"[onSave.xa]",arg.GetString(),x)!=1)
+ if (xurl::get(L"/sale/data/Role.config/pref/save", arg.GetString(), x) != 1)
+ //if(xurl::get(L"/workflow/action/datarole.resource/bill.update",arg.GetString(),x)!=1)
+ {
+ trace(L"error:" + (xstring)x.xml());
+ alert(L"保存出错!");
+ return 0;
+ }
+ if (x.selectSingleNode(L"error"))
+ {
+ alert(L"保存出错2!");
+ return 0;
+ }
+ dw_list.ResetUpdateStatus();
+ dw_role.ResetUpdateStatus();
+ alert(L"保存成功!");
+
+ return 1;
+ }
+
+ int OnSelectDdlb(TEvent* evt, LPARAM p)
+ {
+ xml x;
+
+ dw_list.DwUpdateAllToEx(x);
+ KXMLDOMElement e = x.documentElement();
+ if (e)
+ {
+ var list = e.selectNodes(L"//*[@update.new='1' or @update.modify='1' or @update.delete='1']");
+ int s = list.length;
+ if (s > 0)
{
- 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")
+ int ret = MessageBox(GetHWND(), L"当前修改记录未保存,是否保存?", L"提示", 4);
+ if (ret == 6)
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);
- }
+ OnSelect();
- int onload()
+ HTREEITEM m = dw_tree.GetSelectedItem();
+ xstring id;
+ if (m == 0)
+ {
+ id = L"";
+ }
+ else
+ {
+ KXMLDOMElement ele = dw_tree.GetItemData(m);
+ id = ele.selectSingleNode(L"id").text();
+ }
+ OnRetrieve(id);
+
+ return 1;
+ }
+
+ int createTreeRoot()
+ {
+ xml x;
+
+ xaserverarg arg;
+
+ arg.AddArg(L"pid", L"");
+ arg.AddArg(L"tree", L"0");
+ //if(xaserver::ExecXQuery(GetServerUrl(),L"[selectRoleInt.xq]",arg.GetString(),x)!=1)
+ if (xurl::get(L"/sale/data/Role.config/pref/user/select", arg.GetString(), x) != 1)
+ {
+ trace(L"错误返回=L" + (xstring)x.xml());
+ return -1;
+ }
+ KXMLDOMElement e = x.documentElement();
+ var list = e.selectNodes(L"*");
+ int i;
+ int len = list.length;
+ KXMLDOMElement ele;
+ for (i = 0; i < len; i++)
+ {
+ ele = list.item(i);
+ xstring name = ele.selectSingleNode(L"@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(L"");
+ return 1;
+ }
+
+ int OnSetFocus(TEvent* evt, LPARAM p)
+ {
+ SetAgent(L"data");
+ return 1;
+ }
+
+ xstring GetPath()
+ {
+ HTREEITEM h = dw_tree.GetSelectedItem();
+ if (h == 0) return 0;
+
+ //int tv = dw_tree.GetId();
+ xstring str = dw_tree.GetItemLabel(h);
+ HTREEITEM k = dw_tree.GetParentItem(h);
+ while (k > 0)
+ {
+ xstring tmp = dw_tree.GetItemLabel(k);
+ str = tmp + L"\\" + str;
+ k = dw_tree.GetParentItem(k);
+ }
+ return str;
+ }
+
+ int OnAddRole()
+ {
+ HTREEITEM m = dw_tree.GetSelectedItem();
+ if (m == 0) return -1;
+ KXMLDOMElement ele = dw_tree.GetItemData(m);
+ xstring tpy = L"" + (xstring)ele.selectSingleNode(L"type").text();
+ xaserverarg arg;
+ arg.setNativePointer(arg.CreateInstance());
+ arg.AddArg(L"dataUrl", L"/sale/data/Role.config/pref/model/select");
+ openUrl(L"/sale/view/Role.config/xpage/role/select/user", arg);
+ xstring str = arg.GetArgString(L"item");
+ if (str == L"") return -1;
+ xml x;
+
+ x.loadXML(str);
+ var list = x.selectNodes(L"items/item");
+ int i = 0, s = list.length;
+ KXMLDOMElement xitem;
+ int row = dw_role.GetRowCount() + 1;
+ xstring treepath = GetPath();
+ for (i = 0; i < s; i++)
+ {
+ xitem = list.item(i);
+ xstring id = L"" + (xstring)xitem.selectSingleNode(L"@id").text();
+ xstring name = L"" + (xstring)xitem.selectSingleNode(L"@name").text();
+ //xstring tpy=L""+xitem.selectSingleNode(L"@type").text();
+ dw_role.InsertRow(0);
+ dw_role.SetItemString(row + i, L"id", id);
+ dw_role.SetItemString(row + i, L"name", L"" + treepath);
+ dw_role.SetItemDisplayString(row + i, L"name", name);
+ dw_role.SetItemString(row + i, L"type", tpy);
+ }
+ return 1;
+ }
+
+ int OnAddRow()
+ {
+ HTREEITEM m = dw_tree.GetSelectedItem();
+ if (m == 0) return 0;
+
+ int k = m_sheet.GetSheetIndex();
+ if (k == 0)
+ //openUrl(L"/sale/view/role.config/xpage/data/select/resource", dw_list);
+ OpenWindow(L"dev:xpage[Resource.select.data.config.vx]", dw_list);
+ else
+ OnAddRole();
+
+ return 1;
+ }
+
+ int OnDelRow()
+ {
+ int k = m_sheet.GetSheetIndex();
+ int row;
+ xstring hr_type;
+ KXMLDOMElement 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(L"fromparent"))
{
- 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;
+ hr_type = e.selectSingleNode(L"fromparent").text();
+ if (hr_type != L"")
+ {
+ alert(L"继承的权限无权删除!");
+ return 0;
+ }
}
- ]
- ]
-]
\ No newline at end of file
+ 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(L"fromparent"))
+ {
+ hr_type = e.selectSingleNode(L"fromparent").text();
+ if (hr_type != L"")
+ {
+ alert(L"继承的权限无权删除!");
+ return 0;
+ }
+ }
+ dw_role.DeleteRow(row);
+ }
+
+ return 1;
+ }
+
+ int OnSetCopy(xdwgrid dw, KXMLDOMElement e, xstring name)
+ {
+ xml x;
+
+ KXMLDOMElement ele;
+ bool f = false;
+
+ int count = dw.GetRowCount();
+ if (count == 0)
+ {
+ x.loadXML(L"<" + name + L"s/>");
+ ele = x.documentElement();
+ }
+ else
+ {
+ KXMLDOMElement e1 = dw.GetRowElement(1);
+ ele = e1.parentNode;
+ }
+ var li = e.selectNodes(name);
+ int i;
+ int len = li.length;
+ xstring treepath = GetPath();
+ for (i = 0; i < len; i++)
+ {
+ KXMLDOMElement ele1 = li.item(i);
+ if (ele1.selectSingleNode(L"fromparent"))
+ {
+ xstring str = ele1.selectSingleNode(L"fromparent").text();
+ if (str != L"") continue;
+ }
+ xml x1;
+
+ x1.loadXML(ele1.xml());
+ KXMLDOMElement ele2 = x1.documentElement();
+ ele2.setAttribute(L"update.new", L"1");
+ ele2.setAttribute(L"update.modify", L"1");
+ ele2.setAttribute(L"guid", publiccode::GetGuid());
+ if (ele2.selectSingleNode(L"name"))
+ ele2.selectSingleNode(L"name").text() = treepath;
+ //ele1.selectSingleNode(L"@guid").text() = publiccode::GetGuid();
+ //ele1.selectSingleNode(L"@update.new").text() = L"1";
+ //ele1.selectSingleNode(L"@update.modify").text() = L"1";
+ ele.appendChild(ele2);
+ }
+ dw.Retrieve(ele);
+ dw.SetReadOnly(true);
+ dw.Redraw();
+
+ return 1;
+ }
+
+ int OnCopy()
+ {
+ xaserverarg arg;
+
+ OpenWindow(L"dev:xpage[Data.config.copy.vx]", arg);
+ xstring id = arg.GetArgString(L"id");
+ xstring f = arg.GetArgString(L"flag");
+ if (id == L"") return 1;
+
+ xml x;
+
+ if (xurl::get(L"/sale/data/Role.config/pref/maint/data", arg.GetString(), x) != 1)
+ {
+ trace(L"错误返回=L" + (xstring)x.xml());
+ return -1;
+ }
+
+ if ((xstring)x.xml() == L"")
+ x.loadXML(L"<root><items/><roles/></root>");
+
+ KXMLDOMElement e = x.documentElement();
+
+ if (f == L"0" || f == L"1")
+ {
+ KXMLDOMElement ele1 = e.selectSingleNode(L"items");
+ OnSetCopy(dw_list, ele1, L"item");
+ }
+
+ if (f == L"0" || f == L"2")
+ {
+ KXMLDOMElement ele2 = e.selectSingleNode(L"roles");
+ OnSetCopy(dw_role, ele2, L"role");
+ }
+
+ return 1;
+ }
+
+ int OnCmdDispatch(xstring comdid)
+ {
+ if (comdid == L"Config")
+ openUrl(L"/sale/view/role.config/xpage/data/resource/config");
+ if (comdid == L"RightQuery")
+ openUrl(L"/sale/view/role.config/xpage/data/modulerightquery");
+ else if (comdid == L"New")
+ OnAddRow();
+ else if (comdid == L"Del")
+ OnDelRow();
+ else if (comdid == L"Save")
+ OnSave();
+ else if (comdid == L"Copy")
+ OnCopy();
+ else if (comdid == L"xmProdDivi")
+ openUrl(L"/sale/view/RoleAccount3/xpage/data/proddivi");
+ return 0;
+ }
+
+ int OnXCommand(TEvent* evt, LPARAM param)
+ {
+ return OnCmdDispatch(evt->xcommand.pStrID);
+ }
+
+ int onload()
+ {
+ SetAgent(L"data");
+
+ dw_list = new xdwgrid;
+ dw_list.setNativePointer(GetControl(L"dw_list"));
+ dw_list.openUrl(L"/sale/view/Role.config/template/data/config/resourceOrg");
+ dw_list.SetReadOnly(false);
+
+ dw_role = new xdwgrid;
+ dw_role.setNativePointer(GetControl(L"dw_role"));
+ //dw_role.SetDataObject(GetServerUrl(), L"dev:sheet[leftFrame.tpl/role]");
+ //dw_role.openUrl(m_vface+L"/template/role/config/role");
+ dw_role.openUrl(L"/sale/view/Role.config/template/role/config/role");
+ dw_role.SetReadOnly(false);
+
+ dw_ddlb = new combobox;
+ dw_ddlb.setNativePointer(GetControl(L"dw_ddlb"));
+
+ m_sheet = new xlayersheet;
+ m_sheet.setNativePointer(GetControl(L"m_sheet"));
+
+ AttachEvent(L"WM_XCOMMAND", (FEvent)&DataConfig::OnXCommand);
+ AttachEvent(L"WM_SETFOCUS", (FEvent)&DataConfig::OnSetFocus);
+ AttachEvent(L"dw_ddlb", L"CBN_SELCHANGE", (FEvent)&DataConfig::OnSelectDdlb);
+
+ createTreeRoot();
+
+ return 1;
+ }
+};
\ No newline at end of file
--
Gitblit v1.9.3