#pragma once
|
|
#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) HrPosition : public xframe
|
{
|
public:
|
xtreeview tv_org;
|
xdwgrid dw_list;
|
xstring sOrgID;
|
xstring sOrgName;
|
|
xnode m_agentNode; //Agent Condition
|
xstring m_agentCond; //Agent Node
|
public:
|
HrPosition(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
|
public:
|
static HrPosition* CreateInstance(void* implPtr, void* hWnd)
|
{
|
HrPosition* pWin = new HrPosition(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(xstring ls_orgid)
|
{
|
xstring query = L"[MSSqlHrPosition.xq]";
|
xml x;
|
|
xaserverarg arg;
|
|
arg.AddArg(L"orgID", ls_orgid);
|
//if (xaserver::ExecXQuery(GetServerUrl(),query,arg.GetString(),x)!=1)
|
if (xurl::post(L"OrganizationStruct/list.Position", arg.GetString(), x) != 1)
|
{
|
trace(x.text());
|
return -1;
|
}
|
else
|
{
|
//trace(x.GetXml());
|
//dw_list.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/HrPosition/list");
|
dw_list.Retrieve(x);
|
dw_list.Redraw();
|
}
|
return 1;
|
}
|
|
int OnTreeSelChanged(TEvent* evt, int p)
|
{
|
//int wid = tv_org.GetId();
|
HTREEITEM hitem = tv_org.GetSelectedItem();
|
KXMLDOMElement ele = tv_org.GetItemData(hitem);
|
xstring ls_orgid = ele.selectSingleNode(L"@guid").text();
|
sOrgID = ls_orgid + L"";
|
sOrgName = ele.selectSingleNode(L"OrgName").text();
|
OnRetrieve(ls_orgid);
|
return 1;
|
}
|
|
int OnSave()
|
{
|
xml x;
|
|
dw_list.AcceptText();
|
dw_list.DwUpdateAllToEx(x);
|
|
xstring xdata = x.xml();
|
xaserverarg arg;
|
|
arg.AddArg(L"xdata", xdata);
|
//trace(x.GetXml());
|
//return 1;
|
|
//xstring xAction=L"[MSSqlHrPositionUpdate.xa]";
|
//if(xaserver::ExecXAction(GetServerUrl(),xAction,arg.GetString())!=1)
|
if (xurl::post(L"OrganizationStruct/update.Position", arg.GetString(), x) != 1)
|
{
|
trace(x.documentElement().text());
|
alert(L"±£´æÊ§°Ü1");
|
}
|
else
|
{
|
dw_list.ResetUpdateStatus();
|
alert(L"±£´æ³É¹¦");
|
}
|
return 1;
|
}
|
|
int OnAddRow()
|
{
|
//int wid = tv_org.GetId();
|
HTREEITEM hitem = tv_org.GetSelectedItem();
|
if (!hitem)
|
{
|
alert(L"ÇëÑ¡Ôñ×éÖ¯¼Ü¹¹£¡");
|
return 0;
|
}
|
//openUrl(L"×éÖ¯¼Ü¹¹.vface/xpage/Hr/HrPositionAdd", this);
|
OpenWindow(L"dev:xpage[HrPositionAdd.vx]", (LPARAM)this);
|
return 1;
|
}
|
|
int OnInsertRow()
|
{
|
int row = dw_list.GetRow();
|
dw_list.InsertRow(row);
|
return 1;
|
}
|
|
int OnDeleteRow()
|
{
|
int row = dw_list.GetRow();
|
if (row > 0)
|
{
|
xstring sPositionName = dw_list.GetItemString(row, L"PositionName");
|
int del_flog =MessageBox(0, L"È·¶¨ÒªÉ¾³ýÑ¡ÖеĸÚλ " + sPositionName + L" Âð£¿", L"Ìáʾ", 4);
|
if (del_flog == 7) { return 0; }
|
//ÅжÏHrEmployeeÀïÃæÊÇ·ñ´æÔڸøÚλ
|
//xstring sPositionID = dw_list.GetItemString(row,L"PositionID",0);
|
KXMLDOMElement e = dw_list.GetRowElement(row);
|
xstring sPositionID = e.selectSingleNode(L"@guid").text();
|
xml x;
|
|
xaserverarg args;
|
|
args.AddArg(L"guid", sPositionID);
|
//if(xaserver::ExecXQuery(GetServerUrl(),L"[HrpositionSel.xq]",args.GetString(),x)!=1)
|
if (xurl::post(L"OrganizationStruct/select.Position", args.GetString(), x) != 1)
|
{
|
trace(x.xml());
|
return 0;
|
}
|
auto doc = x;
|
xstring cnt = doc.text();
|
int ll_cnt = cnt.toInt();
|
if (ll_cnt == 0) //ÅжÏHrEmploeeÀïÃæÊÇ·ñ´æÔڸøÚλ
|
{
|
args.ClearArgs();
|
//xaserverarg Args;
|
//Args.setNativePointer(Args.CreateInstance());
|
args.AddArg(L"guid", sPositionID);
|
//if(xaserver::ExecXAction(GetServerUrl(),L"[HrPositionDel.xa]",Args.GetString(),x)!=1)
|
if (xurl::post(L"OrganizationStruct/delete.Position", args.GetString(), x) != 1)
|
{
|
trace(x.documentElement().text());
|
alert(L"ɾ³ýʧ°Ü");
|
}
|
else {
|
dw_list.DeleteRow(row);
|
alert(L"ɾ³ý³É¹¦");
|
}
|
}
|
else
|
{
|
alert(L"ÆäËûµØ·½ÒѾʹÓøøÚ룬²»ÔÊÐíɾ³ý£¡");
|
return 0;
|
}
|
}
|
return 1;
|
}
|
|
int OnChildContent(TEvent* evt, int 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"OrgID") {
|
arg.AddArg(L"ResourceType", L"HrOrg");
|
}
|
else if (col == L"JobID") {
|
arg.AddArg(L"ResourceType", L"HrJob");
|
}
|
if (xaserver::ExecXQuery(GetServerUrl(), query, arg.GetString(), x) == 1)
|
dwhdr.data = x.xml();
|
//trace(x.GetXml());
|
}
|
return 1;
|
}
|
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(xstring comdid)
|
{
|
if (comdid == L"Save") OnSave();
|
else if (comdid == L"AddRow") OnAddRow();
|
else if (comdid == L"InsertRow") OnInsertRow();
|
else if (comdid == L"DeleteRow") OnDeleteRow();
|
return 0;
|
}
|
|
//ÃüÁî´¦Àíʼþ
|
int OnXCommand(TEvent* evt, LPARAM param)
|
{
|
return OnCmdDispatch(evt->xcommand.pStrID);
|
}
|
|
int OnAttachEvent()
|
{
|
//°ó¶¨¹¤¾ßÌõµã»÷ʼþ
|
AttachEvent(L"WM_XCOMMAND", (FEvent)&HrPosition::OnXCommand);
|
//»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
|
AttachEvent(L"WM_SETFOCUS", (FEvent)&HrPosition::OnSetFocus);
|
//»ñµÃÊ÷µÄÑ¡Ôñʼþ
|
AttachEvent(L"tv_org", L"TVN_SELCHANGED", (FEvent)&HrPosition::OnTreeSelChanged);
|
//AttachEvent(L"dw_list",L"DWV_CHILDCONTENT",OnChildContent);
|
//AttachEvent(L"dw_list",L"DWV_ITEMCHANGED",OnItemChanged);
|
return 1;
|
}
|
|
int OnInitial()
|
{
|
SetAgent();
|
OnAttachEvent();
|
return 1;
|
}
|
|
int onload()
|
{
|
tv_org = GetControl(L"tv_org");
|
dw_list = new xdwgrid;
|
dw_list.setNativePointer(GetControl(L"dw_list"));
|
dw_list.openUrl(L"×éÖ¯¼Ü¹¹.vface/template/HrPosition/list");
|
|
OnInitial();
|
|
//int wid = tv_org.GetId();
|
HTREEITEM root = tv_org.GetRootItem();
|
tv_org.ExpandItem( root);
|
//OnRetrieve();
|
|
return 1;
|
}
|
};
|