Ver código fonte

审核比较,新增显示至本期功能

MaiXinRong 9 anos atrás
pai
commit
fe69d19c41

+ 15 - 0
DataModules/PhaseCompareDm.pas

@@ -101,6 +101,7 @@ type
 
     procedure ExpandNodeTo(ALevel: Integer);
     procedure ExpandXmjNode;
+    procedure ExpandCurPhase;
 
     property ProjectData: TObject read FProjectData;
     property CompareTree: TsdIDTree read FCompareTree;
@@ -178,6 +179,20 @@ begin
   inherited;
 end;
 
+procedure TPhaseCompareData.ExpandCurPhase;
+var
+  iIndex: Integer;
+  stnNode: TsdIDTreeNode;
+begin
+  for iIndex := 0 to CompareTree.Count - 1 do
+  begin
+    stnNode := CompareTree.Items[iIndex];
+    with TProjectData(FProjectData).PhaseData.StageCompareData do
+      if (stnNode.ParentID <> -1) then
+        stnNode.Expanded := HasPhaseData(stnNode.ID);
+  end;
+end;
+
 procedure TPhaseCompareData.ExpandNodeTo(ALevel: Integer);
 begin
   CompareTree.ExpandLevel := ALevel;

+ 29 - 0
DataModules/StageCompareDm.pas

@@ -60,6 +60,8 @@ type
 
     procedure Open;
     procedure Close;
+
+    function HasPhaseData(AID: Integer): Boolean;
   end;
 
 implementation
@@ -116,6 +118,31 @@ begin
   end;
 end;
 
+function TStageCompareData.HasPhaseData(AID: Integer): Boolean;
+var
+  Rec: TsdDataRecord;
+begin
+  Result := False;
+  Rec := sddStageCompare.FindKey('idxID', AID);
+  if not Assigned(Rec) then Exit;
+
+  Result := (Rec.ValueByName('TotalPrice0').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice1').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice2').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice3').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice4').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice5').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice6').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice7').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice8').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice9').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice10').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice11').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice12').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice13').AsFloat <> 0)
+         or (Rec.ValueByName('TotalPrice14').AsFloat <> 0);
+end;
+
 procedure TStageCompareData.InsertLastesyStageData(AIndex: Integer;
   const ATableName: string);
 var
@@ -129,6 +156,8 @@ procedure TStageCompareData.Open;
 begin
   ReloadAllCompareData;
   sddStageCompare.Open;
+  if not Assigned(sddStageCompare.FindIndex('idxID')) then
+    sddStageCompare.AddIndex('idxID', 'BillsID');
 end;
 
 procedure TStageCompareData.ReloadAllCompareData;

+ 2 - 0
Frames/PhaseCompareFme.dfm

@@ -26,6 +26,8 @@ object PhaseCompareFrame: TPhaseCompareFrame
       DefaultFixedColWidth = 25
       Selection.AlphaBlend = False
       Selection.TransparentColor = False
+      FrozenCol = 0
+      FrozenRow = 0
       OnCellGetColor = zgPhaseCompareCellGetColor
       Align = alClient
     end

+ 11 - 0
Frames/PhaseCompareFme.pas

@@ -30,6 +30,7 @@ type
 
     procedure ExpandNodeTo(ALevel: Integer);
     procedure ExpandXmjNode;
+    procedure ExpandCurPhase;
 
     property CompareStageCount: Integer read FCompareStageCount write SetCompareStageCount;
   end;
@@ -209,4 +210,14 @@ begin
   end;
 end;
 
+procedure TPhaseCompareFrame.ExpandCurPhase;
+begin
+  BeginExpandNode;
+  try
+    FPhaseCompareData.ExpandCurPhase;
+  finally
+    EndExpandNode;
+  end;
+end;
+
 end.

+ 20 - 11
Frames/ProjectFme.pas

@@ -131,6 +131,7 @@ type
 
     procedure ExpandNodeTo(ALevel: Integer);
     procedure ExpandAllXmj;
+    procedure ExpandCurPhase;
 
     procedure SetAssistantViewVisible(AVisible: Boolean);
     procedure SetImageOfsbtnExpend(AExpend: Boolean);
@@ -598,8 +599,8 @@ end;
 
 procedure TProjectFrame.dxpmExpandBillsPopup(Sender: TObject);
 begin
-  dxpmExpandBills.ItemLinks.Items[7].Visible := jpsMain.ActivePageIndex in [0, 1, 4];
-  dxpmExpandBills.ItemLinks.Items[6].Visible := jpsMain.ActivePageIndex in [1];
+  dxpmExpandBills.ItemLinks.Items[7].Visible := jpsMain.ActivePageIndex in [0, 1, 3];
+  dxpmExpandBills.ItemLinks.Items[6].Visible := jpsMain.ActivePageIndex in [1, 3];
   SetDxBtnAction(actnFirstLevel, MainForm.dxbtnFirstLevel);
   SetDxBtnAction(actnSecondLevel, MainForm.dxbtnSecondLevel);
   SetDxBtnAction(actnThirdLevel, MainForm.dxbtnThirdLevel);
@@ -655,7 +656,7 @@ begin
     case jpsMain.ActivePageIndex of
       0: FBillsCompileFrame.ExpandXmjNode;
       1: FBillsMeasureFrame.ExpandXmjNode;
-      4: FPhaseCompareFrame.ExpandXmjNode;
+      3: FPhaseCompareFrame.ExpandXmjNode;
     end;
   finally
     UpdateSysProgress(0, '就绪');
@@ -1011,14 +1012,7 @@ end;
 
 procedure TProjectFrame.actnCurPhaseExecute(Sender: TObject);
 begin
-  Screen.Cursor := crHourGlass;
-  UpdateSysProgress(0, '正在显示至本期');
-  try
-    FBillsMeasureFrame.ExpandCurPhase;
-  finally
-    UpdateSysProgress(0, '就绪');
-    Screen.Cursor := crDefault;
-  end;
+  ExpandCurPhase;
 end;
 
 procedure TProjectFrame.RepairAudits;
@@ -1304,4 +1298,19 @@ begin
   FDealPaymentFrame.RefreshPhase_Stage;
 end;
 
+procedure TProjectFrame.ExpandCurPhase;
+begin
+  Screen.Cursor := crHourGlass;
+  UpdateSysProgress(0, '正在显示至项目节');
+  try
+    case jpsMain.ActivePageIndex of
+      1: FBillsMeasureFrame.ExpandCurPhase;
+      3: FPhaseCompareFrame.ExpandCurPhase;
+    end;
+  finally
+    UpdateSysProgress(0, '就绪');
+    Screen.Cursor := crDefault;
+  end;
+end;
+
 end.