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"); 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(""); 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(""); 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 = ""; 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 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 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"); 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; } ] ] ]