#include <wobject/xstring.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include <xcontrol/xdwgrid.hpp>
|
#include <wobject/xdouble.hpp>
|
#include <xcontrol/xlayersheet.hpp>
|
|
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
|
#include "viewobject/view.base.hpp"
|
|
using xml = KXMLDOMDocument;
|
class __declspec(dllexport) HrOrgMaint : public xwin
|
{
|
public:
|
|
xdwtable dw_detail;
|
xstring m_operate;
|
xstring m_sguid;
|
xstring m_tvOrgID;
|
xstring m_tvOrgName;
|
xstring m_tvRootOrgID;
|
xstring m_tvRootOrgName;
|
|
xnode m_agentNode; //Agent Condition
|
xstring m_agentCond; //Agent Node
|
public:
|
HrOrgMaint(void* implPtr, HWND hWnd) :xwin(implPtr, hWnd) {}
|
public:
|
static HrOrgMaint* CreateInstance(void* implPtr, void* hWnd)
|
{
|
HrOrgMaint* pWin = new HrOrgMaint(implPtr, (HWND)hWnd);
|
return pWin;
|
}
|
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"[1]/*");
|
if (agent)
|
{
|
xstring s = agent.xml();
|
m_agentNode = SetAgentNode(anode, s);
|
}
|
}
|
return 1;
|
}
|
|
//½¹µã¼¤»î´¦Àíº¯Êý
|
int OnSetFocus(TEvent* evt, LPARAM param)
|
{
|
SetAgent();
|
|
//ÖØÖù¤¾ßÌõ
|
return 1;
|
}
|
|
int OnRetrieve()
|
{
|
xml x;
|
|
xaserverarg arg;
|
|
arg.AddArg(L"guid", m_sguid);
|
if (xurl::get(L"OrganizationStruct/detail.HrOrg", arg.GetString(), x) != 1)
|
{
|
trace(x.text());
|
return -1;
|
}
|
else
|
{
|
trace(x.xml());
|
dw_detail.Retrieve(x);
|
dw_detail.Redraw();
|
}
|
return 1;
|
}
|
|
int OnSave()
|
{
|
HCURSOR hIcon = xutil::SetCursorWait();
|
//dw_detail.AcceptText();
|
xstring val;
|
xml x;
|
|
auto xdoc = x;
|
dw_detail.DwUpdateAllTo(xdoc);
|
val = xdoc.xml();
|
//trace(val);
|
//return 1;
|
xaserverarg args;
|
|
args.AddArg(L"content", val);
|
//trace(val);
|
xml x1;
|
|
if (xurl::post(L"OrganizationStruct/update.HrOrg", args.GetString(), x1) != 1)
|
{
|
xstring error = x1.text();
|
trace(error);
|
}
|
else
|
{
|
MessageBox(GetHWND(), L"±£´æ³É¹¦£¡", L"Ìáʾ", 0);
|
}
|
dw_detail.ResetUpdateStatus();
|
xutil::RestoreCursor(hIcon);
|
return 1;
|
}
|
|
int OnNew()
|
{
|
dw_detail.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/HrOrg/detail");
|
if (m_operate == L"new0")
|
{
|
dw_detail.SetItemString(1, L"ParentOrgID", m_tvOrgID);
|
dw_detail.SetItemDisplayString(1, L"ParentOrgID", m_tvOrgName);
|
}
|
dw_detail.SetItemString(1, L"Status", L"Y");
|
//dw_detail.SetItemDisplayString(1,L"Status",L"ÓÐЧ");
|
return 1;
|
}
|
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(xstring comdid)
|
{
|
if (comdid == L"New") OnNew();
|
if (comdid == L"Save") OnSave();
|
if (comdid == L"xmOk") OnSave();
|
if (comdid == L"xmCancel") CloseWindow();
|
return 0;
|
}
|
|
//ÃüÁî´¦Àíʼþ
|
int OnXCommand(TEvent* evt, LPARAM param)
|
{
|
return OnCmdDispatch(evt->xcommand.pStrID);
|
}
|
|
int OnChildContent(TEvent* evt, LPARAM p)
|
{
|
DWNMHDR& dwhdr = *(DWNMHDR*)evt->notify.pnmh;
|
xstring col = dwhdr.colname;
|
if (col != L"") {
|
xml x;
|
|
xaserverarg arg;
|
|
xstring query;
|
query = L"[IResourceMSSql.xq]";
|
if (col == L"OrgTypeID") {
|
arg.AddArg(L"ResourceType", L"HrOrgType");//×éÖ¯ÀàÐÍ
|
}
|
else if (col == L"OrgAddress000") {
|
arg.AddArg(L"ResourceType", L"HR_Address");//×éÖ¯µØÖ·
|
}
|
else if (col == L"CompanyID") {
|
arg.AddArg(L"ResourceType", L"CompanyInfo");//ËùÊô·¨ÈË
|
}
|
else if (col == L"OrgProLine") {
|
arg.AddArg(L"ResourceType", L"OrgProLine");//²úÆ·Ïß
|
}
|
if (xaserver::ExecXQuery(GetServerUrl(), query, arg.GetString(), x) == 1)
|
dwhdr.data = x.xml();
|
//trace(x.GetXml());
|
}
|
return 1;
|
}
|
int OnClicked(TEvent* evt, LPARAM p)
|
{
|
DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh;
|
|
xaserverarg& arg = *new xaserverarg;
|
|
|
xstring colname = hdr.colname;
|
if (colname == L"ParentOrgID")
|
{
|
openUrl(L"×éÖ¯¼Ü¹¹.vface/xpage/HrOrg/Chart", &arg);
|
//trace(arg.GetString());
|
xstring comdid = arg.GetArgString(L"comdid");
|
if (comdid == L"xmOk")
|
{
|
xstring OrgName = arg.GetArgString(L"OrgName");
|
xstring OrgID = arg.GetArgString(L"OrgId");
|
dw_detail.SetItemDisplayString(1, L"ParentOrgID", OrgName);
|
dw_detail.SetItemString(1, L"ParentOrgID", OrgID);
|
dw_detail.Redraw();
|
}
|
}
|
if (colname == L"LeaderID")
|
{
|
openUrl(L"×éÖ¯¼Ü¹¹.vface/xpage/hremployee/select", &arg);
|
xstring comdid = arg.GetArgString(L"comdid");
|
if (comdid == L"xmOk")
|
{
|
xstring sPersonID = arg.GetArgString(L"sPersonID");
|
//trace(sPersonID);
|
xstring sPersonName = arg.GetArgString(L"sPersonName");
|
dw_detail.SetItemDisplayString(1, colname.c_str(), sPersonName);
|
dw_detail.SetItemString(1, colname.c_str(), sPersonID);
|
dw_detail.Redraw();
|
}
|
}
|
return 1;
|
}
|
|
int OnAttachEvent()
|
{
|
//°ó¶¨¹¤¾ßÌõµã»÷ʼþ
|
AttachEvent(L"WM_XCOMMAND", (FEvent)&HrOrgMaint::OnXCommand);
|
//»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
|
AttachEvent(L"WM_SETFOCUS", (FEvent)&HrOrgMaint::OnSetFocus);
|
//ÏÂÀ¿ò ÌṩÄÚÈÝ
|
AttachEvent(L"dw_detail", L"DWV_CHILDCONTENT", (FEvent)&HrOrgMaint::OnChildContent);
|
AttachEvent(L"dw_detail", L"DWV_ITEMFOCUSCHANGED", (FEvent)&HrOrgMaint::OnClicked);
|
return 1;
|
}
|
|
|
int OnInitial()
|
{
|
SetAgent();
|
OnAttachEvent();
|
return 1;
|
}
|
|
int onload()
|
{
|
SetArg();
|
dw_detail = new xdwtable;
|
dw_detail.setNativePointer(GetControl(L"dw_detail"));
|
dw_detail.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/HrOrg/detail");
|
OnInitial();
|
|
xaserverarg arg;
|
|
arg = GetArg();
|
if (arg)
|
{
|
m_operate = arg.GetArgString(L"operate");
|
m_sguid = arg.GetArgString(L"guid");
|
m_tvOrgID = arg.GetArgString(L"tvOrgID");//×éÖ¯Ê÷µÄID
|
m_tvOrgName = arg.GetArgString(L"tvOrgName");//×éÖ¯Ê÷µÄName
|
m_tvRootOrgID = arg.GetArgString(L"tvRootOrgID");//×éÖ¯Ê÷µÄID
|
m_tvRootOrgName = arg.GetArgString(L"tvRootOrgName");//×éÖ¯Ê÷µÄName
|
//alert(m_tvRootOrgName);
|
}
|
/*if ( m_sguid == L"" || m_sguid == nil)
|
{
|
m_sguid = GetGuid();//´íÎó
|
trace(m_sguid);
|
}*/
|
if (m_sguid != L"") {
|
OnRetrieve();
|
};
|
if (m_operate == L"new0")
|
{
|
//trace(m_tvOrgID);
|
dw_detail.SetItemString(1, L"ParentOrgID", m_tvOrgID);
|
dw_detail.SetItemDisplayString(1, L"ParentOrgID", m_tvOrgName);
|
dw_detail.SetItemString(1, L"CompanyID", m_tvRootOrgID);
|
dw_detail.SetItemDisplayString(1, L"CompanyID", m_tvRootOrgName);
|
dw_detail.SetItemString(1, L"Status", L"Y");
|
//dw_detail.SetItemDisplayString(1,L"Status",L"ÓÐЧ");
|
}
|
return 1;
|
}
|
};
|