D10myBiaoqi/A01基础公司管理/U_EmployeeList.pas
2024-07-04 16:01:24 +08:00

688 lines
18 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit U_EmployeeList;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData,
cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB,
cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxClasses, cxControls,
cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
cxGrid, DBClient, cxCheckBox, cxCalendar, cxSplitter, RM_Dataset, RM_System,
RM_Common, RM_Class, RM_GridReport, RM_e_Xls, Menus, cxButtonEdit,
cxDropDownEdit, cxPC, cxTL, cxMaskEdit, cxInplaceContainer, cxDBTL, cxTLData,
cxLookAndFeels, cxLookAndFeelPainters, cxTLdxBarBuiltInMenu, dxBarBuiltInMenu,
cxNavigator, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges;
type
TfrmEmployeeList = class(TfrmBaseList)
ToolBar1: TToolBar;
TBRafresh: TToolButton;
TBFind: TToolButton;
TBAdd: TToolButton;
TBEdit: TToolButton;
TBDel: TToolButton;
TBClose: TToolButton;
cxGridPopupMenu1: TcxGridPopupMenu;
ADOQueryCmd: TADOQuery;
ADOQueryMain: TADOQuery;
ADOQueryTemp: TADOQuery;
DataSource1: TDataSource;
TBExport: TToolButton;
Order_Main: TClientDataSet;
TBView: TToolButton;
Panel1: TPanel;
PopupMenu1: TPopupMenu;
N2: TMenuItem;
N1: TMenuItem;
Label1: TLabel;
YGName: TEdit;
Label2: TLabel;
YGSex: TComboBox;
Label5: TLabel;
GangWei: TEdit;
cxDBTreeList1: TcxDBTreeList;
cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn;
DataSource2: TDataSource;
CDS_Tree: TClientDataSet;
ADOQueryTree: TADOQuery;
cxSplitter1: TcxSplitter;
cxTabControl1: TcxTabControl;
TLZ: TToolButton;
ADOQuery1: TADOQuery;
TCXLZ: TToolButton;
cxStyleRepository1: TcxStyleRepository;
cxStyle1: TcxStyle;
cxGrid1: TcxGrid;
Tv1: TcxGridDBTableView;
v1RuZhiDate: TcxGridDBColumn;
v1YGName: TcxGridDBColumn;
v1Column1: TcxGridDBColumn;
v1Column2: TcxGridDBColumn;
v1Column8: TcxGridDBColumn;
v1Column6: TcxGridDBColumn;
v1Column29: TcxGridDBColumn;
v1SJLiZhiDate: TcxGridDBColumn;
cxGrid1Level1: TcxGridLevel;
Label4: TLabel;
Dept: TEdit;
v1SFZNo: TcxGridDBColumn;
Label3: TLabel;
SYRName: TEdit;
Panel2: TPanel;
Label6: TLabel;
SJLiZhiDate: TDateTimePicker;
ToolButton1: TToolButton;
v1YGNo: TcxGridDBColumn;
Label7: TLabel;
YGNo: TEdit;
ToolButton2: TToolButton;
v1Column4: TcxGridDBColumn;
Tv1Column1: TcxGridDBColumn;
ADOQuery2: TADOQuery;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure TBCloseClick(Sender: TObject);
procedure TBFindClick(Sender: TObject);
procedure TBEditClick(Sender: TObject);
procedure TBDelClick(Sender: TObject);
procedure TBExportClick(Sender: TObject);
procedure TBRafreshClick(Sender: TObject);
procedure TBAddClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure TBViewClick(Sender: TObject);
procedure CustomerNoNameChange(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure cxTabControl1Change(Sender: TObject);
procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
procedure YGNameChange(Sender: TObject);
procedure cxDBTreeList1DblClick(Sender: TObject);
procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
procedure TLZClick(Sender: TObject);
procedure TCXLZClick(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
private
canshu1: string;
DQdate: TDateTime;
procedure InitGrid();
procedure InitForm();
function DelData(): Boolean;
procedure InitTree();
procedure GLAge();
{ Private declarations }
public
FFInt, FCloth: Integer;
{ Public declarations }
end;
var
frmEmployeeList: TfrmEmployeeList;
implementation
uses
U_DataLink, U_RTFun, U_ZDYHelp, U_EmployeeInPut, U_DeptTypeHelp
// U_FjList_RZ,
, U_Emp_Input, U_LabelPrint, U_EmpFileUp;
{$R *.dfm}
procedure TfrmEmployeeList.FormDestroy(Sender: TObject);
begin
inherited;
frmEmployeeList := nil;
end;
procedure TfrmEmployeeList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
inherited;
Action := caFree;
end;
procedure TfrmEmployeeList.FormCreate(Sender: TObject);
begin
inherited;
canshu1 := Trim(DParameters1);
SJLiZhiDate.Date := SGetServerDate(ADOQueryTemp);
cxgrid1.Align := alClient;
end;
procedure TfrmEmployeeList.TBCloseClick(Sender: TObject);
begin
Close;
end;
procedure TfrmEmployeeList.InitGrid();
begin
try
ADOQueryMain.DisableControls;
with ADOQueryMain do
begin
Filtered := False;
Close;
sql.Clear;
sql.Add(' exec P_EE_Get_All :DPID,:LiZhiFlag');
Parameters.ParamByName('DPID').Value := Trim(CDS_Tree.fieldbyname('DPID').AsString);
Parameters.ParamByName('LiZhiFlag').Value := cxTabControl1.TabIndex;
Open;
end;
SCreateCDS(ADOQueryMain, Order_Main);
SInitCDSData(ADOQueryMain, Order_Main);
finally
ADOQueryMain.EnableControls;
end;
end;
procedure TfrmEmployeeList.GLAge();
var
FXTGLNF, FYGGLNF, FGLYF: Double;
begin
FXTGLNF := strtofloat(uppercase(formatdateTime('yyyy', SGetServerDate(ADOQueryTemp))));
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('select RuZhiDate,YGYearGL from SY_Employee where YGType=''<27><>ʽ'' ');
open;
end;
with ADOQueryCmd do
begin
first;
while not eof do
begin
edit;
if ADOQueryCmd.fieldbyname('RuZhiDate').asstring = '' then
begin
fieldbyname('YGYearGL').AsFloat := 0;
end
else
begin
FYGGLNF := strtofloat(uppercase(formatdateTime('yyyy', ADOQueryCmd.fieldbyname('RuZhiDate').AsDateTime)));
FGLYF := strtofloat(uppercase(formatdateTime('MM', ADOQueryCmd.fieldbyname('RuZhiDate').AsDateTime)));
if (FGLYF >= 1) and (FGLYF <= 3) then
fieldbyname('YGYearGL').AsFloat := FXTGLNF - FYGGLNF + 1;
if (FGLYF > 3) and (FGLYF <= 9) then
fieldbyname('YGYearGL').AsFloat := FXTGLNF - FYGGLNF + 0.5;
if (FGLYF > 9) and (FGLYF <= 12) then
fieldbyname('YGYearGL').AsFloat := FXTGLNF - FYGGLNF;
end;
next;
end;
end;
end;
procedure TfrmEmployeeList.InitTree();
var
i: Integer;
begin
try
ADOQueryTree.DisableControls;
with ADOQueryTree do
begin
Close;
SQL.Clear;
SQL.Add('select * from SY_Dept order by DPlevel,DPOrder,DPName');
Open;
end;
SCreateCDS(ADOQueryTree, CDS_Tree);
SInitCDSData(ADOQueryTree, CDS_Tree);
cxDBTreeList1.Items[0].Expand(True);
finally
ADOQueryTree.EnableControls;
end;
end;
procedure TfrmEmployeeList.InitForm();
begin
ReadCxGrid(<><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>2', Tv1, 'OA<4F><41><EFBFBD><EFBFBD>');
InitTree();
// GLAge();
InitGrid();
end;
procedure TfrmEmployeeList.TBFindClick(Sender: TObject);
begin
if ADOQueryMain.Active = False then
Exit;
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, Order_Main);
SInitCDSData(ADOQueryMain, Order_Main);
end;
procedure TfrmEmployeeList.TBEditClick(Sender: TObject);
begin
if Order_Main.IsEmpty then
Exit;
try
frmEmp_InPut := TfrmEmp_InPut.Create(Application);
with frmEmp_InPut do
begin
PState := 1;
FMainId := Trim(Self.Order_Main.fieldbyname('EEID').AsString);
FDPID := Trim(CDS_Tree.fieldbyname('DPID').AsString);
FDPName := trim(CDS_Tree.fieldbyname('DPName').AsString);
// frmEmp_InPut.canshu1 := Trim(Self.canshu1);
if ShowModal = 1 then
begin
initgrid();
end;
end;
finally
frmEmp_InPut.Free;
end;
end;
procedure TfrmEmployeeList.TBDelClick(Sender: TObject);
begin
if Order_Main.IsEmpty then
Exit;
//if cxTabControl1.TabIndex<>0 then Exit;
if Application.MessageBox(<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 32 + 4) <> IDYES then
Exit;
if DelData() then
begin
Order_Main.Delete;
end;
end;
function TfrmEmployeeList.DelData(): Boolean;
begin
try
Result := false;
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add('Delete SY_Employee where EEID=''' + Trim(Order_Main.fieldbyname('EEID').AsString) + '''');
ExecSQL;
end;
with ADOQueryCmd do
begin
Close;
sql.Clear;
sql.Add(' Delete TP_File where WBId=''' + Trim(Order_Main.fieldbyname('EEID').AsString) + '''');
sql.Add(' and TFType=''YG'' ');
ExecSQL;
end;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('exec P_EE_in_Account @DataID=''' + Trim(Order_Main.fieldbyname('EEID').AsString) + '''');
Open;
end;
if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
raise Exception.Create(PChar(ADOQueryCmd.fieldbyname('ShowMsg').AsString));
ADOQueryCmd.Connection.CommitTrans;
Result := True;
except
ADOQueryCmd.Connection.RollbackTrans;
Result := False;
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
end;
procedure TfrmEmployeeList.TBExportClick(Sender: TObject);
begin
if ADOQueryMain.IsEmpty then
Exit;
TcxGridToExcel(<><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>', cxGrid1);
end;
procedure TfrmEmployeeList.TBRafreshClick(Sender: TObject);
begin
InitTree();
InitGrid();
end;
procedure TfrmEmployeeList.TBAddClick(Sender: TObject);
var
maxno: string;
begin
try
frmEmp_InPut := TfrmEmp_InPut.Create(Application);
with frmEmp_InPut do
begin
PState := 0;
FMainId := '';
FDPID := Trim(CDS_Tree.fieldbyname('DPID').AsString);
FDPName := trim(CDS_Tree.fieldbyname('DPName').AsString);
if ShowModal = 1 then
begin
initgrid();
end;
end;
finally
frmEmp_InPut.Free;
end;
end;
procedure TfrmEmployeeList.FormShow(Sender: TObject);
begin
inherited;
v1SJLiZhiDate.Visible := false;
if cxTabControl1.TabIndex <> 0 then
v1SJLiZhiDate.Visible := true;
InitForm();
end;
procedure TfrmEmployeeList.CheckBox1Click(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmEmployeeList.CheckBox2Click(Sender: TObject);
begin
TBRafresh.Click;
end;
procedure TfrmEmployeeList.TBViewClick(Sender: TObject);
begin
if Order_Main.IsEmpty then
Exit;
try
frmEmp_InPut := TfrmEmp_InPut.Create(Application);
with frmEmp_InPut do
begin
PState := 1;
FMainId := Trim(Self.Order_Main.fieldbyname('EEID').AsString);
FDPID := Trim(CDS_Tree.fieldbyname('DPID').AsString);
// TBSave.Visible := False;
// ToolButton1.Visible := False;
ToolButton3.Visible := False;
if ShowModal = 1 then
begin
end;
end;
finally
frmEmp_InPut.Free;
end;
end;
procedure TfrmEmployeeList.CustomerNoNameChange(Sender: TObject);
begin
if ADOQueryMain.Active = False then
Exit;
SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
SCreateCDS(ADOQueryMain, Order_Main);
SInitCDSData(ADOQueryMain, Order_Main);
end;
procedure TfrmEmployeeList.N2Click(Sender: TObject);
begin
SelOKNo(Order_Main, True);
end;
procedure TfrmEmployeeList.N1Click(Sender: TObject);
begin
SelOKNo(Order_Main, False);
end;
procedure TfrmEmployeeList.cxTabControl1Change(Sender: TObject);
begin
v1SJLiZhiDate.Visible := false;
if cxTabControl1.TabIndex <> 0 then
v1SJLiZhiDate.Visible := true;
InitGrid();
end;
procedure TfrmEmployeeList.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
TBView.Click;
end;
procedure TfrmEmployeeList.YGNameChange(Sender: TObject);
begin
TBFind.Click;
end;
procedure TfrmEmployeeList.cxDBTreeList1DblClick(Sender: TObject);
begin
InitGrid();
end;
procedure TfrmEmployeeList.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean);
begin
if Order_Main.IsEmpty then
Exit;
CDS_Tree.Locate('DPID', Trim(Order_Main.fieldbyname('DPID').AsString), []);
end;
procedure TfrmEmployeeList.TLZClick(Sender: TObject);
begin
if order_Main.IsEmpty then
exit;
if CxTabConTrol1.TabIndex <> 0 then
exit;
if application.MessageBox(<><C8B7>Ҫִ<D2AA>д˲<D0B4><CBB2><EFBFBD>', '<27><>ʾ', 1) = 2 then
exit;
try
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('update SY_Employee set EEType=''<27><>ְ'',DepartureDate=' + Quotedstr(trim(FormatDateTime('yyyy-MM-dd', SJLiZhiDate.Date))));
sql.Add(' where EEID=''' + trim(Order_Main.fieldbyname('EEID').AsString) + '''');
execsql;
end;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('exec P_EE_in_Account @DataID=''' + Trim(Order_Main.fieldbyname('EEID').AsString) + '''');
Open;
end;
if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
raise Exception.Create(PChar(ADOQueryCmd.fieldbyname('ShowMsg').AsString));
ADOQueryCmd.Connection.CommitTrans;
except
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
initGrid();
end;
procedure TfrmEmployeeList.TCXLZClick(Sender: TObject);
begin
if order_Main.IsEmpty then
exit;
if cxTabControl1.TabIndex <> 1 then
exit;
if application.MessageBox(<><C8B7>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD><D6B0>', '<27><>ʾ', 1) = 2 then
exit;
try
ADOQueryCmd.Connection.BeginTrans;
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('update SY_Employee set EEType=''<27><>ʽ'',DepartureDate=NULL');
sql.Add(' where EEID=''' + trim(Order_Main.fieldbyname('EEID').AsString) + '''');
execsql;
end;
with ADOQueryCmd do
begin
Close;
SQL.Clear;
sql.Add('exec P_EE_in_Account @DataID=''' + Trim(Order_Main.fieldbyname('EEID').AsString) + '''');
Open;
end;
if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then
raise Exception.Create(PChar(ADOQueryCmd.fieldbyname('ShowMsg').AsString));
ADOQueryCmd.Connection.CommitTrans;
except
ADOQueryCmd.Connection.RollbackTrans;
application.MessageBox(PChar(Exception(ExceptObject).Message), '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
initGrid();
end;
procedure TfrmEmployeeList.ToolButton1Click(Sender: TObject);
begin
// if Order_Main.IsEmpty then
// Exit;
// try
// frmFjList_RZ := TfrmFjList_RZ.Create(Application);
// with frmFjList_RZ do
// begin
// if Trim(DParameters1) <> '<27><>Ȩ<EFBFBD><C8A8>' then
// cxButton1.Visible := false;
// fkeyNO := Trim(Self.Order_Main.fieldbyname('EEID').AsString);
// fType := 'Ա<><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
// if ShowModal = 1 then
// begin
//
// end;
// end;
// finally
// frmFjList_RZ.Free;
// end;
try
frmEmpFileUp := TfrmEmpFileUp.Create(Application);
with frmEmpFileUp do
begin
Code.Text := Trim(Self.Order_Main.fieldbyname('EECode').AsString);
FBCIID := Trim(Self.Order_Main.fieldbyname('EEID').AsString);
if ShowModal = 1 then
begin
Self.InitGrid();
// Self.CDS_1.Locate('BCIID', BCIID, []);
end;
end;
finally
frmEmpFileUp.Free;
end;
end;
procedure TfrmEmployeeList.ToolButton2Click(Sender: TObject);
var
FDPID, FName: string;
begin
if Order_Main.IsEmpty then
exit;
if Order_Main.Locate('ssel', true, []) = false then
begin
Application.MessageBox(<><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ', 0);
Exit;
end;
FDPID := '';
FName := '';
frmDeptTypeHelp := TfrmDeptTypeHelp.create(self);
with frmDeptTypeHelp do
begin
if showmodal = 1 then
begin
FDPID := Trim(ADOQueryHelp.fieldbyname('DPID').AsString);
FName := Trim(ADOQueryHelp.fieldbyname('DPName').AsString);
end;
free;
end;
if trim(FDPID) = '' then
exit;
try
with Order_Main do
begin
DisableControls;
First;
while not eof do
begin
if fieldbyname('ssel').AsBoolean then
begin
with ADOQueryCmd do
begin
close;
sql.Clear;
sql.Add('update SY_Employee SET Dept=''' + trim(FName) + ''' ');
sql.Add(',DPID=''' + trim(FDPID) + ''' ');
sql.Add('where EEID=' + quotedstr(trim(Order_Main.fieldbyname('EEID').AsString)));
execsql;
end;
with ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from SY_Employee where EEID=' + quotedstr(trim(Order_Main.fieldbyname('EEID').AsString)));
open;
// ShowMessage(SQL.text);
end;
with ADOQuery2 do
begin
close;
sql.Clear;
sql.Add('update SY_User SET Udept=''' + trim(FName) + ''' ');
sql.Add('where UserID=' + quotedstr(trim(ADOQuery1.fieldbyname('EECode').AsString)));
execsql;
end;
end;
next;
end;
First;
EnableControls;
end;
application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ');
initgrid();
except
Order_Main.EnableControls;
application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ<EFBFBD><CABE>Ϣ', 0);
end;
end;
procedure TfrmEmployeeList.ToolButton3Click(Sender: TObject);
begin
WriteCxGrid(<><D4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>2', Tv1, 'OA<4F><41><EFBFBD><EFBFBD>');
end;
procedure TfrmEmployeeList.ToolButton4Click(Sender: TObject);
var
WSql: string;
begin
if Order_Main.IsEmpty then
Exit;
try
frmLabelPrint := TfrmLabelPrint.Create(Application);
with frmLabelPrint do
begin
FLMType := 'EmployeePrint';
FFiltration1 := QuotedStr(Trim(Self.Order_Main.fieldbyname('EEId').AsString));
if ShowModal = 1 then
begin
// Self.InitGrid();
end;
end;
finally
frmLabelPrint.Free;
end;
end;
end.