Chenshilong 8 år sedan
förälder
incheckning
f03d66a51f
4 ändrade filer med 144 tillägg och 91 borttagningar
  1. 5 6
      Forms/FindUserFrm.pas
  2. 38 4
      Forms/SetGuestFrm.pas
  3. 1 1
      Frames/ProjectManagerFme.dfm
  4. 100 80
      Frames/ProjectManagerFme.pas

+ 5 - 6
Forms/FindUserFrm.pas

@@ -56,7 +56,7 @@ type
 
 implementation
 
-uses PHPWebDm, ConstUnit, CheckerFme, ProjectFme,
+uses PHPWebDm, ConstUnit, CheckerFme, ProjectFme, ProjectManagerFme,
   OrderCheckerFme, SetGuestFrm;
 
 {$R *.dfm}
@@ -105,8 +105,8 @@ begin
 
           1:
           begin
-            bChecker := False;     // AAAAA 判断是否是参与人
-            bGuest := TSetGuestForm(FOwner).HasGuest(StrToInt(UserArr[4])); 
+            bChecker := TProjectManagerFrame(TSetGuestForm(FOwner).Owner).UserIsChecker(StrToInt(UserArr[4]));     // 判断是否是参与人
+            bGuest := TSetGuestForm(FOwner).HasGuest(StrToInt(UserArr[4]));
             btnAdd.Enabled := (not bChecker) and (not bGuest);
 
             if bChecker then
@@ -175,10 +175,9 @@ begin
     end;
     1:
     begin
-      sURL := '';    // AAAAA  添加关注人
+      sURL := PHPWeb.MeasureURL + 'api/client/tender/concernaudit/create';    // AAAAA  添加关注人
       // 标段ID(网络)、谁添加的、添加的谁
-      if PHPWeb.Search(sURL, ['pmid', 'creatoruid', 'auditoruid'],
-        [IntToStr(FWebID), IntToStr(PHPWeb.UserID), UserArr[4]], vArr) = 1 then
+      if PHPWeb.Search(sURL, ['tenderid', 'uid'], [IntToStr(FWebID), UserArr[4]], vArr) = 1 then
       begin
         btnAdd.Enabled := False;
         btnAdd.Caption := '添加成功';

+ 38 - 4
Forms/SetGuestFrm.pas

@@ -33,15 +33,18 @@ type
   private
     { Private declarations }
     FWebID: Integer;
+    FOwner: TObject;
 
     procedure GetGuests;
     function Col(AGridDBA: TZjGridDBA; FieldName: string): Integer;
+    procedure SetOwner(const Value: TObject);
 
   public
     { Public declarations }
     constructor Create(AWebID: Integer);
     procedure AddGuest(AID: Integer; AName, AEmail: string);
     function HasGuest(AID: Integer): Boolean;
+    property Owner: TObject read FOwner write SetOwner;
   end;
 
 var
@@ -107,8 +110,8 @@ var sURL: string;
 begin
   Screen.Cursor := crHourGlass;
   try
-    sURL := 'xxxxxx';   // AAAAAA 查询标段的关注人
-    case PHPWeb.Search(PHPWeb.MeasureURL + sURL, ['WebID'], [InttoStr(FwebID)], UserArr) of
+    sURL := Format('%sapi/client/tender/%s/concernaudit/list', [PHPWeb.MeasureURL, InttoStr(FwebID)]);   // AAAAAA 查询标段的关注人
+    case PHPWeb.Search(sURL, [], [], UserArr) of
       1:
       begin
         if cdsGuest.RecordCount > 0 then
@@ -160,6 +163,11 @@ begin
   end;
 end;
 
+procedure TSetGuestForm.SetOwner(const Value: TObject);
+begin
+  FOwner := Value;
+end;
+
 procedure TSetGuestForm.zgGuestCellGetFont(Sender: TObject; ACoord: TPoint;
   AFont: TFont);
 begin
@@ -169,7 +177,8 @@ end;
 
 procedure TSetGuestForm.zgGuestMouseDown(Sender: TObject;
   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-  var s: string;
+  var s, sURL: string;
+  vArr: array of string;
 begin
   if zgGuest.CurCol = Col(zaGuest, 'Operate') then
   begin
@@ -177,7 +186,32 @@ begin
     if Application.MessageBox(PChar(s), '询问', MB_YESNO + MB_ICONQUESTION) = ID_No then
        Exit;
 
-    // do   
+    Screen.Cursor := crHourGlass;
+    vArr := VarArrayOf(['msg']);
+    try
+      sURL := PHPWeb.MeasureURL + '/api/client/tender/concernaudit/del';   // AAAAAA 取消关注人
+
+      case PHPWeb.Search(sURL, ['tenderid', 'uid'], [InttoStr(FwebID), cdsGuestID.AsString], vArr) of
+        1:
+        begin
+          cdsGuest.Delete;
+        end;
+        -1:
+        begin
+          Application.MessageBox(PChar(PHPWeb.NetError('无法取消关注人')),
+              '警告', MB_OK + MB_ICONWARNING);
+          Exit;
+        end;
+        0:
+        begin
+          Application.MessageBox(PChar(PHPWeb.PageError('无法取消关注人')),
+              '警告', MB_OK + MB_ICONWARNING);
+          Exit;
+        end;
+      end;
+    finally
+      Screen.Cursor := crDefault;
+    end;
   end;
 end;
 

+ 1 - 1
Frames/ProjectManagerFme.dfm

@@ -415,7 +415,7 @@ object ProjectManagerFrame: TProjectManagerFrame
       Height = 20
       Align = alTop
       BorderStyle = bsNone
-      Color = clPurple
+      Color = clWindow
       ParentColor = False
       TabOrder = 1
     end

+ 100 - 80
Frames/ProjectManagerFme.pas

@@ -131,7 +131,8 @@ type
     FPhaseNo: Integer;
 
     FCurPos: Integer;                         // 用来控制审核人的添加位置
-    FCheckerList: TObjectList;
+    FCheckers: TOVArr;
+    FCheckerFrames: TObjectList;
 
     function ReceiveFile(const AFileName: string; AIsReback: Boolean = False): Boolean;
     function ImportFile(const AFileName: string; AFileMD5: string = ''): Boolean;
@@ -171,6 +172,7 @@ type
     function CurRec: TsdDataRecord;
     function CurRecAttachmentPath: string;
     function AttachmentFileCountsWithoutManageFile(ANode: TsdIDTreeNode): Integer;
+    function UserIsChecker(UserID: Integer): Boolean; // 判断该用户是否是参与人
     property ProjectCheckStatus: TCheckStatus read FWebCheckStatusProject;
   end;
 
@@ -201,7 +203,7 @@ end;
 constructor TProjectManagerFrame.Create(AOwner: TComponent);
 begin
   inherited;
-  FCheckerList := TObjectList.Create;
+  FCheckerFrames := TObjectList.Create;
   FProjectManagerData := ProjectManager;
   FProjectManagerData.Open;
   stdProjects.IDTree := FProjectManagerData.ProjectsTree;
@@ -1035,75 +1037,73 @@ procedure TProjectManagerFrame.ShowProjectInfoTopAndCheckers;
 var
   vPSArr: TStrArr;
   vCArr: TOVArr;    // Checkers
-  vChecker: TOrderCheckerFrame;
   sPicPath, sURL: string;
 
-  procedure AddChecker(AType: TCheckerFrameType; AArr: array of string);
-  begin
-    vChecker := TOrderCheckerFrame.Create(self);
-    FCheckerList.Add(vChecker);
-    vChecker.Owner := Self;
-    sbChecker.VertScrollBar.Range := sbChecker.VertScrollBar.Range + vChecker.Height;
-    sbChecker.Height := Min(sbChecker.Height + vChecker.Height, pnlWeb.Height - pnlProject.Height);
-    vChecker.Parent := sbChecker;
-    vChecker.Top := FCurPos;
-    FCurPos := FCurPos + vChecker.Height;
-    vChecker.Align := alTop;
-
-    sPicPath := PHPWeb.UserPath + '1_' + AArr[0] + '.jpg';
-    PHPWeb.DownFile(AArr[4], sPicPath);
-    vChecker.Init(AType, StrToInt(AArr[0]), AArr[1], AArr[3],
-      AArr[2], sPicPath, AArr[6], TCheckStatus(StrToInt(AArr[5])-1), AArr[8], StrToInt(AArr[7]));
-    vChecker.Name := 'ProjectOrderFrame' + AArr[0];
-  end;
-
-  procedure RepairOrder;
-  var k: Integer;
-  begin
-    for k := 0 to sbChecker.ControlCount - 1 do
-      TOrderCheckerFrame(sbChecker.Controls[k]).Order := k + 1;
-  end;
-
-  procedure ShowProjectCheckers;
-  var i, j, n: Integer;
+    procedure ShowProjectCheckers;
+    var i, j, k, n: Integer;
     vOwner: array of string;  // 业主信息
-  begin
-    FCheckerList.Clear;
-    sbChecker.Height := 0;
-    FCurPos := 0;
 
-    n := Length(vCArr[Low(vCArr)]);
-    SetLength(vOwner, n);
-    sbChecker.VertScrollBar.Range := 0;
-    for i := Low(vCArr) to High(vCArr) do
+        procedure AddCheckerFrame(AType: TCheckerFrameType; AArr: array of string);
+        var vChecker: TOrderCheckerFrame;
+        begin
+          vChecker := TOrderCheckerFrame.Create(self);
+          FCheckerFrames.Add(vChecker);
+          vChecker.Owner := Self;
+          sbChecker.VertScrollBar.Range := sbChecker.VertScrollBar.Range + vChecker.Height;
+          sbChecker.Height := Min(sbChecker.Height + vChecker.Height, pnlWeb.Height - pnlProject.Height);
+          vChecker.Parent := sbChecker;
+          vChecker.Top := FCurPos;
+          FCurPos := FCurPos + vChecker.Height;
+          vChecker.Align := alTop;
+
+          sPicPath := PHPWeb.UserPath + '1_' + AArr[0] + '.jpg';
+          PHPWeb.DownFile(AArr[4], sPicPath);
+          vChecker.Init(AType, StrToInt(AArr[0]), AArr[1], AArr[3],
+            AArr[2], sPicPath, AArr[6], TCheckStatus(StrToInt(AArr[5])-1), AArr[8], StrToInt(AArr[7]));
+          vChecker.Name := 'ProjectOrderFrame' + AArr[0];
+        end;
     begin
-      if StrToInt(vCArr[i, 0]) = PHPWeb.UserID then
-        FWebCheckStatusMy := TCheckStatus(StrToInt(vCArr[i, 5])-1);
+      sbChecker.Height := 0;
+      FCurPos := 0;
 
-      if StrToInt(vCArr[i, 0]) = FWebOwnerID then
+      n := Length(vCArr[Low(vCArr)]);
+      SetLength(vOwner, n);
+      sbChecker.VertScrollBar.Range := 0;
+      for i := Low(vCArr) to High(vCArr) do
       begin
-        for j := 0 to n - 1 do
-          vOwner[j] := vCArr[i, j];
+        if StrToInt(vCArr[i, 0]) = PHPWeb.UserID then
+          FWebCheckStatusMy := TCheckStatus(StrToInt(vCArr[i, 5])-1);
 
-        Continue;
+        if StrToInt(vCArr[i, 0]) = FWebOwnerID then
+        begin
+          for j := 0 to n - 1 do
+            vOwner[j] := vCArr[i, j];
+
+          Continue;
+        end;
+
+        AddCheckerFrame(cftChecker, vCArr[i]);
       end;
+      if vOwner[0] <> '' then
+        AddCheckerFrame(cftOwner, vOwner);
 
-      AddChecker(cftChecker, vCArr[i]);
-    end;
-    if vOwner[0] <> '' then
-      AddChecker(cftOwner, vOwner);
-    RepairOrder;
+      for k := 0 to sbChecker.ControlCount - 1 do
+        TOrderCheckerFrame(sbChecker.Controls[k]).Order := k + 1;
 
-    OnLineChecker(vCArr, FOnLineCheckerBegin, FOnLineCheckerEnd, FOnLineCheckerEndIsOwner);
-  end;
+      OnLineChecker(vCArr, FOnLineCheckerBegin, FOnLineCheckerEnd, FOnLineCheckerEndIsOwner);
+    end;
 
 begin
+  FCheckerFrames.Clear;
   GetLocalValues(CurRec);
   if FWebID = 0 then Exit;
   SetLength(vPSArr, 8);
   sURL := Format('%smeasure/status/%d/get', [PHPWeb.MeasureURL, FWebID]);
+  SetLength(FCheckers, 0);
   if PHPWeb.Search(sURL, [''], [''], 3, vPSArr, vCArr) = 1 then
   begin
+    FCheckers := vCArr;
+
     LockWindowUpdate(pnlWeb.Handle);
     try
       FPhaseNo := StrToInt(vPSArr[0]);
@@ -1139,34 +1139,33 @@ begin
 end;
 
 procedure TProjectManagerFrame.ShowProjectInfoTop(AType: Integer);
+    procedure ShowOwner;
+    begin
+      lblBidName.Caption := FWebBidName_Local;
+      lblBidName.Update;
+      lblProjName.Caption := FWebFolder_OnLine;
+      lblProjName.Update;
+      lblWebProjCtgyName.Caption := FWebSubFolder_OnLine;
+      lblWebProjCtgyName.Update;
+      lblOnwerName.Caption := FWebOwnerName;
+      lblOnwerName.Update;
+      lblOnwerCompany.Caption := Format('-%s)', [FWebOwnerCompany]);
+      lblOnwerCompany.Update;
+      lblOnwerCompany.Left := lblOnwerName.Left + lblOnwerName.Width;
+    end;
 
-  procedure ShowOwner;
-  begin
-    lblBidName.Caption := FWebBidName_Local;
-    lblBidName.Update;
-    lblProjName.Caption := FWebFolder_OnLine;
-    lblProjName.Update;
-    lblWebProjCtgyName.Caption := FWebSubFolder_OnLine;
-    lblWebProjCtgyName.Update;
-    lblOnwerName.Caption := FWebOwnerName;
-    lblOnwerName.Update;
-    lblOnwerCompany.Caption := Format('-%s)', [FWebOwnerCompany]);
-    lblOnwerCompany.Update;
-    lblOnwerCompany.Left := lblOnwerName.Left + lblOnwerName.Width;
-  end;
-
-  procedure ShowStatus(ANo: Integer; AState: TCheckStatus);
-  begin
-    lblPeriod.Caption := Format('第%d期', [ANo]);
-    lblPeriod.Update;
-    lblPeriodState.Caption := CheckStatusNames[AState];
-    lblPeriodState.Font.Color := CheckStatusColors[AState];
-    lblPeriodState.Update;
-    lblPeriodState.Left := lblPeriod.Left + lblPeriod.Width + 5;
-    lblPeriodTotal.Caption := Format('(共%d期)', [ANo]);
-    lblPeriodTotal.Update;
-    lblPeriodTotal.Left := lblPeriodState.Left + lblPeriodState.Width + 3;
-  end;
+    procedure ShowStatus(ANo: Integer; AState: TCheckStatus);
+    begin
+      lblPeriod.Caption := Format('第%d期', [ANo]);
+      lblPeriod.Update;
+      lblPeriodState.Caption := CheckStatusNames[AState];
+      lblPeriodState.Font.Color := CheckStatusColors[AState];
+      lblPeriodState.Update;
+      lblPeriodState.Left := lblPeriod.Left + lblPeriod.Width + 5;
+      lblPeriodTotal.Caption := Format('(共%d期)', [ANo]);
+      lblPeriodTotal.Update;
+      lblPeriodTotal.Left := lblPeriodState.Left + lblPeriodState.Width + 3;
+    end;
 begin
   GetLocalValues(CurRec);
   case AType of
@@ -1295,7 +1294,7 @@ end;
 
 destructor TProjectManagerFrame.Destroy;
 begin
-  FCheckerList.Free;
+  FCheckerFrames.Free;
   inherited;
 end;
 
@@ -1900,6 +1899,7 @@ var
   SetGuestForm: TSetGuestForm;
 begin
   SetGuestForm := TSetGuestForm.Create(CurRec.ValueByName('WebID').AsInteger);
+  SetGuestForm.Owner := Self;
   try
     SetGuestForm.ShowModal;
   finally
@@ -1914,4 +1914,24 @@ begin
     (stdProjects.IDTree.Selected.Rec.ValueByName('Type').AsInteger = 1);
 end;
 
+function TProjectManagerFrame.UserIsChecker(UserID: Integer): Boolean;
+var i: Integer;
+begin
+  Result := False;
+  if FWebAuthorID = UserID then
+  begin
+    Result := True;
+    Exit;
+  end;
+
+  for i := Low(FCheckers) to High(FCheckers) do
+  begin
+    if StrToInt(FCheckers[i, 0]) = UserID then
+    begin
+       Result := True;
+       Break;
+    end;
+  end;
+end;
+
 end.