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 "list.vl"
|
unit vbusiness.xpage
|
[
|
HrOrg is extend list;
|
about HrOrg
|
[
|
control:
|
|
method:
|
[
|
xdwgrid__ dw_list;
|
treeview__ tv_org;
|
string sOrgID;
|
string sOrgName;
|
|
string sRootOrgID;
|
string sRootOrgName;
|
|
xnode__ m_agentNode; //Agent Condition
|
string m_agentCond; //Agent Node
|
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 OnRetrieve()
|
{
|
int hIcon = xutil__::SetCursorWait();
|
xml__ x = new xml__;
|
x.setNativePointer(x.CreateInstance());
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("guid", sOrgID);
|
if (url::get("OrganizationStruct/list.HrOrg", arg.GetString(), x) != 1)
|
{
|
trace(x.GetXmlDoc().text);
|
return -1;
|
}
|
else
|
{
|
dw_list.Retrieve(x);
|
dw_list.Redraw();
|
}
|
dw_list.SetReadOnly(true);
|
xutil__::RestoreCursor(hIcon);
|
return 1;
|
}
|
|
//½¹µã¼¤»î´¦Àíº¯Êý
|
int OnSetFocus(ref TEvent evt, int p)
|
{
|
SetAgent();
|
//OnRetrieve();
|
//ÖØÖù¤¾ßÌõ
|
return 1;
|
}
|
|
int OnCreateTree(string sguid, int parentitem)
|
{
|
int wid = tv_org.GetId();
|
xml__ x = new xml__;
|
x.setNativePointer(xml__::CreateInstance());
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("sguid", sguid);
|
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("//Org");
|
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(s - i - 1);
|
sname = xitem.SelectSingleNode("OrgName").text;
|
sguid = xitem.SelectSingleNode("@guid").text;
|
int curItem = tv_org.InsertChildItemEx(wid, parentitem, sname, xitem, 15, 4);
|
OnCreateTree(sguid, curItem);
|
/*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);*/
|
}
|
}
|
return 1;
|
}
|
|
int OnTreeExpanding(ref TNotifyEvent evt, int p)
|
{
|
ref NMTREEVIEW nmtv = evt.pnmh;
|
int sitem = nmtv.itemNew.hItem;
|
|
string id = treeview__::GetItemData(tv_org.GetId(), sitem);
|
int hCursor = xutil__::SetCursorWait();
|
OnCreateTree(id, sitem);
|
xutil__::RestoreCursor(hCursor);
|
return 1;
|
}
|
|
//Ê÷µã»÷ʼþ
|
int OnTreeSelecded(ref TNotifyEvent evt, int p)
|
{
|
ref NMTREEVIEW nmtv = evt.pnmh;
|
int hItem = nmtv.itemNew.hItem;
|
int wid = tv_org.GetId();
|
int hitem = treeview__::GetSelectedItem(wid);
|
msxml::IXMLDOMElement ele = treeview__::GetItemData(wid, hitem);
|
|
int hroot = treeview__::GetParentItem(wid, hitem);
|
int hparent = treeview__::GetParentItem(wid, hroot);
|
if (!hparent)
|
{
|
hparent = hroot;
|
hroot = hitem;
|
}
|
bool found = false;
|
if (hparent) found = true;
|
while (treeview__::GetParentItem(wid, hparent))
|
{
|
hroot = hparent;
|
hparent = treeview__::GetParentItem(wid, hroot);
|
}
|
if (found)
|
{
|
msxml::IXMLDOMElement ele1 = treeview__::GetItemData(wid, hroot);
|
//trace(ele1.xml);
|
//sRootOrgID = ele1.SelectSingleNode("CompanyID").text;
|
//sRootOrgName = ele1.selectSingleNode("CompanyID/@_displaystring").text;
|
}
|
|
string ls_orgid = ele.SelectSingleNode("@guid").text;
|
sOrgID = ls_orgid + "";
|
//trace(sOrgID);
|
sOrgName = ele.selectSingleNode("OrgName").text;
|
OnRetrieve();
|
return 1;
|
}
|
|
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);
|
int wid = tv_org.GetId();
|
if (ret == 2)
|
{
|
treeview__::DeleteItem(wid, xto);
|
return -1;
|
}
|
|
//string fid = treeview__::GetItemData(wid, xfrom);
|
//string tid = treeview__::GetItemData(wid, xto);
|
int xtop = treeview__::GetParentItem(wid, xto);
|
msxml::IXMLDOMElement ef = treeview__::GetItemData(wid, xfrom);
|
msxml::IXMLDOMElement et = treeview__::GetItemData(wid, xtop);
|
string fid = ef.SelectSingleNode("@guid").text;//ef.xml;
|
string tid = et.SelectSingleNode("@guid").text;//et.xml;
|
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(et.xml);
|
//return 1;
|
if (url::post("OrganizationStruct/move.update.HrOrg", arg.GetString(), x) != 1)
|
{
|
trace("error:" + x.GetXml());
|
alert("ÒÆ¶¯×éÖ¯½Úµã³ö´í!");
|
treeview__::DeleteItem(wid, xto);
|
return 0;
|
}
|
treeview__::DeleteItem(wid, xfrom);
|
return 1;
|
}
|
|
//xgridexË«»÷
|
int OnDoubleClicked(ref TNotifyEvent evt, int p)
|
{
|
ref DWNMHDR hdr = evt.pnmh;
|
int row = hdr.row;
|
if (row < 1 || row > dw_list.GetRowCount())
|
return 1;
|
msxml::IXMLDOMElement e = dw_list.GetRowElement(row);
|
string sguid = e.SelectSingleNode("@guid").text;
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("operate", "modify");
|
arg.AddArg("guid", sguid);
|
arg.AddArg("tvOrgID", sOrgID);
|
arg.AddArg("tvOrgName", sOrgName);
|
arg.AddArg("tvRootOrgID", sRootOrgID);
|
arg.AddArg("tvRootOrgName", sRootOrgName);
|
//trace(row.toString());
|
//win__::OpenWindow("dev:xpage[HrOrgMaint.xpage]",arg);
|
openUrl("×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/maint", arg);
|
return 1;
|
}
|
|
int AddRow()
|
{
|
/*int wid = tv_org.GetId();
|
int hitem=treeview__::GetSelectedItem(wid);
|
int root=treeview__::GetRootItem(wid);
|
if (hitem == root)
|
{
|
win32::MessageBox(GetHWND(),"¸ù×éÖ¯£¡","Ìáʾ",0);
|
return -1;
|
}*/
|
//int row = dw_list.GetNextSelectRow(1);
|
//IXMLDOMElement e = dw_list.GetRowElement(row);
|
//string sguid = e.getAttribute("guid");
|
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("operate", "new0");
|
arg.AddArg("guid", "");
|
arg.AddArg("tvOrgID", sOrgID);
|
arg.AddArg("tvOrgName", sOrgName);
|
arg.AddArg("tvRootOrgID", sRootOrgID);
|
arg.AddArg("tvRootOrgName", sRootOrgName);
|
openUrl("×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/maint", arg);
|
return 1;
|
}
|
|
int ModifyRow()
|
{
|
int row = dw_list.GetNextSelectRow(1);
|
if (row < 1)
|
{
|
row = dw_list.GetRow();
|
if (row < 1)
|
{
|
win__::MessageBox(GetHWND(), "ÇëÑ¡ÖÐÒªÐ޸ĵÄ×éÖ¯Êý¾ÝÐУ¡", "Ìáʾ", 0);
|
return -1;
|
}
|
}
|
msxml::IXMLDOMElement e = dw_list.GetRowElement(row);
|
string sguid = e.SelectSingleNode("@guid").text;
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("operate", "modify");
|
arg.AddArg("guid", sguid);
|
arg.AddArg("tvOrgID", sOrgID);
|
arg.AddArg("tvOrgName", sOrgName);
|
arg.AddArg("tvRootOrgID", sRootOrgID);
|
arg.AddArg("tvRootOrgName", sRootOrgName);
|
openUrl("×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/maint", arg);
|
return 1;
|
}
|
|
int OnDeleteItem(string sguid)
|
{
|
int wid = tv_org.GetId();
|
int hitem = treeview__::GetSelectedItem(wid);
|
int ditem = treeview__::GetChildItem(wid, hitem);
|
msxml::IXMLDOMElement e = treeview__::GetItemData(wid, ditem);
|
if (e)
|
{
|
string dguid = e.SelectSingleNode("@guid").text;
|
while (dguid != sguid)
|
{
|
ditem = treeview__::GetNextItem(wid, ditem);
|
e = treeview__::GetItemData(wid, ditem);
|
dguid = e.SelectSingleNode("@guid").text;
|
}
|
treeview__::DeleteItem(wid, ditem);
|
}
|
return 1;
|
}
|
int DeleteRow()
|
{
|
int row = dw_list.GetNextSelectRow(1);
|
if (row < 1)
|
{
|
row = dw_list.GetRow();
|
if (row < 1)
|
{
|
//win__::MessageBox(GetHWND(),"ÇëÑ¡ÖÐҪɾ³ýµÄ×éÖ¯Êý¾ÝÐУ¡","Ìáʾ",0);
|
return -1;
|
}
|
}
|
msxml::IXMLDOMElement e = dw_list.GetRowElement(row);
|
string sguid = e.SelectSingleNode("@guid").text;
|
string sName = e.selectSingleNode("OrgName").text;
|
sName += "";
|
xml__ x = new xml__;
|
x.setNativePointer(x.CreateInstance());
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("guid", sguid);
|
if (url::get("OrganizationStruct/child.OrgNums", arg.GetString(), x) != 1)
|
{
|
trace(x.GetXmlDoc().text);
|
return -1;
|
}
|
else
|
{
|
msxml::IXMLDOMElement ele = x.GetXmlDoc().documentElement;
|
string snums = ele.SelectSingleNode("@num").text;
|
int num = snums.toInt();
|
if (num != 0)
|
{
|
win__::MessageBox(GetHWND(), "×éÖ¯ " + sName + " ´æÔÚϼ¶×éÖ¯µ¥Ôª£¬½ûֹɾ³ý£¡", "Ìáʾ", 0);
|
return 1;
|
}
|
}
|
|
int MB_YESNO = 0x00000004;
|
int IDYES = 6;
|
if (win__::MessageBox(GetHWND(), "È·ÈÏҪɾ³ý×éÖ¯ " + sName + " µÄÐÅÏ¢Âð£¿", "Ìáʾ", MB_YESNO) != IDYES) return 1;
|
arg.AddArg("guid", sguid);
|
//trace(sguid);
|
xml__ x1 = new xml__;
|
x1.setNativePointer(x1.CreateInstance());
|
if (url::post("/sale/data/OrganizationStruct/delete.HrOrg", arg.GetString(), x1) != 1)
|
{
|
string error = x1.GetXmlDoc().text;
|
trace(error);
|
}
|
else
|
{
|
//win32::MessageBox(GetHWND(),"ɾ³ý³É¹¦£¡","Ìáʾ",0);
|
dw_list.DeleteRow(row);
|
OnDeleteItem(sguid);
|
}
|
return 1;
|
}
|
|
int Productlinemaint()
|
{
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("id", "²úÆ·Ïß");
|
openUrl("¹«¹²ÉèÖÃ.vface/worknode/quickcode/config", arg);
|
//openUrl("ÏÂÀ´°¿Ú.vface/xpage/hremployee/select", arg);
|
|
return 1;
|
}
|
int setTree()
|
{
|
string str = "<vbox name='tree' >";
|
str += "<xtree name='tv_org' imagelist='0' drag='true'>";
|
str += "<treeitem src='xquery:[OrgChart.hr.xq]' src1='xquery:[OrgStructureRetrieve.xq]' xcaption='OrgName' xroot='/root' xpath='Org' xchildpath='Org' image='15' loop='yes' xdata='.'/>";
|
str += "</xtree></vbox>";
|
string xfNodeAgentArea = "tree";
|
xnode__ anode = new xnode__;
|
anode.setNativePointer(GetAgentNode(xfNodeAgentArea));
|
SetAgentNodeContent(anode, str);
|
tv_org = new treeview__;
|
tv_org.setNativePointer(this.GetControl("tv_org"));
|
AttachEvent("tv_org", "TVN_SELCHANGED", OnTreeSelecded);
|
int root = treeview__::GetRootItem(tv_org.GetId());
|
if (root > 0)
|
{
|
treeview__::ExpandItemEx(tv_org.GetId(), root);
|
}
|
return 1;
|
}
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(string comdid)
|
{
|
if (comdid == "AddRow") { return AddRow(); }
|
else if (comdid == "ModifyRow") { return ModifyRow(); }
|
else if (comdid == "DeleteRow") { return DeleteRow(); }
|
else if (comdid == "OrgType")
|
{
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("id", "×éÖ¯ÀàÐÍ");
|
openUrl("¹«¹²ÉèÖÃ.vface/worknode/quickcode/config", arg);
|
//openUrl("×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/type");
|
}
|
else if (comdid == "Refresh")
|
{
|
OnRetrieve();
|
setTree();
|
AttachEvent("tv_org", "TVN_ENDDRAG", OnTreeMoveNode);
|
}
|
else if (comdid == "Productlinemaint")
|
{
|
Productlinemaint();
|
}
|
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", OnTreeSelecded);
|
AttachEvent("tv_org", "TVN_ITEMEXPANDING", OnTreeExpanding);
|
AttachEvent("tv_org", "TVN_ENDDRAG", OnTreeMoveNode);
|
//Ë«»÷
|
AttachEvent("dw_list", "DWV_DOUBLECLICKED", OnDoubleClicked);
|
}
|
|
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/HrOrg/list");
|
dw_list.SetSelectionMode(1);
|
dw_list.SetReadOnly(true);
|
dw_list.SetColumnState("OrgPlat", false);
|
dw_list.SetColumnState("OrgComLeader", false);
|
dw_list.SetColumnState("OrgSupLeader", false);
|
dw_list.SetColumnState("OrgProLine", false);
|
|
|
OnInitial();
|
|
//OnCreateTree("00000000-0000-0000-0000-000000000000", 0);
|
int root = treeview__::GetRootItem(tv_org.GetId());
|
if (root > 0)
|
{
|
treeview__::ExpandItemEx(tv_org.GetId(), root);
|
msxml::IXMLDOMElement ele = treeview__::GetItemData(tv_org.GetId(), root);
|
if (ele)
|
{
|
string ls_orgid = ele.SelectSingleNode("@guid").text;
|
sOrgID = ls_orgid + "";
|
sOrgName = ele.selectSingleNode("OrgName").text;
|
OnRetrieve();
|
}
|
}
|
|
return 1;
|
}
|
]
|
|
]
|
]
|