⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 login.pas

📁 某大型医院护士站
💻 PAS
字号:
unit Login;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ExtCtrls, ComCtrls, wwdblook ,DB;

type
  TfrmLogin = class(TForm)
    btnOK: TBitBtn;
    btnCancel: TBitBtn;
    Label3: TLabel;
    Label4: TLabel;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    edUser: TEdit;
    Label2: TLabel;
    edPassWord: TEdit;
    LbSelectedWard: TLabel;
    WardLookuplog: TwwDBLookupCombo;
    procedure btnOKClick(Sender: TObject);
    procedure edUserKeyPress(Sender: TObject; var Key: Char);
    procedure WardLookuplogNotInList(Sender: TObject;
      LookupTable: TDataSet; NewValue: String; var Accept: Boolean);
    procedure FormShow(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
  private
    { Private declarations }
  public
    reload : smallint;
    { Public declarations }
  end;

var
  frmLogin: TfrmLogin;

implementation

uses Datamodule, HisUtilitis;

{$R *.DFM}

//验证帐号密码
procedure TfrmLogin.btnOKClick(Sender: TObject);
var
  tmpWardName : Variant;  //病区名称
begin
  with DM do
  begin
  if not isChecked then
  begin
    try
      Screen.Cursor := crHourGlass;

      ReadRunParams;   //装载运行环境

      HisLocal.Close;
      if not ProjHisadt.Connected then ProjHisadt.Open;    //打开业务数据库
      operator.Close;
      operator.Open;  //打开操作员表

    except
      Screen.Cursor := crDefault;
      hisErrorPrompt('无法打开数据库!');
      abort;
    end;

    Label4.Visible := True;
    Label4.Caption := '正在检验帐号密码...';
    Label4.Refresh;

    if operator.Locate('operatorno;passwd',
            VarArrayOf([edUser.Text,edPassWord.Text]),[]) then
    begin                        //存在此用户
      if pos('A',Operator.FieldByName('trust').AsString) > 0
        then isNurse := True;    //护士操作权限
      if pos('B',Operator.FieldByName('trust').AsString) > 0  then
         begin
         isInCharge := True; //护长操作权限
         isNurse := True;
         end;

      if pos('Y',Operator.FieldByName('trust').AsString) > 0 then
      begin
          isSysAdm  := True;   //系统管理员操作权限
          isChecked := True;
          Ward.Open;
          LbSelectedWard.Enabled := True;
          WardLookuplog.Enabled  := True;
          edUser.Enabled := False;
          edPassWord.Enabled := False;
          WardLookuplog.SetFocus;
          Label4.Caption := '';
          SysUtils.Abort;
      end;
      if (isNurse or isInCharge or isSysAdm) then
      begin                      //合法用户
        label4.Caption := '合法用户';
        label4.Refresh;
        isChecked := True;
        currWardid       := Operator.FieldByName('wardid').AsString;
        Ward.Open;
        tmpWardName      := Ward.Lookup('wardid',currWardid,'name');

        if not isSysAdm then
        begin
          isSysAdm := False;
        end;

        if VarIsEmpty( tmpWardName) then
          DM.currWardName := ''
        else
          DM.currWardName     := tmpWardName;
        currOperatorno   := Operator.FieldByName('operatorno').AsString;
        currOperatorName := Operator.FieldByName('operatornm').AsString;

        ModalResult := mrOK;
        label4.Caption := '正在下载基础数据...';
        label4.Refresh;
        DM.DownLoadData;   //下载基本数据 __7.29日
      end
      else
      begin
        hisErrorPrompt('用户没有足够的权限!');
        ModalResult := mrNone;
      end;
    end
    else  //不存在此用户
    begin
      hisErrorPrompt('非法的用户名或密码!');
      ModalResult := mrNone;
    end;
  end
  else // 如果已经检查过身份
  begin
    if isSysAdm then
    begin
      currWardid       := WardWardId.Value;
      tmpWardName      := WardName.Value;
      if VarIsEmpty( tmpWardName) then
         DM.currWardName := ''
      else
         DM.currWardName     := tmpWardName;
      currOperatorno   := Operator.FieldByName('operatorno').AsString;
      currOperatorName := Operator.FieldByName('operatornm').AsString;
      IsChecked := False;
      ModalResult := mrOK;
    end;
  end;

  with DM.qryDeptSub do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT A.WARDID  , B.NAME AS WARDNAME , ');
    SQL.Add('A.DEPTNUM , C.NAME AS DEPTNAME , 0 AS ISALL ');
    SQL.Add('FROM WARDRDEPT A ,WARD B ,DEPT C ');
    SQL.Add('WHERE A.WARDID = B.WARDID ');
    SQL.Add('AND A.DEPTNUM = C.NUM ');
    SQL.Add('AND A.WARDID = :WARDID ');
    SQL.Add('UNION  ALL ');
    SQL.Add('SELECT ''0'' AS WARDID , ''全病区'' AS WARDNAME , ');
    SQL.Add('''0'' AS DEPTNUM ,''全病区'' AS DEPTNAME ,1 AS ISALL ');
    SQL.Add('FROM TESTTIME ');
    Params[0].AsString := DM.currWardid;
    Open;
  end;
    Screen.Cursor := crDefault;
  end;  //do ...with End

end;


procedure TfrmLogin.edUserKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
     Perform(WM_NEXTDLGCTL,0,0);
end;

procedure TfrmLogin.WardLookuplogNotInList(Sender: TObject;
  LookupTable: TDataSet; NewValue: String; var Accept: Boolean);
begin
  Accept := False;
end;

procedure TfrmLogin.FormShow(Sender: TObject);
begin
  with DM do
  begin
    isSysAdm   := False;
    isChecked  := False;
    isInCharge := False;
    isNurse    := False;
  end;
end;

procedure TfrmLogin.btnCancelClick(Sender: TObject);
begin
  Application.Terminate;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -