use "win.vl"
|
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"
|
use "treeview.vm"
|
//unit vclient.vobject tpp
|
unit vbusiness.xpage
|
[
|
HrEmployee is extend list;
|
about HrEmployee
|
[
|
field:
|
[
|
treeview__ tv_org;
|
xdwgrid__ dw_emp;
|
|
string is_orgid
|
string is_orgname;
|
string is_inflag;
|
xdwtable__ dw_empmaint;
|
xnode__ m_agentNode; //Agent Condition
|
string m_agentCond; //Agent Node
|
]
|
|
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);
|
}
|
}
|
//½¹µã¼¤»î´¦Àíº¯Êý
|
int OnSetFocus(ref TEvent evt, int p)
|
{
|
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("OrganizationStruct/list.Employee", arg.GetString(), x) == 1)
|
{
|
dw_emp.Retrieve(x);
|
dw_emp.Redraw();
|
}
|
//trace(x.GetXml());
|
return 1;
|
}
|
|
int OnSave()
|
{
|
int hIcon = xutil__::SetCursorWait();
|
xml__ x = new xml__;
|
x.setNativePointer(x.CreateInstance());
|
dw_emp.AcceptText();
|
dw_emp.DwUpdateAllToEx(x.GetXmlDoc());
|
|
string val = x.GetXml();
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("content", val);
|
//trace(x.GetXml());
|
//return 1;
|
if (url::post("OrganizationStruct/update.Employee", arg.GetString(), x) != 1)
|
{
|
trace(x.GetXmlDoc().documentElement.text);
|
alert("±£´æÊ§°Ü");
|
}
|
else {
|
dw_emp.ResetUpdateStatus();
|
alert("±£´æ³É¹¦");
|
}
|
trace(x.GetXml());
|
xutil__::RestoreCursor(hIcon);
|
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 OnAddRow()
|
{
|
int wid = tv_org.GetId();
|
int hitem = treeview__::GetSelectedItem(wid);
|
if (!hitem)
|
{
|
alert("ÇëÑ¡Ôñ¸Úλ£¡");
|
return 0;
|
}
|
else
|
{
|
msxml::IXMLDOMElement ele = treeview__::GetItemData(wid, hitem);
|
string stype = ele.SelectSingleNode("typ").text;
|
if (stype != "Pos")
|
{
|
alert("ÇëÑ¡Ôñ¸Úλ£¡");
|
return 0;
|
}
|
}
|
|
OpenWindow("dev:xpage[HrEmployeeAdd.vx]", this);
|
//openUrl("×éÖ¯¼Ü¹¹.vface/xpage/Hr/HrEmployeeAdd", this);
|
return 1;
|
}
|
|
int OnModifyRow()
|
{
|
int row = dw_emp.GetNextSelectRow(1);
|
if (row < 1)
|
{
|
row = dw_emp.GetRow();
|
if (row < 1)
|
{
|
win__::MessageBox(GetHWND(), "ÇëÑ¡ÖÐÒªÐ޸ĵÄÈÎÖ°ÐÅÏ¢ÐУ¡", "Ìáʾ", 0);
|
return -1;
|
}
|
}
|
int wid = dw_emp.GetId();
|
msxml::IXMLDOMElement e = dw_emp.GetRowElement(row);
|
string sPersonID = e.selectSingleNode("PersonID").text;
|
//trace(e.xml);
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("operate", "modify");
|
arg.AddArg("guid", sPersonID);
|
//xwin::OpenWindow("dev:xpage[HrPersonMaint.xpage]",arg);
|
openUrl("×éÖ¯¼Ü¹¹.vface/xpage/Hr/HrPersonMaint", arg);
|
return 1;
|
}
|
|
int OnDeleteRow()
|
{
|
int ll_row = dw_emp.GetNextSelectRow(1);
|
if (ll_row < 1)
|
{
|
ll_row = dw_emp.GetRow();
|
if (ll_row < 1)
|
{
|
win__::MessageBox(GetHWND(), "ÇëÑ¡ÖÐҪɾ³ýµÄÈÎÖ°ÐÅÏ¢ÐУ¡", "Ìáʾ", 0);
|
return -1;
|
}
|
}
|
string sName = dw_emp.GetItemDisplayString(ll_row, "PersonID", 0);
|
if (win__::MessageBox(GetHWND(), "È·¶¨É¾³ý" + sName + "ÈÎÖ°ÐÅÏ¢Âð£¿", "Ìáʾ", 1) != 1)
|
return 0;
|
|
msxml::IXMLDOMElement ele = dw_emp.GetRowElement(ll_row);
|
string empid = ele.selectSingleNode("@guid").text;
|
|
xml__ x = new xml__;
|
x.setNativePointer(x.CreateInstance());
|
xaserverarg__ args = new xaserverarg__;
|
args.setNativePointer(args.CreateInstance());
|
args.AddArg("guid", empid);
|
//if(xaserver__::ExecXAction(GetServerUrl(),"[MSSqlHrEmployeeDel.xq]",args.GetString(),x) !=1)
|
if (url::post("OrganizationStruct/delete.Employee", args.GetString(), x) != 1)
|
{
|
string error = x.GetXmlDoc().text;
|
trace(error);
|
}
|
else
|
{
|
dw_emp.DeleteRow(ll_row);
|
}
|
|
return 1;
|
}
|
|
int SetText()
|
{
|
win__::SetWindowText(GetHWND(), "ËùÊô×éÖ¯:" + is_orgname + " ²Ù×÷״̬£º" + is_inflag);
|
return 1;
|
}
|
|
//xgridexË«»÷
|
int OnDoubleClicked(ref TNotifyEvent evt, int p)
|
{
|
ref DWNMHDR hdr = evt.pnmh;
|
int row = hdr.row;
|
if (row < 1 || row > dw_emp.GetRowCount())
|
return 1;
|
msxml::IXMLDOMElement e = dw_emp.GetRowElement(row);
|
string sPersonID = e.selectSingleNode("PersonID").text;
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("operate", "modify");
|
arg.AddArg("guid", sPersonID);
|
//xwin::OpenWindow("dev:xpage[HrPersonMaint.xpage]",arg);
|
openUrl("×éÖ¯¼Ü¹¹.vface/xpage/Hr/HrPersonMaint", arg);
|
return 1;
|
}
|
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(string comdid)
|
{
|
if (comdid == "Save") return OnSave();
|
else if (comdid == "AddRow") return OnAddRow();
|
else if (comdid == "ModifyRow") return OnModifyRow();
|
else if (comdid == "DeleteRow") return OnDeleteRow();
|
else if (comdid == "Refresh") return OnRetrieve(is_orgid);
|
/*else if(comdid =="adjustorg") return OnAdjustOrg();*/
|
|
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);
|
AttachEvent("dw_emp", "DWV_DOUBLECLICKED", OnDoubleClicked);
|
}
|
|
int OnInitial()
|
{
|
m_agentNode = new xnode__;
|
SetAgent();
|
OnAttachEvent();
|
|
return 1;
|
}
|
|
int onload()
|
{
|
tv_org = new treeview__;
|
tv_org.setNativePointer(this.GetControl("tv_org"));
|
dw_emp = new xdwgrid__;
|
dw_emp.setNativePointer(this.GetControl("dw_emp"));
|
dw_emp.openUrl("×éÖ¯¼Ü¹¹.vface/template/HrEmployee/list");
|
//dw_emp.SetReadOnly(true);
|
//dw_emp.SetSelectionMode(1);
|
|
OnInitial();
|
OnCreateTree("00000000-0000-0000-0000-000000000000", 0);
|
int wid = tv_org.GetId();
|
int root = treeview__::GetRootItem(wid);
|
treeview__::ExpandItem(wid, root);
|
return 1;
|
}
|
]
|
|
]
|
]
|