Browse Source

线上审批不通过时,线下接收审核人不一致。

Chenshilong 9 years atrás
parent
commit
58cc52ec9d
2 changed files with 34 additions and 20 deletions
  1. 1 0
      Frames/ProjectManagerFme.dfm
  2. 33 20
      Frames/ProjectManagerFme.pas

+ 1 - 0
Frames/ProjectManagerFme.dfm

@@ -230,6 +230,7 @@ object ProjectManagerFrame: TProjectManagerFrame
         Font.Style = []
         ParentFont = False
         TabOrder = 1
+        OnClick = pnlProgressClick
         object lblPeriodTotal: TLabel
           Left = 217
           Top = 17

+ 33 - 20
Frames/ProjectManagerFme.pas

@@ -90,6 +90,7 @@ type
       var HintInfo: THintInfo; const ACoord: TPoint);
     procedure actnExportUpdate(Sender: TObject);
     procedure actnOpenBackupFolderUpdate(Sender: TObject);
+    procedure pnlProgressClick(Sender: TObject);
   private
     FProjectManagerData: TProjectManagerData;
 
@@ -1755,36 +1756,37 @@ end;
 // 为了跟PHP的数组兼容,这里限制数组的第一个元素是A[0](不能是A[1])
 procedure TProjectManagerFrame.OnLineChecker(AAr: TOVArr; var ABegin,
   AEnd: Integer; var AOnLineEndIsOwner: Boolean);
-var i, j, n: Integer;
+var i, j: Integer;
   vCS: TCheckStatus;
 begin
   ABegin := 0;
   AEnd := 0;
-  AOnLineEndIsOwner := AAr[High(AAr), 7] = '1';
+  AOnLineEndIsOwner := AAr[High(AAr), 7] = '1';       // 接口返回的第7列是线上审批标记
 
-  n := -1;
-
-  for i := 0 to High(AAr) do
+  //  数组必须在位置n处截断,后面的部分作废。n的取值情况:
+  //  ①轮到工作中的那个人的前一个人 ②审核不通过的那个人 ③ 审核通过的人是业主
+  if AOnLineEndIsOwner then
+    AEnd := High(AAr) + 1
+  else
   begin
-    vCS := TCheckStatus(StrToInt(AAr[i, 5])-1);
-    if vCS = csChecking then
+    for i := High(AAr) downto 0 do
     begin
-      n := i - 1;  // 非常重要:传入的数组必须从第一个审核人到轮到工作中的那个人的前一个人
-      Break;
+      vCS := TCheckStatus(StrToInt(AAr[i, 5]) - 1);
+      if vCS = csChecking then
+      begin
+        if AAr[i - 1, 7] = '1' then   // 前一个人
+          AEnd := i;
+        Break;
+      end
+      else if vCS = csNotPass then
+      begin
+        if AAr[i, 7] = '1' then
+          AEnd := i + 1;
+        Break;
+      end;
     end;
   end;
 
-  for i := n downto 0 do
-  begin
-    if AAr[i, 7] = '1' then             // 接口返回的第7列是线上审批标记
-    begin
-      AEnd := i + 1;
-      Break;
-    end
-    else
-      Break;
-  end;
-
   if AEnd = 0 then Exit;
 
   i := i - 1;
@@ -1821,4 +1823,15 @@ begin
     (stdProjects.IDTree.Selected.Rec.ValueByName('Type').AsInteger = 1);
 end;
 
+procedure TProjectManagerFrame.pnlProgressClick(Sender: TObject);
+var s: string;
+begin
+  if (GetKeyState(VK_LSHIFT) < 0) and (GetKeyState(VK_LCONTROL) < 0) then
+  begin
+    s := Format('%d, %d, %s', [FOnLineCheckerBegin, FOnLineCheckerEnd, BoolToStr(FOnLineCheckerEndIsOwner)]);
+    Application.MessageBox(Pchar(s), 'Hint');
+  end;
+
+end;
+
 end.