浏览代码

Merge branch 'master' of http://192.168.1.41:3000/maixinrong/measure

TonyKang 6 年之前
父节点
当前提交
363dfda036
共有 100 个文件被更改,包括 6117 次插入822 次删除
  1. 32 0
      DataModules/AttachmentInfoDm.dfm
  2. 97 0
      DataModules/AttachmentInfoDm.pas
  3. 57 3
      DataModules/BGLDm.pas
  4. 3 0
      DataModules/BillsCompileDm.dfm
  5. 7 0
      DataModules/BillsDm.dfm
  6. 60 0
      DataModules/BillsGatherDm.dfm
  7. 40 4
      DataModules/BillsGatherDm.pas
  8. 45 4
      DataModules/BillsMeasureDm.pas
  9. 37 0
      DataModules/DealPayFinalDm.dfm
  10. 89 0
      DataModules/DealPayFinalDm.pas
  11. 4 2
      DataModules/DealPaymentDm.pas
  12. 64 44
      DataModules/MainDataListDm.dfm
  13. 4 2
      DataModules/PHPWebDm.pas
  14. 1 0
      DataModules/PhasePayDm.dfm
  15. 9 4
      DataModules/PhasePayDm.pas
  16. 2 2
      DataModules/PriceMarginBillsDm.pas
  17. 2 0
      DataModules/ProjectGLDm.dfm
  18. 2 1
      DataModules/ProjectGLDm.pas
  19. 7 1
      DataModules/ProjectManagerDm.dfm
  20. 3 1
      DataModules/ReportMemoryDm/rmGclBillsAddDm.pas
  21. 2 2
      DataModules/ReportMemoryDm/rmGcl_XmjBillsDm.pas
  22. 52 2
      DataModules/ReportMemoryDm/rmGridHeaderDm.dfm
  23. 10 0
      DataModules/ReportMemoryDm/rmGridHeaderDm.pas
  24. 113 13
      DataModules/ReportMemoryDm/rmHaBaiCustomizedDm.pas
  25. 98 0
      DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.dfm
  26. 297 0
      DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.pas
  27. 170 0
      DataModules/ReportMemoryDm/rmZhongKaiDm.dfm
  28. 1192 0
      DataModules/ReportMemoryDm/rmZhongKaiDm.pas
  29. 18 3
      DataModules/SearchDm.dfm
  30. 43 1
      DataModules/SearchDm.pas
  31. 1 0
      DataModules/StageDm.dfm
  32. 49 1
      DataModules/StageDm.pas
  33. 6 4
      Dprs/CSL/Measure_Cloud.dof
  34. 15 1
      Dprs/CSL/Measure_Cloud.dpr
  35. 二进制
      Dprs/CSL/Measure_Cloud.res
  36. 352 0
      Dprs/Debug/Measure_Cloud_Debug.dpr
  37. 270 0
      Dprs/Debug/Measure_Cloud_Debug_SCJT.dpr
  38. 274 0
      Dprs/Debug/Measure_Debug.dpr
  39. 243 0
      Dprs/Debug/Measure_Debug_SCJT.dpr
  40. 301 0
      Dprs/Debug/Measure_GuangDong_Cloud_Debug.dpr
  41. 270 0
      Dprs/Debug/Measure_GuangDong_Debug.dpr
  42. 41 0
      Dprs/PWFree/Measure_Cloud.cfg
  43. 154 0
      Dprs/PWFree/Measure_Cloud.dof
  44. 7 1
      Dprs/PWFree/Measure_Cloud.dpr
  45. 二进制
      Dprs/PWFree/Measure_Cloud.res
  46. 356 0
      Dprs/PWFree/Measure_Cloud_Debug.dpr
  47. 16 2
      Dprs/Pro/Measure.dof
  48. 7 1
      Dprs/Pro/Measure.dpr
  49. 二进制
      Dprs/Pro/Measure.res
  50. 4 3
      Dprs/Pro/Measure_Cloud.dof
  51. 7 1
      Dprs/Pro/Measure_Cloud.dpr
  52. 二进制
      Dprs/Pro/Measure_Cloud.res
  53. 2 2
      Dprs/Pro/Measure_GuangDong.dof
  54. 7 1
      Dprs/Pro/Measure_GuangDong.dpr
  55. 二进制
      Dprs/Pro/Measure_GuangDong.res
  56. 8 7
      Dprs/Pro/Measure_GuangDong_Cloud.dof
  57. 8 1
      Dprs/Pro/Measure_GuangDong_Cloud.dpr
  58. 二进制
      Dprs/Pro/Measure_GuangDong_Cloud.res
  59. 2 2
      Dprs/Pro/Measure_GuangDong_TZ.dof
  60. 7 1
      Dprs/Pro/Measure_GuangDong_TZ.dpr
  61. 二进制
      Dprs/Pro/Measure_GuangDong_TZ.res
  62. 2 2
      Dprs/Pro/Measure_TZ.dof
  63. 7 1
      Dprs/Pro/Measure_TZ.dpr
  64. 二进制
      Dprs/Pro/Measure_TZ.res
  65. 2 2
      Dprs/Trail/Measure.dof
  66. 7 1
      Dprs/Trail/Measure.dpr
  67. 二进制
      Dprs/Trail/Measure.res
  68. 2 2
      Dprs/Trail/Measure_GuangDong.dof
  69. 7 1
      Dprs/Trail/Measure_GuangDong.dpr
  70. 二进制
      Dprs/Trail/Measure_GuangDong.res
  71. 25 0
      Forms/BatchInsertBillsFrm.dfm
  72. 29 0
      Forms/BatchInsertBillsFrm.pas
  73. 5 2
      Forms/FileDownLoadFrm.pas
  74. 2 2
      Forms/LoginFrm.pas
  75. 99 11
      Forms/MainFrm.dfm
  76. 81 3
      Forms/MainFrm.pas
  77. 31 6
      Forms/OptionFrm.dfm
  78. 42 0
      Forms/OptionFrm.pas
  79. 330 409
      Forms/ProjectPropertiesFrm.dfm
  80. 53 32
      Forms/ProjectPropertiesFrm.pas
  81. 2 1
      Forms/ReportsFrm.pas
  82. 109 142
      Forms/UpFileFrame.dfm
  83. 21 11
      Forms/UpFileFrame.pas
  84. 1 1
      Forms/UpFileManageFrame.dfm
  85. 41 29
      Forms/UpFileManageFrame.pas
  86. 1 0
      Frames/BGLFme.dfm
  87. 9 4
      Frames/BGLFme.pas
  88. 18 0
      Frames/BillsCompileFme.dfm
  89. 10 1
      Frames/BillsCompileFme.pas
  90. 22 5
      Frames/BillsGatherFme.pas
  91. 15 1
      Frames/BillsMeasureFme.pas
  92. 3 1
      Frames/CheckerFme.pas
  93. 15 6
      Frames/ProjectFme.pas
  94. 2 0
      Frames/ProjectManagerFme.dfm
  95. 115 17
      Frames/ProjectManagerFme.pas
  96. 11 3
      Frames/SearchFme.dfm
  97. 6 3
      Frames/SearchFme.pas
  98. 1 1
      Frames/StandardBillsFme.dfm
  99. 24 5
      Frames/StandardBillsFme.pas
  100. 0 0
      Report/DataPrepare/rdpBillsGatherDm.dfm

+ 32 - 0
DataModules/AttachmentInfoDm.dfm

@@ -0,0 +1,32 @@
+object AttachmentInfoData: TAttachmentInfoData
+  OldCreateOrder = False
+  Left = 581
+  Top = 330
+  Height = 175
+  Width = 215
+  object sdpAttachmentInfo: TsdADOProvider
+    TableName = 'AttachmentInfo'
+    Left = 56
+    Top = 24
+  end
+  object sddAttachmentInfo: TsdDataSet
+    Active = False
+    Filtered = False
+    Provider = sdpAttachmentInfo
+    Left = 56
+    Top = 80
+    FieldListData = {
+      0101044E616D6506024944094669656C644E616D650602494408446174615479
+      70650203084461746153697A6502040549734B6579080F4E65656450726F6365
+      73734E616D650809507265636973696F6E02000453697A6502000001044E616D
+      650606557365724944094669656C644E616D6506065573657249440844617461
+      547970650203084461746153697A6502040549734B6579080F4E65656450726F
+      636573734E616D650909507265636973696F6E02000453697A6502000001044E
+      616D6506034D6163094669656C644E616D6506034D6163084461746154797065
+      0218084461746153697A6503FF000549734B6579080F4E65656450726F636573
+      734E616D650909507265636973696F6E02000453697A6502000001044E616D65
+      060450617468094669656C644E616D6506045061746808446174615479706502
+      18084461746153697A6503FF000549734B6579080F4E65656450726F63657373
+      4E616D650909507265636973696F6E02000453697A6502000000}
+  end
+end

+ 97 - 0
DataModules/AttachmentInfoDm.pas

@@ -0,0 +1,97 @@
+unit AttachmentInfoDm;
+
+interface
+
+uses
+  SysUtils, Classes, sdDB, sdProvider, ADODB, Variants;
+
+type
+  TAttachmentInfoData = class(TDataModule)
+    sdpAttachmentInfo: TsdADOProvider;
+    sddAttachmentInfo: TsdDataSet;
+  private
+    FProjectData: TObject;
+    FMacAddr: string;
+
+    function GetAttachmentInfoRec(AID: Integer): TsdDataRecord;
+  public
+    constructor Create(AProjectData: TObject);
+    destructor Destroy; override;
+
+    procedure Open(AConnection: TADOConnection);
+    procedure Close;
+    procedure Save;
+
+    function GetAttachmentPath(AID: Integer): string;
+    procedure SaveAttachmentPath(AID: Integer; APath: string);
+  end;
+
+implementation
+
+uses UtilMethods, PHPWebDM;
+
+{$R *.dfm}
+
+{ TAttachmentInfoData }
+
+procedure TAttachmentInfoData.Close;
+begin
+  sddAttachmentInfo.Close;
+end;
+
+constructor TAttachmentInfoData.Create(AProjectData: TObject);
+begin
+  inherited Create(nil);
+  FProjectData := AProjectData;
+  FMacAddr := GetMacAddr;
+end;
+
+destructor TAttachmentInfoData.Destroy;
+begin
+  inherited;
+end;
+
+function TAttachmentInfoData.GetAttachmentInfoRec(AID: Integer): TsdDataRecord;
+begin
+  Result := sddAttachmentInfo.Locate('ID;Mac', VarArrayOf([AID, FMacAddr]));
+end;
+
+function TAttachmentInfoData.GetAttachmentPath(AID: Integer): string;
+var
+  Rec: TsdDataRecord;
+begin
+  Result := '';
+  Rec := GetAttachmentInfoRec(AID);
+  if Assigned(Rec) then
+    Result := Rec.ValueByName('Path').AsString;
+end;
+
+procedure TAttachmentInfoData.Open(AConnection: TADOConnection);
+begin
+  sdpAttachmentInfo.Connection := AConnection;
+  sddAttachmentInfo.Open;
+end;
+
+procedure TAttachmentInfoData.Save;
+begin
+  sddAttachmentInfo.Save;
+end;
+
+procedure TAttachmentInfoData.SaveAttachmentPath(AID: Integer;
+  APath: string);
+var
+  Rec: TsdDataRecord;
+begin
+  Rec := GetAttachmentInfoRec(AID);
+  if not Assigned(Rec) then
+  begin
+    Rec := sddAttachmentInfo.Add;
+    Rec.ValueByName('ID').AsInteger := AID;
+    Rec.ValueByName('UserID').AsInteger := PHPWeb.UserID;
+    Rec.ValueByName('Mac').AsString := FMacAddr;
+  end;
+  Rec.ValueByName('Path').AsString := APath;
+  sddAttachmentInfo.Save;
+end;
+
+end.

+ 57 - 3
DataModules/BGLDm.pas

@@ -127,6 +127,7 @@ type
     procedure UpdateBGLExecutionRate(ABGLID: Integer);
     procedure UpdateBGLExecutionRate(ABGLID: Integer);
     procedure ApplyBGL(ABGLInfo: TBGLSelectInfo); overload;
     procedure ApplyBGL(ABGLInfo: TBGLSelectInfo); overload;
 
 
+    function DeleteWeb(AWebID: Integer): Boolean;
     procedure DeleteBGBills(ABGID: Integer);
     procedure DeleteBGBills(ABGID: Integer);
 
 
     function CheckSameB_Code(ABGID: Integer; const AB_Code: string): Boolean;
     function CheckSameB_Code(ABGID: Integer; const AB_Code: string): Boolean;
@@ -134,6 +135,8 @@ type
 
 
     function LocateBGL(const ACode: string): Boolean;
     function LocateBGL(const ACode: string): Boolean;
     function LocateBGBills(ABGID: Integer; const AB_Code: string): Boolean;
     function LocateBGBills(ABGID: Integer; const AB_Code: string): Boolean;
+    function GetTotalPrice: Double;
+    function GetEndTotalPrice(AEndPhase: Integer): Double;
   public
   public
     constructor Create(AProjectData: TObject);
     constructor Create(AProjectData: TObject);
     destructor Destroy; override;
     destructor Destroy; override;
@@ -155,13 +158,16 @@ type
     procedure BatchWritePos_Reason;
     procedure BatchWritePos_Reason;
 
 
     property ProjectData: TObject read FProjectData;
     property ProjectData: TObject read FProjectData;
+    property TotalPrice: Double read GetTotalPrice;
+    property EndTotalPrice[AEndPhase: Integer]: Double read GetEndTotalPrice;
     property AfterCurrentBGLChanged: TAfterCurrentBGLChanged read FAfterCurrentBGLChanged write FAfterCurrentBGLChanged;
     property AfterCurrentBGLChanged: TAfterCurrentBGLChanged read FAfterCurrentBGLChanged write FAfterCurrentBGLChanged;
   end;
   end;
 
 
 implementation
 implementation
 
 
 uses
 uses
-  ZhAPI, Math, ProjectData, BillsDm, Variants, UtilMethods, superobject;
+  ZhAPI, Math, ProjectData, BillsDm, Variants, UtilMethods, superobject,
+  PHPWebDm, Forms, Controls;
 
 
 {$R *.dfm}
 {$R *.dfm}
 
 
@@ -508,8 +514,10 @@ procedure TBGLData.cdsBGLViewBeforeDelete(DataSet: TDataSet);
 begin
 begin
   if CheckBGLUsed(cdsBGLViewID.AsInteger) then
   if CheckBGLUsed(cdsBGLViewID.AsInteger) then
     raise Exception.Create('变更令下变更清单已被应用到清单,不可删除!');
     raise Exception.Create('变更令下变更清单已被应用到清单,不可删除!');
-  if cdsBGLViewIsCloud.AsBoolean then
-    raise Exception.Create('云端获取的变更令不允许删除!');
+  //if cdsBGLViewIsCloud.AsBoolean then
+    //raise Exception.Create('云端获取的变更令不允许删除!');
+  if cdsBGLViewIsCloud.AsBoolean and not DeleteWeb(cdsBGLViewWebID.AsInteger) then
+    raise Exception.Create('同步删除云端数据失败,请重试');
   DeleteBGBills(cdsBGLViewID.AsInteger);
   DeleteBGBills(cdsBGLViewID.AsInteger);
 end;
 end;
 
 
@@ -786,4 +794,50 @@ begin
     FAfterCurrentBGLChanged;
     FAfterCurrentBGLChanged;
 end;
 end;
 
 
+function TBGLData.DeleteWeb(AWebID: Integer): Boolean;
+var
+  sgs: TStrings;
+  sUrl, sInfo: string;
+begin
+  Screen.Cursor := crHourGlass;
+  sgs := TStringList.Create;
+  try
+    sgs.Add(Format('cid=%d', [AWebID]));
+    sUrl := PHPWeb.MeasureURL + 'change/delete';
+    Result := PHPWeb.UrlGet(sUrl, sgs, sInfo) = 1;
+  finally
+    sgs.Free;
+    Screen.Cursor := crDefault;
+  end;
+end;
+
+function TBGLData.GetTotalPrice: Double;
+var
+  fTotalPrice: Double;
+begin
+  fTotalPrice := 0;
+  cdsBGL.First;
+  while not cdsBGL.Eof do
+  begin
+    fTotalPrice := fTotalPrice + cdsBGLTotalPrice.AsFloat;
+    cdsBGL.next;
+  end;
+  Result := fTotalPrice;
+end;
+
+function TBGLData.GetEndTotalPrice(AEndPhase: Integer): Double;
+var
+  fTotalPrice: Double;
+begin
+  fTotalPrice := 0;
+  cdsBGL.First;
+  while not cdsBGL.Eof do
+  begin
+    if (cdsBGLCreatePhaseID.AsInteger <= AEndPhase) then
+      fTotalPrice := fTotalPrice + cdsBGLTotalPrice.AsFloat;
+    cdsBGL.next;
+  end;
+  Result := fTotalPrice;
+end;
+
 end.
 end.

+ 3 - 0
DataModules/BillsCompileDm.dfm

@@ -100,6 +100,9 @@ object BillsCompileData: TBillsCompileData
       end
       end
       item
       item
         FieldName = 'IsGatherZJJL'
         FieldName = 'IsGatherZJJL'
+      end
+      item
+        FieldName = 'IndexCode'
       end>
       end>
     AfterAddRecord = sdvBillsCompileAfterAddRecord
     AfterAddRecord = sdvBillsCompileAfterAddRecord
     BeforeValueChange = sdvBillsCompileBeforeValueChange
     BeforeValueChange = sdvBillsCompileBeforeValueChange

+ 7 - 0
DataModules/BillsDm.dfm

@@ -271,6 +271,13 @@ object BillsData: TBillsData
       000001044E616D65060C49734761746865725A4A4A4C094669656C644E616D65
       000001044E616D65060C49734761746865725A4A4A4C094669656C644E616D65
       060C49734761746865725A4A4A4C084461746154797065020508446174615369
       060C49734761746865725A4A4A4C084461746154797065020508446174615369
       7A6502010549734B6579080F4E65656450726F636573734E616D650909507265
       7A6502010549734B6579080F4E65656450726F636573734E616D650909507265
+      636973696F6E02000453697A6502000001044E616D65060D4869734861734D65
+      6173757265094669656C644E616D65060D4869734861734D6561737572650844
+      617461547970650205084461746153697A6502010549734B6579080F4E656564
+      50726F636573734E616D650909507265636973696F6E02000453697A65020000
+      01044E616D65060D4375724861734D656173757265094669656C644E616D6506
+      0D4375724861734D656173757265084461746154797065020508446174615369
+      7A6502010549734B6579080F4E65656450726F636573734E616D650909507265
       636973696F6E02000453697A6502000000}
       636973696F6E02000453697A6502000000}
   end
   end
 end
 end

+ 60 - 0
DataModules/BillsGatherDm.dfm

@@ -479,19 +479,79 @@ object BillsGatherData: TBillsGatherData
         FieldName = 'Quantity'
         FieldName = 'Quantity'
       end
       end
       item
       item
+        FieldName = 'PreDealQuantity'
+      end
+      item
+        FieldName = 'PreDealTotalPrice'
+      end
+      item
+        FieldName = 'PreQcQuantity'
+      end
+      item
+        FieldName = 'PreQcTotalPrice'
+      end
+      item
+        FieldName = 'PreGatherQuantity'
+      end
+      item
+        FieldName = 'PreGatherTotalPrice'
+      end
+      item
+        FieldName = 'CurDealQuantity'
+      end
+      item
+        FieldName = 'CurDealTotalPrice'
+      end
+      item
+        FieldName = 'CurQcQuantity'
+      end
+      item
+        FieldName = 'CurQcTotalPrice'
+      end
+      item
         FieldName = 'CurGatherQuantity'
         FieldName = 'CurGatherQuantity'
       end
       end
       item
       item
+        FieldName = 'CurGatherTotalPrice'
+      end
+      item
         FieldName = 'EndDealQuantity'
         FieldName = 'EndDealQuantity'
       end
       end
       item
       item
+        FieldName = 'EndDealTotalPrice'
+      end
+      item
         FieldName = 'EndQcQuantity'
         FieldName = 'EndQcQuantity'
       end
       end
       item
       item
+        FieldName = 'EndQcTotalPrice'
+      end
+      item
         FieldName = 'EndGatherQuantity'
         FieldName = 'EndGatherQuantity'
       end
       end
       item
       item
+        FieldName = 'EndGatherTotalPrice'
+      end
+      item
         FieldName = 'Percent'
         FieldName = 'Percent'
+      end
+      item
+        FieldName = 'AddDealQuantity'
+      end
+      item
+        FieldName = 'AddDealTotalPrice'
+      end
+      item
+        FieldName = 'AddQcQuantity'
+      end
+      item
+        FieldName = 'AddQcTotalPrice'
+      end
+      item
+        FieldName = 'AddGatherQuantity'
+      end
+      item
+        FieldName = 'AddGatherTotalPrice'
       end>
       end>
     OnFilterRecord = sdvDetailGclBillsFilterRecord
     OnFilterRecord = sdvDetailGclBillsFilterRecord
     OnGetText = sdvGclBillsGetText
     OnGetText = sdvGclBillsGetText

+ 40 - 4
DataModules/BillsGatherDm.pas

@@ -28,7 +28,7 @@ type
   private
   private
     FProjectData: TObject;
     FProjectData: TObject;
 
 
-    procedure WriteGatherRecord(AGcls, AXmjs: TList);
+    procedure WriteGatherRecord(AGcls, AXmjs: TList; AGather: TGatherNode);
 
 
     function GetMainBillsTree: TsdIDTree;
     function GetMainBillsTree: TsdIDTree;
   public
   public
@@ -109,7 +109,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TBillsGatherData.WriteGatherRecord(AGcls, AXmjs: TList);
+procedure TBillsGatherData.WriteGatherRecord(AGcls, AXmjs: TList; AGather: TGatherNode);
 var
 var
   sCurB_Code, sCurName, sCurUnits, sCurPrice: string;
   sCurB_Code, sCurName, sCurUnits, sCurPrice: string;
   bHasCurrrent: Boolean;
   bHasCurrrent: Boolean;
@@ -359,6 +359,40 @@ var
     WriteDetailBGLNode(AGclNode);
     WriteDetailBGLNode(AGclNode);
   end;
   end;
 
 
+  procedure WriteGatherNode(AGather: TGatherNode);
+  var
+    Rec: TsdDataRecord;
+  begin
+    Rec := sddGclBills.Add;
+    Rec.ValueByName('ID').AsInteger := AGather.ID;
+
+    Rec.ValueByName('IndexCode').AsString := ' ';
+    Rec.ValueByName('Name').AsString := 'ºÏ¼Æ';
+
+    Rec.ValueByName('DealTotalPrice').AsFloat := AGather.DealTotalPrice;
+    Rec.ValueByName('BGLTotalPrice').AsFloat := AGather.BGLTotalPrice;
+    Rec.ValueByName('TotalPrice').AsFloat := AGather.TotalPrice;
+
+    Rec.ValueByName('CurDealTotalPrice').AsFloat := AGather.CurDealTotalPrice;
+    Rec.ValueByName('CurQcTotalPrice').AsFloat := AGather.CurQcTotalPrice;
+    Rec.ValueByName('CurGatherTotalPrice').AsFloat := AGather.CurGatherTotalPrice;
+
+    Rec.ValueByName('PreDealTotalPrice').AsFloat := AGather.PreDealTotalPrice;
+    Rec.ValueByName('PreQcTotalPrice').AsFloat := AGather.PreQcTotalPrice;
+    Rec.ValueByName('PreGatherTotalPrice').AsFloat := AGather.PreGatherTotalPrice;
+
+    Rec.ValueByName('EndDealTotalPrice').AsFloat := AGather.EndDealTotalPrice;
+    Rec.ValueByName('EndQcTotalPrice').AsFloat := AGather.EndQcTotalPrice;
+    Rec.ValueByName('EndGatherTotalPrice').AsFloat := AGather.EndGatherTotalPrice;
+
+    Rec.ValueByName('AddDealTotalPrice').AsFloat := AGather.AddDealTotalPrice;
+    Rec.ValueByName('AddQcTotalPrice').AsFloat := AGather.AddQcTotalPrice;
+    Rec.ValueByName('AddGatherTotalPrice').AsFloat := AGather.AddGatherTotalPrice;
+
+    Rec.ValueByName('Deal_BGLTotalPrice').AsFloat := AGather.Deal_BGLTotalPrice;
+    Rec.ValueByName('Deal_BGLPercent').AsFloat := AGather.Deal_BGLPercent;
+  end;
+
 var
 var
   iGcl: Integer;
   iGcl: Integer;
   vGclNode: TGclNode;
   vGclNode: TGclNode;
@@ -369,7 +403,8 @@ begin
     begin
     begin
       vGclNode := TGclNode(AGcls.Items[iGcl]);
       vGclNode := TGclNode(AGcls.Items[iGcl]);
       WriteGclNode(vGclNode);
       WriteGclNode(vGclNode);
-    end;
+    end;                     
+    WriteGatherNode(AGather);
   finally
   finally
     AfterWrite;
     AfterWrite;
   end;
   end;
@@ -409,7 +444,8 @@ function TBillsGatherData.GetAllBillsJson: string;
     Result.S['lname'] := Rec.ValueByName('Name').AsString;
     Result.S['lname'] := Rec.ValueByName('Name').AsString;
     Result.S['unit'] := Rec.ValueByName('Units').AsString;
     Result.S['unit'] := Rec.ValueByName('Units').AsString;
     Result.D['unitprice'] := Rec.ValueByName('Price').AsFloat;
     Result.D['unitprice'] := Rec.ValueByName('Price').AsFloat;
-    Result.D['amount'] := Rec.ValueByName('DealQuantity').AsFloat;
+    //Result.D['amount'] := Rec.ValueByName('DealQuantity').AsFloat;
+    Result.D['amount'] := Rec.ValueByName('Quantity').AsFloat;
   end;
   end;
 
 
 var
 var

+ 45 - 4
DataModules/BillsMeasureDm.pas

@@ -72,6 +72,8 @@ type
 
 
     function FindNodeWithZJJL(ANode: TsdIDTreeNode): TsdIDTreeNode;
     function FindNodeWithZJJL(ANode: TsdIDTreeNode): TsdIDTreeNode;
 
 
+    procedure CalcMeasureFilter;
+
     // 计算 修改各期原报审核数据时,需对累计数据做增量
     // 计算 修改各期原报审核数据时,需对累计数据做增量
     procedure UpdateRecordDeal(ABillsID: Integer; AQuantity, ATotalPrice: Double);
     procedure UpdateRecordDeal(ABillsID: Integer; AQuantity, ATotalPrice: Double);
     procedure UpdateRecordQc(ABillsID: Integer; AQuantity, ATotalPrice: Double);
     procedure UpdateRecordQc(ABillsID: Integer; AQuantity, ATotalPrice: Double);
@@ -819,11 +821,11 @@ var
   iID: Integer;
   iID: Integer;
   vNode: TBillsIDTreeNode;
   vNode: TBillsIDTreeNode;
 begin
 begin
+  iID := AValue.Owner.ValueByName('ID').AsInteger;
+  vNode := TBillsIDTreeNode(BillsMeasureTree.FindNode(iID));
+
   if AValue.Owner.Owner.Name = 'sddBills' then
   if AValue.Owner.Owner.Name = 'sddBills' then
   begin
   begin
-    iID := AValue.Owner.ValueByName('ID').AsInteger;
-    vNode := TBillsIDTreeNode(BillsMeasureTree.FindNode(iID));
-
     if SameText(AValue.FieldName, 'Price') then
     if SameText(AValue.FieldName, 'Price') then
       TProjectData(FProjectData).BillsCompileData.Calculate(iID);
       TProjectData(FProjectData).BillsCompileData.Calculate(iID);
 
 
@@ -928,7 +930,9 @@ begin
   with ANode.Rec do
   with ANode.Rec do
   begin
   begin
     fDividend := ValueByName('AddGatherTotalPrice').AsFloat;
     fDividend := ValueByName('AddGatherTotalPrice').AsFloat;
-    fDivisor := CommonCalcRoundTo(ValueByName('TotalPrice').AsFloat + ValueByName('AddQcTotalPrice').AsFloat
+    //fDivisor := CommonCalcRoundTo(ValueByName('TotalPrice').AsFloat + ValueByName('AddQcTotalPrice').AsFloat
+      //  + ValueByName('AddPcTotalPrice').AsFloat);
+    fDivisor := TotalPriceRoundTo(ValueByName('TotalPrice').AsFloat + ValueByName('AddQcTotalPrice').AsFloat
         + ValueByName('AddPcTotalPrice').AsFloat);
         + ValueByName('AddPcTotalPrice').AsFloat);
     if fDivisor <> 0 then
     if fDivisor <> 0 then
       ValueByName('AddCompleteRate').AsFloat := AdvRoundTo(fDividend/fDivisor*100)
       ValueByName('AddCompleteRate').AsFloat := AdvRoundTo(fDividend/fDivisor*100)
@@ -1014,6 +1018,30 @@ begin
 
 
     ANode.Rec.PM_AddTotalPrice.AsFloat := ANode.StageRec.PM_PreTotalPrice.AsFloat + ANode.StageRec.PM_TotalPrice.AsFloat;
     ANode.Rec.PM_AddTotalPrice.AsFloat := ANode.StageRec.PM_PreTotalPrice.AsFloat + ANode.StageRec.PM_TotalPrice.AsFloat;
     CalcAddCompleteRate(ANode);
     CalcAddCompleteRate(ANode);
+  end
+  else
+  begin
+    if not ANode.HasChildren then
+    begin
+      ANode.Rec.AddDealQuantity.Clear;
+
+      ANode.Rec.AddQcQuantity.Clear;
+      ANode.Rec.AddQcBGLCode.Clear;
+      ANode.Rec.AddQcBGLNum.Clear;
+
+      ANode.Rec.AddPcQuantity.Clear;
+      ANode.Rec.AddPcBGLCode.Clear;
+      ANode.Rec.AddPcBGLNum.Clear;
+
+      ANode.Rec.AddGatherQuantity.Clear;
+    end;
+    ANode.Rec.AddDealTotalPrice.Clear;
+    ANode.Rec.AddQcTotalPrice.Clear;
+    ANode.Rec.AddPcTotalPrice.Clear;
+    ANode.Rec.AddGatherTotalPrice.Clear;
+    ANode.Rec.AddCompleteRate.Clear;
+
+    ANode.Rec.PM_AddTotalPrice.Clear;
   end;
   end;
 end;
 end;
 
 
@@ -1217,4 +1245,17 @@ begin
   Result := TProjectData(FProjectData).ProjProperties.DecimalManager.Common;
   Result := TProjectData(FProjectData).ProjProperties.DecimalManager.Common;
 end;
 end;
 
 
+procedure TBillsMeasureData.CalcMeasureFilter;
+var
+  i: Integer;
+  vNode: TMeasureBillsIDTreeNode;
+begin
+  for i := 0 to BillsMeasureTree.Count - 1 do
+  begin
+    vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.Items[i]);
+    vNode.Rec.SetBoolValue(vNode.Rec.HisHasMeasure, vNode.Rec.HisHasMeasure.AsBoolean or vNode.Rec.CurHasMeasure.AsBoolean);
+    vNode.Rec.SetBoolValue(vNode.Rec.CurHasMeasure, False);
+  end;
+end;
+
 end.
 end.

+ 37 - 0
DataModules/DealPayFinalDm.dfm

@@ -0,0 +1,37 @@
+object DealPayFinalData: TDealPayFinalData
+  OldCreateOrder = False
+  Left = 980
+  Top = 349
+  Height = 193
+  Width = 185
+  object sdpDealPayFinal: TsdADOProvider
+    TableName = 'DealPayFinal'
+    Left = 56
+    Top = 16
+  end
+  object sddDealPayFinal: TsdDataSet
+    Active = False
+    Filtered = False
+    Provider = sdpDealPayFinal
+    Left = 56
+    Top = 80
+    FieldListData = {
+      0101044E616D65060750686173654944094669656C644E616D65060750686173
+      6549440844617461547970650203084461746153697A6502040549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D6506064465616C4944094669656C644E616D65060644
+      65616C49440844617461547970650203084461746153697A6502040549734B65
+      79080F4E65656450726F636573734E616D650909507265636973696F6E020004
+      53697A6502000001044E616D65060A546F74616C5072696365094669656C644E
+      616D65060A546F74616C50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000001044E616D65060D456E64546F7461
+      6C5072696365094669656C644E616D65060D456E64546F74616C507269636508
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D65060D507265546F74616C5072696365094669656C644E616D65
+      060D507265546F74616C50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000000}
+  end
+end

+ 89 - 0
DataModules/DealPayFinalDm.pas

@@ -0,0 +1,89 @@
+unit DealPayFinalDm;
+
+interface
+
+uses
+  SysUtils, Classes, sdDB, sdProvider, ADODB, Variants;
+
+type
+  TDealPayFinalData = class(TDataModule)
+    sdpDealPayFinal: TsdADOProvider;
+    sddDealPayFinal: TsdDataSet;
+  private
+    FProjectData: TObject;
+  public
+    constructor Create(AProjectData: TObject);
+    destructor Destroy; override;
+
+    procedure Open(AConnection: TADOConnection);
+    procedure Close;
+    procedure Save;
+
+    procedure LoadLastestDealPayData;   
+  end;
+
+implementation
+
+uses
+  ProjectData, DealPaymentDm;
+
+{$R *.dfm}
+
+{ TDealPayFinalData }
+
+procedure TDealPayFinalData.Close;
+begin
+  sddDealPayFinal.Close;
+end;
+
+constructor TDealPayFinalData.Create(AProjectData: TObject);
+begin
+  inherited Create(nil);
+  FProjectData := AProjectData;
+end;
+
+destructor TDealPayFinalData.Destroy;
+begin
+  inherited;
+end;
+
+procedure TDealPayFinalData.Open(AConnection: TADOConnection);
+begin 
+  sdpDealPayFinal.Connection := AConnection;
+  sddDealPayFinal.Open;
+end;
+
+procedure TDealPayFinalData.Save;
+begin
+  sddDealPayFinal.Save;
+end;
+
+procedure TDealPayFinalData.LoadLastestDealPayData;
+var
+  iPhase, iRec: Integer;
+  vDealRec, vRec, vDealPayRec: TsdDataRecord;
+  sTpField: string;
+begin
+  iPhase := TProjectData(FProjectData).PhaseIndex;
+  sTpField := 'TotalPrice' + IntToStr(TProjectData(FProjectData).PhaseData.PhaseProperty.AuditCount);
+  for iRec := 0 to TProjectData(FProjectData).DealPaymentData.sddDealPayment.RecordCount - 1 do
+  begin
+    vDealRec := TProjectData(FProjectData).DealPaymentData.sddDealPayment.Records[iRec];
+    vRec := sddDealPayFinal.Locate('PhaseID;DealID', VarArrayOf([iPhase, vDealRec.ValueByName('ID').AsInteger]));
+    if not Assigned(vRec) then
+    begin
+      vRec := sddDealPayFinal.Add;
+      vRec.ValueByName('PhaseID').AsInteger := iPhase;
+      vRec.ValueByName('DealID').AsInteger := vDealRec.ValueByName('ID').AsInteger;
+    end;
+    vDealPayRec := TProjectData(FProjectData).PhaseData.PhasePayData.PayRecord(vDealRec.ValueByName('ID').AsInteger);
+    if Assigned(vDealPayRec) then
+    begin
+      vRec.ValueByName('TotalPrice').AsFloat := vDealPayRec.ValueByName(sTpField).AsFloat;
+      vRec.ValueByName('EndTotalPrice').AsFloat := vDealPayRec.ValueByName('End' + sTpField).AsFloat;
+      vRec.ValueByName('PreTotalPrice').AsFloat := vDealPayRec.ValueByName('Pre' + sTpField).AsFloat;
+    end;
+  end;
+end;
+
+end.

+ 4 - 2
DataModules/DealPaymentDm.pas

@@ -82,7 +82,8 @@ type
 implementation
 implementation
 
 
 uses
 uses
-  ProjectData, PhasePayDm, PhaseData, ZhAPI, BillsDm, Math, Variants;
+  ProjectData, PhasePayDm, PhaseData, ZhAPI, BillsDm, Math, Variants,
+  ProjectProperty;
 
 
 {$R *.dfm}
 {$R *.dfm}
 
 
@@ -550,7 +551,8 @@ var
   I: Integer;
   I: Integer;
   Rec: TsdDataRecord;
   Rec: TsdDataRecord;
 begin
 begin
-  if TProjectData(FProjectData).ProjProperties.PhaseCount > 0 then Exit;
+  with TProjectData(FProjectData).ProjProperties do
+    if (PhaseCount > 1) or ((PhaseCount = 1) and (AuditStatus <> 0)) then Exit;
   for I := 0 to sddDealPayment.RecordCount - 1 do
   for I := 0 to sddDealPayment.RecordCount - 1 do
   begin
   begin
     Rec := sddDealPayment.Records[I];
     Rec := sddDealPayment.Records[I];

+ 64 - 44
DataModules/MainDataListDm.dfm

@@ -11,57 +11,77 @@ object MainListData: TMainListData
   end
   end
   object sddMainDataList: TsdDataSet
   object sddMainDataList: TsdDataSet
     Active = False
     Active = False
+    Filtered = False
     Provider = sdpMainDataList
     Provider = sdpMainDataList
     Left = 72
     Left = 72
     Top = 88
     Top = 88
     FieldListData = {
     FieldListData = {
       0101044E616D65060750686173654944094669656C644E616D65060750686173
       0101044E616D65060750686173654944094669656C644E616D65060750686173
       6549440844617461547970650203084461746153697A6502040549734B657908
       6549440844617461547970650203084461746153697A6502040549734B657908
-      0F4E65656450726F636573734E616D65090001044E616D65060E4465616C546F
-      74616C5072696365094669656C644E616D65060E4465616C546F74616C507269
-      63650844617461547970650206084461746153697A6502080549734B6579080F
-      4E65656450726F636573734E616D65090001044E616D65060C5163546F74616C
-      5072696365094669656C644E616D65060C5163546F74616C5072696365084461
-      7461547970650206084461746153697A6502080549734B6579080F4E65656450
-      726F636573734E616D65090001044E616D65060C5063546F74616C5072696365
-      094669656C644E616D65060C5063546F74616C50726963650844617461547970
-      650206084461746153697A6502080549734B6579080F4E65656450726F636573
-      734E616D65090001044E616D650610476174686572546F74616C507269636509
-      4669656C644E616D650610476174686572546F74616C50726963650844617461
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D65060E4465616C546F74616C5072696365094669656C
+      644E616D65060E4465616C546F74616C50726963650844617461547970650206
+      084461746153697A6502080549734B6579080F4E65656450726F636573734E61
+      6D650909507265636973696F6E02000453697A6502000001044E616D65060C51
+      63546F74616C5072696365094669656C644E616D65060C5163546F74616C5072
+      6963650844617461547970650206084461746153697A6502080549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D65060C5063546F74616C5072696365094669656C644E
+      616D65060C5063546F74616C5072696365084461746154797065020608446174
+      6153697A6502080549734B6579080F4E65656450726F636573734E616D650909
+      507265636973696F6E02000453697A6502000001044E616D6506104761746865
+      72546F74616C5072696365094669656C644E616D650610476174686572546F74
+      616C50726963650844617461547970650206084461746153697A650208054973
+      4B6579080F4E65656450726F636573734E616D650909507265636973696F6E02
+      000453697A6502000001044E616D650611456E644465616C546F74616C507269
+      6365094669656C644E616D650611456E644465616C546F74616C507269636508
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D65060F456E645163546F74616C5072696365094669656C644E61
+      6D65060F456E645163546F74616C507269636508446174615479706502060844
+      61746153697A6502080549734B6579080F4E65656450726F636573734E616D65
+      0909507265636973696F6E02000453697A6502000001044E616D65060F456E64
+      5063546F74616C5072696365094669656C644E616D65060F456E645063546F74
+      616C50726963650844617461547970650206084461746153697A650208054973
+      4B6579080F4E65656450726F636573734E616D650909507265636973696F6E02
+      000453697A6502000001044E616D650613456E64476174686572546F74616C50
+      72696365094669656C644E616D650613456E64476174686572546F74616C5072
+      6963650844617461547970650206084461746153697A6502080549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D6506115072654465616C546F74616C50726963650946
+      69656C644E616D6506115072654465616C546F74616C50726963650844617461
       547970650206084461746153697A6502080549734B6579080F4E65656450726F
       547970650206084461746153697A6502080549734B6579080F4E65656450726F
-      636573734E616D65090001044E616D650611456E644465616C546F74616C5072
-      696365094669656C644E616D650611456E644465616C546F74616C5072696365
-      0844617461547970650206084461746153697A6502080549734B6579080F4E65
-      656450726F636573734E616D65090001044E616D65060F456E645163546F7461
-      6C5072696365094669656C644E616D65060F456E645163546F74616C50726963
-      650844617461547970650206084461746153697A6502080549734B6579080F4E
-      65656450726F636573734E616D65090001044E616D65060F456E645063546F74
-      616C5072696365094669656C644E616D65060F456E645063546F74616C507269
-      63650844617461547970650206084461746153697A6502080549734B6579080F
-      4E65656450726F636573734E616D65090001044E616D650613456E6447617468
-      6572546F74616C5072696365094669656C644E616D650613456E644761746865
-      72546F74616C50726963650844617461547970650206084461746153697A6502
-      080549734B6579080F4E65656450726F636573734E616D65090001044E616D65
-      06115072654465616C546F74616C5072696365094669656C644E616D65061150
-      72654465616C546F74616C507269636508446174615479706502060844617461
-      53697A6502080549734B6579080F4E65656450726F636573734E616D65090001
-      044E616D65060F5072655163546F74616C5072696365094669656C644E616D65
-      060F5072655163546F74616C5072696365084461746154797065020608446174
-      6153697A6502080549734B6579080F4E65656450726F636573734E616D650900
-      01044E616D65060F5072655063546F74616C5072696365094669656C644E616D
-      65060F5072655063546F74616C50726963650844617461547970650206084461
-      746153697A6502080549734B6579080F4E65656450726F636573734E616D6509
-      0001044E616D650613507265476174686572546F74616C507269636509466965
-      6C644E616D650613507265476174686572546F74616C50726963650844617461
+      636573734E616D650909507265636973696F6E02000453697A6502000001044E
+      616D65060F5072655163546F74616C5072696365094669656C644E616D65060F
+      5072655163546F74616C50726963650844617461547970650206084461746153
+      697A6502080549734B6579080F4E65656450726F636573734E616D6509095072
+      65636973696F6E02000453697A6502000001044E616D65060F5072655063546F
+      74616C5072696365094669656C644E616D65060F5072655063546F74616C5072
+      6963650844617461547970650206084461746153697A6502080549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000001044E616D650613507265476174686572546F74616C5072696365
+      094669656C644E616D650613507265476174686572546F74616C507269636508
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D6506085068617365506179094669656C644E616D650608506861
+      73655061790844617461547970650206084461746153697A6502080549734B65
+      79080F4E65656450726F636573734E616D650909507265636973696F6E020004
+      53697A6502000001044E616D65060B456E645068617365506179094669656C64
+      4E616D65060B456E645068617365506179084461746154797065020608446174
+      6153697A6502080549734B6579080F4E65656450726F636573734E616D650909
+      507265636973696F6E02000453697A6502000001044E616D65060B5072655068
+      617365506179094669656C644E616D65060B5072655068617365506179084461
+      7461547970650206084461746153697A6502080549734B6579080F4E65656450
+      726F636573734E616D650909507265636973696F6E02000453697A6502000001
+      044E616D6506044A43545A094669656C644E616D6506044A43545A0844617461
       547970650206084461746153697A6502080549734B6579080F4E65656450726F
       547970650206084461746153697A6502080549734B6579080F4E65656450726F
-      636573734E616D65090001044E616D6506085068617365506179094669656C64
-      4E616D6506085068617365506179084461746154797065020608446174615369
-      7A6502080549734B6579080F4E65656450726F636573734E616D65090001044E
-      616D65060B456E645068617365506179094669656C644E616D65060B456E6450
-      686173655061790844617461547970650206084461746153697A650208054973
-      4B6579080F4E65656450726F636573734E616D65090001044E616D65060B5072
-      655068617365506179094669656C644E616D65060B5072655068617365506179
-      0844617461547970650206084461746153697A6502080549734B6579080F4E65
-      656450726F636573734E616D65090000}
+      636573734E616D650909507265636973696F6E02000453697A6502000001044E
+      616D6506075072654A43545A094669656C644E616D6506075072654A43545A08
+      44617461547970650206084461746153697A6502080549734B6579080F4E6565
+      6450726F636573734E616D650909507265636973696F6E02000453697A650200
+      0001044E616D650607456E644A43545A094669656C644E616D650607456E644A
+      43545A0844617461547970650206084461746153697A6502080549734B657908
+      0F4E65656450726F636573734E616D650909507265636973696F6E0200045369
+      7A6502000000}
   end
   end
 end
 end

+ 4 - 2
DataModules/PHPWebDm.pas

@@ -198,7 +198,6 @@ begin
     end;
     end;
     2:
     2:
     begin
     begin
-//      AInfo := vArr[0];
       AInfo := '版本有更新,请点击“确定”下载新版本。';
       AInfo := '版本有更新,请点击“确定”下载新版本。';
       ANewExeURL := vArr[1];
       ANewExeURL := vArr[1];
       Result := ltUpdate;
       Result := ltUpdate;
@@ -914,7 +913,10 @@ begin
         vJ := SO(Utf8ToAnsi(ssResponse.DataString));
         vJ := SO(Utf8ToAnsi(ssResponse.DataString));
         if SameText(vJ['status'].AsString, 'true') then
         if SameText(vJ['status'].AsString, 'true') then
         begin
         begin
-          AResult := vJ['info'].AsString;
+          if Assigned(vJ['info']) then
+            AResult := vJ['info'].AsString
+          else
+            AResult := vJ['msg'].AsString;
           Result := 1;
           Result := 1;
         end
         end
         else if SameText(vJ['status'].AsString, 'false') then
         else if SameText(vJ['status'].AsString, 'false') then

+ 1 - 0
DataModules/PhasePayDm.dfm

@@ -11,6 +11,7 @@ object PhasePayData: TPhasePayData
   end
   end
   object sddPhasePay: TsdDataSet
   object sddPhasePay: TsdDataSet
     Active = False
     Active = False
+    Filtered = False
     Provider = sdpPhasePay
     Provider = sdpPhasePay
     BeforeValueChange = sddPhasePayBeforeValueChange
     BeforeValueChange = sddPhasePayBeforeValueChange
     AfterValueChanged = sddPhasePayAfterValueChanged
     AfterValueChanged = sddPhasePayAfterValueChanged

+ 9 - 4
DataModules/PhasePayDm.pas

@@ -3,7 +3,7 @@ unit PhasePayDm;
 interface
 interface
 
 
 uses
 uses
-  SysUtils, Classes, sdDB, sdProvider, ADODB, FormulaCalc;
+  SysUtils, Classes, sdDB, sdProvider, ADODB, FormulaCalc, CalcDecimal;
 
 
 type
 type
   TPhasePayData = class(TDataModule)
   TPhasePayData = class(TDataModule)
@@ -17,6 +17,7 @@ type
     FPayFormula: TPayFormula;
     FPayFormula: TPayFormula;
 
 
     FBeforeChangeTotalPrice: Double;
     FBeforeChangeTotalPrice: Double;
+    FDecimal: TCalcDecimal;
 
 
     function CheckMinus(AID: Integer): Boolean;
     function CheckMinus(AID: Integer): Boolean;
     function GetFormula(AID: Integer): string;
     function GetFormula(AID: Integer): string;
@@ -57,6 +58,7 @@ type
     // AType表示不同类型,取值如下:
     // AType表示不同类型,取值如下:
     // 1: 本期数据  2: 截止本期数据  3: 截止上期数据
     // 1: 本期数据  2: 截止本期数据  3: 截止上期数据
     property LastestPhasePay[AType: Integer]: Double read GetLastestPhasePay;
     property LastestPhasePay[AType: Integer]: Double read GetLastestPhasePay;
+    property Decimal: TCalcDecimal read FDecimal;
   end;
   end;
 
 
 implementation
 implementation
@@ -74,7 +76,10 @@ begin
   FPhaseData := APhaseData;
   FPhaseData := APhaseData;
   FPayFormula := TPayFormula.Create(TPhaseData(FPhaseData).ProjectData);
   FPayFormula := TPayFormula.Create(TPhaseData(FPhaseData).ProjectData);
   with TProjectData(TPhaseData(FPhaseData).ProjectData) do
   with TProjectData(TPhaseData(FPhaseData).ProjectData) do
+  begin
     FPayFormula.Decimal := ProjProperties.DecimalManager.DealPay;
     FPayFormula.Decimal := ProjProperties.DecimalManager.DealPay;
+    FDecimal := ProjProperties.DecimalManager.DealPay;
+  end;
 end;
 end;
 
 
 procedure TPhasePayData.Delete(AID: Integer);
 procedure TPhasePayData.Delete(AID: Integer);
@@ -200,7 +205,7 @@ begin
       if Rec.ValueByName(sFField).AsString <> '' then
       if Rec.ValueByName(sFField).AsString <> '' then
       begin
       begin
         // 初次达到起扣金额时,bqwc基数值取值为累计完成计量-起扣金额
         // 初次达到起扣金额时,bqwc基数值取值为累计完成计量-起扣金额
-        if Rec.ValueByName('Pre'+sTPField).AsFloat = 0 then
+        if FDecimal.TotalPrice.RoundTo(Rec.ValueByName('Pre'+sTPField).AsFloat) = 0 then
           fTotalPrice := FPayFormula.Calculate(Rec.ValueByName(sFField).AsString, fStartedPrice)
           fTotalPrice := FPayFormula.Calculate(Rec.ValueByName(sFField).AsString, fStartedPrice)
         else
         else
           fTotalPrice := FPayFormula.Calculate(Rec.ValueByName(sFField).AsString);
           fTotalPrice := FPayFormula.Calculate(Rec.ValueByName(sFField).AsString);
@@ -236,8 +241,8 @@ begin
     end;
     end;
   end;}
   end;}
   // 计算截止数据
   // 计算截止数据
-  Rec.ValueByName('End' + sTPField).AsFloat := Rec.ValueByName(sTPField).AsFloat
-      + Rec.ValueByName('Pre' + sTPField).AsFloat;
+  Rec.ValueByName('End' + sTPField).AsFloat := FDecimal.TotalPrice.RoundTo(Rec.ValueByName(sTPField).AsFloat
+      + Rec.ValueByName('Pre' + sTPField).AsFloat);
 end;
 end;
 
 
 function TPhasePayData.GetPayablePrice(AIndex: Integer): Double;
 function TPhasePayData.GetPayablePrice(AIndex: Integer): Double;

+ 2 - 2
DataModules/PriceMarginBillsDm.pas

@@ -32,7 +32,7 @@ type
       AValue: TsdValue; AColumn: TsdViewColumn; var Allow: Boolean);
       AValue: TsdValue; AColumn: TsdViewColumn; var Allow: Boolean);
   private
   private
     FProjectData: TObject;
     FProjectData: TObject;
-    procedure WriteGclBillsData(AGcls, AXmjs: TList);
+    procedure WriteGclBillsData(AGcls, AXmjs: TList; AGather: TGatherNode);
     function GetMainBillsTree: TBillsIDTree;
     function GetMainBillsTree: TBillsIDTree;
     function GetDecimal: TCalcDecimal;
     function GetDecimal: TCalcDecimal;
   public
   public
@@ -102,7 +102,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TPriceMarginBillsData.WriteGclBillsData(AGcls, AXmjs: TList);
+procedure TPriceMarginBillsData.WriteGclBillsData(AGcls, AXmjs: TList; AGather: TGatherNode);
 
 
   procedure BeforeWrite;
   procedure BeforeWrite;
   begin
   begin

+ 2 - 0
DataModules/ProjectGLDm.dfm

@@ -11,6 +11,7 @@ object ProjectGLData: TProjectGLData
   end
   end
   object sddProjectGL: TsdDataSet
   object sddProjectGL: TsdDataSet
     Active = False
     Active = False
+    Filtered = False
     Provider = sdpProjectGL
     Provider = sdpProjectGL
     AfterAddRecord = sddProjectGLAfterAddRecord
     AfterAddRecord = sddProjectGLAfterAddRecord
     BeforeDeleteRecord = sddProjectGLBeforeDeleteRecord
     BeforeDeleteRecord = sddProjectGLBeforeDeleteRecord
@@ -197,6 +198,7 @@ object ProjectGLData: TProjectGLData
   end
   end
   object sddGather: TsdDataSet
   object sddGather: TsdDataSet
     Active = True
     Active = True
+    Filtered = False
     Provider = smpGather
     Provider = smpGather
     Left = 152
     Left = 152
     Top = 80
     Top = 80

+ 2 - 1
DataModules/ProjectGLDm.pas

@@ -360,7 +360,8 @@ begin
       with TProjectData(FProjectData).BillsMeasureData do
       with TProjectData(FProjectData).BillsMeasureData do
         BillsNode := TMeasureBillsIDTreeNode(BillsMeasureTree.FindNode(GLRec.ValueByName('BillsID').AsInteger));
         BillsNode := TMeasureBillsIDTreeNode(BillsMeasureTree.FindNode(GLRec.ValueByName('BillsID').AsInteger));
       if Assigned(BillsNode.StageRec) then
       if Assigned(BillsNode.StageRec) then
-        fQuantity := fQuantity + Decimal.Quantity.RoundTo(BillsNode.StageRec.GatherQuantity.AsFloat * GLRec.ValueByName('Quantity').AsFloat);
+        //fQuantity := fQuantity + Decimal.Quantity.RoundTo(BillsNode.StageRec.GatherQuantity.AsFloat * GLRec.ValueByName('Quantity').AsFloat);
+        fQuantity := fQuantity + BillsNode.StageRec.GatherQuantity.AsFloat * GLRec.ValueByName('Quantity').AsFloat;
     end;
     end;
 
 
     if fQuantity <> ARec.PM_Quantity.AsFloat then
     if fQuantity <> ARec.PM_Quantity.AsFloat then

+ 7 - 1
DataModules/ProjectManagerDm.dfm

@@ -106,7 +106,10 @@ object ProjectManagerData: TProjectManagerData
       01044E616D65060C4465616C5061794469676974094669656C644E616D65060C
       01044E616D65060C4465616C5061794469676974094669656C644E616D65060C
       4465616C50617944696769740844617461547970650203084461746153697A65
       4465616C50617944696769740844617461547970650203084461746153697A65
       02040549734B6579080F4E65656450726F636573734E616D6509095072656369
       02040549734B6579080F4E65656450726F636573734E616D6509095072656369
-      73696F6E02000453697A6502000000}
+      73696F6E02000453697A6502000001044E616D65060C5765624D65576F726B69
+      6E67094669656C644E616D65060C5765624D65576F726B696E67084461746154
+      7970650205084461746153697A6502010549734B6579080F4E65656450726F63
+      6573734E616D650909507265636973696F6E02000453697A6502000000}
   end
   end
   object sdvProjectsInfo: TsdDataView
   object sdvProjectsInfo: TsdDataView
     Active = False
     Active = False
@@ -187,6 +190,9 @@ object ProjectManagerData: TProjectManagerData
       end
       end
       item
       item
         FieldName = 'WebKey'
         FieldName = 'WebKey'
+      end
+      item
+        FieldName = 'WebMeWorking'
       end>
       end>
     BeforeDeleteRecord = sdvProjectsInfoBeforeDeleteRecord
     BeforeDeleteRecord = sdvProjectsInfoBeforeDeleteRecord
     OnFilterRecord = sdvProjectsInfoFilterRecord
     OnFilterRecord = sdvProjectsInfoFilterRecord

+ 3 - 1
DataModules/ReportMemoryDm/rmGclBillsAddDm.pas

@@ -291,7 +291,9 @@ begin
     with FProjectData.BillsCompileData.BillsCompileTree do
     with FProjectData.BillsCompileData.BillsCompileTree do
       stnNode := FindNode(StageRec.ValueByName('BillsID').AsInteger);
       stnNode := FindNode(StageRec.ValueByName('BillsID').AsInteger);
     // 非最底层工程量清单不添加数据
     // 非最底层工程量清单不添加数据
-    if stnNode.HasChildren or (stnNode.Rec.ValueByName('B_Code').AsString = '') then Continue;
+    if not Assigned(stnNode) or stnNode.HasChildren or
+        (stnNode.Rec.ValueByName('B_Code').AsString = '') then
+      Continue;
     GclNode := FindGclNode(stnNode.Rec);
     GclNode := FindGclNode(stnNode.Rec);
     if Assigned(GclNode) then
     if Assigned(GclNode) then
     begin
     begin

+ 2 - 2
DataModules/ReportMemoryDm/rmGcl_XmjBillsDm.pas

@@ -70,7 +70,7 @@ type
     procedure WriteFlowGclNode(AGclNode: TGclNode);
     procedure WriteFlowGclNode(AGclNode: TGclNode);
     procedure WriteFlowGclTypeData(AGcls: TList);
     procedure WriteFlowGclTypeData(AGcls: TList);
 
 
-    procedure WriteData(AGcls, AXmjs: TList);
+    procedure WriteData(AGcls, AXmjs: TList; AGather: TGatherNode);
 
 
     procedure GatherData;
     procedure GatherData;
   public
   public
@@ -131,7 +131,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TrmGcl_XmjBillsData.WriteData(AGcls, AXmjs: TList);
+procedure TrmGcl_XmjBillsData.WriteData(AGcls, AXmjs: TList; AGather: TGatherNode);
 begin
 begin
   case FGXType of
   case FGXType of
     gxtTopGcl, gxtWithoutXmj: WriteTopGclTypeData(AGcls);
     gxtTopGcl, gxtWithoutXmj: WriteTopGclTypeData(AGcls);

+ 52 - 2
DataModules/ReportMemoryDm/rmGridHeaderDm.dfm

@@ -41,6 +41,31 @@ object rmGridHeaderData: TrmGridHeaderData
       item
       item
         Name = 'FlowIndex'
         Name = 'FlowIndex'
         DataType = ftInteger
         DataType = ftInteger
+      end
+      item
+        Name = 'SName_2'
+        DataType = ftWideString
+        Size = 50
+      end
+      item
+        Name = 'Deadline'
+        DataType = ftWideString
+        Size = 255
+      end
+      item
+        Name = 'DealType'
+        DataType = ftWideString
+        Size = 50
+      end
+      item
+        Name = 'PhaseStr'
+        DataType = ftWideString
+        Size = 10
+      end
+      item
+        Name = 'CurTime'
+        DataType = ftWideString
+        Size = 10
       end>
       end>
     IndexDefs = <>
     IndexDefs = <>
     Params = <>
     Params = <>
@@ -48,13 +73,18 @@ object rmGridHeaderData: TrmGridHeaderData
     Left = 56
     Left = 56
     Top = 40
     Top = 40
     Data = {
     Data = {
-      D90000009619E0BD010000001800000007000000000003000000D9000B50726F
+      680100009619E0BD01000000180000000C00000000000300000068010B50726F
       6A6563744E616D6501004A000000010005574944544802000200640008446561
       6A6563744E616D6501004A000000010005574944544802000200640008446561
       6C436F646501004A000000010005574944544802000200280005434E616D6501
       6C436F646501004A000000010005574944544802000200280005434E616D6501
       004A000000010005574944544802000200640005534E616D6501004A00000001
       004A000000010005574944544802000200640005534E616D6501004A00000001
       000557494454480200020064000A5068617365496E64657801004A0000000100
       000557494454480200020064000A5068617365496E64657801004A0000000100
       055749445448020002001400084465616C4E616D6501004A0000000100055749
       055749445448020002001400084465616C4E616D6501004A0000000100055749
-      44544802000200C80009466C6F77496E64657804000100000000000000}
+      44544802000200C80009466C6F77496E646578040001000000000007534E616D
+      655F3201004A000000010005574944544802000200640008446561646C696E65
+      02004A000000010005574944544802000200FE01084465616C5479706501004A
+      000000010005574944544802000200640008506861736553747201004A000000
+      01000557494454480200020014000743757254696D6501004A00000001000557
+      494454480200020014000000}
     object cdsGridHeaderProjectName: TWideStringField
     object cdsGridHeaderProjectName: TWideStringField
       FieldName = 'ProjectName'
       FieldName = 'ProjectName'
       Size = 50
       Size = 50
@@ -81,5 +111,25 @@ object rmGridHeaderData: TrmGridHeaderData
     object cdsGridHeaderFlowIndex: TIntegerField
     object cdsGridHeaderFlowIndex: TIntegerField
       FieldName = 'FlowIndex'
       FieldName = 'FlowIndex'
     end
     end
+    object cdsGridHeaderSName_2: TWideStringField
+      FieldName = 'SName_2'
+      Size = 50
+    end
+    object cdsGridHeaderDeadline: TWideStringField
+      FieldName = 'Deadline'
+      Size = 255
+    end
+    object cdsGridHeaderDealType: TWideStringField
+      FieldName = 'DealType'
+      Size = 50
+    end
+    object cdsGridHeaderPhaseStr: TWideStringField
+      FieldName = 'PhaseStr'
+      Size = 10
+    end
+    object cdsGridHeaderCurTime: TWideStringField
+      FieldName = 'CurTime'
+      Size = 10
+    end
   end
   end
 end
 end

+ 10 - 0
DataModules/ReportMemoryDm/rmGridHeaderDm.pas

@@ -15,6 +15,11 @@ type
     cdsGridHeaderPhaseIndex: TWideStringField;
     cdsGridHeaderPhaseIndex: TWideStringField;
     cdsGridHeaderDealName: TWideStringField;
     cdsGridHeaderDealName: TWideStringField;
     cdsGridHeaderFlowIndex: TIntegerField;
     cdsGridHeaderFlowIndex: TIntegerField;
+    cdsGridHeaderSName_2: TWideStringField;
+    cdsGridHeaderDeadline: TWideStringField;
+    cdsGridHeaderDealType: TWideStringField;
+    cdsGridHeaderPhaseStr: TWideStringField;
+    cdsGridHeaderCurTime: TWideStringField;
   private
   private
   public
   public
     function AssginData(AProjectData: TProjectData): TDataSet;
     function AssginData(AProjectData: TProjectData): TDataSet;
@@ -41,6 +46,11 @@ begin
   cdsGridHeaderPhaseIndex.AsString := Format('%d ÆÚ', [AProjectData.PhaseIndex]);
   cdsGridHeaderPhaseIndex.AsString := Format('%d ÆÚ', [AProjectData.PhaseIndex]);
   cdsGridHeaderDealName.AsString := AProjectData.ProjProperties.DealName;
   cdsGridHeaderDealName.AsString := AProjectData.ProjProperties.DealName;
   cdsGridHeaderFlowIndex.AsInteger := 0;
   cdsGridHeaderFlowIndex.AsInteger := 0;
+  cdsGridHeaderSName_2.AsString := AProjectData.ProjProperties.SName_2;
+  cdsGridHeaderDeadline.AsString := AProjectData.ProjProperties.Deadline;
+  cdsGridHeaderDealType.AsString := AProjectData.Projproperties.DealType;
+  cdsGridHeaderPhaseStr.AsString := Format('%.2d', [AProjectData.PhaseIndex]);
+  cdsGridHeaderCurTime.AsString := FormatDateTime('yyyymm', Now);
   cdsGridHeader.Post;
   cdsGridHeader.Post;
   Result := cdsGridHeader;
   Result := cdsGridHeader;
 end;
 end;

+ 113 - 13
DataModules/ReportMemoryDm/rmHaBaiCustomizedDm.pas

@@ -158,7 +158,8 @@ type
     constructor Create(AProjectCount: Integer; AIsHaBai: Boolean);
     constructor Create(AProjectCount: Integer; AIsHaBai: Boolean);
     destructor Destroy;
     destructor Destroy;
 
 
-    function AddGclNode(ANode: TMeasureBillsIDTreeNode; AProjectIndex: Integer): TGclNode;
+    function AddGclNode(ANode: TMeasureBillsIDTreeNode; AProjectIndex: Integer): TGclNode; overload;
+    function AddGclNode(ARec: TBillsRecord; AStageRec: TStageRecord; AProjectIndex: Integer): TGclNode; overload;
 
 
     procedure ReCalculateTotalPrice;
     procedure ReCalculateTotalPrice;
     procedure Calculate;
     procedure Calculate;
@@ -321,6 +322,7 @@ type
     FGclControl: TGclControl;
     FGclControl: TGclControl;
     FDealPayControl: TDealPayControl;
     FDealPayControl: TDealPayControl;
     FDealTotalPrice: Double;
     FDealTotalPrice: Double;
+    FIsNewOpen: Boolean;
 
 
     procedure BeforeGather(AProjectCount: Integer; AIsHaBai: Boolean);
     procedure BeforeGather(AProjectCount: Integer; AIsHaBai: Boolean);
     procedure AfterGather;
     procedure AfterGather;
@@ -352,7 +354,7 @@ implementation
 
 
 uses
 uses
   UtilMethods, ZhAPI, BillsCompileDm, sdDB, Globals, Math, BillsMeasureDm,
   UtilMethods, ZhAPI, BillsCompileDm, sdDB, Globals, Math, BillsMeasureDm,
-  ZJJLDm, BillsDm;
+  ZJJLDm, BillsDm, ScUtils, Windows, PhaseData, sdIDTree, StageDm;
 
 
 {$R *.dfm}
 {$R *.dfm}
 
 
@@ -438,12 +440,14 @@ procedure TrmHaBaiCustomizedData.OpenProjectData(AProject: TSelectProject);
 var
 var
   Rec: TsdDataRecord;
   Rec: TsdDataRecord;
 begin
 begin
+  FIsNewOpen := False;
   FProjectData := OpenProjectManager.FindProjectData(AProject.ProjectID);
   FProjectData := OpenProjectManager.FindProjectData(AProject.ProjectID);
   Rec := ProjectManager.sddProjectsInfo.FindKey('idxID', AProject.ProjectID);
   Rec := ProjectManager.sddProjectsInfo.FindKey('idxID', AProject.ProjectID);
   if not Assigned(FProjectData) then
   if not Assigned(FProjectData) then
   begin
   begin
     FProjectData := TProjectData.Create;
     FProjectData := TProjectData.Create;
-    FProjectData.OpenForReport3(GetMyProjectsFilePath + Rec.ValueByName('FileName').AsString);
+    FProjectData.OpenForReport4(GetMyProjectsFilePath + Rec.ValueByName('FileName').AsString);
+    FIsNewOpen := True;
   end;
   end;
   FProjectName := Rec.ValueByName('Name').AsString;
   FProjectName := Rec.ValueByName('Name').AsString;
 end;
 end;
@@ -468,20 +472,83 @@ begin
 end;
 end;
 
 
 procedure TrmHaBaiCustomizedData.FilterGcl(AProjectIndex: Integer);
 procedure TrmHaBaiCustomizedData.FilterGcl(AProjectIndex: Integer);
-var
-  i: Integer;
-  vNode: TMeasureBillsIDTreeNode;
-  GclNode: TGclNode;
-begin
-  with FProjectData.BillsMeasureData do
+
+  function FindStage(AID: Integer; AList: TList): TStageRecord;
+  var
+    i: Integer;
+    Rec: TStageRecord;
   begin
   begin
-    for i := 0 to BillsMeasureTree.Count - 1 do
+    Result := nil;
+    for i := 0 to AList.Count - 1 do
     begin
     begin
-      vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.Items[i]);
-      if not vNode.HasChildren and (vNode.Rec.B_Code.AsString <> '') then
-        GclNode := FGclControl.AddGclNode(vNode, AProjectIndex);
+      Rec :=  TStageRecord(AList.Items[i]);
+      if Rec.BillsID.AsInteger = AID then
+      begin
+        Result := Rec;
+        Break;
+      end;
     end;
     end;
   end;
   end;
+
+  procedure FilterNewOpened;
+  var
+    vList: TList;
+    i: Integer;
+    GclNode: TGclNode;
+    Rec: TBillsRecord;
+    StageRec: TStageRecord;
+  begin
+    vList := TList.Create;
+    try
+      with FProjectData.PhaseData.StageData do
+      begin
+        for i := 0 to sddStage.RecordCount - 1 do
+          vList.Add(sddStage.Records[i]);
+      end;
+
+      FProjectData.BillsData.sddBills.DisableControls;
+      FProjectData.PhaseData.StageData.sddStage.DisableControls;
+      with FProjectData.BillsData do
+      begin
+        for i := 0 to sddBills.RecordCount - 1 do
+        begin
+          Rec := TBillsRecord(sddBills.Records[i]);
+          if Rec.IsLeaf.AsBoolean and (Rec.B_Code.AsString <> '') then
+          begin
+            StageRec := FindStage(Rec.ID.AsInteger, vList);
+            GclNode := FGclControl.AddGclNode(Rec, StageRec, AProjectIndex);
+            vList.Remove(StageRec);
+          end;
+        end;
+      end;
+    finally
+      vList.Free;
+    end;
+  end;
+
+  procedure FilterOrg;
+  var
+    i: Integer;
+    vNode: TMeasureBillsIDTreeNode;
+    GclNode: TGclNode;
+    StageRec: TStageRecord;
+  begin
+    with FProjectData.BillsMeasureData do
+    begin
+      for i := 0 to BillsMeasureTree.Count - 1 do
+      begin
+        vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.Items[i]);
+        if not vNode.HasChildren and (vNode.Rec.B_Code.AsString <> '') then
+          GclNode := FGclControl.AddGclNode(vNode, AProjectIndex);
+      end;
+    end;
+  end;
+
+begin
+  if FIsNewOpen then
+    FilterNewOpened
+  else
+    FilterOrg;
 end;
 end;
 
 
 procedure TrmHaBaiCustomizedData.FilterDealPay;
 procedure TrmHaBaiCustomizedData.FilterDealPay;
@@ -1292,6 +1359,39 @@ begin
     TGclNode(FGclNodes[iGcl]).Calculate;
     TGclNode(FGclNodes[iGcl]).Calculate;
 end;
 end;
 
 
+function TGclControl.AddGclNode(ARec: TBillsRecord; AStageRec: TStageRecord;
+  AProjectIndex: Integer): TGclNode;
+begin
+  Result := FindGclNode(ARec);
+  if not Assigned(Result) then
+    Result := NewGclNode(ARec);
+  with ARec do
+  begin
+    Result.Quantity := Result.Quantity + Quantity.AsFloat;
+    Result.TotalPrice := Result.TotalPrice + TotalPrice.AsFloat;
+
+    Result.P_Quantity[AProjectIndex] := Result.P_Quantity[AProjectIndex] + Quantity.AsFloat;
+    Result.P_TotalPrice[AProjectIndex] := Result.P_TotalPrice[AProjectIndex] + TotalPrice.AsFloat;
+  end;
+
+  if Assigned(AStageRec) then
+    with AStageRec do
+    begin
+      Result.CurGatherQuantity := Result.CurGatherQuantity + GatherQuantity.AsFloat;
+      Result.CurGatherTotalPrice := Result.CurGatherTotalPrice + GatherTotalPrice.AsFloat;
+      Result.P_CurGatherQuantity[AProjectIndex] := Result.P_CurGatherQuantity[AProjectIndex] + GatherQuantity.AsFloat;
+      Result.P_CurGatherTotalPrice[AProjectIndex] := Result.P_CurGatherTotalPrice[AProjectIndex] + GatherTotalPrice.AsFloat;
+
+      Result.EndGatherQuantity := Result.EndGatherQuantity + EndGatherQuantity.AsFloat;
+      Result.EndGatherTotalPrice := Result.EndGatherTotalPrice + EndGatherTotalPrice.AsFloat;
+      Result.P_EndGatherQuantity[AProjectIndex] := Result.P_EndGatherQuantity[AProjectIndex] + EndGatherQuantity.AsFloat;
+      Result.P_EndGatherTotalPrice[AProjectIndex] := Result.P_EndGatherTotalPrice[AProjectIndex] + EndGatherTotalPrice.AsFloat;
+
+      Result.PreGatherQuantity := Result.PreGatherQuantity + PreGatherQuantity.AsFloat;
+      Result.PreGatherTotalPrice := Result.PreGatherTotalPrice + PreGatherTotalPrice.AsFloat;
+    end;
+end;
+
 { TGclChapter }
 { TGclChapter }
 
 
 procedure TGclChapter.AddGclNode(AGclNode: TGclNode);
 procedure TGclChapter.AddGclNode(AGclNode: TGclNode);

+ 98 - 0
DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.dfm

@@ -0,0 +1,98 @@
+object rmWuJiuZqzfGatherData: TrmWuJiuZqzfGatherData
+  OldCreateOrder = False
+  Left = 880
+  Top = 278
+  Height = 150
+  Width = 215
+  object cdsZqzf: TClientDataSet
+    Active = True
+    Aggregates = <>
+    Params = <>
+    Left = 48
+    Top = 40
+    Data = {
+      960100009619E0BD01000000180000001700000000000300000096010A506861
+      7365496E64657804000100000000000451796874080004000000000004466871
+      6408000400000000000242670800040000000000025370080004000000000002
+      5779080004000000000004436C6A670800040000000000034267680800040000
+      00000009456E6447617468657208000400000000000950726547617468657208
+      00040000000000094375724761746865720800040000000000084164644B6842
+      6C6A0800040000000000084375724B68426C6A08000400000000000A4164644B
+      684E6D67677A08000400000000000A4375724B684E6D67677A08000400000000
+      0005447979666B08000400000000000A4164644B68447979666B080004000000
+      00000A4375724B68447979666B08000400000000000C4164644B416464656454
+      617808000400000000000C4375724B4164646564546178080004000000000007
+      416464536A7A66080004000000000007437572536A7A66080004000000000004
+      4D656D6F02004A000000010005574944544802000200FE010000}
+    object cdsZqzfPhaseIndex: TIntegerField
+      FieldName = 'PhaseIndex'
+    end
+    object cdsZqzfQyht: TFloatField
+      FieldName = 'Qyht'
+    end
+    object cdsZqzfFhqd: TFloatField
+      FieldName = 'Fhqd'
+    end
+    object cdsZqzfBg: TFloatField
+      FieldName = 'Bg'
+    end
+    object cdsZqzfSp: TFloatField
+      FieldName = 'Sp'
+    end
+    object cdsZqzfWy: TFloatField
+      FieldName = 'Wy'
+    end
+    object cdsZqzfCljg: TFloatField
+      FieldName = 'Cljg'
+    end
+    object cdsZqzfBgh: TFloatField
+      FieldName = 'Bgh'
+    end
+    object cdsZqzfEndGather: TFloatField
+      FieldName = 'EndGather'
+    end
+    object cdsZqzfPreGather: TFloatField
+      FieldName = 'PreGather'
+    end
+    object cdsZqzfCurGather: TFloatField
+      FieldName = 'CurGather'
+    end
+    object cdsZqzfAddKhBlj: TFloatField
+      FieldName = 'AddKhBlj'
+    end
+    object cdsZqzfCurKhBlj: TFloatField
+      FieldName = 'CurKhBlj'
+    end
+    object cdsZqzfAddKhNmggz: TFloatField
+      FieldName = 'AddKhNmggz'
+    end
+    object cdsZqzfCurKhNmggz: TFloatField
+      FieldName = 'CurKhNmggz'
+    end
+    object cdsZqzfDyyfk: TFloatField
+      FieldName = 'Dyyfk'
+    end
+    object cdsZqzfAddKhDyyfk: TFloatField
+      FieldName = 'AddKhDyyfk'
+    end
+    object cdsZqzfCurKhDyyfk: TFloatField
+      FieldName = 'CurKhDyyfk'
+    end
+    object cdsZqzfAddKAddedTax: TFloatField
+      FieldName = 'AddKAddedTax'
+    end
+    object cdsZqzfCurKAddedTax: TFloatField
+      FieldName = 'CurKAddedTax'
+    end
+    object cdsZqzfAddSjzf: TFloatField
+      FieldName = 'AddSjzf'
+    end
+    object cdsZqzfCurSjzf: TFloatField
+      FieldName = 'CurSjzf'
+    end
+    object cdsZqzfMemo: TWideStringField
+      FieldName = 'Memo'
+      Size = 255
+    end
+  end
+end

+ 297 - 0
DataModules/ReportMemoryDm/rmWuJiuZqzfGatherDm.pas

@@ -0,0 +1,297 @@
+unit rmWuJiuZqzfGatherDm;
+
+interface
+
+uses
+  SysUtils, Classes, DB, DBClient, ProjectData, sdIDTree, sdDB;
+
+type
+  TrmWuJiuZqzfGatherData = class(TDataModule)
+    cdsZqzf: TClientDataSet;
+    cdsZqzfPhaseIndex: TIntegerField;
+    cdsZqzfQyht: TFloatField;
+    cdsZqzfFhqd: TFloatField;
+    cdsZqzfBg: TFloatField;
+    cdsZqzfSp: TFloatField;
+    cdsZqzfWy: TFloatField;
+    cdsZqzfCljg: TFloatField;
+    cdsZqzfBgh: TFloatField;
+    cdsZqzfEndGather: TFloatField;
+    cdsZqzfPreGather: TFloatField;
+    cdsZqzfCurGather: TFloatField;
+    cdsZqzfAddKhBlj: TFloatField;
+    cdsZqzfCurKhBlj: TFloatField;
+    cdsZqzfAddKhNmggz: TFloatField;
+    cdsZqzfCurKhNmggz: TFloatField;
+    cdsZqzfDyyfk: TFloatField;
+    cdsZqzfAddKhDyyfk: TFloatField;
+    cdsZqzfCurKhDyyfk: TFloatField;
+    cdsZqzfAddKAddedTax: TFloatField;
+    cdsZqzfCurKAddedTax: TFloatField;
+    cdsZqzfAddSjzf: TFloatField;
+    cdsZqzfCurSjzf: TFloatField;
+    cdsZqzfMemo: TWideStringField;
+  private
+    FQyht: Double;
+    FFhqd: Double;
+    FBg: Double;
+    FSp: Double;
+    FWy: Double;
+    FCljg: Double;
+    procedure GatherMainData(AProjectData: TProjectData);
+    procedure LoadPhaseData(APhaseIndex: Integer; AProjectData: TProjectData = nil);
+  public
+    function AssignData(AProjectData: TProjectData): TDataSet;
+  end;
+
+implementation
+
+uses BillsDm, BGLDm, DealPaymentDm, PhaseData, PhasePayDm, ConstUnit;
+
+{$R *.dfm}
+
+{ TrmWuJiuZqzfGatherData }
+
+function TrmWuJiuZqzfGatherData.AssignData(
+  AProjectData: TProjectData): TDataSet;
+var
+  iPhase: Integer;
+begin
+  cdsZqzf.Active := True;
+  cdsZqzf.EmptyDataSet;
+  GatherMainData(AProjectData);
+  for iPhase := 1 to AProjectData.ProjProperties.PhaseCount do
+    LoadPhaseData(iPhase, AProjectData);
+  Result := cdsZqzf;
+end;
+
+procedure TrmWuJiuZqzfGatherData.GatherMainData(AProjectData: TProjectData);
+
+  function FindChild(const AName: String; AParent: TsdIDTreeNode = nil): TsdIDTreeNode;
+  var
+    vNode: TsdIDTreeNode;
+  begin
+    Result := nil;
+    if Assigned(AParent) then
+      vNode := AParent.FirstChild
+    else
+      vNode := AProjectData.BillsCompileData.BillsCompileTree.FirstNode;
+    while Assigned(vNode) do
+    begin
+      if Pos(AName, vNode.Rec.ValueByName('Name').AsString) > 0 then
+      begin
+        Result := vNode;
+        Break;
+      end
+      else
+        vNode := vNode.NextSibling;
+    end;
+  end;
+
+  function FindNode(const AName: String; AParent: TsdIDTreeNode = nil): TsdIDTreeNode;
+  var
+    vNode: TsdIDTreeNode;
+    i, iCount: Integer;
+  begin
+    Result := nil;
+    i := 0;
+    if Assigned(AParent) then
+    begin
+      vNode := AParent.FirstChild;
+      iCount := AParent.PosterityCount;
+    end
+    else
+    begin
+      vNode := AProjectData.BillsCompileData.BillsCompileTree.FirstNode;
+      iCount := AProjectData.BillsCompileData.BillsCompileTree.Count;
+    end;
+    while Assigned(vNode) and (i < iCount) do
+    begin
+      if Pos(AName, vNode.Rec.ValueByName('Name').AsString) > 0 then
+      begin
+        Result := vNode;
+        Break;
+      end
+      else
+        vNode := vNode.NextNode;
+      Inc(i);
+    end;
+  end;
+
+var
+  vQtFyNode, vChild: TsdIDTreeNode;
+begin
+  // 签约合同金额
+  FQyht := AProjectData.ProjProperties.ContractPrice;
+  // 复核清单金额
+  vQtFyNode := FindChild('建安工程其他费用', AProjectData.BillsCompileData.BillsCompileTree.FindNode(1));
+  with AProjectData.BillsData do
+    FFhqd := FirstPart[0] + SecondPart[0] + ThirdPart[0] + ReservedFee[0];
+  if Assigned(vQtFyNode) then
+    FFhqd := FFhqd - vQtFyNode.Rec.ValueByName('TotalPrice').AsFloat;
+  // 变更金额
+  FBg := AProjectData.BGLData.TotalPrice;
+  // 索赔金额
+  vChild := FindNode('索赔', vQtFyNode);
+  if Assigned(vChild) then
+    FSp := vChild.Rec.ValueByName('TotalPrice').AsFloat
+  else
+    FSp := 0;
+  // 违约罚金
+  vChild := FindNode('违约罚金', vQtFyNode);
+  if Assigned(vChild) then
+    FWy := vChild.Rec.ValueByName('TotalPrice').AsFloat
+  else
+    FWy := 0;
+  // 材料价格调整金额
+  vChild := FindNode('价差调整', vQtFyNode);
+  if Assigned(vChild) then
+    FCljg := vChild.Rec.ValueByName('TotalPrice').AsFloat
+  else
+    FCljg := 0;
+end;
+
+procedure TrmWuJiuZqzfGatherData.LoadPhaseData(APhaseIndex: Integer;
+  AProjectData: TProjectData);
+
+  function GetDealPayID(const AName: string; AMinus: Boolean = false): Integer;
+  var
+    iRec: Integer;
+    Rec: TsdDataRecord;
+  begin
+    Result := -1;
+    with AProjectData.DealPaymentData do
+      for iRec := 0 to sddDealPayment.RecordCount - 1 do
+      begin
+        Rec := sddDealPayment.Records[iRec];
+        if (Pos(AName, Rec.ValueByName('Name').AsString) > 0) and (Rec.ValueByName('IsMinus').AsBoolean = AMinus) then
+        begin
+          Result := Rec.ValueByName('ID').AsInteger;
+          Break;
+        end;
+      end;
+  end;
+
+  procedure GetDealPayRecords(AList: TList; AName: string; AMinus: Boolean = false; ACalcType: Integer = 0);
+  var
+    iRec: Integer;
+    Rec: TsdDataRecord;
+  begin
+    AList.Clear;
+    with AProjectData.DealPaymentData do
+      for iRec := 0 to sddDealPayment.RecordCount - 1 do
+      begin
+        Rec :=  sddDealPayment.Records[iRec];
+        if (Pos(AName, Rec.ValueByName('Name').AsString) > 0) and (Rec.ValueByName('IsMinus').AsBoolean = AMinus)
+           and (Rec.ValueByName('CalcType').AsInteger = ACalcType) then
+        begin
+          AList.Add(Rec);
+        end;
+      end;
+  end;
+
+var
+  PhaseData: TPhaseData;
+  sTPField: string;
+  iDealPayId: Integer;
+  Rec: TsdDataRecord;
+  vRecList: TList;
+  iRec: Integer;
+begin
+  PhaseData := TPhaseData.Create(AProjectData);
+  vRecList := TList.Create;
+  try
+    PhaseData.SimpleOpen(Format('%s\Phase%d.dat', [AProjectData.TempPath, APhaseIndex]));
+    cdsZqzf.Append;
+    cdsZqzfPhaseIndex.AsInteger := APhaseIndex;
+    cdsZqzfQyht.AsFloat := FQyht;
+    cdsZqzfFhqd.AsFloat := FFhqd;
+    cdsZqzfBg.AsFloat := AProjectData.BGLData.EndTotalPrice[APhaseIndex];
+    cdsZqzfSp.AsFloat := FSp;
+    cdsZqzfWy.AsFloat := FWy;
+    cdsZqzfCljg.AsFloat := FCljg;//PhaseData.StageData.PriceMargin[2, 4];
+    cdsZqzfBgh.AsFloat := cdsZqzfFhqd.AsFloat + cdsZqzfBg.AsFloat + cdsZqzfSp.AsFloat + cdsZqzfWy.AsFloat + cdsZqzfCljg.AsFloat;
+    sTPField := 'TotalPrice' + IntToStr(TPhaseData(PhaseData).PhaseProperty.AuditCount);
+    with PhaseData.PhasePayData do
+    begin
+      iDealPayId := GetDealPayID('本期完成计量');
+      Rec := sddPhasePay.Locate('ID', iDealPayId);
+      cdsZqzfEndGather.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
+      cdsZqzfPreGather.AsFloat := Rec.ValueByName('Pre' + sTPField).AsFloat;
+      cdsZqzfCurGather.AsFloat := Rec.ValueByName(sTPField).AsFloat;
+
+      GetDealPayRecords(vRecList, '保留金', true);
+      for iRec := 0 to vRecList.Count - 1 do
+      begin
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfAddKhBlj.AsFloat := cdsZqzfAddKhBlj.AsFloat + Rec.ValueByName('End' + sTPField).AsFloat;
+          cdsZqzfCurKhBlj.AsFloat := cdsZqzfCurKhBlj.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
+      end;
+
+      GetDealPayRecords(vRecList, '农民工工资', true);
+      for iRec := 0 to vRecList.Count - 1 do
+      begin
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfAddKhNmggz.AsFloat := cdsZqzfAddKhNmggz.AsFloat + Rec.ValueByName('End' + sTPField).AsFloat;
+          cdsZqzfCurKhNmggz.AsFloat := cdsZqzfCurKhNmggz.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
+      end;
+
+      GetDealPayRecords(vRecList, '动员预付款', false);
+      for iRec := 0 to vRecList.Count - 1 do
+      begin
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfDyyfk.AsFloat := cdsZqzfDyyfk.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
+      end;
+
+      GetDealPayRecords(vRecList, '动员预付款', true);
+      for iRec := 0 to vRecList.Count - 1 do
+      begin
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfAddKhDyyfk.AsFloat := cdsZqzfAddKhDyyfk.AsFloat + Rec.ValueByName('End' + sTPField).AsFloat;
+          cdsZqzfCurKhDyyfk.AsFloat := cdsZqzfCurKhDyyfk.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
+      end;
+
+      GetDealPayRecords(vRecList, '增值税', true);
+      for iRec := 0 to vRecList.Count - 1 do
+      begin
+        iDealPayId := TsdDataRecord(vRecList.Items[iRec]).ValueByName('ID').AsInteger;
+        Rec := sddPhasePay.Locate('ID', iDealPayId);
+        if Assigned(Rec) then
+        begin
+          cdsZqzfAddKAddedTax.AsFloat := cdsZqzfAddKAddedTax.AsFloat + Rec.ValueByName('End' + sTPField).AsFloat;
+          cdsZqzfCurKAddedTax.AsFloat := cdsZqzfCurKAddedTax.AsFloat + Rec.ValueByName(sTPField).AsFloat;
+        end;
+      end;
+
+      iDealPayId := GetDealPayID('本期应付');
+      Rec := sddPhasePay.Locate('ID', iDealPayId);
+      if Assigned(Rec) then
+      begin
+        cdsZqzfAddSjzf.AsFloat := Rec.ValueByName('End' + sTPField).AsFloat;
+        cdsZqzfCurSjzf.AsFloat := Rec.ValueByName(sTPField).AsFloat;
+      end;
+    end;
+    cdsZqzf.Post;
+  finally
+    vRecList.Free;
+    PhaseData.Free;
+  end;
+end;
+
+end.

+ 170 - 0
DataModules/ReportMemoryDm/rmZhongKaiDm.dfm

@@ -0,0 +1,170 @@
+object rmZhongKaiData: TrmZhongKaiData
+  OldCreateOrder = False
+  Left = 658
+  Top = 507
+  Height = 156
+  Width = 322
+  object cdsCustom2: TClientDataSet
+    Active = True
+    Aggregates = <>
+    Params = <>
+    Left = 40
+    Top = 40
+    Data = {
+      290100009619E0BD01000000180000000C000000000003000000290109436861
+      7074657249440400010000000000074368617074657201004A00000001000557
+      49445448020002006400044E616D6502004A0000000100055749445448020002
+      00FE010A546F74616C507269636508000400000000000B43546F74616C507269
+      636508000400000000000B47546F74616C507269636508000400000000001345
+      6E64476174686572546F74616C507269636508000400000000000A456E645065
+      7263656E74080004000000000013507265476174686572546F74616C50726963
+      6508000400000000000A50726550657263656E74080004000000000013437572
+      476174686572546F74616C507269636508000400000000000A43757250657263
+      656E7408000400000000000000}
+    object cdsCustom2ChapterID: TIntegerField
+      FieldName = 'ChapterID'
+    end
+    object cdsCustom2Chapter: TWideStringField
+      FieldName = 'Chapter'
+      Size = 50
+    end
+    object cdsCustom2Name: TWideStringField
+      FieldName = 'Name'
+      Size = 255
+    end
+    object cdsCustom2TotalPrice: TFloatField
+      FieldName = 'TotalPrice'
+    end
+    object cdsCustom2CTotalPrice: TFloatField
+      FieldName = 'CTotalPrice'
+    end
+    object cdsCustom2GTotalPrice: TFloatField
+      FieldName = 'GTotalPrice'
+    end
+    object cdsCustom2EndGatherTotalPrice: TFloatField
+      FieldName = 'EndGatherTotalPrice'
+    end
+    object cdsCustom2EndPercent: TFloatField
+      FieldName = 'EndPercent'
+    end
+    object cdsCustom2PreGatherTotalPrice: TFloatField
+      FieldName = 'PreGatherTotalPrice'
+    end
+    object cdsCustom2PrePercent: TFloatField
+      FieldName = 'PrePercent'
+    end
+    object cdsCustom2CurGatherTotalPrice: TFloatField
+      FieldName = 'CurGatherTotalPrice'
+    end
+    object cdsCustom2CurPercent: TFloatField
+      FieldName = 'CurPercent'
+    end
+  end
+  object cdsCustom3: TClientDataSet
+    Active = True
+    Aggregates = <>
+    IndexFieldNames = 'ChapterID;IndexCode'
+    Params = <>
+    Left = 120
+    Top = 40
+    Data = {
+      750200009619E0BD010000001800000019000000000003000000750209436861
+      707465724944040001000000000009496E646578436F646501004A0000000100
+      05574944544802000200640006425F436F646501004A00000001000557494454
+      48020002006400044E616D6502004A000000010005574944544802000200FE01
+      05556E69747301004A0000000100055749445448020002002800055072696365
+      08000400000000000C4465616C5175616E7469747908000400000000000E4465
+      616C546F74616C507269636508000400000000000E456E644D71635175616E74
+      697479080004000000000010456E644D7163546F74616C507269636508000400
+      0000000011456E644D716361546F74616C507269636508000400000000000E45
+      6E645071635175616E74697479080004000000000010456E64507163546F7461
+      6C5072696365080004000000000011456E6450716361546F74616C5072696365
+      08000400000000000D456E6451635175616E7469747908000400000000000F45
+      6E645163546F74616C5072696365080004000000000010456E64516361546F74
+      616C5072696365080004000000000009475175616E7469747908000400000000
+      000B47546F74616C5072696365080004000000000011456E6447617468657251
+      75616E74697479080004000000000013456E64476174686572546F74616C5072
+      6963650800040000000000115072654761746865725175616E74697479080004
+      000000000013507265476174686572546F74616C507269636508000400000000
+      00114375724761746865725175616E7469747908000400000000001343757247
+      6174686572546F74616C507269636508000400000000000000}
+    object cdsCustom3ChapterID: TIntegerField
+      FieldName = 'ChapterID'
+    end
+    object cdsCustom3IndexCode: TWideStringField
+      FieldName = 'IndexCode'
+      Size = 50
+    end
+    object cdsCustom3B_Code: TWideStringField
+      FieldName = 'B_Code'
+      Size = 50
+    end
+    object cdsCustom3Name: TWideStringField
+      FieldName = 'Name'
+      Size = 255
+    end
+    object cdsCustom3Units: TWideStringField
+      FieldName = 'Units'
+    end
+    object cdsCustom3Price: TFloatField
+      FieldName = 'Price'
+    end
+    object cdsCustom3DealQuantity: TFloatField
+      FieldName = 'DealQuantity'
+    end
+    object cdsCustom3DealTotalPrice: TFloatField
+      FieldName = 'DealTotalPrice'
+    end
+    object cdsCustom3EndMqcQuantity: TFloatField
+      FieldName = 'EndMqcQuantity'
+    end
+    object cdsCustom3EndMqcTotalPrice: TFloatField
+      FieldName = 'EndMqcTotalPrice'
+    end
+    object cdsCustom3EndMqcaTotalPrice: TFloatField
+      FieldName = 'EndMqcaTotalPrice'
+    end
+    object cdsCustom3EndPqcQuantity: TFloatField
+      FieldName = 'EndPqcQuantity'
+    end
+    object cdsCustom3EndPqcTotalPrice: TFloatField
+      FieldName = 'EndPqcTotalPrice'
+    end
+    object cdsCustom3EndPqcaTotalPrice: TFloatField
+      FieldName = 'EndPqcaTotalPrice'
+    end
+    object cdsCustom3EndQcQuantity: TFloatField
+      FieldName = 'EndQcQuantity'
+    end
+    object cdsCustom3EndQcTotalPrice: TFloatField
+      FieldName = 'EndQcTotalPrice'
+    end
+    object cdsCustom3EndQcaTotalPrice: TFloatField
+      FieldName = 'EndQcaTotalPrice'
+    end
+    object cdsCustom3GQuantity: TFloatField
+      FieldName = 'GQuantity'
+    end
+    object cdsCustom3GTotalPrice: TFloatField
+      FieldName = 'GTotalPrice'
+    end
+    object cdsCustom3EndGatherQuantity: TFloatField
+      FieldName = 'EndGatherQuantity'
+    end
+    object cdsCustom3EndGatherTotalPrice: TFloatField
+      FieldName = 'EndGatherTotalPrice'
+    end
+    object cdsCustom3PreGatherQuantity: TFloatField
+      FieldName = 'PreGatherQuantity'
+    end
+    object cdsCustom3PreGatherTotalPrice: TFloatField
+      FieldName = 'PreGatherTotalPrice'
+    end
+    object cdsCustom3CurGatherQuantity: TFloatField
+      FieldName = 'CurGatherQuantity'
+    end
+    object cdsCustom3CurGatherTotalPrice: TFloatField
+      FieldName = 'CurGatherTotalPrice'
+    end
+  end
+end

文件差异内容过多而无法显示
+ 1192 - 0
DataModules/ReportMemoryDm/rmZhongKaiDm.pas


+ 18 - 3
DataModules/SearchDm.dfm

@@ -51,21 +51,33 @@ object SearchData: TSearchData
       item
       item
         Name = 'CompleteRate'
         Name = 'CompleteRate'
         DataType = ftFloat
         DataType = ftFloat
+      end
+      item
+        Name = 'SerialNo'
+        DataType = ftInteger
+      end>
+    IndexDefs = <
+      item
+        Name = 'DEFAULT_ORDER'
+      end
+      item
+        Name = 'CHANGEINDEX'
       end>
       end>
-    IndexDefs = <>
+    IndexFieldNames = 'SerialNo'
     Params = <>
     Params = <>
     StoreDefs = True
     StoreDefs = True
     Left = 64
     Left = 64
     Top = 32
     Top = 32
     Data = {
     Data = {
-      F00000009619E0BD01000000180000000A000000000003000000F00002494404
+      010100009619E0BD01000000180000000B000000000003000000010102494404
       0001000000000004436F64650100490000000100055749445448020002003200
       0001000000000004436F64650100490000000100055749445448020002003200
       06425F436F64650100490000000100055749445448020002001400044E616D65
       06425F436F64650100490000000100055749445448020002001400044E616D65
       02004A000000010005574944544802000200900105556E69747301004A000000
       02004A000000010005574944544802000200900105556E69747301004A000000
       0100055749445448020002002800055072696365080004000000000008517561
       0100055749445448020002002800055072696365080004000000000008517561
       6E7469747908000400000000000D43757251635175616E746974790800040000
       6E7469747908000400000000000D43757251635175616E746974790800040000
       000000114164644761746865725175616E7469747908000400000000000C436F
       000000114164644761746865725175616E7469747908000400000000000C436F
-      6D706C6574655261746508000400000000000000}
+      6D706C6574655261746508000400000000000853657269616C4E6F0400010000
+      0000000000}
     object cdsSearchID: TIntegerField
     object cdsSearchID: TIntegerField
       FieldName = 'ID'
       FieldName = 'ID'
     end
     end
@@ -102,5 +114,8 @@ object SearchData: TSearchData
     object cdsSearchCompleteRate: TFloatField
     object cdsSearchCompleteRate: TFloatField
       FieldName = 'CompleteRate'
       FieldName = 'CompleteRate'
     end
     end
+    object cdsSearchSerialNo: TIntegerField
+      FieldName = 'SerialNo'
+    end
   end
   end
 end
 end

+ 43 - 1
DataModules/SearchDm.pas

@@ -20,6 +20,7 @@ type
     cdsSearchCurQcQuantity: TFloatField;
     cdsSearchCurQcQuantity: TFloatField;
     cdsSearchPrice: TFloatField;
     cdsSearchPrice: TFloatField;
     cdsSearchCompleteRate: TFloatField;
     cdsSearchCompleteRate: TFloatField;
+    cdsSearchSerialNo: TIntegerField;
     procedure cdsSearchQuantityGetText(Sender: TField; var Text: String;
     procedure cdsSearchQuantityGetText(Sender: TField; var Text: String;
       DisplayText: Boolean);
       DisplayText: Boolean);
   private
   private
@@ -33,6 +34,7 @@ type
     procedure SearchKeyword(const AKeyword: string);
     procedure SearchKeyword(const AKeyword: string);
     procedure SearchOverRange;
     procedure SearchOverRange;
     procedure SearchBelowRange;
     procedure SearchBelowRange;
+    procedure SearchRelaFile;
 
 
     procedure LocateCurrent(ALocateType: TLocateType);
     procedure LocateCurrent(ALocateType: TLocateType);
 
 
@@ -140,7 +142,8 @@ begin
       begin
       begin
         vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.Items[iNode]);
         vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.Items[iNode]);
         if (Pos(AKeyword, vNode.Rec.B_Code.AsString) > 0) or
         if (Pos(AKeyword, vNode.Rec.B_Code.AsString) > 0) or
-            (Pos(AKeyword, vNode.Rec.Name.AsString) > 0) then
+            (Pos(AKeyword, vNode.Rec.Name.AsString) > 0) or
+            (Pos(AKeyword, vNode.Rec.Code.AsString) > 0) then
           AddSearchResult(vNode);
           AddSearchResult(vNode);
       end;
       end;
     end;
     end;
@@ -212,4 +215,43 @@ begin
   end;
   end;
 end;
 end;
 
 
+procedure TSearchData.SearchRelaFile;
+
+  function HasRelaFile(vNode: TMeasureBillsIDTreeNode): Boolean;
+  var
+    i: Integer;
+  begin
+    Result := False;
+    with TProjectData(FProjectData) do
+      for i := 0 to AttachmentData.Count - 1 do
+      begin
+        if (AttachmentData[i].BillID = vNode.Rec.ID.AsInteger) and (AttachmentData[i].Phase = PhaseIndex) then
+        begin
+          Result := True;
+          Break;
+        end;
+      end;
+  end;
+
+var
+  i: Integer;
+  vNode: TMeasureBillsIDTreeNode;
+begin
+  cdsSearch.DisableControls;
+  try
+    cdsSearch.EmptyDataSet;
+    with TProjectData(FProjectData).BillsMeasureData do
+    begin
+      for i := 0 to BillsMeasureTree.Count - 1 do
+      begin
+        vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.Items[i]);
+        if vNode.Rec.HasAttachment.AsBoolean or HasRelaFile(vNode) then
+          AddSearchResult(vNode);
+      end;
+    end;
+  finally
+    cdsSearch.EnableControls;
+  end;
+end;
+
 end.
 end.

+ 1 - 0
DataModules/StageDm.dfm

@@ -10,6 +10,7 @@ object StageData: TStageData
   end
   end
   object sddStage: TsdDataSet
   object sddStage: TsdDataSet
     Active = False
     Active = False
+    Filtered = False
     Provider = sdpStage
     Provider = sdpStage
     BeforeValueChange = sddStageBeforeValueChange
     BeforeValueChange = sddStageBeforeValueChange
     AfterValueChanged = sddStageAfterValueChanged
     AfterValueChanged = sddStageAfterValueChanged

+ 49 - 1
DataModules/StageDm.pas

@@ -68,6 +68,7 @@ type
     function GetActive: Boolean;
     function GetActive: Boolean;
     procedure SetTableName(const Value: string);
     procedure SetTableName(const Value: string);
     function GetChapterStageGather(AChapter: Integer): Double;
     function GetChapterStageGather(AChapter: Integer): Double;
+    function GetPriceMargin(AType, AIndex: Integer): Double;
   public
   public
     constructor Create(APhaseData: TObject);
     constructor Create(APhaseData: TObject);
     destructor Destroy; override;
     destructor Destroy; override;
@@ -130,6 +131,8 @@ type
     property OtherProjectFee[AType, AIndex: Integer]: Double read GetOtherProjectFee;
     property OtherProjectFee[AType, AIndex: Integer]: Double read GetOtherProjectFee;
     // 本期结算价
     // 本期结算价
     property StageSettlement[AType, AIndex: Integer]: Double read GetStageSettlement;
     property StageSettlement[AType, AIndex: Integer]: Double read GetStageSettlement;
+    // 价差
+    property PriceMargin[AType, AIndex: Integer]: Double read GetPriceMargin;
 
 
     // 100/200/.../900章本期完成计量
     // 100/200/.../900章本期完成计量
     property ChapterStageGather[AChapter: Integer]: Double read GetChapterStageGather;
     property ChapterStageGather[AChapter: Integer]: Double read GetChapterStageGather;
@@ -380,6 +383,45 @@ begin
 end;
 end;
 
 
 procedure TStageData.sddStageAfterValueChanged(AValue: TsdValue);
 procedure TStageData.sddStageAfterValueChanged(AValue: TsdValue);
+
+  function LeafCurHasMeasure(ANode: TMeasureBillsIDTreeNode): Boolean;
+  begin
+    Result := Assigned(ANode.StageRec) and
+       ((ANode.StageRec.DealQuantity.AsFloat <> 0) or
+        (ANode.StageRec.DealTotalPrice.AsFloat <> 0) or
+        (ANode.StageRec.QcQuantity.AsFloat <> 0) or
+        (ANode.StageRec.QcTotalPrice.AsFloat <> 0) or
+        (ANode.StageRec.PcQuantity.AsFloat <> 0) or
+        (ANode.StageRec.PcTotalPrice.AsFloat <> 0));
+  end;
+
+  function ParentCurHasMeasure(ANode: TBillsIDTreeNode): Boolean;
+  var
+    i: Integer;
+    vChild: TBillsIDTreeNode;
+  begin
+    Result := False;
+    for i := 0 to ANode.ChildCount - 1 do
+    begin
+      vChild := TMeasureBillsIDTreeNode(ANode.ChildNodes[i]);
+      if vChild.Rec.CurHasMeasure.AsBoolean then
+      begin
+        Result := True;
+        Break;
+      end;
+    end;
+  end;
+
+  procedure RecalcNodeCurHasMeasure(ANode: TBillsIDTreeNode);
+  begin
+    if not Assigned(ANode) then Exit;
+    if ANode.HasChildren then
+      ANode.Rec.CurHasMeasure.AsBoolean := ParentCurHasMeasure(ANode)
+    else
+      ANode.Rec.CurHasMeasure.AsBoolean := LeafCurHasMeasure(TMeasureBillsIDTreeNode(ANode));
+    RecalcNodeCurHasMeasure(TBillsIDTreeNode(ANode.Parent));
+  end;
+
 var
 var
   iBillsID: Integer;
   iBillsID: Integer;
   stnNode: TsdIDTreeNode;
   stnNode: TsdIDTreeNode;
@@ -404,6 +446,8 @@ begin
   if (AValue.FieldName = 'DealQuantity') or
   if (AValue.FieldName = 'DealQuantity') or
      (AValue.FieldName = 'QcQuantity') then
      (AValue.FieldName = 'QcQuantity') then
     UpdateProjectGL(iBillsID);
     UpdateProjectGL(iBillsID);
+
+  RecalcNodeCurHasMeasure(TBillsIDTreeNode(stnNode));
 end;
 end;
 
 
 function TStageData.GetMainBillsTree: TBillsIDTree;
 function TStageData.GetMainBillsTree: TBillsIDTree;
@@ -678,7 +722,6 @@ var
   ChildNode: TMeasureBillsIDTreeNode;
   ChildNode: TMeasureBillsIDTreeNode;
   fDeal, fQc, fPc, fTotal, fPM: Double;
   fDeal, fQc, fPc, fTotal, fPM: Double;
 begin
 begin
-  if not Assigned(TMeasureBillsIDTreeNode(ANode.FirstChild).StageRec) then Exit;
   if not Assigned(ANode.StageRec) then
   if not Assigned(ANode.StageRec) then
     ANode.StageRec := AddStageRecord(ANode.ID);
     ANode.StageRec := AddStageRecord(ANode.ID);
 
 
@@ -992,4 +1035,9 @@ begin
   UpdateComplete(ABillsID, fQuantity, fTotalPrice);
   UpdateComplete(ABillsID, fQuantity, fTotalPrice);
 end;
 end;
 
 
+function TStageData.GetPriceMargin(AType, AIndex: Integer): Double;
+begin
+  Result := GetTotalPrice(iPriceMarginID, AType, AIndex);
+end;
+
 end.
 end.

+ 6 - 4
Dprs/CSL/Measure_Cloud.dof

@@ -111,11 +111,11 @@ ProjectLang=
 RootDir=D:\Program Files\Borland\Delphi7\Bin\
 RootDir=D:\Program Files\Borland\Delphi7\Bin\
 [Version Info]
 [Version Info]
 IncludeVerInfo=1
 IncludeVerInfo=1
-AutoIncBuild=1
+AutoIncBuild=0
 MajorVer=3
 MajorVer=3
 MinorVer=1
 MinorVer=1
-Release=3
-Build=1161
+Release=7
+Build=2246
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,13 +126,15 @@ CodePage=936
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横结算决算计量一体化云版
 FileDescription=纵横结算决算计量一体化云版
-FileVersion=3.1.3.1161
+FileVersion=3.1.7.2246
 InternalName=
 InternalName=
 LegalCopyright=
 LegalCopyright=
 LegalTrademarks=
 LegalTrademarks=
 OriginalFilename=
 OriginalFilename=
 ProductName=
 ProductName=
 ProductVersion=1.0.0.0
 ProductVersion=1.0.0.0
+[Excluded Packages]
+c:\program files (x86)\borland\delphi7\Bin\DBWEBXPRT.BPL=Borland Web Wizard Package
 [HistoryLists\hlConditionals]
 [HistoryLists\hlConditionals]
 Count=2
 Count=2
 Item0=_mCloud;_mEncrypt1;_Test;_mLoginNoPW1
 Item0=_mCloud;_mEncrypt1;_Test;_mLoginNoPW1

+ 15 - 1
Dprs/CSL/Measure_Cloud.dpr

@@ -233,7 +233,21 @@ uses
   ProjGatherProperties in '..\..\ProjGather\ProjGatherProperties.pas',
   ProjGatherProperties in '..\..\ProjGather\ProjGatherProperties.pas',
   rpgDealPayDm in '..\..\Report\ProjGather\rpgDealPayDm.pas' {rgpDealPayData: TDataModule},
   rpgDealPayDm in '..\..\Report\ProjGather\rpgDealPayDm.pas' {rgpDealPayData: TDataModule},
   superobject in '..\..\Units\superobject\superobject.pas',
   superobject in '..\..\Units\superobject\superobject.pas',
-  superxmlparser in '..\..\Units\superobject\superxmlparser.pas';
+  superxmlparser in '..\..\Units\superobject\superxmlparser.pas',
+  MeasureGatherZJJL in '..\..\Units\MeasureGatherZJJL.pas',
+  stgExcelExport in '..\..\SubTenderGather\stgExcelExport.pas',
+  stgGather in '..\..\SubTenderGather\stgGather.pas',
+  stgGatherCacheData in '..\..\SubTenderGather\stgGatherCacheData.pas',
+  stgGatherControl in '..\..\SubTenderGather\stgGatherControl.pas',
+  stgGatherDm in '..\..\SubTenderGather\stgGatherDm.pas' {stgGatherData: TDataModule},
+  stgGatherUtils in '..\..\SubTenderGather\stgGatherUtils.pas',
+  stgResultFrm in '..\..\SubTenderGather\stgResultFrm.pas' {stgResultForm},
+  stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
+  stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
+  stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas';
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/CSL/Measure_Cloud.res


+ 352 - 0
Dprs/Debug/Measure_Cloud_Debug.dpr

@@ -0,0 +1,352 @@
+
+program Measure_Cloud_Debug;
+
+{$R '..\..\res\uac.res' '..\..\res\uac.rc'}
+
+uses
+  Windows,
+  ShareMem,
+  Forms,
+  Controls,
+  MainFrm in '..\..\Forms\MainFrm.pas' {MainForm},
+  ProjectManagerFme in '..\..\Frames\ProjectManagerFme.pas' {ProjectManagerFrame: TFrame},
+  UtilMethods in '..\..\Units\UtilMethods.pas',
+  ProjectManagerDm in '..\..\DataModules\ProjectManagerDm.pas' {ProjectManagerData: TDataModule},
+  Connections in '..\..\Units\Connections.pas',
+  TransFile in '..\..\Units\TransFile.pas',
+  ZhAPI in '..\..\Units\ZhAPI.pas',
+  CompactDB in '..\..\Units\CompactDB.pas',
+  OpenProjectManager in '..\..\Units\OpenProjectManager.pas',
+  ProjectData in '..\..\Units\ProjectData.pas',
+  UpdateDataBase in '..\..\Units\UpdateDataBase.pas',
+  DataBaseTables in '..\..\Units\DataBaseTables.pas',
+  ConfigDoc in '..\..\Units\ConfigDoc.pas',
+  SupportUnit in '..\..\Units\SupportUnit.pas',
+  StandardLibs in '..\..\Units\StandardLibs.pas',
+  StandardLib in '..\..\Units\StandardLib.pas',
+  NewProjectFrm in '..\..\Forms\NewProjectFrm.pas' {NewProjectForm},
+  ProjectFme in '..\..\Frames\ProjectFme.pas' {ProjectFrame: TFrame},
+  StandardBillsDm in '..\..\DataModules\StandardBillsDm.pas' {StandardBillsData: TDataModule},
+  StandardBillsFme in '..\..\Frames\StandardBillsFme.pas' {StandardBillsFrame: TFrame},
+  StandardLibsFme in '..\..\Frames\StandardLibsFme.pas' {StandardLibsFrame: TFrame},
+  BillsDm in '..\..\DataModules\BillsDm.pas' {BillsData: TDataModule},
+  Globals in '..\..\Units\Globals.pas',
+  StageDm in '..\..\DataModules\StageDm.pas' {StageData: TDataModule},
+  ExcelImport in '..\..\Units\ExcelImport.pas',
+  CacheTree in '..\..\Units\CacheTree.pas',
+  MCacheTree in '..\..\Units\MCacheTree.pas',
+  ProjectPropertiesFrm in '..\..\Forms\ProjectPropertiesFrm.pas' {ProjectPropertiesForm},
+  ProjectProperty in '..\..\Units\ProjectProperty.pas',
+  FormulaCalc in '..\..\Units\FormulaCalc.pas',
+  BillsCommand in '..\..\Units\BillsCommand.pas',
+  PhaseData in '..\..\Units\PhaseData.pas',
+  PhaseProperty in '..\..\Units\PhaseProperty.pas',
+  BillsClipboard in '..\..\Units\BillsClipboard.pas',
+  ProjectCommands in '..\..\Units\ProjectCommands.pas',
+  PhaseCompareDm in '..\..\DataModules\PhaseCompareDm.pas' {PhaseCompareData: TDataModule},
+  PhaseCompareFme in '..\..\Frames\PhaseCompareFme.pas' {PhaseCompareFrame: TFrame},
+  OptionFrm in '..\..\Forms\OptionFrm.pas' {OptionForm},
+  DealPaymentDm in '..\..\DataModules\DealPaymentDm.pas' {DealPaymentData: TDataModule},
+  DealPaymentFme in '..\..\Frames\DealPaymentFme.pas' {DealPaymentFrame: TFrame},
+  PhasePayDm in '..\..\DataModules\PhasePayDm.pas' {PhasePayData: TDataModule},
+  ZJJLDm in '..\..\DataModules\ZJJLDm.pas' {ZJJLData: TDataModule},
+  BillsGatherDm in '..\..\DataModules\BillsGatherDm.pas' {BillsGatherData: TDataModule},
+  BillsGatherFme in '..\..\Frames\BillsGatherFme.pas' {BillsGatherFrame: TFrame},
+  LoginFrm in '..\..\Forms\LoginFrm.pas' {LoginFrm},
+  PHPWebDm in '..\..\DataModules\PHPWebDm.pas' {PHPWeb: TDataModule},
+  MD5Unit in '..\..\Units\MD5Unit.pas',
+  ConstUnit in '..\..\Units\ConstUnit.pas',
+  ExportExcel in '..\..\Units\ExportExcel.pas',
+  mEncryptEditions in '..\..\Encrypt\mEncryptEditions.pas',
+  mEncryptUnit in '..\..\Encrypt\mEncryptUnit.pas',
+  CryptUtils in '..\..\Encrypt\CryptUtils.pas',
+  EncryptDog in '..\..\Encrypt\EncryptDog.pas',
+  mEncryptPWD in '..\..\Encrypt\mEncryptPWD.pas',
+  mEncryptTypes in '..\..\Encrypt\mEncryptTypes.pas',
+  mR1Encrypt in '..\..\Encrypt\mR1Encrypt.pas',
+  mS4Utils in '..\..\Encrypt\mS4Utils.pas',
+  mSNSEncrypt in '..\..\Encrypt\mSNSEncrypt.pas',
+  Rockey1 in '..\..\Encrypt\Rockey1.pas',
+  mConnectEncrypt in '..\..\Encrypt\NetClient\mConnectEncrypt.pas',
+  FindUserFrm in '..\..\Forms\FindUserFrm.pas' {FindUserForm},
+  CslJson in '..\..\Units\CslJson.pas',
+  OrderCheckerFme in '..\..\Frames\OrderCheckerFme.pas' {OrderCheckerFrame: TFrame},
+  CheckerFme in '..\..\Frames\CheckerFme.pas' {CheckerFrame: TFrame},
+  WebNewTenderFrm in '..\..\Forms\WebNewTenderFrm.pas' {WebNewTenderForm},
+  ScFileArchiver in '..\..\Encrypt\ScFileArchiver.pas',
+  SearchDm in '..\..\DataModules\SearchDm.pas' {SearchData: TDataModule},
+  DealBillsDm in '..\..\DataModules\DealBillsDm.pas' {DealBillsData: TDataModule},
+  BGLDm in '..\..\DataModules\BGLDm.pas' {BGLData: TDataModule},
+  StaffDm in '..\..\DataModules\StaffDm.pas' {StaffData: TDataModule},
+  BillsCompileDm in '..\..\DataModules\BillsCompileDm.pas' {BillsCompileData: TDataModule},
+  BillsMeasureDm in '..\..\DataModules\BillsMeasureDm.pas' {BillsMeasureData: TDataModule},
+  ReportManager in '..\..\Units\ReportManager.pas',
+  BGLSelectFrm in '..\..\Forms\BGLSelectFrm.pas' {BGLSelectForm},
+  BillsCompileFme in '..\..\Frames\BillsCompileFme.pas' {BillsCompileFrame: TFrame},
+  BillsMeasureFme in '..\..\Frames\BillsMeasureFme.pas' {BillsMeasureFrame: TFrame},
+  BatchReplaceBillsFrm in '..\..\Forms\BatchReplaceBillsFrm.pas' {BatchReplaceBillsForm},
+  ZJJLFme in '..\..\Frames\ZJJLFme.pas' {ZJJLFrame: TFrame},
+  BGLFme in '..\..\Frames\BGLFme.pas' {BGLFrame: TFrame},
+  MergeTextFrm in '..\..\Forms\MergeTextFrm.pas' {MergeTextForm},
+  ReportsFrm in '..\..\Forms\ReportsFrm.pas' {ReportsForm},
+  ReportAdjustFrm in '..\..\Forms\ReportAdjustFrm.pas' {ReportAdjustForm},
+  SearchFme in '..\..\Frames\SearchFme.pas' {SearchFrame: TFrame},
+  AuthFrm in '..\..\Forms\AuthFrm.pas' {AuthorizeForm},
+  AboutFrm in '..\..\Forms\AboutFrm.pas' {AboutForm},
+  ImportExcelHintFrm in '..\..\Forms\ImportExcelHintFrm.pas' {ImportExcelHintForm},
+  PasswordInputFrm in '..\..\Forms\PasswordInputFrm.pas' {PasswordInputForm},
+  BatchInsertBillsFrm in '..\..\Forms\BatchInsertBillsFrm.pas' {BatchInsertBillsForm},
+  MainDataListDm in '..\..\DataModules\MainDataListDm.pas' {MainListData: TDataModule},
+  mProgressFrm in '..\..\Forms\mProgressFrm.pas' {mProgress},
+  rmGclBillsBGDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsBGDm.pas' {rmGclBillsBGData: TDataModule},
+  rmGclBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsCompareDm.pas' {rmGclBillsCompareData: TDataModule},
+  rmBGLExecutionDm in '..\..\DataModules\ReportMemoryDm\rmBGLExecutionDm.pas' {rmBGLExecutionData: TDataModule},
+  rmBillsGatherDm in '..\..\DataModules\ReportMemoryDm\rmBillsGatherDm.pas' {rmBillsGatherData: TDataModule},
+  rmFxBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsAddDm.pas' {rmFxBillsAddData: TDataModule},
+  rmFxBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsCompareDm.pas' {rmFxBillsCompareData: TDataModule},
+  rmGclBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAddDm.pas' {rmGclBillsAddData: TDataModule},
+  rmGridHeaderDm in '..\..\DataModules\ReportMemoryDm\rmGridHeaderDm.pas' {rmGridHeaderData: TDataModule},
+  rmCacheData in '..\..\DataModules\ReportMemoryDm\rmCacheData.pas',
+  rmSelectProjectFrm in '..\..\Forms\rmSelectProjectFrm.pas' {ProjectSelectForm},
+  ConditionalDefines in '..\..\Units\ConditionalDefines.pas',
+  ProgressHintFrm in '..\..\Forms\ProgressHintFrm.pas' {ProgressHintForm},
+  CheckAndClearFrm in '..\..\Forms\CheckAndClearFrm.pas' {CheckAndClearForm},
+  rmGclBillsAuditCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAuditCompareDm.pas' {rmGclBillsAuditCompareData: TDataModule},
+  rmTestFrm in '..\..\DataModules\ReportMemoryDm\rmTestFrm.pas' {rmTestForm},
+  DealBillsFrm in '..\..\Forms\DealBillsFrm.pas' {DealBillsForm},
+  TenderBackupFrm in '..\..\Forms\TenderBackupFrm.pas' {TenderBackupForm},
+  TenderBackupDm in '..\..\DataModules\TenderBackupDm.pas' {TenderBackupData: TDataModule},
+  BillsBookmarkDm in '..\..\DataModules\BillsBookmarkDm.pas' {BillsBookmarkData: TDataModule},
+  BookmarkFme in '..\..\Frames\BookmarkFme.pas' {BookmarkFrame: TFrame},
+  rmDealInfosDm in '..\..\DataModules\ReportMemoryDm\rmDealInfosDm.pas' {rmDealInfosData: TDataModule},
+  rmXmjBGLDetailDm in '..\..\DataModules\ReportMemoryDm\rmXmjBGLDetailDm.pas' {rmXmjBGLDetailData: TDataModule},
+  WelcomeFrm in '..\..\Forms\WelcomeFrm.pas' {WelcomeForm},
+  rmOtherReport1Dm in '..\..\DataModules\ReportMemoryDm\rmOtherReport1Dm.pas' {rmOtherReport1Data: TDataModule},
+  CheckerMemoFrm in '..\..\Forms\CheckerMemoFrm.pas' {CheckerMemoForm},
+  CslHint in '..\..\Units\CslHint.pas',
+  IPFrm in '..\..\Forms\IPFrm.pas' {IPForm},
+  TenderBackupManager in '..\..\Units\TenderBackupManager.pas',
+  UpFileManageUnit in '..\..\Units\UpFileManageUnit.pas',
+  UpFileFrame in '..\..\Forms\UpFileFrame.pas',
+  UpFileManageFrame in '..\..\Forms\UpFileManageFrame.pas',
+  SheetSelectFrm in '..\..\Forms\SheetSelectFrm.pas' {SheetSelectForm},
+  ReportInteractInfo in '..\..\Units\ReportInteractInfo.pas',
+  Checker in '..\..\Units\Checker.pas',
+  AuditSelectFrm in '..\..\Forms\ReportInteractFrms\AuditSelectFrm.pas' {AuditSelctForm},
+  DealBillsFme in '..\..\Frames\DealBillsFme.pas' {DealBillsFrame: TFrame},
+  rmGclBillsPlaneDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsPlaneDm.pas' {rmGclBillsPlaneData: TDataModule},
+  StageCompareDm in '..\..\DataModules\StageCompareDm.pas' {StageCompareData: TDataModule},
+  mDataRecord in '..\..\Units\mDataRecord.pas',
+  BGLClipboard in '..\..\Units\BGLClipboard.pas',
+  rmMentalCustomized1Dm in '..\..\DataModules\ReportMemoryDm\rmMentalCustomized1Dm.pas' {rmMentalCustomized1Data: TDataModule},
+  rmGcl_XmjBillsDm in '..\..\DataModules\ReportMemoryDm\rmGcl_XmjBillsDm.pas' {rmGcl_XmjBillsData: TDataModule},
+  rmCustomized2Dm in '..\..\DataModules\ReportMemoryDm\rmCustomized2Dm.pas' {rmCustomized2Data: TDataModule},
+  CalcDecimal in '..\..\Units\CalcDecimal.pas',
+  BillsPasteSelectFrm in '..\..\Forms\BillsPasteSelectFrm.pas' {BillsPasteSelectForm},
+  DetailExcelImport in '..\..\Units\DetailExcelImport.pas',
+  mProgressProFrm in '..\..\Forms\mProgressProFrm.pas' {ProgressProForm},
+  rmHaBaiCustomizedDm in '..\..\DataModules\ReportMemoryDm\rmHaBaiCustomizedDm.pas' {rmHaBaiCustomizedData: TDataModule},
+  ProjectGLDm in '..\..\DataModules\ProjectGLDm.pas' {ProjectGLData: TDataModule},
+  PriceMarginBillsDm in '..\..\DataModules\PriceMarginBillsDm.pas' {PriceMarginBillsData: TDataModule},
+  GclBillsGatherModel in '..\..\Units\GclBillsGatherModel.pas',
+  DetailGLDm in '..\..\DataModules\DetailGLDm.pas' {DetailGLData: TDataModule},
+  PriceMarginFme in '..\..\Frames\PriceMarginFme.pas' {PriceMarginFrame: TFrame},
+  ProjectGLFme in '..\..\Frames\ProjectGLFme.pas' {ProjectGLFrame: TFrame},
+  SelectDetailGLsFrm in '..\..\Forms\SelectDetailGLsFrm.pas' {SelectDetailGLsForm},
+  DealPayPlanFrm in '..\..\Forms\DealPayPlanFrm.pas' {DealPayPlanForm},
+  BaseClipboard in '..\..\Units\BaseClipboard.pas',
+  mPegFilter in '..\..\Units\mPegFilter.pas',
+  tpBaseGatherData in '..\..\TenderPartition\tpBaseGatherData.pas',
+  tpGatherGcl in '..\..\TenderPartition\tpGatherGcl.pas',
+  tpGatherTree in '..\..\TenderPartition\tpGatherTree.pas',
+  tpMainData in '..\..\TenderPartition\tpMainData.pas',
+  tpMainFrm in '..\..\TenderPartition\tpMainFrm.pas' {tpMainForm},
+  tpNoPegDm in '..\..\TenderPartition\tpNoPegDm.pas' {tpNoPegData: TDataModule},
+  tpPartTender in '..\..\TenderPartition\tpPartTender.pas',
+  tpPartTenderFme in '..\..\TenderPartition\tpPartTenderFme.pas' {tpPartTenderFrame: TFrame},
+  tpPartTenderSet in '..\..\TenderPartition\tpPartTenderSet.pas',
+  tpPartTenderSetFme in '..\..\TenderPartition\tpPartTenderSetFme.pas' {tpPartTenderSetFrame: TFrame},
+  tpPeg in '..\..\TenderPartition\tpPeg.pas',
+  tpPeg_GclDm in '..\..\TenderPartition\tpPeg_GclDm.pas' {tpPeg_GclData: TDataModule},
+  tpPeg_GclFme in '..\..\TenderPartition\tpPeg_GclFme.pas' {tpPeg_GclFrame: TFrame},
+  tpPegBlock in '..\..\TenderPartition\tpPegBlock.pas',
+  tpPegGclGatherDm in '..\..\TenderPartition\tpPegGclGatherDm.pas' {tpPegGclGatherData: TDataModule},
+  tpPegGclGatherFme in '..\..\TenderPartition\tpPegGclGatherFme.pas' {tpPegGclGatherFrame: TFrame},
+  tpPegPartSettingFrm in '..\..\TenderPartition\tpPegPartSettingFrm.pas' {tpPegPartSettingForm},
+  tpPricePartSettingFrm in '..\..\TenderPartition\tpPricePartSettingFrm.pas' {tpPricePartSettingForm},
+  tpSelectTenderDm in '..\..\TenderPartition\tpSelectTenderDm.pas' {tpSelectTenderData: TDataModule},
+  tpSelectTenderNode in '..\..\TenderPartition\tpSelectTenderNode.pas',
+  tpSelectTendersFrm in '..\..\TenderPartition\tpSelectTendersFrm.pas' {SelectTendersForm},
+  tpTrialPegInputFrm in '..\..\TenderPartition\tpTrialPegInputFrm.pas' {TrialPegInputForm},
+  PriceMarginBillsFme in '..\..\Frames\PriceMarginBillsFme.pas' {PriceMarginBillsFrame: TFrame},
+  ReportPrepare in '..\..\Report\ReportPrepare.pas',
+  rdpBillsGatherDm in '..\..\Report\DataPrepare\rdpBillsGatherDm.pas' {rdpBillsGatherData: TDataModule},
+  rdpTables in '..\..\Report\DataPrepare\rdpTables.pas',
+  ColVisibleManager in '..\..\Units\ColVisibleManager.pas',
+  ReportConnection in '..\..\Report\ReportConnection.pas',
+  rgpGatherControl in '..\..\Report\ProjGather\rgpGatherControl.pas',
+  rpgBillsCalcDm in '..\..\Report\ProjGather\rpgBillsCalcDm.pas' {rpgBillsCalcData: TDataModule},
+  rpgBillsDm in '..\..\Report\ProjGather\rpgBillsDm.pas' {rpgBillsData: TDataModule},
+  rpgGatherControl in '..\..\Report\ProjGather\rpgGatherControl.pas',
+  rpgGatherData in '..\..\Report\ProjGather\rpgGatherData.pas',
+  rpgGatherProjDm in '..\..\Report\ProjGather\rpgGatherProjDm.pas' {rpgGatherProjData: TDataModule},
+  rProjGatherTables in '..\..\Report\ProjGather\rProjGatherTables.pas',
+  ProjGatherTree in '..\..\ProjGather\ProjGatherTree.pas',
+  ProjGather in '..\..\ProjGather\ProjGather.pas',
+  CalcData in '..\..\Units\CalcData.pas',
+  GatherProjInfo in '..\..\ProjGather\GatherProjInfo.pas',
+  ProjGatherCalcData in '..\..\ProjGather\ProjGatherCalcData.pas',
+  ProjGatherSelectFrm in '..\..\ProjGather\ProjGatherSelectFrm.pas' {ProjGatherSelectForm},
+  DealBillsExcelImport in '..\..\Units\DealBillsExcelImport.pas',
+  ExcelImport_Bills in '..\..\Units\ExcelImport_Bills.pas',
+  ExcelImport_GclBills in '..\..\Units\ExcelImport_GclBills.pas',
+  DbTreeImport in '..\..\Units\DbTreeImport.pas',
+  DbTreeDm in '..\..\DataModules\DbTreeDm.pas' {DbTreeData: TDataModule},
+  DebugUsers in '..\..\Units\DebugUsers.pas',
+  FileDownLoadFrm in '..\..\Forms\FileDownLoadFrm.pas' {FileDownLoadForm},
+  OtherMeasurePhaseDm in '..\..\DataModules\OtherMeasurePhaseDm.pas' {OtherMeasurePhaseData: TDataModule},
+  OtherMeasureOnceDm in '..\..\DataModules\OtherMeasureOnceDm.pas' {OtherMeasureOnceData: TDataModule},
+  OMPhaseRecord in '..\..\Units\DataRecord\OMPhaseRecord.pas',
+  OtherMeasureFme in '..\..\Frames\OtherMeasureFme.pas' {OtherMeasureFrame: TFrame},
+  ProjGatherSelectFme in '..\..\ProjGather\ProjGatherSelectFme.pas' {ProjGatherSelectFrame: TFrame},
+  rpgZoneGatherControl in '..\..\Report\ProjGather\Zone\rpgZoneGatherControl.pas',
+  rpgZoneProjGatherSelectFrm in '..\..\Report\ProjGather\Zone\rpgZoneProjGatherSelectFrm.pas' {rpgZoneProjGatherSelectForm},
+  UpFileSelectOnLineFrm in '..\..\Forms\UpFileSelectOnLineFrm.pas' {UpFileSelectOnLineForm},
+  LogUtils in '..\..\Units\LogUtils.pas',
+  ReportPdfHelper in '..\..\Units\ReportPdfHelper.pas',
+  SelectOnlineSignPhaseFrm in '..\..\Forms\SelectOnlineSignPhaseFrm.pas' {SelectOnlineSignPhaseForm},
+  SignOnlineReportsFrm in '..\..\Forms\SignOnlineReportsFrm.pas' {SignOnlineReportsForm},
+  SignReports in '..\..\Units\SignReports.pas',
+  VirtualTrees in '..\..\..\SmartCost\Components\virtualtree\VirtualTrees.pas',
+  TemplateManagerHelper in '..\..\Units\TemplateManagerHelper.pas',
+  RenameSignReportFrm in '..\..\Forms\RenameSignReportFrm.pas' {RenameSignReportForm},
+  rmWeiWuZjjlGatherDm in '..\..\DataModules\ReportMemoryDm\rmWeiWuZjjlGatherDm.pas' {rmWeiWuZjjlGatherData: TDataModule},
+  SetGuestFrm in '..\..\Forms\SetGuestFrm.pas' {SetGuestForm},
+  ProjGatherDealPay in '..\..\ProjGather\ProjGatherDealPay.pas',
+  ProjGatherProperties in '..\..\ProjGather\ProjGatherProperties.pas',
+  rpgDealPayDm in '..\..\Report\ProjGather\rpgDealPayDm.pas' {rgpDealPayData: TDataModule},
+  superobject in '..\..\Units\superobject\superobject.pas',
+  ReportManagerFrm in '..\..\Forms\ReportManagerFrm.pas',
+  ReportManagerDM in '..\..\DataModules\ReportManagerDM.pas' {Reports: TDataModule},
+  ReportHistoryFrm in '..\..\Forms\ReportHistoryFrm.pas' {ReportHistoryForm},
+  MeasureGatherZJJL in '..\..\Units\MeasureGatherZJJL.pas',
+  stgGatherControl in '..\..\SubTenderGather\stgGatherControl.pas',
+  stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
+  stgGatherCacheData in '..\..\SubTenderGather\stgGatherCacheData.pas',
+  stgGatherDm in '..\..\SubTenderGather\stgGatherDm.pas' {stgGatherData: TDataModule},
+  stgResultFrm in '..\..\SubTenderGather\stgResultFrm.pas' {stgResultForm},
+  stgGatherUtils in '..\..\SubTenderGather\stgGatherUtils.pas',
+  stgExcelExport in '..\..\SubTenderGather\stgExcelExport.pas',
+  stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
+  stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  stgGather in '..\..\SubTenderGather\stgGather.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  BillsTree in '..\..\Units\BillsTree.pas',
+  BillsPosTree in '..\..\Units\BillsPosTree.pas',
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule};
+
+{$R *.res}
+
+var
+  Mutex: THandle;
+  IPForm: TIPForm;
+
+begin
+  Mutex := CreateMutex(nil, True, G_AppHandleName);
+
+  if GetLastError = ERROR_ALREADY_EXISTS then
+    Application.MessageBox('程序正在运行, 请勿重复打开该软件!', '系统提示', MB_OK + MB_ICONINFORMATION)
+  else
+  begin
+    Application.CreateHandle;
+    Application.Initialize;
+    Application.Title := '纵横公路工程结算决算计量一体化软件云版';
+    {$IFDEF _mCloud}
+      IPForm := TIPForm.Create(nil);
+      try
+        if not IPForm.HasIP then
+        begin
+          IPForm.ShowModal;
+          if IPForm.ModalResult <> mrOK then
+          begin
+            Application.Terminate;
+            Exit;
+          end;
+        end;
+      finally
+        IPForm.Free;
+      end;
+
+      {$IFDEF _mLoginNoPW}
+      sName := PHPWeb.GetNameFromURLProtocol(ParamStr(1));
+
+      if sName = '' then         // 表示手工运行的
+      begin
+        Application.MessageBox('请从 项目管理信息平台 打开软件。', '系统提示', MB_OK + MB_ICONINFORMATION);
+        Application.Terminate;
+      end
+      else
+      begin
+        // For Test only!
+//        Application.MessageBox(PChar(ParamStr(1) + #10#13 + sName), '系统提示', MB_OK + MB_ICONINFORMATION);
+//        Application.Terminate;
+        if sName[1] = '%' then
+          sName := UTF8Decode(HttpDecode(sName));
+
+        case PHPWeb.Login(sName, '', 2, sInfo, sURL) of
+          ltLoginFail:
+          begin
+            Application.MessageBox('该用户尚未注册不能登录!', '操作提醒', MB_OK + MB_ICONWARNING);
+            Application.Terminate;
+          end;
+
+          ltUpdate:  // 升级
+          begin
+            if Application.MessageBox(PChar(sInfo), '系统提示', MB_OKCANCEL + MB_ICONQUESTION) = ID_OK then
+            begin
+              vFDForm := TFileDownLoadForm.Create(nil);
+              try
+                vFDForm.URL := sURL;
+                vFDForm.ShowModal;
+              finally
+                vFDForm.Free;
+              end;
+            end;
+            Application.Terminate;
+          end;
+
+          ltDisCon:
+          begin
+            Application.MessageBox('网络错误,请稍后重试!', '操作提醒', MB_OK + MB_ICONWARNING);
+            Application.Terminate;
+          end;
+
+        else
+          ;
+        end;  
+      end;
+
+      {$ELSE}
+      if not LoginForm then
+      begin
+        Application.Terminate;
+        Exit;
+      end;
+      {$ENDIF}
+      
+    {$ENDIF}
+
+    if CheckDogExists then
+    begin
+      Application.CreateForm(TMainForm, MainForm);
+  Application.CreateForm(TSetGuestForm, SetGuestForm);
+  end;
+    Application.Run;
+  end;
+
+  ReleaseMutex(Mutex);
+end.

+ 270 - 0
Dprs/Debug/Measure_Cloud_Debug_SCJT.dpr

@@ -0,0 +1,270 @@
+
+program Measure_Cloud_Debug_SCJT;
+
+{$R '..\..\res\uac.res' '..\..\res\uac.rc'}
+
+uses
+  Windows,
+  ShareMem,
+  Forms,
+  Controls,
+  MainFrm in '..\..\Forms\MainFrm.pas' {MainForm},
+  ProjectManagerFme in '..\..\Frames\ProjectManagerFme.pas' {ProjectManagerFrame: TFrame},
+  UtilMethods in '..\..\Units\UtilMethods.pas',
+  ProjectManagerDm in '..\..\DataModules\ProjectManagerDm.pas' {ProjectManagerData: TDataModule},
+  Connections in '..\..\Units\Connections.pas',
+  TransFile in '..\..\Units\TransFile.pas',
+  ZhAPI in '..\..\Units\ZhAPI.pas',
+  CompactDB in '..\..\Units\CompactDB.pas',
+  OpenProjectManager in '..\..\Units\OpenProjectManager.pas',
+  ProjectData in '..\..\Units\ProjectData.pas',
+  UpdateDataBase in '..\..\Units\UpdateDataBase.pas',
+  DataBaseTables in '..\..\Units\DataBaseTables.pas',
+  ConfigDoc in '..\..\Units\ConfigDoc.pas',
+  SupportUnit in '..\..\Units\SupportUnit.pas',
+  StandardLibs in '..\..\Units\StandardLibs.pas',
+  StandardLib in '..\..\Units\StandardLib.pas',
+  NewProjectFrm in '..\..\Forms\NewProjectFrm.pas' {NewProjectForm},
+  ProjectFme in '..\..\Frames\ProjectFme.pas' {ProjectFrame: TFrame},
+  StandardBillsDm in '..\..\DataModules\StandardBillsDm.pas' {StandardBillsData: TDataModule},
+  StandardBillsFme in '..\..\Frames\StandardBillsFme.pas' {StandardBillsFrame: TFrame},
+  StandardLibsFme in '..\..\Frames\StandardLibsFme.pas' {StandardLibsFrame: TFrame},
+  BillsDm in '..\..\DataModules\BillsDm.pas' {BillsData: TDataModule},
+  Globals in '..\..\Units\Globals.pas',
+  StageDm in '..\..\DataModules\StageDm.pas' {StageData: TDataModule},
+  ExcelImport in '..\..\Units\ExcelImport.pas',
+  CacheTree in '..\..\Units\CacheTree.pas',
+  MCacheTree in '..\..\Units\MCacheTree.pas',
+  ProjectPropertiesFrm in '..\..\Forms\ProjectPropertiesFrm.pas' {ProjectPropertiesForm},
+  ProjectProperty in '..\..\Units\ProjectProperty.pas',
+  FormulaCalc in '..\..\Units\FormulaCalc.pas',
+  BillsCommand in '..\..\Units\BillsCommand.pas',
+  PhaseData in '..\..\Units\PhaseData.pas',
+  PhaseProperty in '..\..\Units\PhaseProperty.pas',
+  BillsClipboard in '..\..\Units\BillsClipboard.pas',
+  BillsTree in '..\..\Units\BillsTree.pas',
+  ProjectCommands in '..\..\Units\ProjectCommands.pas',
+  PhaseCompareDm in '..\..\DataModules\PhaseCompareDm.pas' {PhaseCompareData: TDataModule},
+  PhaseCompareFme in '..\..\Frames\PhaseCompareFme.pas' {PhaseCompareFrame: TFrame},
+  OptionFrm in '..\..\Forms\OptionFrm.pas' {OptionForm},
+  DealPaymentDm in '..\..\DataModules\DealPaymentDm.pas' {DealPaymentData: TDataModule},
+  DealPaymentFme in '..\..\Frames\DealPaymentFme.pas' {DealPaymentFrame: TFrame},
+  PhasePayDm in '..\..\DataModules\PhasePayDm.pas' {PhasePayData: TDataModule},
+  ZJJLDm in '..\..\DataModules\ZJJLDm.pas' {ZJJLData: TDataModule},
+  BillsGatherDm in '..\..\DataModules\BillsGatherDm.pas' {BillsGatherData: TDataModule},
+  BillsGatherFme in '..\..\Frames\BillsGatherFme.pas' {BillsGatherFrame: TFrame},
+  LoginFrm in '..\..\Forms\LoginFrm.pas' {LoginFrm},
+  PHPWebDm in '..\..\DataModules\PHPWebDm.pas' {PHPWeb: TDataModule},
+  MD5Unit in '..\..\Units\MD5Unit.pas',
+  ConstUnit in '..\..\Units\ConstUnit.pas',
+  ExportExcel in '..\..\Units\ExportExcel.pas',
+  mEncryptEditions in '..\..\Encrypt\mEncryptEditions.pas',
+  mEncryptUnit in '..\..\Encrypt\mEncryptUnit.pas',
+  CryptUtils in '..\..\Encrypt\CryptUtils.pas',
+  EncryptDog in '..\..\Encrypt\EncryptDog.pas',
+  mEncryptPWD in '..\..\Encrypt\mEncryptPWD.pas',
+  mEncryptTypes in '..\..\Encrypt\mEncryptTypes.pas',
+  mR1Encrypt in '..\..\Encrypt\mR1Encrypt.pas',
+  mS4Utils in '..\..\Encrypt\mS4Utils.pas',
+  mSNSEncrypt in '..\..\Encrypt\mSNSEncrypt.pas',
+  Rockey1 in '..\..\Encrypt\Rockey1.pas',
+  mConnectEncrypt in '..\..\Encrypt\NetClient\mConnectEncrypt.pas',
+  FindUserFrm in '..\..\Forms\FindUserFrm.pas' {FindUserForm},
+  CslJson in '..\..\Units\CslJson.pas',
+  OrderCheckerFme in '..\..\Frames\OrderCheckerFme.pas' {OrderCheckerFrame: TFrame},
+  CheckerFme in '..\..\Frames\CheckerFme.pas' {CheckerFrame: TFrame},
+  WebNewTenderFrm in '..\..\Forms\WebNewTenderFrm.pas' {WebNewTenderForm},
+  ScFileArchiver in '..\..\Encrypt\ScFileArchiver.pas',
+  SearchDm in '..\..\DataModules\SearchDm.pas' {SearchData: TDataModule},
+  DealBillsDm in '..\..\DataModules\DealBillsDm.pas' {DealBillsData: TDataModule},
+  BGLDm in '..\..\DataModules\BGLDm.pas' {BGLData: TDataModule},
+  StaffDm in '..\..\DataModules\StaffDm.pas' {StaffData: TDataModule},
+  BillsCompileDm in '..\..\DataModules\BillsCompileDm.pas' {BillsCompileData: TDataModule},
+  BillsMeasureDm in '..\..\DataModules\BillsMeasureDm.pas' {BillsMeasureData: TDataModule},
+  ReportManager in '..\..\Units\ReportManager.pas',
+  BGLSelectFrm in '..\..\Forms\BGLSelectFrm.pas' {BGLSelectForm},
+  BillsCompileFme in '..\..\Frames\BillsCompileFme.pas' {BillsCompileFrame: TFrame},
+  BillsMeasureFme in '..\..\Frames\BillsMeasureFme.pas' {BillsMeasureFrame: TFrame},
+  BatchReplaceBillsFrm in '..\..\Forms\BatchReplaceBillsFrm.pas' {BatchReplaceBillsForm},
+  ZJJLFme in '..\..\Frames\ZJJLFme.pas' {ZJJLFrame: TFrame},
+  BGLFme in '..\..\Frames\BGLFme.pas' {BGLFrame: TFrame},
+  MergeTextFrm in '..\..\Forms\MergeTextFrm.pas' {MergeTextForm},
+  ReportsFrm in '..\..\Forms\ReportsFrm.pas' {ReportsForm},
+  ReportAdjustFrm in '..\..\Forms\ReportAdjustFrm.pas' {ReportAdjustForm},
+  SearchFme in '..\..\Frames\SearchFme.pas' {SearchFrame: TFrame},
+  AuthFrm in '..\..\Forms\AuthFrm.pas' {AuthorizeForm},
+  AboutFrm in '..\..\Forms\AboutFrm.pas' {AboutForm},
+  ImportExcelHintFrm in '..\..\Forms\ImportExcelHintFrm.pas' {ImportExcelHintForm},
+  PasswordInputFrm in '..\..\Forms\PasswordInputFrm.pas' {PasswordInputForm},
+  BatchInsertBillsFrm in '..\..\Forms\BatchInsertBillsFrm.pas' {BatchInsertBillsForm},
+  MainDataListDm in '..\..\DataModules\MainDataListDm.pas' {MainListData: TDataModule},
+  mProgressFrm in '..\..\Forms\mProgressFrm.pas' {mProgress},
+  rmGclBillsBGDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsBGDm.pas' {rmGclBillsBGData: TDataModule},
+  rmGclBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsCompareDm.pas' {rmGclBillsCompareData: TDataModule},
+  rmBGLExecutionDm in '..\..\DataModules\ReportMemoryDm\rmBGLExecutionDm.pas' {rmBGLExecutionData: TDataModule},
+  rmBillsGatherDm in '..\..\DataModules\ReportMemoryDm\rmBillsGatherDm.pas' {rmBillsGatherData: TDataModule},
+  rmFxBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsAddDm.pas' {rmFxBillsAddData: TDataModule},
+  rmFxBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsCompareDm.pas' {rmFxBillsCompareData: TDataModule},
+  rmGclBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAddDm.pas' {rmGclBillsAddData: TDataModule},
+  rmGridHeaderDm in '..\..\DataModules\ReportMemoryDm\rmGridHeaderDm.pas' {rmGridHeaderData: TDataModule},
+  rmCacheData in '..\..\DataModules\ReportMemoryDm\rmCacheData.pas',
+  rmSelectProjectFrm in '..\..\Forms\rmSelectProjectFrm.pas' {ProjectSelectForm},
+  ConditionalDefines in '..\..\Units\ConditionalDefines.pas',
+  ProgressHintFrm in '..\..\Forms\ProgressHintFrm.pas' {ProgressHintForm},
+  CheckAndClearFrm in '..\..\Forms\CheckAndClearFrm.pas' {CheckAndClearForm},
+  rmGclBillsAuditCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAuditCompareDm.pas' {rmGclBillsAuditCompareData: TDataModule},
+  rmTestFrm in '..\..\DataModules\ReportMemoryDm\rmTestFrm.pas' {rmTestForm},
+  DealBillsFrm in '..\..\Forms\DealBillsFrm.pas' {DealBillsForm},
+  TenderBackupFrm in '..\..\Forms\TenderBackupFrm.pas' {TenderBackupForm},
+  TenderBackupDm in '..\..\DataModules\TenderBackupDm.pas' {TenderBackupData: TDataModule},
+  BillsBookmarkDm in '..\..\DataModules\BillsBookmarkDm.pas' {BillsBookmarkData: TDataModule},
+  BookmarkFme in '..\..\Frames\BookmarkFme.pas' {BookmarkFrame: TFrame},
+  rmDealInfosDm in '..\..\DataModules\ReportMemoryDm\rmDealInfosDm.pas' {rmDealInfosData: TDataModule},
+  rmXmjBGLDetailDm in '..\..\DataModules\ReportMemoryDm\rmXmjBGLDetailDm.pas' {rmXmjBGLDetailData: TDataModule},
+  WelcomeFrm in '..\..\Forms\WelcomeFrm.pas' {WelcomeForm},
+  rmOtherReport1Dm in '..\..\DataModules\ReportMemoryDm\rmOtherReport1Dm.pas' {rmOtherReport1Data: TDataModule},
+  CheckerMemoFrm in '..\..\Forms\CheckerMemoFrm.pas' {CheckerMemoForm},
+  CslHint in '..\..\Units\CslHint.pas',
+  IPFrm in '..\..\Forms\IPFrm.pas' {IPForm},
+  TenderBackupManager in '..\..\Units\TenderBackupManager.pas',
+  UpFileManageUnit in '..\..\Units\UpFileManageUnit.pas',
+  UpFileFrame in '..\..\Forms\UpFileFrame.pas',
+  UpFileManageFrame in '..\..\Forms\UpFileManageFrame.pas',
+  SheetSelectFrm in '..\..\Forms\SheetSelectFrm.pas' {SheetSelectForm},
+  ReportInteractInfo in '..\..\Units\ReportInteractInfo.pas',
+  Checker in '..\..\Units\Checker.pas',
+  AuditSelectFrm in '..\..\Forms\ReportInteractFrms\AuditSelectFrm.pas' {AuditSelctForm},
+  DealBillsFme in '..\..\Frames\DealBillsFme.pas' {DealBillsFrame: TFrame},
+  rmGclBillsPlaneDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsPlaneDm.pas' {rmGclBillsPlaneData: TDataModule},
+  StageCompareDm in '..\..\DataModules\StageCompareDm.pas' {StageCompareData: TDataModule},
+  mDataRecord in '..\..\Units\mDataRecord.pas',
+  BGLClipboard in '..\..\Units\BGLClipboard.pas',
+  rmMentalCustomized1Dm in '..\..\DataModules\ReportMemoryDm\rmMentalCustomized1Dm.pas' {rmMentalCustomized1Data: TDataModule},
+  rmGcl_XmjBillsDm in '..\..\DataModules\ReportMemoryDm\rmGcl_XmjBillsDm.pas' {rmGcl_XmjBillsData: TDataModule},
+  rmCustomized2Dm in '..\..\DataModules\ReportMemoryDm\rmCustomized2Dm.pas' {rmCustomized2Data: TDataModule},
+  CalcDecimal in '..\..\Units\CalcDecimal.pas',
+  BillsPasteSelectFrm in '..\..\Forms\BillsPasteSelectFrm.pas' {BillsPasteSelectForm},
+  DetailExcelImport in '..\..\Units\DetailExcelImport.pas',
+  mProgressProFrm in '..\..\Forms\mProgressProFrm.pas' {ProgressProForm},
+  rmHaBaiCustomizedDm in '..\..\DataModules\ReportMemoryDm\rmHaBaiCustomizedDm.pas' {rmHaBaiCustomizedData: TDataModule},
+  ProjectGLDm in '..\..\DataModules\ProjectGLDm.pas' {ProjectGLData: TDataModule},
+  PriceMarginBillsDm in '..\..\DataModules\PriceMarginBillsDm.pas' {PriceMarginBillsData: TDataModule},
+  GclBillsGatherModel in '..\..\Units\GclBillsGatherModel.pas',
+  DetailGLDm in '..\..\DataModules\DetailGLDm.pas' {DetailGLData: TDataModule},
+  PriceMarginFme in '..\..\Frames\PriceMarginFme.pas' {PriceMarginFrame: TFrame},
+  ProjectGLFme in '..\..\Frames\ProjectGLFme.pas' {ProjectGLFrame: TFrame},
+  SelectDetailGLsFrm in '..\..\Forms\SelectDetailGLsFrm.pas' {SelectDetailGLsForm},
+  DealPayPlanFrm in '..\..\Forms\DealPayPlanFrm.pas' {DealPayPlanForm},
+  BaseClipboard in '..\..\Units\BaseClipboard.pas',
+  mPegFilter in '..\..\Units\mPegFilter.pas',
+  tpBaseGatherData in '..\..\TenderPartition\tpBaseGatherData.pas',
+  tpGatherGcl in '..\..\TenderPartition\tpGatherGcl.pas',
+  tpGatherTree in '..\..\TenderPartition\tpGatherTree.pas',
+  tpMainData in '..\..\TenderPartition\tpMainData.pas',
+  tpMainFrm in '..\..\TenderPartition\tpMainFrm.pas' {tpMainForm},
+  tpNoPegDm in '..\..\TenderPartition\tpNoPegDm.pas' {tpNoPegData: TDataModule},
+  tpPartTender in '..\..\TenderPartition\tpPartTender.pas',
+  tpPartTenderFme in '..\..\TenderPartition\tpPartTenderFme.pas' {tpPartTenderFrame: TFrame},
+  tpPartTenderSet in '..\..\TenderPartition\tpPartTenderSet.pas',
+  tpPartTenderSetFme in '..\..\TenderPartition\tpPartTenderSetFme.pas' {tpPartTenderSetFrame: TFrame},
+  tpPeg in '..\..\TenderPartition\tpPeg.pas',
+  tpPeg_GclDm in '..\..\TenderPartition\tpPeg_GclDm.pas' {tpPeg_GclData: TDataModule},
+  tpPeg_GclFme in '..\..\TenderPartition\tpPeg_GclFme.pas' {tpPeg_GclFrame: TFrame},
+  tpPegBlock in '..\..\TenderPartition\tpPegBlock.pas',
+  tpPegGclGatherDm in '..\..\TenderPartition\tpPegGclGatherDm.pas' {tpPegGclGatherData: TDataModule},
+  tpPegGclGatherFme in '..\..\TenderPartition\tpPegGclGatherFme.pas' {tpPegGclGatherFrame: TFrame},
+  tpPegPartSettingFrm in '..\..\TenderPartition\tpPegPartSettingFrm.pas' {tpPegPartSettingForm},
+  tpPricePartSettingFrm in '..\..\TenderPartition\tpPricePartSettingFrm.pas' {tpPricePartSettingForm},
+  tpSelectTenderDm in '..\..\TenderPartition\tpSelectTenderDm.pas' {tpSelectTenderData: TDataModule},
+  tpSelectTenderNode in '..\..\TenderPartition\tpSelectTenderNode.pas',
+  tpSelectTendersFrm in '..\..\TenderPartition\tpSelectTendersFrm.pas' {SelectTendersForm},
+  tpTrialPegInputFrm in '..\..\TenderPartition\tpTrialPegInputFrm.pas' {TrialPegInputForm},
+  PriceMarginBillsFme in '..\..\Frames\PriceMarginBillsFme.pas' {PriceMarginBillsFrame: TFrame},
+  ReportPrepare in '..\..\Report\ReportPrepare.pas',
+  rdpBillsGatherDm in '..\..\Report\DataPrepare\rdpBillsGatherDm.pas' {rdpBillsGatherData: TDataModule},
+  rdpTables in '..\..\Report\DataPrepare\rdpTables.pas',
+  ColVisibleManager in '..\..\Units\ColVisibleManager.pas',
+  ReportConnection in '..\..\Report\ReportConnection.pas',
+  rgpGatherControl in '..\..\Report\ProjGather\rgpGatherControl.pas',
+  rpgBillsCalcDm in '..\..\Report\ProjGather\rpgBillsCalcDm.pas' {rpgBillsCalcData: TDataModule},
+  rpgBillsDm in '..\..\Report\ProjGather\rpgBillsDm.pas' {rpgBillsData: TDataModule},
+  rpgGatherControl in '..\..\Report\ProjGather\rpgGatherControl.pas',
+  rpgGatherData in '..\..\Report\ProjGather\rpgGatherData.pas',
+  rpgGatherProjDm in '..\..\Report\ProjGather\rpgGatherProjDm.pas' {rpgGatherProjData: TDataModule},
+  rProjGatherTables in '..\..\Report\ProjGather\rProjGatherTables.pas',
+  ProjGatherTree in '..\..\ProjGather\ProjGatherTree.pas',
+  ProjGather in '..\..\ProjGather\ProjGather.pas',
+  CalcData in '..\..\Units\CalcData.pas',
+  GatherProjInfo in '..\..\ProjGather\GatherProjInfo.pas',
+  ProjGatherCalcData in '..\..\ProjGather\ProjGatherCalcData.pas',
+  ProjGatherSelectFrm in '..\..\ProjGather\ProjGatherSelectFrm.pas' {ProjGatherSelectForm},
+  DealBillsExcelImport in '..\..\Units\DealBillsExcelImport.pas',
+  ExcelImport_Bills in '..\..\Units\ExcelImport_Bills.pas',
+  ExcelImport_GclBills in '..\..\Units\ExcelImport_GclBills.pas',
+  DbTreeImport in '..\..\Units\DbTreeImport.pas',
+  DbTreeDm in '..\..\DataModules\DbTreeDm.pas' {DbTreeData: TDataModule},
+  DebugUsers in '..\..\Units\DebugUsers.pas',
+  FileDownLoadFrm in '..\..\Forms\FileDownLoadFrm.pas' {FileDownLoadForm},
+  OtherMeasurePhaseDm in '..\..\DataModules\OtherMeasurePhaseDm.pas' {OtherMeasurePhaseData: TDataModule},
+  OtherMeasureOnceDm in '..\..\DataModules\OtherMeasureOnceDm.pas' {OtherMeasureOnceData: TDataModule},
+  OMPhaseRecord in '..\..\Units\DataRecord\OMPhaseRecord.pas',
+  OtherMeasureFme in '..\..\Frames\OtherMeasureFme.pas' {OtherMeasureFrame: TFrame},
+  ProjGatherSelectFme in '..\..\ProjGather\ProjGatherSelectFme.pas' {ProjGatherSelectFrame: TFrame},
+  rpgZoneGatherControl in '..\..\Report\ProjGather\Zone\rpgZoneGatherControl.pas',
+  rpgZoneProjGatherSelectFrm in '..\..\Report\ProjGather\Zone\rpgZoneProjGatherSelectFrm.pas' {rpgZoneProjGatherSelectForm},
+  ScjtBGLFme in '..\..\SiChuanJiaoTou\ScjtBGLFme.pas' {ScjtBGLFrame: TFrame},
+  LeafXmjGlFme in '..\..\Frames\LeafXmjGlFme.pas' {LeafXmjGlFrame: TFrame},
+  LeafXmjGlDm in '..\..\DataModules\LeafXmjGlDm.pas' {LeafXmjGlData: TDataModule},
+  StageLeafXmjGlDm in '..\..\DataModules\StageLeafXmjGlDm.pas' {StageLeafXmjGlData: TDataModule},
+  ProjGatherDealPay in '..\..\ProjGather\ProjGatherDealPay.pas',
+  ProjGatherProperties in '..\..\ProjGather\ProjGatherProperties.pas',
+  rpgDealPayDm in '..\..\Report\ProjGather\rpgDealPayDm.pas' {rgpDealPayData: TDataModule};
+
+{$R *.res}
+
+var
+  Mutex: THandle;
+  IPForm: TIPForm;
+
+begin
+  Mutex := CreateMutex(nil, True, G_AppHandleName);
+
+  if GetLastError = ERROR_ALREADY_EXISTS then
+    Application.MessageBox('程序正在运行, 请勿重复打开该软件!', '系统提示', MB_OK + MB_ICONINFORMATION)
+  else
+  begin
+    Application.CreateHandle;
+    Application.Initialize;
+    Application.Title := '纵横公路工程结算决算计量一体化软件云版';
+    {$IFDEF _mCloud}
+      IPForm := TIPForm.Create(nil);
+      try
+        if not IPForm.HasIP then
+        begin
+          IPForm.ShowModal;
+          if IPForm.ModalResult <> mrOK then
+          begin
+            Application.Terminate;
+            Exit;
+          end;
+        end;
+      finally
+        IPForm.Free;
+      end;
+
+      if not LoginForm then
+      begin
+        Application.Terminate;
+        Exit;
+      end;
+    {$ENDIF}
+
+    if CheckDogExists then
+    begin
+      Application.CreateForm(TMainForm, MainForm);
+  end;
+    Application.Run;
+  end;
+
+  ReleaseMutex(Mutex);
+end.

+ 274 - 0
Dprs/Debug/Measure_Debug.dpr

@@ -0,0 +1,274 @@
+program Measure_Debug;
+
+{$R '..\..\res\uac.res' '..\..\res\uac.rc'}
+
+uses
+  Windows,
+  ShareMem,
+  Forms,
+  MainFrm in '..\..\Forms\MainFrm.pas' {MainForm},
+  ProjectManagerFme in '..\..\Frames\ProjectManagerFme.pas' {ProjectManagerFrame: TFrame},
+  UtilMethods in '..\..\Units\UtilMethods.pas',
+  ProjectManagerDm in '..\..\DataModules\ProjectManagerDm.pas' {ProjectManagerData: TDataModule},
+  Connections in '..\..\Units\Connections.pas',
+  TransFile in '..\..\Units\TransFile.pas',
+  ZhAPI in '..\..\Units\ZhAPI.pas',
+  CompactDB in '..\..\Units\CompactDB.pas',
+  OpenProjectManager in '..\..\Units\OpenProjectManager.pas',
+  ProjectData in '..\..\Units\ProjectData.pas',
+  UpdateDataBase in '..\..\Units\UpdateDataBase.pas',
+  DataBaseTables in '..\..\Units\DataBaseTables.pas',
+  ConfigDoc in '..\..\Units\ConfigDoc.pas',
+  SupportUnit in '..\..\Units\SupportUnit.pas',
+  StandardLibs in '..\..\Units\StandardLibs.pas',
+  StandardLib in '..\..\Units\StandardLib.pas',
+  NewProjectFrm in '..\..\Forms\NewProjectFrm.pas' {NewProjectForm},
+  ProjectFme in '..\..\Frames\ProjectFme.pas' {ProjectFrame: TFrame},
+  StandardBillsDm in '..\..\DataModules\StandardBillsDm.pas' {StandardBillsData: TDataModule},
+  StandardBillsFme in '..\..\Frames\StandardBillsFme.pas' {StandardBillsFrame: TFrame},
+  StandardLibsFme in '..\..\Frames\StandardLibsFme.pas' {StandardLibsFrame: TFrame},
+  BillsDm in '..\..\DataModules\BillsDm.pas' {BillsData: TDataModule},
+  BillsMeasureFme in '..\..\Frames\BillsMeasureFme.pas' {BillsMeasureFrame: TFrame},
+  Globals in '..\..\Units\Globals.pas',
+  StageDm in '..\..\DataModules\StageDm.pas' {StageData: TDataModule},
+  ExcelImport in '..\..\Units\ExcelImport.pas',
+  CacheTree in '..\..\Units\CacheTree.pas',
+  MCacheTree in '..\..\Units\MCacheTree.pas',
+  ProjectPropertiesFrm in '..\..\Forms\ProjectPropertiesFrm.pas' {ProjectPropertiesForm},
+  ProjectProperty in '..\..\Units\ProjectProperty.pas',
+  FormulaCalc in '..\..\Units\FormulaCalc.pas',
+  BillsCommand in '..\..\Units\BillsCommand.pas',
+  PhaseData in '..\..\Units\PhaseData.pas',
+  PhaseProperty in '..\..\Units\PhaseProperty.pas',
+  BillsClipboard in '..\..\Units\BillsClipboard.pas',
+  BillsTree in '..\..\Units\BillsTree.pas',
+  ProjectCommands in '..\..\Units\ProjectCommands.pas',
+  PhaseCompareDm in '..\..\DataModules\PhaseCompareDm.pas' {PhaseCompareData: TDataModule},
+  PhaseCompareFme in '..\..\Frames\PhaseCompareFme.pas' {PhaseCompareFrame: TFrame},
+  OptionFrm in '..\..\Forms\OptionFrm.pas' {OptionForm},
+  DealPaymentDm in '..\..\DataModules\DealPaymentDm.pas' {DealPaymentData: TDataModule},
+  DealPaymentFme in '..\..\Frames\DealPaymentFme.pas' {DealPaymentFrame: TFrame},
+  PhasePayDm in '..\..\DataModules\PhasePayDm.pas' {PhasePayData: TDataModule},
+  BillsGatherFme in '..\..\Frames\BillsGatherFme.pas' {BillsGatherFrame: TFrame},
+  BillsGatherDm in '..\..\DataModules\BillsGatherDm.pas' {BillsGatherData: TDataModule},
+  ZJJLFme in '..\..\Frames\ZJJLFme.pas' {ZJJLFrame: TFrame},
+  ZJJLDm in '..\..\DataModules\ZJJLDm.pas' {ZJJLData: TDataModule},
+  BGLFme in '..\..\Frames\BGLFme.pas' {BGLFrame: TFrame},
+  BGLDm in '..\..\DataModules\BGLDm.pas' {BGLData: TDataModule},
+  StaffDm in '..\..\DataModules\StaffDm.pas' {StaffData: TDataModule},
+  ConstUnit in '..\..\Units\ConstUnit.pas',
+  PHPWebDm in '..\..\DataModules\PHPWebDm.pas' {PHPWeb: TDataModule},
+  uLkJSON in '..\..\Units\uLkJSON.pas',
+  MergeTextFrm in '..\..\Forms\MergeTextFrm.pas' {MergeTextForm},
+  BGLSelectFrm in '..\..\Forms\BGLSelectFrm.pas' {BGLSelectForm},
+  WebNewTenderFrm in '..\..\Forms\WebNewTenderFrm.pas' {WebNewTenderForm},
+  ExportExcel in '..\..\Units\ExportExcel.pas',
+  ReportsFrm in '..\..\Forms\ReportsFrm.pas' {ReportsForm},
+  ReportManager in '..\..\Units\ReportManager.pas',
+  BillsCompileDm in '..\..\DataModules\BillsCompileDm.pas' {BillsCompileData: TDataModule},
+  BillsCompileFme in '..\..\Frames\BillsCompileFme.pas' {BillsCompileFrame: TFrame},
+  BillsMeasureDm in '..\..\DataModules\BillsMeasureDm.pas' {BillsMeasureData: TDataModule},
+  PasswordInputFrm in '..\..\Forms\PasswordInputFrm.pas' {PasswordInputForm},
+  AboutFrm in '..\..\Forms\AboutFrm.pas' {AboutForm},
+  AuthFrm in '..\..\Forms\AuthFrm.pas' {AuthorizeForm},
+  mEncryptUnit in '..\..\Encrypt\mEncryptUnit.pas',
+  mEncryptPWD in '..\..\Encrypt\mEncryptPWD.pas',
+  mSNSEncrypt in '..\..\Encrypt\mSNSEncrypt.pas',
+  mR1Encrypt in '..\..\Encrypt\mR1Encrypt.pas',
+  mEncryptEditions in '..\..\Encrypt\mEncryptEditions.pas',
+  mEncryptTypes in '..\..\Encrypt\mEncryptTypes.pas',
+  mConnectEncrypt in '..\..\Encrypt\NetClient\mConnectEncrypt.pas',
+  CryptUtils in '..\..\Encrypt\CryptUtils.pas',
+  EncryptDog in '..\..\Encrypt\EncryptDog.pas',
+  ScFileArchiver in '..\..\Encrypt\ScFileArchiver.pas',
+  SearchFme in '..\..\Frames\SearchFme.pas' {SearchFrame: TFrame},
+  BatchInsertBillsFrm in '..\..\Forms\BatchInsertBillsFrm.pas' {BatchInsertBillsForm},
+  SearchDm in '..\..\DataModules\SearchDm.pas' {SearchData: TDataModule},
+  CslJson in '..\..\Units\CslJson.pas',
+  FindUserFrm in '..\..\Forms\FindUserFrm.pas' {FindUserForm},
+  ImportExcelHintFrm in '..\..\Forms\ImportExcelHintFrm.pas' {ImportExcelHintForm},
+  CheckerFme in '..\..\Frames\CheckerFme.pas' {CheckerFrame: TFrame},
+  OrderCheckerFme in '..\..\Frames\OrderCheckerFme.pas' {OrderCheckerFrame: TFrame},
+  ReportAdjustFrm in '..\..\Forms\ReportAdjustFrm.pas' {ReportAdjustForm},
+  DealBillsDm in '..\..\DataModules\DealBillsDm.pas' {DealBillsData: TDataModule},
+  BatchReplaceBillsFrm in '..\..\Forms\BatchReplaceBillsFrm.pas' {BatchReplaceBillsForm},
+  MD5Unit in '..\..\Units\MD5Unit.pas',
+  MainDataListDm in '..\..\DataModules\MainDataListDm.pas' {MainListData: TDataModule},
+  mProgressFrm in '..\..\Forms\mProgressFrm.pas' {mProgress},
+  rmGclBillsBGDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsBGDm.pas' {DataModule1: TDataModule},
+  rmBGLExecutionDm in '..\..\DataModules\ReportMemoryDm\rmBGLExecutionDm.pas' {rmBGLExecutionData: TDataModule},
+  rmBillsGatherDm in '..\..\DataModules\ReportMemoryDm\rmBillsGatherDm.pas' {rmBillsGatherData: TDataModule},
+  rmCacheData in '..\..\DataModules\ReportMemoryDm\rmCacheData.pas',
+  rmFxBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsAddDm.pas' {rmFxBillsAddData: TDataModule},
+  rmFxBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsCompareDm.pas' {rmFxBillsCompareData: TDataModule},
+  rmGclBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAddDm.pas' {rmGclBillsAddData: TDataModule},
+  rmGclBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsCompareDm.pas' {rmGclBillsCompareData: TDataModule},
+  rmGridHeaderDm in '..\..\DataModules\ReportMemoryDm\rmGridHeaderDm.pas' {rmGridHeaderData: TDataModule},
+  rmSelectProjectFrm in '..\..\Forms\rmSelectProjectFrm.pas' {ProjectSelectForm},
+  ConditionalDefines in '..\..\Units\ConditionalDefines.pas',
+  ProgressHintFrm in '..\..\Forms\ProgressHintFrm.pas' {ProgressHintForm},
+  rmGclBillsAuditCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAuditCompareDm.pas' {rmGclBillsAuditCompareData: TDataModule},
+  rmTestFrm in '..\..\DataModules\ReportMemoryDm\rmTestFrm.pas' {rmTestForm},
+  CheckAndClearFrm in '..\..\Forms\CheckAndClearFrm.pas' {CheckAndClearForm},
+  DealBillsFrm in '..\..\Forms\DealBillsFrm.pas' {DealBillsForm},
+  TenderBackupFrm in '..\..\Forms\TenderBackupFrm.pas' {TenderBackupForm},
+  TenderBackupDm in '..\..\DataModules\TenderBackupDm.pas' {TenderBackupData: TDataModule},
+  BillsBookmarkDm in '..\..\DataModules\BillsBookmarkDm.pas' {BillsBookmarkData: TDataModule},
+  BookmarkFme in '..\..\Frames\BookmarkFme.pas' {BookmarkFrame: TFrame},
+  rmDealInfosDm in '..\..\DataModules\ReportMemoryDm\rmDealInfosDm.pas' {rmDealInfosData: TDataModule},
+  rmXmjBGLDetailDm in '..\..\DataModules\ReportMemoryDm\rmXmjBGLDetailDm.pas' {rmXmjBGLDetailData: TDataModule},
+  WelcomeFrm in '..\..\Forms\WelcomeFrm.pas' {WelcomeForm},
+  rmOtherReport1Dm in '..\..\DataModules\ReportMemoryDm\rmOtherReport1Dm.pas' {rmOtherReport1Data: TDataModule},
+  CheckerMemoFrm in '..\..\Forms\CheckerMemoFrm.pas' {CheckerMemoForm},
+  CslHint in '..\..\Units\CslHint.pas',
+  TenderBackupManager in '..\..\Units\TenderBackupManager.pas',
+  UpFileFrame in '..\..\Forms\UpFileFrame.pas',
+  UpFileManageFrame in '..\..\Forms\UpFileManageFrame.pas',
+  UpFileManageUnit in '..\..\Units\UpFileManageUnit.pas',
+  SheetSelectFrm in '..\..\Forms\SheetSelectFrm.pas' {SheetSelectForm},
+  AuditSelectFrm in '..\..\Forms\ReportInteractFrms\AuditSelectFrm.pas' {AuditSelctForm},
+  Checker in '..\..\Units\Checker.pas',
+  ReportInteractInfo in '..\..\Units\ReportInteractInfo.pas',
+  DealBillsFme in '..\..\Frames\DealBillsFme.pas' {DealBillsFrame: TFrame},
+  rmGclBillsPlaneDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsPlaneDm.pas' {rmGclBillsPlaneData: TDataModule},
+  StageCompareDm in '..\..\DataModules\StageCompareDm.pas' {StageCompareData: TDataModule},
+  mDataRecord in '..\..\Units\mDataRecord.pas',
+  rmMentalCustomized1Dm in '..\..\DataModules\ReportMemoryDm\rmMentalCustomized1Dm.pas' {rmMentalCustomized1Data: TDataModule},
+  BGLClipboard in '..\..\Units\BGLClipboard.pas',
+  rmGcl_XmjBillsDm in '..\..\DataModules\ReportMemoryDm\rmGcl_XmjBillsDm.pas' {rmGcl_XmjBillsData: TDataModule},
+  rmCustomized2Dm in '..\..\DataModules\ReportMemoryDm\rmCustomized2Dm.pas' {rmCustomized2Data: TDataModule},
+  CalcDecimal in '..\..\Units\CalcDecimal.pas',
+  BillsPasteSelectFrm in '..\..\Forms\BillsPasteSelectFrm.pas' {BillsPasteSelectForm},
+  DetailExcelImport in '..\..\Units\DetailExcelImport.pas',
+  mProgressProFrm in '..\..\Forms\mProgressProFrm.pas' {ProgressProForm},
+  ProjectGLDm in '..\..\DataModules\ProjectGLDm.pas' {ProjectGLData: TDataModule},
+  PriceMarginBillsDm in '..\..\DataModules\PriceMarginBillsDm.pas' {PriceMarginBillsData: TDataModule},
+  GclBillsGatherModel in '..\..\Units\GclBillsGatherModel.pas',
+  DetailGLDm in '..\..\DataModules\DetailGLDm.pas' {DetailGLData: TDataModule},
+  PriceMarginBillsFme in '..\..\Frames\PriceMarginBillsFme.pas' {PriceMarginBillsFrame: TFrame},
+  PriceMarginFme in '..\..\Frames\PriceMarginFme.pas' {PriceMarginFrame: TFrame},
+  ProjectGLFme in '..\..\Frames\ProjectGLFme.pas' {ProjectGLFrame: TFrame},
+  SelectDetailGLsFrm in '..\..\Forms\SelectDetailGLsFrm.pas' {SelectDetailGLsForm},
+  rmHaBaiCustomizedDm in '..\..\DataModules\ReportMemoryDm\rmHaBaiCustomizedDm.pas' {rmHaBaiCustomizedData: TDataModule},
+  DealPayPlanFrm in '..\..\Forms\DealPayPlanFrm.pas' {DealPayPlanForm},
+  BaseClipboard in '..\..\Units\BaseClipboard.pas',
+  tpBaseGatherData in '..\..\TenderPartition\tpBaseGatherData.pas',
+  tpGatherGcl in '..\..\TenderPartition\tpGatherGcl.pas',
+  tpGatherTree in '..\..\TenderPartition\tpGatherTree.pas',
+  tpMainData in '..\..\TenderPartition\tpMainData.pas',
+  tpMainFrm in '..\..\TenderPartition\tpMainFrm.pas' {tpMainForm},
+  tpNoPegDm in '..\..\TenderPartition\tpNoPegDm.pas' {tpNoPegData: TDataModule},
+  tpPartTender in '..\..\TenderPartition\tpPartTender.pas',
+  tpPartTenderFme in '..\..\TenderPartition\tpPartTenderFme.pas' {tpPartTenderFrame: TFrame},
+  tpPartTenderSet in '..\..\TenderPartition\tpPartTenderSet.pas',
+  tpPartTenderSetFme in '..\..\TenderPartition\tpPartTenderSetFme.pas' {tpPartTenderSetFrame: TFrame},
+  tpPeg in '..\..\TenderPartition\tpPeg.pas',
+  tpPeg_GclDm in '..\..\TenderPartition\tpPeg_GclDm.pas' {tpPeg_GclData: TDataModule},
+  tpPeg_GclFme in '..\..\TenderPartition\tpPeg_GclFme.pas' {tpPeg_GclFrame: TFrame},
+  tpPegBlock in '..\..\TenderPartition\tpPegBlock.pas',
+  tpPegGclGatherDm in '..\..\TenderPartition\tpPegGclGatherDm.pas' {tpPegGclGatherData: TDataModule},
+  tpPegGclGatherFme in '..\..\TenderPartition\tpPegGclGatherFme.pas' {tpPegGclGatherFrame: TFrame},
+  tpPegPartSettingFrm in '..\..\TenderPartition\tpPegPartSettingFrm.pas' {tpPegPartSettingForm},
+  tpPricePartSettingFrm in '..\..\TenderPartition\tpPricePartSettingFrm.pas' {tpPricePartSettingForm},
+  tpSelectTenderDm in '..\..\TenderPartition\tpSelectTenderDm.pas' {tpSelectTenderData: TDataModule},
+  tpSelectTenderNode in '..\..\TenderPartition\tpSelectTenderNode.pas',
+  tpSelectTendersFrm in '..\..\TenderPartition\tpSelectTendersFrm.pas' {SelectTendersForm},
+  tpTrialPegInputFrm in '..\..\TenderPartition\tpTrialPegInputFrm.pas' {TrialPegInputForm},
+  mPegFilter in '..\..\Units\mPegFilter.pas',
+  ReportPrepare in '..\..\Report\ReportPrepare.pas',
+  rdpBillsGatherDm in '..\..\Report\DataPrepare\rdpBillsGatherDm.pas' {rdpBillsGatherData: TDataModule},
+  rdpTables in '..\..\Report\DataPrepare\rdpTables.pas',
+  ColVisibleManager in '..\..\Units\ColVisibleManager.pas',
+  ReportConnection in '..\..\Report\ReportConnection.pas',
+  rgpGatherControl in '..\..\Report\ProjGather\rgpGatherControl.pas',
+  rpgBillsCalcDm in '..\..\Report\ProjGather\rpgBillsCalcDm.pas' {rpgBillsCalcData: TDataModule},
+  rpgBillsDm in '..\..\Report\ProjGather\rpgBillsDm.pas' {rpgBillsData: TDataModule},
+  rpgGatherControl in '..\..\Report\ProjGather\rpgGatherControl.pas',
+  rpgGatherData in '..\..\Report\ProjGather\rpgGatherData.pas',
+  rpgGatherProjDm in '..\..\Report\ProjGather\rpgGatherProjDm.pas' {rpgGatherProjData: TDataModule},
+  rProjGatherTables in '..\..\Report\ProjGather\rProjGatherTables.pas',
+  ProjGatherTree in '..\..\ProjGather\ProjGatherTree.pas',
+  ProjGather in '..\..\ProjGather\ProjGather.pas',
+  CalcData in '..\..\Units\CalcData.pas',
+  GatherProjInfo in '..\..\ProjGather\GatherProjInfo.pas',
+  ProjGatherCalcData in '..\..\ProjGather\ProjGatherCalcData.pas',
+  ProjGatherSelectFrm in '..\..\ProjGather\ProjGatherSelectFrm.pas' {ProjGatherSelectForm},
+  DealBillsExcelImport in '..\..\Units\DealBillsExcelImport.pas',
+  ExcelImport_Bills in '..\..\Units\ExcelImport_Bills.pas',
+  ExcelImport_GclBills in '..\..\Units\ExcelImport_GclBills.pas',
+  DbTreeImport in '..\..\Units\DbTreeImport.pas',
+  DbTreeDm in '..\..\DataModules\DbTreeDm.pas',
+  OtherMeasurePhaseDm in '..\..\DataModules\OtherMeasurePhaseDm.pas' {OtherMeasurePhaseData: TDataModule},
+  OtherMeasureOnceDm in '..\..\DataModules\OtherMeasureOnceDm.pas' {OtherMeasureOnceData: TDataModule},
+  OMPhaseRecord in '..\..\Units\DataRecord\OMPhaseRecord.pas',
+  OtherMeasureFme in '..\..\Frames\OtherMeasureFme.pas' {OtherMeasureFrame: TFrame},
+  ScReportHelperUnit in '..\..\..\SmartCost\Reports\UI\ScReportHelperUnit.pas',
+  ProjGatherSelectFme in '..\..\ProjGather\ProjGatherSelectFme.pas' {ProjGatherSelectFrame: TFrame},
+  rpgZoneGatherControl in '..\..\Report\ProjGather\Zone\rpgZoneGatherControl.pas',
+  rpgZoneProjGatherSelectFrm in '..\..\Report\ProjGather\Zone\rpgZoneProjGatherSelectFrm.pas' {rpgZoneProjGatherSelectForm},
+  UpFileSelectOnLineFrm in '..\..\Forms\UpFileSelectOnLineFrm.pas' {UpFileSelectOnLineForm},
+  LogUtils in '..\..\Units\LogUtils.pas',
+  ReportPdfHelper in '..\..\Units\ReportPdfHelper.pas',
+  SignReports in '..\..\Units\SignReports.pas',
+  TemplateManagerHelper in '..\..\Units\TemplateManagerHelper.pas',
+  SignOnlineReportsFrm in '..\..\Forms\SignOnlineReportsFrm.pas',
+  SelectOnlineSignPhaseFrm in '..\..\Forms\SelectOnlineSignPhaseFrm.pas' {SelectOnlineSignPhaseForm},
+  RenameSignReportFrm in '..\..\Forms\RenameSignReportFrm.pas' {RenameSignReportForm},
+  VirtualTrees in '..\..\..\SmartCost\Components\virtualtree\VirtualTrees.pas',
+  rmWeiWuZjjlGatherDm in '..\..\DataModules\ReportMemoryDm\rmWeiWuZjjlGatherDm.pas' {rmWeiWuZjjlGatherData: TDataModule},
+  SetGuestFrm in '..\..\Forms\SetGuestFrm.pas' {SetGuestForm},
+  ProjGatherDealPay in '..\..\ProjGather\ProjGatherDealPay.pas',
+  ProjGatherProperties in '..\..\ProjGather\ProjGatherProperties.pas',
+  rpgDealPayDm in '..\..\Report\ProjGather\rpgDealPayDm.pas' {rgpDealPayData: TDataModule},
+  superxmlparser in '..\..\Units\superobject\superxmlparser.pas',
+  superobject in '..\..\Units\superobject\superobject.pas',
+  ReportManagerFrm in '..\..\Forms\ReportManagerFrm.pas',
+  ReportManagerDM in '..\..\DataModules\ReportManagerDM.pas' {Reports: TDataModule},
+  ReportHistoryFrm in '..\..\Forms\ReportHistoryFrm.pas' {ReportHistoryForm},
+  MeasureGatherZJJL in '..\..\Units\MeasureGatherZJJL.pas',
+  stgExcelExport in '..\..\SubTenderGather\stgExcelExport.pas',
+  stgGather in '..\..\SubTenderGather\stgGather.pas',
+  stgGatherCacheData in '..\..\SubTenderGather\stgGatherCacheData.pas',
+  stgGatherControl in '..\..\SubTenderGather\stgGatherControl.pas',
+  stgGatherDm in '..\..\SubTenderGather\stgGatherDm.pas' {stgGatherData: TDataModule},
+  stgGatherUtils in '..\..\SubTenderGather\stgGatherUtils.pas',
+  stgResultFrm in '..\..\SubTenderGather\stgResultFrm.pas' {stgResultForm},
+  stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
+  stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
+  stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas',
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule};
+
+{$R *.res}
+
+var Mutex: THandle;
+begin
+  Mutex := CreateMutex(nil, True, G_AppHandleName);
+
+  if GetLastError = ERROR_ALREADY_EXISTS then
+    Application.MessageBox('程序正在运行, 请勿重复打开该软件!', '系统提示', MB_OK + MB_ICONINFORMATION)
+  else
+  begin
+    Application.CreateHandle;
+    Application.Initialize;
+    Application.Title := '纵横公路工程结算决算计量一体化软件专业版';
+
+    ShowWelcome;
+    if CheckDogExists then
+    begin
+      HideWelcome;
+      Application.CreateForm(TMainForm, MainForm);
+  Application.CreateForm(TSetGuestForm, SetGuestForm);
+  end
+    else  HideWelcome;
+    Application.Run;
+  end;
+
+  ReleaseMutex(Mutex);
+end.
+

+ 243 - 0
Dprs/Debug/Measure_Debug_SCJT.dpr

@@ -0,0 +1,243 @@
+program Measure_Debug_SCJT;
+
+{$R '..\..\res\uac.res' '..\..\res\uac.rc'}
+
+uses
+  Windows,
+  ShareMem,
+  Forms,
+  MainFrm in '..\..\Forms\MainFrm.pas' {MainForm},
+  ProjectManagerFme in '..\..\Frames\ProjectManagerFme.pas' {ProjectManagerFrame: TFrame},
+  UtilMethods in '..\..\Units\UtilMethods.pas',
+  ProjectManagerDm in '..\..\DataModules\ProjectManagerDm.pas' {ProjectManagerData: TDataModule},
+  Connections in '..\..\Units\Connections.pas',
+  TransFile in '..\..\Units\TransFile.pas',
+  ZhAPI in '..\..\Units\ZhAPI.pas',
+  CompactDB in '..\..\Units\CompactDB.pas',
+  OpenProjectManager in '..\..\Units\OpenProjectManager.pas',
+  ProjectData in '..\..\Units\ProjectData.pas',
+  UpdateDataBase in '..\..\Units\UpdateDataBase.pas',
+  DataBaseTables in '..\..\Units\DataBaseTables.pas',
+  ConfigDoc in '..\..\Units\ConfigDoc.pas',
+  SupportUnit in '..\..\Units\SupportUnit.pas',
+  StandardLibs in '..\..\Units\StandardLibs.pas',
+  StandardLib in '..\..\Units\StandardLib.pas',
+  NewProjectFrm in '..\..\Forms\NewProjectFrm.pas' {NewProjectForm},
+  ProjectFme in '..\..\Frames\ProjectFme.pas' {ProjectFrame: TFrame},
+  StandardBillsDm in '..\..\DataModules\StandardBillsDm.pas' {StandardBillsData: TDataModule},
+  StandardBillsFme in '..\..\Frames\StandardBillsFme.pas' {StandardBillsFrame: TFrame},
+  StandardLibsFme in '..\..\Frames\StandardLibsFme.pas' {StandardLibsFrame: TFrame},
+  BillsDm in '..\..\DataModules\BillsDm.pas' {BillsData: TDataModule},
+  BillsMeasureFme in '..\..\Frames\BillsMeasureFme.pas' {BillsMeasureFrame: TFrame},
+  Globals in '..\..\Units\Globals.pas',
+  StageDm in '..\..\DataModules\StageDm.pas' {StageData: TDataModule},
+  ExcelImport in '..\..\Units\ExcelImport.pas',
+  CacheTree in '..\..\Units\CacheTree.pas',
+  MCacheTree in '..\..\Units\MCacheTree.pas',
+  ProjectPropertiesFrm in '..\..\Forms\ProjectPropertiesFrm.pas' {ProjectPropertiesForm},
+  ProjectProperty in '..\..\Units\ProjectProperty.pas',
+  FormulaCalc in '..\..\Units\FormulaCalc.pas',
+  BillsCommand in '..\..\Units\BillsCommand.pas',
+  PhaseData in '..\..\Units\PhaseData.pas',
+  PhaseProperty in '..\..\Units\PhaseProperty.pas',
+  BillsClipboard in '..\..\Units\BillsClipboard.pas',
+  BillsTree in '..\..\Units\BillsTree.pas',
+  ProjectCommands in '..\..\Units\ProjectCommands.pas',
+  PhaseCompareDm in '..\..\DataModules\PhaseCompareDm.pas' {PhaseCompareData: TDataModule},
+  PhaseCompareFme in '..\..\Frames\PhaseCompareFme.pas' {PhaseCompareFrame: TFrame},
+  OptionFrm in '..\..\Forms\OptionFrm.pas' {OptionForm},
+  DealPaymentDm in '..\..\DataModules\DealPaymentDm.pas' {DealPaymentData: TDataModule},
+  DealPaymentFme in '..\..\Frames\DealPaymentFme.pas' {DealPaymentFrame: TFrame},
+  PhasePayDm in '..\..\DataModules\PhasePayDm.pas' {PhasePayData: TDataModule},
+  BillsGatherFme in '..\..\Frames\BillsGatherFme.pas' {BillsGatherFrame: TFrame},
+  BillsGatherDm in '..\..\DataModules\BillsGatherDm.pas' {BillsGatherData: TDataModule},
+  ZJJLFme in '..\..\Frames\ZJJLFme.pas' {ZJJLFrame: TFrame},
+  ZJJLDm in '..\..\DataModules\ZJJLDm.pas' {ZJJLData: TDataModule},
+  BGLFme in '..\..\Frames\BGLFme.pas' {BGLFrame: TFrame},
+  BGLDm in '..\..\DataModules\BGLDm.pas' {BGLData: TDataModule},
+  StaffDm in '..\..\DataModules\StaffDm.pas' {StaffData: TDataModule},
+  ConstUnit in '..\..\Units\ConstUnit.pas',
+  PHPWebDm in '..\..\DataModules\PHPWebDm.pas' {PHPWeb: TDataModule},
+  uLkJSON in '..\..\Units\uLkJSON.pas',
+  MergeTextFrm in '..\..\Forms\MergeTextFrm.pas' {MergeTextForm},
+  BGLSelectFrm in '..\..\Forms\BGLSelectFrm.pas' {BGLSelectForm},
+  WebNewTenderFrm in '..\..\Forms\WebNewTenderFrm.pas' {WebNewTenderForm},
+  ExportExcel in '..\..\Units\ExportExcel.pas',
+  ReportsFrm in '..\..\Forms\ReportsFrm.pas' {ReportsForm},
+  ReportManager in '..\..\Units\ReportManager.pas',
+  BillsCompileDm in '..\..\DataModules\BillsCompileDm.pas' {BillsCompileData: TDataModule},
+  BillsCompileFme in '..\..\Frames\BillsCompileFme.pas' {BillsCompileFrame: TFrame},
+  BillsMeasureDm in '..\..\DataModules\BillsMeasureDm.pas' {BillsMeasureData: TDataModule},
+  PasswordInputFrm in '..\..\Forms\PasswordInputFrm.pas' {PasswordInputForm},
+  AboutFrm in '..\..\Forms\AboutFrm.pas' {AboutForm},
+  AuthFrm in '..\..\Forms\AuthFrm.pas' {AuthorizeForm},
+  mEncryptUnit in '..\..\Encrypt\mEncryptUnit.pas',
+  mEncryptPWD in '..\..\Encrypt\mEncryptPWD.pas',
+  mSNSEncrypt in '..\..\Encrypt\mSNSEncrypt.pas',
+  mR1Encrypt in '..\..\Encrypt\mR1Encrypt.pas',
+  mEncryptEditions in '..\..\Encrypt\mEncryptEditions.pas',
+  mEncryptTypes in '..\..\Encrypt\mEncryptTypes.pas',
+  mConnectEncrypt in '..\..\Encrypt\NetClient\mConnectEncrypt.pas',
+  CryptUtils in '..\..\Encrypt\CryptUtils.pas',
+  EncryptDog in '..\..\Encrypt\EncryptDog.pas',
+  ScFileArchiver in '..\..\Encrypt\ScFileArchiver.pas',
+  SearchFme in '..\..\Frames\SearchFme.pas' {SearchFrame: TFrame},
+  BatchInsertBillsFrm in '..\..\Forms\BatchInsertBillsFrm.pas' {BatchInsertBillsForm},
+  SearchDm in '..\..\DataModules\SearchDm.pas' {SearchData: TDataModule},
+  CslJson in '..\..\Units\CslJson.pas',
+  FindUserFrm in '..\..\Forms\FindUserFrm.pas' {FindUserForm},
+  ImportExcelHintFrm in '..\..\Forms\ImportExcelHintFrm.pas' {ImportExcelHintForm},
+  CheckerFme in '..\..\Frames\CheckerFme.pas' {CheckerFrame: TFrame},
+  OrderCheckerFme in '..\..\Frames\OrderCheckerFme.pas' {OrderCheckerFrame: TFrame},
+  ReportAdjustFrm in '..\..\Forms\ReportAdjustFrm.pas' {ReportAdjustForm},
+  DealBillsDm in '..\..\DataModules\DealBillsDm.pas' {DealBillsData: TDataModule},
+  BatchReplaceBillsFrm in '..\..\Forms\BatchReplaceBillsFrm.pas' {BatchReplaceBillsForm},
+  MD5Unit in '..\..\Units\MD5Unit.pas',
+  MainDataListDm in '..\..\DataModules\MainDataListDm.pas' {MainListData: TDataModule},
+  mProgressFrm in '..\..\Forms\mProgressFrm.pas' {mProgress},
+  rmGclBillsBGDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsBGDm.pas' {DataModule1: TDataModule},
+  rmBGLExecutionDm in '..\..\DataModules\ReportMemoryDm\rmBGLExecutionDm.pas' {rmBGLExecutionData: TDataModule},
+  rmBillsGatherDm in '..\..\DataModules\ReportMemoryDm\rmBillsGatherDm.pas' {rmBillsGatherData: TDataModule},
+  rmCacheData in '..\..\DataModules\ReportMemoryDm\rmCacheData.pas',
+  rmFxBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsAddDm.pas' {rmFxBillsAddData: TDataModule},
+  rmFxBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsCompareDm.pas' {rmFxBillsCompareData: TDataModule},
+  rmGclBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAddDm.pas' {rmGclBillsAddData: TDataModule},
+  rmGclBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsCompareDm.pas' {rmGclBillsCompareData: TDataModule},
+  rmGridHeaderDm in '..\..\DataModules\ReportMemoryDm\rmGridHeaderDm.pas' {rmGridHeaderData: TDataModule},
+  rmSelectProjectFrm in '..\..\Forms\rmSelectProjectFrm.pas' {ProjectSelectForm},
+  ConditionalDefines in '..\..\Units\ConditionalDefines.pas',
+  ProgressHintFrm in '..\..\Forms\ProgressHintFrm.pas' {ProgressHintForm},
+  rmGclBillsAuditCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAuditCompareDm.pas' {rmGclBillsAuditCompareData: TDataModule},
+  rmTestFrm in '..\..\DataModules\ReportMemoryDm\rmTestFrm.pas' {rmTestForm},
+  CheckAndClearFrm in '..\..\Forms\CheckAndClearFrm.pas' {CheckAndClearForm},
+  DealBillsFrm in '..\..\Forms\DealBillsFrm.pas' {DealBillsForm},
+  TenderBackupFrm in '..\..\Forms\TenderBackupFrm.pas' {TenderBackupForm},
+  TenderBackupDm in '..\..\DataModules\TenderBackupDm.pas' {TenderBackupData: TDataModule},
+  BillsBookmarkDm in '..\..\DataModules\BillsBookmarkDm.pas' {BillsBookmarkData: TDataModule},
+  BookmarkFme in '..\..\Frames\BookmarkFme.pas' {BookmarkFrame: TFrame},
+  rmDealInfosDm in '..\..\DataModules\ReportMemoryDm\rmDealInfosDm.pas' {rmDealInfosData: TDataModule},
+  rmXmjBGLDetailDm in '..\..\DataModules\ReportMemoryDm\rmXmjBGLDetailDm.pas' {rmXmjBGLDetailData: TDataModule},
+  WelcomeFrm in '..\..\Forms\WelcomeFrm.pas' {WelcomeForm},
+  rmOtherReport1Dm in '..\..\DataModules\ReportMemoryDm\rmOtherReport1Dm.pas' {rmOtherReport1Data: TDataModule},
+  CheckerMemoFrm in '..\..\Forms\CheckerMemoFrm.pas' {CheckerMemoForm},
+  CslHint in '..\..\Units\CslHint.pas',
+  TenderBackupManager in '..\..\Units\TenderBackupManager.pas',
+  UpFileFrame in '..\..\Forms\UpFileFrame.pas',
+  UpFileManageFrame in '..\..\Forms\UpFileManageFrame.pas',
+  UpFileManageUnit in '..\..\Units\UpFileManageUnit.pas',
+  SheetSelectFrm in '..\..\Forms\SheetSelectFrm.pas' {SheetSelectForm},
+  AuditSelectFrm in '..\..\Forms\ReportInteractFrms\AuditSelectFrm.pas' {AuditSelctForm},
+  Checker in '..\..\Units\Checker.pas',
+  ReportInteractInfo in '..\..\Units\ReportInteractInfo.pas',
+  DealBillsFme in '..\..\Frames\DealBillsFme.pas' {DealBillsFrame: TFrame},
+  rmGclBillsPlaneDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsPlaneDm.pas' {rmGclBillsPlaneData: TDataModule},
+  StageCompareDm in '..\..\DataModules\StageCompareDm.pas' {StageCompareData: TDataModule},
+  mDataRecord in '..\..\Units\mDataRecord.pas',
+  rmMentalCustomized1Dm in '..\..\DataModules\ReportMemoryDm\rmMentalCustomized1Dm.pas' {rmMentalCustomized1Data: TDataModule},
+  BGLClipboard in '..\..\Units\BGLClipboard.pas',
+  rmGcl_XmjBillsDm in '..\..\DataModules\ReportMemoryDm\rmGcl_XmjBillsDm.pas' {rmGcl_XmjBillsData: TDataModule},
+  rmCustomized2Dm in '..\..\DataModules\ReportMemoryDm\rmCustomized2Dm.pas' {rmCustomized2Data: TDataModule},
+  CalcDecimal in '..\..\Units\CalcDecimal.pas',
+  BillsPasteSelectFrm in '..\..\Forms\BillsPasteSelectFrm.pas' {BillsPasteSelectForm},
+  DetailExcelImport in '..\..\Units\DetailExcelImport.pas',
+  mProgressProFrm in '..\..\Forms\mProgressProFrm.pas' {ProgressProForm},
+  ProjectGLDm in '..\..\DataModules\ProjectGLDm.pas' {ProjectGLData: TDataModule},
+  PriceMarginBillsDm in '..\..\DataModules\PriceMarginBillsDm.pas' {PriceMarginBillsData: TDataModule},
+  GclBillsGatherModel in '..\..\Units\GclBillsGatherModel.pas',
+  DetailGLDm in '..\..\DataModules\DetailGLDm.pas' {DetailGLData: TDataModule},
+  PriceMarginBillsFme in '..\..\Frames\PriceMarginBillsFme.pas' {PriceMarginBillsFrame: TFrame},
+  PriceMarginFme in '..\..\Frames\PriceMarginFme.pas' {PriceMarginFrame: TFrame},
+  ProjectGLFme in '..\..\Frames\ProjectGLFme.pas' {ProjectGLFrame: TFrame},
+  SelectDetailGLsFrm in '..\..\Forms\SelectDetailGLsFrm.pas' {SelectDetailGLsForm},
+  rmHaBaiCustomizedDm in '..\..\DataModules\ReportMemoryDm\rmHaBaiCustomizedDm.pas' {rmHaBaiCustomizedData: TDataModule},
+  DealPayPlanFrm in '..\..\Forms\DealPayPlanFrm.pas' {DealPayPlanForm},
+  BaseClipboard in '..\..\Units\BaseClipboard.pas',
+  tpBaseGatherData in '..\..\TenderPartition\tpBaseGatherData.pas',
+  tpGatherGcl in '..\..\TenderPartition\tpGatherGcl.pas',
+  tpGatherTree in '..\..\TenderPartition\tpGatherTree.pas',
+  tpMainData in '..\..\TenderPartition\tpMainData.pas',
+  tpMainFrm in '..\..\TenderPartition\tpMainFrm.pas' {tpMainForm},
+  tpNoPegDm in '..\..\TenderPartition\tpNoPegDm.pas' {tpNoPegData: TDataModule},
+  tpPartTender in '..\..\TenderPartition\tpPartTender.pas',
+  tpPartTenderFme in '..\..\TenderPartition\tpPartTenderFme.pas' {tpPartTenderFrame: TFrame},
+  tpPartTenderSet in '..\..\TenderPartition\tpPartTenderSet.pas',
+  tpPartTenderSetFme in '..\..\TenderPartition\tpPartTenderSetFme.pas' {tpPartTenderSetFrame: TFrame},
+  tpPeg in '..\..\TenderPartition\tpPeg.pas',
+  tpPeg_GclDm in '..\..\TenderPartition\tpPeg_GclDm.pas' {tpPeg_GclData: TDataModule},
+  tpPeg_GclFme in '..\..\TenderPartition\tpPeg_GclFme.pas' {tpPeg_GclFrame: TFrame},
+  tpPegBlock in '..\..\TenderPartition\tpPegBlock.pas',
+  tpPegGclGatherDm in '..\..\TenderPartition\tpPegGclGatherDm.pas' {tpPegGclGatherData: TDataModule},
+  tpPegGclGatherFme in '..\..\TenderPartition\tpPegGclGatherFme.pas' {tpPegGclGatherFrame: TFrame},
+  tpPegPartSettingFrm in '..\..\TenderPartition\tpPegPartSettingFrm.pas' {tpPegPartSettingForm},
+  tpPricePartSettingFrm in '..\..\TenderPartition\tpPricePartSettingFrm.pas' {tpPricePartSettingForm},
+  tpSelectTenderDm in '..\..\TenderPartition\tpSelectTenderDm.pas' {tpSelectTenderData: TDataModule},
+  tpSelectTenderNode in '..\..\TenderPartition\tpSelectTenderNode.pas',
+  tpSelectTendersFrm in '..\..\TenderPartition\tpSelectTendersFrm.pas' {SelectTendersForm},
+  tpTrialPegInputFrm in '..\..\TenderPartition\tpTrialPegInputFrm.pas' {TrialPegInputForm},
+  mPegFilter in '..\..\Units\mPegFilter.pas',
+  ReportPrepare in '..\..\Report\ReportPrepare.pas',
+  rdpBillsGatherDm in '..\..\Report\DataPrepare\rdpBillsGatherDm.pas' {rdpBillsGatherData: TDataModule},
+  rdpTables in '..\..\Report\DataPrepare\rdpTables.pas',
+  ColVisibleManager in '..\..\Units\ColVisibleManager.pas',
+  ReportConnection in '..\..\Report\ReportConnection.pas',
+  rgpGatherControl in '..\..\Report\ProjGather\rgpGatherControl.pas',
+  rpgBillsCalcDm in '..\..\Report\ProjGather\rpgBillsCalcDm.pas' {rpgBillsCalcData: TDataModule},
+  rpgBillsDm in '..\..\Report\ProjGather\rpgBillsDm.pas' {rpgBillsData: TDataModule},
+  rpgGatherControl in '..\..\Report\ProjGather\rpgGatherControl.pas',
+  rpgGatherData in '..\..\Report\ProjGather\rpgGatherData.pas',
+  rpgGatherProjDm in '..\..\Report\ProjGather\rpgGatherProjDm.pas' {rpgGatherProjData: TDataModule},
+  rProjGatherTables in '..\..\Report\ProjGather\rProjGatherTables.pas',
+  ProjGatherTree in '..\..\ProjGather\ProjGatherTree.pas',
+  ProjGather in '..\..\ProjGather\ProjGather.pas',
+  CalcData in '..\..\Units\CalcData.pas',
+  GatherProjInfo in '..\..\ProjGather\GatherProjInfo.pas',
+  ProjGatherCalcData in '..\..\ProjGather\ProjGatherCalcData.pas',
+  ProjGatherSelectFrm in '..\..\ProjGather\ProjGatherSelectFrm.pas' {ProjGatherSelectForm},
+  DealBillsExcelImport in '..\..\Units\DealBillsExcelImport.pas',
+  ExcelImport_Bills in '..\..\Units\ExcelImport_Bills.pas',
+  ExcelImport_GclBills in '..\..\Units\ExcelImport_GclBills.pas',
+  DbTreeImport in '..\..\Units\DbTreeImport.pas',
+  DbTreeDm in '..\..\DataModules\DbTreeDm.pas',
+  OtherMeasurePhaseDm in '..\..\DataModules\OtherMeasurePhaseDm.pas' {OtherMeasurePhaseData: TDataModule},
+  OtherMeasureOnceDm in '..\..\DataModules\OtherMeasureOnceDm.pas' {OtherMeasureOnceData: TDataModule},
+  OMPhaseRecord in '..\..\Units\DataRecord\OMPhaseRecord.pas',
+  OtherMeasureFme in '..\..\Frames\OtherMeasureFme.pas' {OtherMeasureFrame: TFrame},
+  ScReportHelperUnit in '..\..\..\SmartCost\Reports\UI\ScReportHelperUnit.pas',
+  ProjGatherSelectFme in '..\..\ProjGather\ProjGatherSelectFme.pas' {ProjGatherSelectFrame: TFrame},
+  rpgZoneGatherControl in '..\..\Report\ProjGather\Zone\rpgZoneGatherControl.pas',
+  rpgZoneProjGatherSelectFrm in '..\..\Report\ProjGather\Zone\rpgZoneProjGatherSelectFrm.pas' {rpgZoneProjGatherSelectForm},
+  ScjtBGLFme in '..\..\SiChuanJiaoTou\ScjtBGLFme.pas' {ScjtBGLFrame: TFrame},
+  StageLeafXmjGlDm in '..\..\DataModules\StageLeafXmjGlDm.pas' {StageLeafXmjGlData: TDataModule},
+  LeafXmjGlDm in '..\..\DataModules\LeafXmjGlDm.pas' {LeafXmjGlData: TDataModule},
+  LeafXmjGlFme in '..\..\Frames\LeafXmjGlFme.pas' {LeafXmjGlFrame: TFrame},
+  ProjGatherDealPay in '..\..\ProjGather\ProjGatherDealPay.pas',
+  ProjGatherProperties in '..\..\ProjGather\ProjGatherProperties.pas',
+  rpgDealPayDm in '..\..\Report\ProjGather\rpgDealPayDm.pas' {rgpDealPayData: TDataModule};
+
+{$R *.res}
+
+var Mutex: THandle;
+begin
+  Mutex := CreateMutex(nil, True, G_AppHandleName);
+
+  if GetLastError = ERROR_ALREADY_EXISTS then
+    Application.MessageBox('程序正在运行, 请勿重复打开该软件!', '系统提示', MB_OK + MB_ICONINFORMATION)
+  else
+  begin
+    Application.CreateHandle;
+    Application.Initialize;
+    Application.Title := '纵横公路工程结算决算计量一体化软件专业版';
+
+    ShowWelcome;
+    if CheckDogExists then
+    begin
+      HideWelcome;
+      Application.CreateForm(TMainForm, MainForm);
+  end
+    else  HideWelcome;
+    Application.Run;
+  end;
+
+  ReleaseMutex(Mutex);
+end.
+

+ 301 - 0
Dprs/Debug/Measure_GuangDong_Cloud_Debug.dpr

@@ -0,0 +1,301 @@
+program Measure_GuangDong_Cloud_Debug;
+
+{$R '..\..\res\uac.res' '..\..\res\uac.rc'}
+
+uses
+  Windows,
+  ShareMem,
+  Forms,
+  Controls,
+  MainFrm in '..\..\Forms\MainFrm.pas' {MainForm},
+  ProjectManagerFme in '..\..\Frames\ProjectManagerFme.pas' {ProjectManagerFrame: TFrame},
+  UtilMethods in '..\..\Units\UtilMethods.pas',
+  ProjectManagerDm in '..\..\DataModules\ProjectManagerDm.pas' {ProjectManagerData: TDataModule},
+  Connections in '..\..\Units\Connections.pas',
+  TransFile in '..\..\Units\TransFile.pas',
+  ZhAPI in '..\..\Units\ZhAPI.pas',
+  CompactDB in '..\..\Units\CompactDB.pas',
+  OpenProjectManager in '..\..\Units\OpenProjectManager.pas',
+  ProjectData in '..\..\Units\ProjectData.pas',
+  UpdateDataBase in '..\..\Units\UpdateDataBase.pas',
+  DataBaseTables in '..\..\Units\DataBaseTables.pas',
+  ConfigDoc in '..\..\Units\ConfigDoc.pas',
+  SupportUnit in '..\..\Units\SupportUnit.pas',
+  StandardLibs in '..\..\Units\StandardLibs.pas',
+  StandardLib in '..\..\Units\StandardLib.pas',
+  NewProjectFrm in '..\..\Forms\NewProjectFrm.pas' {NewProjectForm},
+  ProjectFme in '..\..\Frames\ProjectFme.pas' {ProjectFrame: TFrame},
+  StandardBillsDm in '..\..\DataModules\StandardBillsDm.pas' {StandardBillsData: TDataModule},
+  StandardBillsFme in '..\..\Frames\StandardBillsFme.pas' {StandardBillsFrame: TFrame},
+  StandardLibsFme in '..\..\Frames\StandardLibsFme.pas' {StandardLibsFrame: TFrame},
+  BillsDm in '..\..\DataModules\BillsDm.pas' {BillsData: TDataModule},
+  Globals in '..\..\Units\Globals.pas',
+  StageDm in '..\..\DataModules\StageDm.pas' {StageData: TDataModule},
+  ExcelImport in '..\..\Units\ExcelImport.pas',
+  CacheTree in '..\..\Units\CacheTree.pas',
+  MCacheTree in '..\..\Units\MCacheTree.pas',
+  ProjectPropertiesFrm in '..\..\Forms\ProjectPropertiesFrm.pas' {ProjectPropertiesForm},
+  ProjectProperty in '..\..\Units\ProjectProperty.pas',
+  FormulaCalc in '..\..\Units\FormulaCalc.pas',
+  BillsCommand in '..\..\Units\BillsCommand.pas',
+  PhaseData in '..\..\Units\PhaseData.pas',
+  PhaseProperty in '..\..\Units\PhaseProperty.pas',
+  BillsClipboard in '..\..\Units\BillsClipboard.pas',
+  BillsTree in '..\..\Units\BillsTree.pas',
+  ProjectCommands in '..\..\Units\ProjectCommands.pas',
+  PhaseCompareDm in '..\..\DataModules\PhaseCompareDm.pas' {PhaseCompareData: TDataModule},
+  PhaseCompareFme in '..\..\Frames\PhaseCompareFme.pas' {PhaseCompareFrame: TFrame},
+  OptionFrm in '..\..\Forms\OptionFrm.pas' {OptionForm},
+  DealPaymentDm in '..\..\DataModules\DealPaymentDm.pas' {DealPaymentData: TDataModule},
+  DealPaymentFme in '..\..\Frames\DealPaymentFme.pas' {DealPaymentFrame: TFrame},
+  PhasePayDm in '..\..\DataModules\PhasePayDm.pas' {PhasePayData: TDataModule},
+  ZJJLDm in '..\..\DataModules\ZJJLDm.pas' {ZJJLData: TDataModule},
+  BillsGatherDm in '..\..\DataModules\BillsGatherDm.pas' {BillsGatherData: TDataModule},
+  BillsGatherFme in '..\..\Frames\BillsGatherFme.pas' {BillsGatherFrame: TFrame},
+  LoginFrm in '..\..\Forms\LoginFrm.pas' {LoginFrm},
+  PHPWebDm in '..\..\DataModules\PHPWebDm.pas' {PHPWeb: TDataModule},
+  MD5Unit in '..\..\Units\MD5Unit.pas',
+  ConstUnit in '..\..\Units\ConstUnit.pas',
+  ExportExcel in '..\..\Units\ExportExcel.pas',
+  mEncryptEditions in '..\..\Encrypt\mEncryptEditions.pas',
+  mEncryptUnit in '..\..\Encrypt\mEncryptUnit.pas',
+  CryptUtils in '..\..\Encrypt\CryptUtils.pas',
+  EncryptDog in '..\..\Encrypt\EncryptDog.pas',
+  mEncryptPWD in '..\..\Encrypt\mEncryptPWD.pas',
+  mEncryptTypes in '..\..\Encrypt\mEncryptTypes.pas',
+  mR1Encrypt in '..\..\Encrypt\mR1Encrypt.pas',
+  mS4Utils in '..\..\Encrypt\mS4Utils.pas',
+  mSNSEncrypt in '..\..\Encrypt\mSNSEncrypt.pas',
+  Rockey1 in '..\..\Encrypt\Rockey1.pas',
+  mConnectEncrypt in '..\..\Encrypt\NetClient\mConnectEncrypt.pas',
+  FindUserFrm in '..\..\Forms\FindUserFrm.pas' {FindUserForm},
+  CslJson in '..\..\Units\CslJson.pas',
+  OrderCheckerFme in '..\..\Frames\OrderCheckerFme.pas' {OrderCheckerFrame: TFrame},
+  CheckerFme in '..\..\Frames\CheckerFme.pas' {CheckerFrame: TFrame},
+  WebNewTenderFrm in '..\..\Forms\WebNewTenderFrm.pas' {WebNewTenderForm},
+  ScFileArchiver in '..\..\Encrypt\ScFileArchiver.pas',
+  SearchDm in '..\..\DataModules\SearchDm.pas' {SearchData: TDataModule},
+  DealBillsDm in '..\..\DataModules\DealBillsDm.pas' {DealBillsData: TDataModule},
+  BGLDm in '..\..\DataModules\BGLDm.pas' {BGLData: TDataModule},
+  StaffDm in '..\..\DataModules\StaffDm.pas' {StaffData: TDataModule},
+  BillsCompileDm in '..\..\DataModules\BillsCompileDm.pas' {BillsCompileData: TDataModule},
+  BillsMeasureDm in '..\..\DataModules\BillsMeasureDm.pas' {BillsMeasureData: TDataModule},
+  ReportManager in '..\..\Units\ReportManager.pas',
+  BGLSelectFrm in '..\..\Forms\BGLSelectFrm.pas' {BGLSelectForm},
+  BillsCompileFme in '..\..\Frames\BillsCompileFme.pas' {BillsCompileFrame: TFrame},
+  BillsMeasureFme in '..\..\Frames\BillsMeasureFme.pas' {BillsMeasureFrame: TFrame},
+  BatchReplaceBillsFrm in '..\..\Forms\BatchReplaceBillsFrm.pas' {BatchReplaceBillsForm},
+  ZJJLFme in '..\..\Frames\ZJJLFme.pas' {ZJJLFrame: TFrame},
+  BGLFme in '..\..\Frames\BGLFme.pas' {BGLFrame: TFrame},
+  MergeTextFrm in '..\..\Forms\MergeTextFrm.pas' {MergeTextForm},
+  ReportsFrm in '..\..\Forms\ReportsFrm.pas' {ReportsForm},
+  ReportAdjustFrm in '..\..\Forms\ReportAdjustFrm.pas' {ReportAdjustForm},
+  SearchFme in '..\..\Frames\SearchFme.pas' {SearchFrame: TFrame},
+  AuthFrm in '..\..\Forms\AuthFrm.pas' {AuthorizeForm},
+  AboutFrm in '..\..\Forms\AboutFrm.pas' {AboutForm},
+  ImportExcelHintFrm in '..\..\Forms\ImportExcelHintFrm.pas' {ImportExcelHintForm},
+  PasswordInputFrm in '..\..\Forms\PasswordInputFrm.pas' {PasswordInputForm},
+  BatchInsertBillsFrm in '..\..\Forms\BatchInsertBillsFrm.pas' {BatchInsertBillsForm},
+  MainDataListDm in '..\..\DataModules\MainDataListDm.pas' {MainListData: TDataModule},
+  mProgressFrm in '..\..\Forms\mProgressFrm.pas' {mProgress},
+  rmGclBillsBGDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsBGDm.pas' {rmGclBillsBGData: TDataModule},
+  rmGclBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsCompareDm.pas' {rmGclBillsCompareData: TDataModule},
+  rmBGLExecutionDm in '..\..\DataModules\ReportMemoryDm\rmBGLExecutionDm.pas' {rmBGLExecutionData: TDataModule},
+  rmBillsGatherDm in '..\..\DataModules\ReportMemoryDm\rmBillsGatherDm.pas' {rmBillsGatherData: TDataModule},
+  rmFxBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsAddDm.pas' {rmFxBillsAddData: TDataModule},
+  rmFxBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsCompareDm.pas' {rmFxBillsCompareData: TDataModule},
+  rmGclBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAddDm.pas' {rmGclBillsAddData: TDataModule},
+  rmGridHeaderDm in '..\..\DataModules\ReportMemoryDm\rmGridHeaderDm.pas' {rmGridHeaderData: TDataModule},
+  rmCacheData in '..\..\DataModules\ReportMemoryDm\rmCacheData.pas',
+  rmSelectProjectFrm in '..\..\Forms\rmSelectProjectFrm.pas' {ProjectSelectForm},
+  ConditionalDefines in '..\..\Units\ConditionalDefines.pas',
+  ProgressHintFrm in '..\..\Forms\ProgressHintFrm.pas' {ProgressHintForm},
+  rmGclBillsAuditCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAuditCompareDm.pas' {rmGclBillsAuditCompareData: TDataModule},
+  rmTestFrm in '..\..\DataModules\ReportMemoryDm\rmTestFrm.pas' {rmTestForm},
+  CheckAndClearFrm in '..\..\Forms\CheckAndClearFrm.pas' {CheckAndClearForm},
+  DealBillsFrm in '..\..\Forms\DealBillsFrm.pas' {DealBillsForm},
+  TenderBackupFrm in '..\..\Forms\TenderBackupFrm.pas' {TenderBackupForm},
+  TenderBackupDm in '..\..\DataModules\TenderBackupDm.pas' {TenderBackupData: TDataModule},
+  BillsBookmarkDm in '..\..\DataModules\BillsBookmarkDm.pas' {BillsBookmarkData: TDataModule},
+  BookmarkFme in '..\..\Frames\BookmarkFme.pas' {BookmarkFrame: TFrame},
+  rmDealInfosDm in '..\..\DataModules\ReportMemoryDm\rmDealInfosDm.pas' {rmDealInfosData: TDataModule},
+  rmXmjBGLDetailDm in '..\..\DataModules\ReportMemoryDm\rmXmjBGLDetailDm.pas' {rmXmjBGLDetailData: TDataModule},
+  WelcomeFrm in '..\..\Forms\WelcomeFrm.pas' {Form1},
+  rmOtherReport1Dm in '..\..\DataModules\ReportMemoryDm\rmOtherReport1Dm.pas' {rmOtherReport1Data: TDataModule},
+  CheckerMemoFrm in '..\..\Forms\CheckerMemoFrm.pas' {CheckerMemoForm},
+  CslHint in '..\..\Units\CslHint.pas',
+  IPFrm in '..\..\Forms\IPFrm.pas' {IPForm},
+  TenderBackupManager in '..\..\Units\TenderBackupManager.pas',
+  UpFileFrame in '..\..\Forms\UpFileFrame.pas',
+  UpFileManageFrame in '..\..\Forms\UpFileManageFrame.pas',
+  UpFileManageUnit in '..\..\Units\UpFileManageUnit.pas',
+  SheetSelectFrm in '..\..\Forms\SheetSelectFrm.pas' {SheetSelectForm},
+  Checker in '..\..\Units\Checker.pas',
+  ReportInteractInfo in '..\..\Units\ReportInteractInfo.pas',
+  AuditSelectFrm in '..\..\Forms\ReportInteractFrms\AuditSelectFrm.pas' {AuditSelctForm},
+  DealBillsFme in '..\..\Frames\DealBillsFme.pas' {DealBillsFrame: TFrame},
+  rmGclBillsPlaneDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsPlaneDm.pas' {rmGclBillsPlaneData: TDataModule},
+  StageCompareDm in '..\..\DataModules\StageCompareDm.pas' {StageCompareData: TDataModule},
+  mDataRecord in '..\..\Units\mDataRecord.pas',
+  BGLClipboard in '..\..\Units\BGLClipboard.pas',
+  rmMentalCustomized1Dm in '..\..\DataModules\ReportMemoryDm\rmMentalCustomized1Dm.pas' {rmMentalCustomized1Data: TDataModule},
+  rmGcl_XmjBillsDm in '..\..\DataModules\ReportMemoryDm\rmGcl_XmjBillsDm.pas' {rmGcl_XmjBillsData: TDataModule},
+  rmCustomized2Dm in '..\..\DataModules\ReportMemoryDm\rmCustomized2Dm.pas' {rmCustomized2Data: TDataModule},
+  CalcDecimal in '..\..\Units\CalcDecimal.pas',
+  BillsPasteSelectFrm in '..\..\Forms\BillsPasteSelectFrm.pas' {BillsPasteSelectForm},
+  DetailExcelImport in '..\..\Units\DetailExcelImport.pas',
+  mProgressProFrm in '..\..\Forms\mProgressProFrm.pas' {ProgressProForm},
+  BaseClipboard in '..\..\Units\BaseClipboard.pas',
+  PriceMarginBillsDm in '..\..\DataModules\PriceMarginBillsDm.pas' {PriceMarginBillsData: TDataModule},
+  ProjectGLDm in '..\..\DataModules\ProjectGLDm.pas' {ProjectGLData: TDataModule},
+  GclBillsGatherModel in '..\..\Units\GclBillsGatherModel.pas',
+  DetailGLDm in '..\..\DataModules\DetailGLDm.pas' {DetailGLData: TDataModule},
+  rmHaBaiCustomizedDm in '..\..\DataModules\ReportMemoryDm\rmHaBaiCustomizedDm.pas' {rmHaBaiCustomizedData: TDataModule},
+  PriceMarginBillsFme in '..\..\Frames\PriceMarginBillsFme.pas' {PriceMarginBillsFrame: TFrame},
+  PriceMarginFme in '..\..\Frames\PriceMarginFme.pas' {PriceMarginFrame: TFrame},
+  ProjectGLFme in '..\..\Frames\ProjectGLFme.pas' {ProjectGLFrame: TFrame},
+  SelectDetailGLsFrm in '..\..\Forms\SelectDetailGLsFrm.pas' {SelectDetailGLsForm},
+  DealPayPlanFrm in '..\..\Forms\DealPayPlanFrm.pas' {DealPayPlanForm},
+  tpBaseGatherData in '..\..\TenderPartition\tpBaseGatherData.pas',
+  tpGatherGcl in '..\..\TenderPartition\tpGatherGcl.pas',
+  tpGatherTree in '..\..\TenderPartition\tpGatherTree.pas',
+  tpMainData in '..\..\TenderPartition\tpMainData.pas',
+  tpMainFrm in '..\..\TenderPartition\tpMainFrm.pas' {tpMainForm},
+  tpNoPegDm in '..\..\TenderPartition\tpNoPegDm.pas' {tpNoPegData: TDataModule},
+  tpPartTender in '..\..\TenderPartition\tpPartTender.pas',
+  tpPartTenderFme in '..\..\TenderPartition\tpPartTenderFme.pas' {tpPartTenderFrame: TFrame},
+  tpPartTenderSet in '..\..\TenderPartition\tpPartTenderSet.pas',
+  tpPartTenderSetFme in '..\..\TenderPartition\tpPartTenderSetFme.pas' {tpPartTenderSetFrame: TFrame},
+  tpPeg in '..\..\TenderPartition\tpPeg.pas',
+  tpPeg_GclDm in '..\..\TenderPartition\tpPeg_GclDm.pas' {tpPeg_GclData: TDataModule},
+  tpPeg_GclFme in '..\..\TenderPartition\tpPeg_GclFme.pas' {tpPeg_GclFrame: TFrame},
+  tpPegBlock in '..\..\TenderPartition\tpPegBlock.pas',
+  tpPegGclGatherDm in '..\..\TenderPartition\tpPegGclGatherDm.pas' {tpPegGclGatherData: TDataModule},
+  tpPegGclGatherFme in '..\..\TenderPartition\tpPegGclGatherFme.pas' {tpPegGclGatherFrame: TFrame},
+  tpPegPartSettingFrm in '..\..\TenderPartition\tpPegPartSettingFrm.pas' {tpPegPartSettingForm},
+  tpPricePartSettingFrm in '..\..\TenderPartition\tpPricePartSettingFrm.pas' {tpPricePartSettingForm},
+  tpSelectTenderDm in '..\..\TenderPartition\tpSelectTenderDm.pas' {tpSelectTenderData: TDataModule},
+  tpSelectTenderNode in '..\..\TenderPartition\tpSelectTenderNode.pas',
+  tpSelectTendersFrm in '..\..\TenderPartition\tpSelectTendersFrm.pas' {SelectTendersForm},
+  tpTrialPegInputFrm in '..\..\TenderPartition\tpTrialPegInputFrm.pas' {TrialPegInputForm},
+  mPegFilter in '..\..\Units\mPegFilter.pas',
+  ReportPrepare in '..\..\Report\ReportPrepare.pas',
+  rdpBillsGatherDm in '..\..\Report\DataPrepare\rdpBillsGatherDm.pas' {rdpBillsGatherData: TDataModule},
+  rdpTables in '..\..\Report\DataPrepare\rdpTables.pas',
+  ColVisibleManager in '..\..\Units\ColVisibleManager.pas',
+  ReportConnection in '..\..\Report\ReportConnection.pas',
+  rgpGatherControl in '..\..\Report\ProjGather\rgpGatherControl.pas',
+  rpgBillsCalcDm in '..\..\Report\ProjGather\rpgBillsCalcDm.pas' {rpgBillsCalcData: TDataModule},
+  rpgBillsDm in '..\..\Report\ProjGather\rpgBillsDm.pas' {rpgBillsData: TDataModule},
+  rpgGatherControl in '..\..\Report\ProjGather\rpgGatherControl.pas',
+  rpgGatherData in '..\..\Report\ProjGather\rpgGatherData.pas',
+  rpgGatherProjDm in '..\..\Report\ProjGather\rpgGatherProjDm.pas' {rpgGatherProjData: TDataModule},
+  rProjGatherTables in '..\..\Report\ProjGather\rProjGatherTables.pas',
+  ProjGatherTree in '..\..\ProjGather\ProjGatherTree.pas',
+  ProjGather in '..\..\ProjGather\ProjGather.pas',
+  CalcData in '..\..\Units\CalcData.pas',
+  GatherProjInfo in '..\..\ProjGather\GatherProjInfo.pas',
+  ProjGatherCalcData in '..\..\ProjGather\ProjGatherCalcData.pas',
+  ProjGatherSelectFrm in '..\..\ProjGather\ProjGatherSelectFrm.pas' {ProjGatherSelectForm},
+  DealBillsExcelImport in '..\..\Units\DealBillsExcelImport.pas',
+  ExcelImport_Bills in '..\..\Units\ExcelImport_Bills.pas',
+  ExcelImport_GclBills in '..\..\Units\ExcelImport_GclBills.pas',
+  DbTreeImport in '..\..\Units\DbTreeImport.pas',
+  DbTreeDm in '..\..\DataModules\DbTreeDm.pas',
+  DebugUsers in '..\..\Units\DebugUsers.pas',
+  FileDownLoadFrm in '..\..\Forms\FileDownLoadFrm.pas' {FileDownLoadForm},
+  OtherMeasurePhaseDm in '..\..\DataModules\OtherMeasurePhaseDm.pas' {OtherMeasurePhaseData: TDataModule},
+  OtherMeasureOnceDm in '..\..\DataModules\OtherMeasureOnceDm.pas' {OtherMeasureOnceData: TDataModule},
+  OMPhaseRecord in '..\..\Units\DataRecord\OMPhaseRecord.pas',
+  OtherMeasureFme in '..\..\Frames\OtherMeasureFme.pas' {OtherMeasureFrame: TFrame},
+  ProjGatherSelectFme in '..\..\ProjGather\ProjGatherSelectFme.pas' {ProjGatherSelectFrame: TFrame},
+  rpgZoneGatherControl in '..\..\Report\ProjGather\Zone\rpgZoneGatherControl.pas',
+  rpgZoneProjGatherSelectFrm in '..\..\Report\ProjGather\Zone\rpgZoneProjGatherSelectFrm.pas' {rpgZoneProjGatherSelectForm},
+  UpFileSelectOnLineFrm in '..\..\Forms\UpFileSelectOnLineFrm.pas' {UpFileSelectOnLineForm},
+  LogUtils in '..\..\Units\LogUtils.pas',
+  ReportPdfHelper in '..\..\Units\ReportPdfHelper.pas',
+  SelectOnlineSignPhaseFrm in '..\..\Forms\SelectOnlineSignPhaseFrm.pas' {SelectOnlineSignPhaseForm},
+  SignOnlineReportsFrm in '..\..\Forms\SignOnlineReportsFrm.pas' {SignOnlineReportsForm},
+  SignReports in '..\..\Units\SignReports.pas',
+  VirtualTrees in '..\..\..\SmartCost\Components\virtualtree\VirtualTrees.pas',
+  TemplateManagerHelper in '..\..\Units\TemplateManagerHelper.pas',
+  RenameSignReportFrm in '..\..\Forms\RenameSignReportFrm.pas' {RenameSignReportForm},
+  rmWeiWuZjjlGatherDm in '..\..\DataModules\ReportMemoryDm\rmWeiWuZjjlGatherDm.pas' {rmWeiWuZjjlGatherData: TDataModule},
+  SetGuestFrm in '..\..\Forms\SetGuestFrm.pas' {SetGuestForm},
+  ProjGatherDealPay in '..\..\ProjGather\ProjGatherDealPay.pas',
+  ProjGatherProperties in '..\..\ProjGather\ProjGatherProperties.pas',
+  rpgDealPayDm in '..\..\Report\ProjGather\rpgDealPayDm.pas' {rgpDealPayData: TDataModule},
+  superobject in '..\..\Units\superobject\superobject.pas',
+  ReportManagerDM in '..\..\DataModules\ReportManagerDM.pas' {Reports: TDataModule},
+  ReportHistoryFrm in '..\..\Forms\ReportHistoryFrm.pas' {ReportHistoryForm},
+  ReportManagerFrm in '..\..\Forms\ReportManagerFrm.pas',
+  MeasureGatherZJJL in '..\..\Units\MeasureGatherZJJL.pas',
+  stgExcelExport in '..\..\SubTenderGather\stgExcelExport.pas',
+  stgGather in '..\..\SubTenderGather\stgGather.pas',
+  stgGatherCacheData in '..\..\SubTenderGather\stgGatherCacheData.pas',
+  stgGatherControl in '..\..\SubTenderGather\stgGatherControl.pas',
+  stgGatherDm in '..\..\SubTenderGather\stgGatherDm.pas' {stgGatherData: TDataModule},
+  stgGatherUtils in '..\..\SubTenderGather\stgGatherUtils.pas',
+  stgResultFrm in '..\..\SubTenderGather\stgResultFrm.pas' {stgResultForm},
+  stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
+  stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
+  stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas',
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas';
+
+{$R *.res}
+
+var
+  Mutex: THandle;
+  IPForm: TIPForm;
+
+begin
+  Mutex := CreateMutex(nil, True, G_AppHandleName);
+
+  if GetLastError = ERROR_ALREADY_EXISTS then
+    Application.MessageBox('程序正在运行, 请勿重复打开该软件!', '系统提示', MB_OK + MB_ICONINFORMATION)
+  else
+  begin
+    Application.CreateHandle;
+    Application.Initialize;
+    Application.Title := '纵横公路工程结算决算计量一体化软件广东云版';
+
+    {$IFDEF _mCloud}
+      IPForm := TIPForm.Create(nil);
+      try
+        if not IPForm.HasIP then
+        begin
+          IPForm.ShowModal;
+          if IPForm.ModalResult <> mrOK then
+          begin
+            Application.Terminate;
+            Exit;
+          end;
+        end;
+      finally
+        IPForm.Free;
+      end;
+
+      if not LoginForm then
+      begin
+        Application.Terminate;
+        Exit;
+      end;
+    {$ENDIF}
+
+
+    if CheckDogExists then
+    begin
+      Application.CreateForm(TMainForm, MainForm);
+  Application.CreateForm(TSetGuestForm, SetGuestForm);
+  end;
+    Application.Run;
+  end;
+
+  ReleaseMutex(Mutex);
+end.

+ 270 - 0
Dprs/Debug/Measure_GuangDong_Debug.dpr

@@ -0,0 +1,270 @@
+program Measure_GuangDong_Debug;
+
+{$R '..\..\res\uac.res' '..\..\res\uac.rc'}
+
+uses
+  Windows,
+  ShareMem,
+  Forms,
+  MainFrm in '..\..\Forms\MainFrm.pas' {MainForm},
+  ProjectManagerFme in '..\..\Frames\ProjectManagerFme.pas' {ProjectManagerFrame: TFrame},
+  UtilMethods in '..\..\Units\UtilMethods.pas',
+  ProjectManagerDm in '..\..\DataModules\ProjectManagerDm.pas' {ProjectManagerData: TDataModule},
+  Connections in '..\..\Units\Connections.pas',
+  TransFile in '..\..\Units\TransFile.pas',
+  ZhAPI in '..\..\Units\ZhAPI.pas',
+  CompactDB in '..\..\Units\CompactDB.pas',
+  OpenProjectManager in '..\..\Units\OpenProjectManager.pas',
+  ProjectData in '..\..\Units\ProjectData.pas',
+  UpdateDataBase in '..\..\Units\UpdateDataBase.pas',
+  DataBaseTables in '..\..\Units\DataBaseTables.pas',
+  ConfigDoc in '..\..\Units\ConfigDoc.pas',
+  SupportUnit in '..\..\Units\SupportUnit.pas',
+  StandardLibs in '..\..\Units\StandardLibs.pas',
+  StandardLib in '..\..\Units\StandardLib.pas',
+  NewProjectFrm in '..\..\Forms\NewProjectFrm.pas' {NewProjectForm},
+  ProjectFme in '..\..\Frames\ProjectFme.pas' {ProjectFrame: TFrame},
+  StandardBillsDm in '..\..\DataModules\StandardBillsDm.pas' {StandardBillsData: TDataModule},
+  StandardBillsFme in '..\..\Frames\StandardBillsFme.pas' {StandardBillsFrame: TFrame},
+  StandardLibsFme in '..\..\Frames\StandardLibsFme.pas' {StandardLibsFrame: TFrame},
+  BillsDm in '..\..\DataModules\BillsDm.pas' {BillsData: TDataModule},
+  BillsMeasureFme in '..\..\Frames\BillsMeasureFme.pas' {BillsMeasureFrame: TFrame},
+  Globals in '..\..\Units\Globals.pas',
+  StageDm in '..\..\DataModules\StageDm.pas' {StageData: TDataModule},
+  ExcelImport in '..\..\Units\ExcelImport.pas',
+  CacheTree in '..\..\Units\CacheTree.pas',
+  MCacheTree in '..\..\Units\MCacheTree.pas',
+  ProjectPropertiesFrm in '..\..\Forms\ProjectPropertiesFrm.pas' {ProjectPropertiesForm},
+  ProjectProperty in '..\..\Units\ProjectProperty.pas',
+  FormulaCalc in '..\..\Units\FormulaCalc.pas',
+  BillsCommand in '..\..\Units\BillsCommand.pas',
+  PhaseData in '..\..\Units\PhaseData.pas',
+  PhaseProperty in '..\..\Units\PhaseProperty.pas',
+  BillsClipboard in '..\..\Units\BillsClipboard.pas',
+  BillsTree in '..\..\Units\BillsTree.pas',
+  ProjectCommands in '..\..\Units\ProjectCommands.pas',
+  PhaseCompareDm in '..\..\DataModules\PhaseCompareDm.pas' {PhaseCompareData: TDataModule},
+  PhaseCompareFme in '..\..\Frames\PhaseCompareFme.pas' {PhaseCompareFrame: TFrame},
+  OptionFrm in '..\..\Forms\OptionFrm.pas' {OptionForm},
+  DealPaymentDm in '..\..\DataModules\DealPaymentDm.pas' {DealPaymentData: TDataModule},
+  DealPaymentFme in '..\..\Frames\DealPaymentFme.pas' {DealPaymentFrame: TFrame},
+  PhasePayDm in '..\..\DataModules\PhasePayDm.pas' {PhasePayData: TDataModule},
+  BillsGatherFme in '..\..\Frames\BillsGatherFme.pas' {BillsGatherFrame: TFrame},
+  BillsGatherDm in '..\..\DataModules\BillsGatherDm.pas' {BillsGatherData: TDataModule},
+  ZJJLFme in '..\..\Frames\ZJJLFme.pas' {ZJJLFrame: TFrame},
+  ZJJLDm in '..\..\DataModules\ZJJLDm.pas' {ZJJLData: TDataModule},
+  BGLFme in '..\..\Frames\BGLFme.pas' {BGLFrame: TFrame},
+  BGLDm in '..\..\DataModules\BGLDm.pas' {BGLData: TDataModule},
+  StaffDm in '..\..\DataModules\StaffDm.pas' {StaffData: TDataModule},
+  ConstUnit in '..\..\Units\ConstUnit.pas',
+  PHPWebDm in '..\..\DataModules\PHPWebDm.pas' {PHPWeb: TDataModule},
+  uLkJSON in '..\..\Units\uLkJSON.pas',
+  MergeTextFrm in '..\..\Forms\MergeTextFrm.pas' {MergeTextForm},
+  BGLSelectFrm in '..\..\Forms\BGLSelectFrm.pas' {BGLSelectForm},
+  WebNewTenderFrm in '..\..\Forms\WebNewTenderFrm.pas' {WebNewTenderForm},
+  ExportExcel in '..\..\Units\ExportExcel.pas',
+  ReportsFrm in '..\..\Forms\ReportsFrm.pas' {ReportsForm},
+  ReportManager in '..\..\Units\ReportManager.pas',
+  BillsCompileDm in '..\..\DataModules\BillsCompileDm.pas' {BillsCompileData: TDataModule},
+  BillsCompileFme in '..\..\Frames\BillsCompileFme.pas' {BillsCompileFrame: TFrame},
+  BillsMeasureDm in '..\..\DataModules\BillsMeasureDm.pas' {BillsMeasureData: TDataModule},
+  PasswordInputFrm in '..\..\Forms\PasswordInputFrm.pas' {PasswordInputForm},
+  AboutFrm in '..\..\Forms\AboutFrm.pas' {AboutForm},
+  AuthFrm in '..\..\Forms\AuthFrm.pas' {AuthorizeForm},
+  mEncryptUnit in '..\..\Encrypt\mEncryptUnit.pas',
+  mEncryptPWD in '..\..\Encrypt\mEncryptPWD.pas',
+  mSNSEncrypt in '..\..\Encrypt\mSNSEncrypt.pas',
+  mR1Encrypt in '..\..\Encrypt\mR1Encrypt.pas',
+  mEncryptEditions in '..\..\Encrypt\mEncryptEditions.pas',
+  mEncryptTypes in '..\..\Encrypt\mEncryptTypes.pas',
+  mConnectEncrypt in '..\..\Encrypt\NetClient\mConnectEncrypt.pas',
+  CryptUtils in '..\..\Encrypt\CryptUtils.pas',
+  EncryptDog in '..\..\Encrypt\EncryptDog.pas',
+  ScFileArchiver in '..\..\Encrypt\ScFileArchiver.pas',
+  SearchFme in '..\..\Frames\SearchFme.pas' {SearchFrame: TFrame},
+  BatchInsertBillsFrm in '..\..\Forms\BatchInsertBillsFrm.pas' {BatchInsertBillsForm},
+  SearchDm in '..\..\DataModules\SearchDm.pas' {SearchData: TDataModule},
+  CslJson in '..\..\Units\CslJson.pas',
+  FindUserFrm in '..\..\Forms\FindUserFrm.pas' {FindUserForm},
+  ImportExcelHintFrm in '..\..\Forms\ImportExcelHintFrm.pas' {ImportExcelHintForm},
+  CheckerFme in '..\..\Frames\CheckerFme.pas' {CheckerFrame: TFrame},
+  OrderCheckerFme in '..\..\Frames\OrderCheckerFme.pas' {OrderCheckerFrame: TFrame},
+  ReportAdjustFrm in '..\..\Forms\ReportAdjustFrm.pas' {ReportAdjustForm},
+  DealBillsDm in '..\..\DataModules\DealBillsDm.pas' {DealBillsData: TDataModule},
+  BatchReplaceBillsFrm in '..\..\Forms\BatchReplaceBillsFrm.pas' {BatchReplaceBillsForm},
+  MD5Unit in '..\..\Units\MD5Unit.pas',
+  MainDataListDm in '..\..\DataModules\MainDataListDm.pas' {MainListData: TDataModule},
+  mProgressFrm in '..\..\Forms\mProgressFrm.pas' {mProgress},
+  rmGclBillsBGDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsBGDm.pas' {DataModule1: TDataModule},
+  rmBGLExecutionDm in '..\..\DataModules\ReportMemoryDm\rmBGLExecutionDm.pas' {rmBGLExecutionData: TDataModule},
+  rmBillsGatherDm in '..\..\DataModules\ReportMemoryDm\rmBillsGatherDm.pas' {rmBillsGatherData: TDataModule},
+  rmCacheData in '..\..\DataModules\ReportMemoryDm\rmCacheData.pas',
+  rmFxBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsAddDm.pas' {rmFxBillsAddData: TDataModule},
+  rmFxBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsCompareDm.pas' {rmFxBillsCompareData: TDataModule},
+  rmGclBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAddDm.pas' {rmGclBillsAddData: TDataModule},
+  rmGclBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsCompareDm.pas' {rmGclBillsCompareData: TDataModule},
+  rmGridHeaderDm in '..\..\DataModules\ReportMemoryDm\rmGridHeaderDm.pas' {rmGridHeaderData: TDataModule},
+  rmSelectProjectFrm in '..\..\Forms\rmSelectProjectFrm.pas' {ProjectSelectForm},
+  ConditionalDefines in '..\..\Units\ConditionalDefines.pas',
+  ProgressHintFrm in '..\..\Forms\ProgressHintFrm.pas' {ProgressHintForm},
+  rmTestFrm in '..\..\DataModules\ReportMemoryDm\rmTestFrm.pas' {rmTestForm},
+  CheckAndClearFrm in '..\..\Forms\CheckAndClearFrm.pas' {CheckAndClearForm},
+  rmGclBillsAuditCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAuditCompareDm.pas' {rmGclBillsAuditCompareData: TDataModule},
+  DealBillsFrm in '..\..\Forms\DealBillsFrm.pas' {DealBillsForm},
+  TenderBackupFrm in '..\..\Forms\TenderBackupFrm.pas' {TenderBackupForm},
+  TenderBackupDm in '..\..\DataModules\TenderBackupDm.pas' {TenderBackupData: TDataModule},
+  BillsBookmarkDm in '..\..\DataModules\BillsBookmarkDm.pas' {BillsBookmarkData: TDataModule},
+  BookmarkFme in '..\..\Frames\BookmarkFme.pas' {BookmarkFrame: TFrame},
+  rmDealInfosDm in '..\..\DataModules\ReportMemoryDm\rmDealInfosDm.pas' {rmDealInfosData: TDataModule},
+  rmXmjBGLDetailDm in '..\..\DataModules\ReportMemoryDm\rmXmjBGLDetailDm.pas' {rmXmjBGLDetailData: TDataModule},
+  WelcomeFrm in '..\..\Forms\WelcomeFrm.pas' {WelcomeForm},
+  rmOtherReport1Dm in '..\..\DataModules\ReportMemoryDm\rmOtherReport1Dm.pas' {rmOtherReport1Data: TDataModule},
+  CheckerMemoFrm in '..\..\Forms\CheckerMemoFrm.pas' {CheckerMemoForm},
+  CslHint in '..\..\Units\CslHint.pas',
+  TenderBackupManager in '..\..\Units\TenderBackupManager.pas',
+  UpFileManageUnit in '..\..\Units\UpFileManageUnit.pas',
+  UpFileFrame in '..\..\Forms\UpFileFrame.pas',
+  UpFileManageFrame in '..\..\Forms\UpFileManageFrame.pas',
+  SheetSelectFrm in '..\..\Forms\SheetSelectFrm.pas' {SheetSelectForm},
+  Checker in '..\..\Units\Checker.pas',
+  ReportInteractInfo in '..\..\Units\ReportInteractInfo.pas',
+  AuditSelectFrm in '..\..\Forms\ReportInteractFrms\AuditSelectFrm.pas' {AuditSelctForm},
+  DealBillsFme in '..\..\Frames\DealBillsFme.pas' {DealBillsFrame: TFrame},
+  rmGclBillsPlaneDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsPlaneDm.pas' {rmGclBillsPlaneData: TDataModule},
+  StageCompareDm in '..\..\DataModules\StageCompareDm.pas' {StageCompareData: TDataModule},
+  BGLClipboard in '..\..\Units\BGLClipboard.pas',
+  rmMentalCustomized1Dm in '..\..\DataModules\ReportMemoryDm\rmMentalCustomized1Dm.pas' {rmMentalCustomized1Data: TDataModule},
+  mDataRecord in '..\..\Units\mDataRecord.pas',
+  rmGcl_XmjBillsDm in '..\..\DataModules\ReportMemoryDm\rmGcl_XmjBillsDm.pas' {rmGcl_XmjBillsData: TDataModule},
+  rmCustomized2Dm in '..\..\DataModules\ReportMemoryDm\rmCustomized2Dm.pas' {rmCustomized2Data: TDataModule},
+  CalcDecimal in '..\..\Units\CalcDecimal.pas',
+  DetailExcelImport in '..\..\Units\DetailExcelImport.pas',
+  mProgressProFrm in '..\..\Forms\mProgressProFrm.pas' {ProgressProForm},
+  BaseClipboard in '..\..\Units\BaseClipboard.pas',
+  PriceMarginBillsDm in '..\..\DataModules\PriceMarginBillsDm.pas' {PriceMarginBillsData: TDataModule},
+  ProjectGLDm in '..\..\DataModules\ProjectGLDm.pas' {ProjectGLData: TDataModule},
+  GclBillsGatherModel in '..\..\Units\GclBillsGatherModel.pas',
+  DetailGLDm in '..\..\DataModules\DetailGLDm.pas' {DetailGLData: TDataModule},
+  rmHaBaiCustomizedDm in '..\..\DataModules\ReportMemoryDm\rmHaBaiCustomizedDm.pas' {rmHaBaiCustomizedData: TDataModule},
+  BillsPasteSelectFrm in '..\..\Forms\BillsPasteSelectFrm.pas' {BillsPasteSelectForm},
+  PriceMarginBillsFme in '..\..\Frames\PriceMarginBillsFme.pas' {PriceMarginBillsFrame: TFrame},
+  PriceMarginFme in '..\..\Frames\PriceMarginFme.pas' {PriceMarginFrame: TFrame},
+  ProjectGLFme in '..\..\Frames\ProjectGLFme.pas' {ProjectGLFrame: TFrame},
+  SelectDetailGLsFrm in '..\..\Forms\SelectDetailGLsFrm.pas' {SelectDetailGLsForm},
+  DealPayPlanFrm in '..\..\Forms\DealPayPlanFrm.pas' {DealPayPlanForm},
+  tpBaseGatherData in '..\..\TenderPartition\tpBaseGatherData.pas',
+  tpGatherGcl in '..\..\TenderPartition\tpGatherGcl.pas',
+  tpGatherTree in '..\..\TenderPartition\tpGatherTree.pas',
+  tpMainData in '..\..\TenderPartition\tpMainData.pas',
+  tpMainFrm in '..\..\TenderPartition\tpMainFrm.pas' {tpMainForm},
+  tpNoPegDm in '..\..\TenderPartition\tpNoPegDm.pas' {tpNoPegData: TDataModule},
+  tpPartTender in '..\..\TenderPartition\tpPartTender.pas',
+  tpPartTenderFme in '..\..\TenderPartition\tpPartTenderFme.pas' {tpPartTenderFrame: TFrame},
+  tpPartTenderSet in '..\..\TenderPartition\tpPartTenderSet.pas',
+  tpPartTenderSetFme in '..\..\TenderPartition\tpPartTenderSetFme.pas' {tpPartTenderSetFrame: TFrame},
+  tpPeg in '..\..\TenderPartition\tpPeg.pas',
+  tpPeg_GclDm in '..\..\TenderPartition\tpPeg_GclDm.pas' {tpPeg_GclData: TDataModule},
+  tpPeg_GclFme in '..\..\TenderPartition\tpPeg_GclFme.pas' {tpPeg_GclFrame: TFrame},
+  tpPegBlock in '..\..\TenderPartition\tpPegBlock.pas',
+  tpPegGclGatherDm in '..\..\TenderPartition\tpPegGclGatherDm.pas' {tpPegGclGatherData: TDataModule},
+  tpPegGclGatherFme in '..\..\TenderPartition\tpPegGclGatherFme.pas' {tpPegGclGatherFrame: TFrame},
+  tpPegPartSettingFrm in '..\..\TenderPartition\tpPegPartSettingFrm.pas' {tpPegPartSettingForm},
+  tpPricePartSettingFrm in '..\..\TenderPartition\tpPricePartSettingFrm.pas' {tpPricePartSettingForm},
+  tpSelectTenderDm in '..\..\TenderPartition\tpSelectTenderDm.pas' {tpSelectTenderData: TDataModule},
+  tpSelectTenderNode in '..\..\TenderPartition\tpSelectTenderNode.pas',
+  tpSelectTendersFrm in '..\..\TenderPartition\tpSelectTendersFrm.pas' {SelectTendersForm},
+  tpTrialPegInputFrm in '..\..\TenderPartition\tpTrialPegInputFrm.pas' {TrialPegInputForm},
+  mPegFilter in '..\..\Units\mPegFilter.pas',
+  rdpBillsGatherDm in '..\..\Report\DataPrepare\rdpBillsGatherDm.pas' {rdpBillsGatherData: TDataModule},
+  rdpTables in '..\..\Report\DataPrepare\rdpTables.pas',
+  ReportPrepare in '..\..\Report\ReportPrepare.pas',
+  ColVisibleManager in '..\..\Units\ColVisibleManager.pas',
+  ReportConnection in '..\..\Report\ReportConnection.pas',
+  rgpGatherControl in '..\..\Report\ProjGather\rgpGatherControl.pas',
+  rpgBillsCalcDm in '..\..\Report\ProjGather\rpgBillsCalcDm.pas' {rpgBillsCalcData: TDataModule},
+  rpgBillsDm in '..\..\Report\ProjGather\rpgBillsDm.pas' {rpgBillsData: TDataModule},
+  rpgGatherControl in '..\..\Report\ProjGather\rpgGatherControl.pas',
+  rpgGatherData in '..\..\Report\ProjGather\rpgGatherData.pas',
+  rpgGatherProjDm in '..\..\Report\ProjGather\rpgGatherProjDm.pas' {rpgGatherProjData: TDataModule},
+  rProjGatherTables in '..\..\Report\ProjGather\rProjGatherTables.pas',
+  ProjGatherTree in '..\..\ProjGather\ProjGatherTree.pas',
+  ProjGather in '..\..\ProjGather\ProjGather.pas',
+  CalcData in '..\..\Units\CalcData.pas',
+  GatherProjInfo in '..\..\ProjGather\GatherProjInfo.pas',
+  ProjGatherCalcData in '..\..\ProjGather\ProjGatherCalcData.pas',
+  ProjGatherSelectFrm in '..\..\ProjGather\ProjGatherSelectFrm.pas' {ProjGatherSelectForm},
+  DealBillsExcelImport in '..\..\Units\DealBillsExcelImport.pas',
+  ExcelImport_Bills in '..\..\Units\ExcelImport_Bills.pas',
+  ExcelImport_GclBills in '..\..\Units\ExcelImport_GclBills.pas',
+  DbTreeImport in '..\..\Units\DbTreeImport.pas',
+  DbTreeDm in '..\..\DataModules\DbTreeDm.pas',
+  OtherMeasurePhaseDm in '..\..\DataModules\OtherMeasurePhaseDm.pas' {OtherMeasurePhaseData: TDataModule},
+  OtherMeasureOnceDm in '..\..\DataModules\OtherMeasureOnceDm.pas' {OtherMeasureOnceData: TDataModule},
+  OMPhaseRecord in '..\..\Units\DataRecord\OMPhaseRecord.pas',
+  OtherMeasureFme in '..\..\Frames\OtherMeasureFme.pas' {OtherMeasureFrame: TFrame},
+  ProjGatherSelectFme in '..\..\ProjGather\ProjGatherSelectFme.pas' {ProjGatherSelectFrame: TFrame},
+  rpgZoneGatherControl in '..\..\Report\ProjGather\Zone\rpgZoneGatherControl.pas',
+  rpgZoneProjGatherSelectFrm in '..\..\Report\ProjGather\Zone\rpgZoneProjGatherSelectFrm.pas' {rpgZoneProjGatherSelectForm},
+  UpFileSelectOnLineFrm in '..\..\Forms\UpFileSelectOnLineFrm.pas' {UpFileSelectOnLineForm},
+  LogUtils in '..\..\Units\LogUtils.pas',
+  ReportPdfHelper in '..\..\Units\ReportPdfHelper.pas',
+  SelectOnlineSignPhaseFrm in '..\..\Forms\SelectOnlineSignPhaseFrm.pas' {SelectOnlineSignPhaseForm},
+  SignOnlineReportsFrm in '..\..\Forms\SignOnlineReportsFrm.pas' {SignOnlineReportsForm},
+  SignReports in '..\..\Units\SignReports.pas',
+  VirtualTrees in '..\..\..\SmartCost\Components\virtualtree\VirtualTrees.pas',
+  TemplateManagerHelper in '..\..\Units\TemplateManagerHelper.pas',
+  RenameSignReportFrm in '..\..\Forms\RenameSignReportFrm.pas' {RenameSignReportForm},
+  rmWeiWuZjjlGatherDm in '..\..\DataModules\ReportMemoryDm\rmWeiWuZjjlGatherDm.pas' {rmWeiWuZjjlGatherData: TDataModule},
+  SetGuestFrm in '..\..\Forms\SetGuestFrm.pas' {SetGuestForm},
+  ProjGatherDealPay in '..\..\ProjGather\ProjGatherDealPay.pas',
+  ProjGatherProperties in '..\..\ProjGather\ProjGatherProperties.pas',
+  rpgDealPayDm in '..\..\Report\ProjGather\rpgDealPayDm.pas' {rgpDealPayData: TDataModule},
+  superobject in '..\..\Units\superobject\superobject.pas',
+  ReportManagerFrm in '..\..\Forms\ReportManagerFrm.pas',
+  ReportManagerDM in '..\..\DataModules\ReportManagerDM.pas' {Reports: TDataModule},
+  ReportHistoryFrm in '..\..\Forms\ReportHistoryFrm.pas' {ReportHistoryForm},
+  MeasureGatherZJJL in '..\..\Units\MeasureGatherZJJL.pas',
+  stgExcelExport in '..\..\SubTenderGather\stgExcelExport.pas',
+  stgGather in '..\..\SubTenderGather\stgGather.pas',
+  stgGatherCacheData in '..\..\SubTenderGather\stgGatherCacheData.pas',
+  stgGatherControl in '..\..\SubTenderGather\stgGatherControl.pas',
+  stgGatherDm in '..\..\SubTenderGather\stgGatherDm.pas' {stgGatherData: TDataModule},
+  stgGatherUtils in '..\..\SubTenderGather\stgGatherUtils.pas',
+  stgResultFrm in '..\..\SubTenderGather\stgResultFrm.pas' {stgResultForm},
+  stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
+  stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
+  stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas',
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule},
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule};
+
+{$R *.res}
+
+var Mutex: THandle;
+begin
+  Mutex := CreateMutex(nil, True, G_AppHandleName);
+
+  if GetLastError = ERROR_ALREADY_EXISTS then
+    Application.MessageBox('程序正在运行, 请勿重复打开该软件!', '系统提示', MB_OK + MB_ICONINFORMATION)
+  else
+  begin
+    Application.CreateHandle;
+    Application.Initialize;
+    Application.Title := '纵横公路工程结算决算计量一体化软件广东专业版';
+    ShowWelcome;
+    if CheckDogExists then
+    begin
+      HideWelcome;
+      Application.CreateForm(TMainForm, MainForm);
+  Application.CreateForm(TSetGuestForm, SetGuestForm);
+  end
+    else  HideWelcome;
+    Application.Run;
+  end;
+
+  ReleaseMutex(Mutex);
+end.

+ 41 - 0
Dprs/PWFree/Measure_Cloud.cfg

@@ -0,0 +1,41 @@
+-$A8
+-$B-
+-$C+
+-$D+
+-$E-
+-$F-
+-$G+
+-$H+
+-$I+
+-$J-
+-$K-
+-$L+
+-$M-
+-$N+
+-$O+
+-$P+
+-$Q-
+-$R-
+-$S-
+-$T-
+-$U-
+-$V+
+-$W-
+-$X+
+-$YD
+-$Z1
+-cg
+-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+-H+
+-W+
+-M
+-$M16384,1048576
+-K$00400000
+-E"D:\SmartCostExe\Measure\PWFree"
+-N"..\..\Dcus"
+-LE"c:\program files (x86)\borland\delphi7\Projects\Bpl"
+-LN"c:\program files (x86)\borland\delphi7\Projects\Bpl"
+-D_mCloud;_mLoginNoPW;
+-w-UNSAFE_TYPE
+-w-UNSAFE_CODE
+-w-UNSAFE_CAST

+ 154 - 0
Dprs/PWFree/Measure_Cloud.dof

@@ -0,0 +1,154 @@
+[FileVersion]
+Version=7.0
+[Compiler]
+A=8
+B=0
+C=1
+D=1
+E=0
+F=0
+G=1
+H=1
+I=1
+J=0
+K=0
+L=1
+M=0
+N=1
+O=1
+P=1
+Q=0
+R=0
+S=0
+T=0
+U=0
+V=1
+W=0
+X=1
+Y=1
+Z=1
+ShowHints=1
+ShowWarnings=1
+UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+NamespacePrefix=
+SymbolDeprecated=1
+SymbolLibrary=1
+SymbolPlatform=1
+UnitLibrary=1
+UnitPlatform=1
+UnitDeprecated=1
+HResultCompat=1
+HidingMember=1
+HiddenVirtual=1
+Garbage=1
+BoundsError=1
+ZeroNilCompat=1
+StringConstTruncated=1
+ForLoopVarVarPar=1
+TypedConstVarPar=1
+AsgToTypedConst=1
+CaseLabelRange=1
+ForVariable=1
+ConstructingAbstract=1
+ComparisonFalse=1
+ComparisonTrue=1
+ComparingSignedUnsigned=1
+CombiningSignedUnsigned=1
+UnsupportedConstruct=1
+FileOpen=1
+FileOpenUnitSrc=1
+BadGlobalSymbol=1
+DuplicateConstructorDestructor=1
+InvalidDirective=1
+PackageNoLink=1
+PackageThreadVar=1
+ImplicitImport=1
+HPPEMITIgnored=1
+NoRetVal=1
+UseBeforeDef=1
+ForLoopVarUndef=1
+UnitNameMismatch=1
+NoCFGFileFound=1
+MessageDirective=1
+ImplicitVariants=1
+UnicodeToLocale=1
+LocaleToUnicode=1
+ImagebaseMultiple=1
+SuspiciousTypecast=1
+PrivatePropAccessor=1
+UnsafeType=0
+UnsafeCode=0
+UnsafeCast=0
+[Linker]
+MapFile=0
+OutputObjs=0
+ConsoleApp=1
+DebugInfo=0
+RemoteSymbols=0
+MinStackSize=16384
+MaxStackSize=1048576
+ImageBase=4194304
+ExeDescription=
+[Directories]
+OutputDir=D:\SmartCostExe\Measure\PWFree
+UnitOutputDir=..\..\Dcus
+PackageDLLOutputDir=
+PackageDCPOutputDir=
+SearchPath=
+Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;ZjGridD7;DPanel;ExTree;JimComboBoxs;JimTab;PrintComRep;XPMenu_tom;ZjGridFereD7;ZjCommon;SmartDataSet;ZjGridActns
+Conditionals=_mCloud;_mLoginNoPW;
+DebugSourceDirs=
+UsePackages=0
+[Parameters]
+RunParams=
+HostApplication=
+Launcher=
+UseLauncher=0
+DebugCWD=
+[Language]
+ActiveLang=
+ProjectLang=
+RootDir=D:\Program Files\Borland\Delphi7\Bin\
+[Version Info]
+IncludeVerInfo=1
+AutoIncBuild=1
+MajorVer=3
+MinorVer=1
+Release=7
+Build=2369
+Debug=0
+PreRelease=0
+Special=0
+Private=0
+DLL=0
+Locale=2052
+CodePage=936
+[Version Info Keys]
+CompanyName=珠海纵横创新软件有限公司
+FileDescription=纵横结算决算计量一体化云版
+FileVersion=3.1.7.2369
+InternalName=
+LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
+LegalTrademarks=Measure
+OriginalFilename=
+ProductName=纵横公路工程结算决算一体化软件
+ProductVersion=3.1.7
+[Excluded Packages]
+C:\Program Files (x86)\Borland\Delphi7\Lib\3F\Developer Express Inc\ExpressEditors Library 5\Delphi 7\Bin\dclcxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc.
+C:\Program Files (x86)\Borland\Delphi7\Lib\3F\Developer Express Inc\ExpressEditors Library 5\Delphi 7\Bin\dclcxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc.
+[HistoryLists\hlConditionals]
+Count=4
+Item0=_mCloud;_mLoginNoPW;
+Item1=_mCloud;
+Item2=_mCloud;_mLoginNoPW
+Item3=_mCloud;_mDebugView
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=1
+Item0=..\..\Dcus
+[HistoryLists\hlOutputDirectorry]
+Count=2
+Item0=D:\SmartCostExe\Measure\PWFree
+Item1=D:\SmartCostExe\Measure

+ 7 - 1
Dprs/PWFree/Measure_Cloud.dpr

@@ -241,7 +241,13 @@ uses
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgTables in '..\..\SubTenderGather\stgTables.pas',
   stgTables in '..\..\SubTenderGather\stgTables.pas',
   stgGather in '..\..\SubTenderGather\stgGather.pas',
   stgGather in '..\..\SubTenderGather\stgGather.pas',
-  stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm};
+  stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  BillsPosTree in '..\..\Units\BillsPosTree.pas',
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule},
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule};
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/PWFree/Measure_Cloud.res


+ 356 - 0
Dprs/PWFree/Measure_Cloud_Debug.dpr

@@ -0,0 +1,356 @@
+program Measure_Cloud_Debug;
+
+{$R '..\..\res\uac.res' '..\..\res\uac.rc'}
+
+uses
+  Windows,
+  ShareMem,
+  HttpApp,
+  Forms,
+  Controls,
+  MainFrm in '..\..\Forms\MainFrm.pas' {MainForm},
+  ProjectManagerFme in '..\..\Frames\ProjectManagerFme.pas' {ProjectManagerFrame: TFrame},
+  UtilMethods in '..\..\Units\UtilMethods.pas',
+  ProjectManagerDm in '..\..\DataModules\ProjectManagerDm.pas' {ProjectManagerData: TDataModule},
+  Connections in '..\..\Units\Connections.pas',
+  TransFile in '..\..\Units\TransFile.pas',
+  ZhAPI in '..\..\Units\ZhAPI.pas',
+  CompactDB in '..\..\Units\CompactDB.pas',
+  OpenProjectManager in '..\..\Units\OpenProjectManager.pas',
+  ProjectData in '..\..\Units\ProjectData.pas',
+  UpdateDataBase in '..\..\Units\UpdateDataBase.pas',
+  DataBaseTables in '..\..\Units\DataBaseTables.pas',
+  ConfigDoc in '..\..\Units\ConfigDoc.pas',
+  SupportUnit in '..\..\Units\SupportUnit.pas',
+  StandardLibs in '..\..\Units\StandardLibs.pas',
+  StandardLib in '..\..\Units\StandardLib.pas',
+  NewProjectFrm in '..\..\Forms\NewProjectFrm.pas' {NewProjectForm},
+  ProjectFme in '..\..\Frames\ProjectFme.pas' {ProjectFrame: TFrame},
+  StandardBillsDm in '..\..\DataModules\StandardBillsDm.pas' {StandardBillsData: TDataModule},
+  StandardBillsFme in '..\..\Frames\StandardBillsFme.pas' {StandardBillsFrame: TFrame},
+  StandardLibsFme in '..\..\Frames\StandardLibsFme.pas' {StandardLibsFrame: TFrame},
+  BillsDm in '..\..\DataModules\BillsDm.pas' {BillsData: TDataModule},
+  Globals in '..\..\Units\Globals.pas',
+  StageDm in '..\..\DataModules\StageDm.pas' {StageData: TDataModule},
+  ExcelImport in '..\..\Units\ExcelImport.pas',
+  CacheTree in '..\..\Units\CacheTree.pas',
+  MCacheTree in '..\..\Units\MCacheTree.pas',
+  ProjectPropertiesFrm in '..\..\Forms\ProjectPropertiesFrm.pas' {ProjectPropertiesForm},
+  ProjectProperty in '..\..\Units\ProjectProperty.pas',
+  FormulaCalc in '..\..\Units\FormulaCalc.pas',
+  BillsCommand in '..\..\Units\BillsCommand.pas',
+  PhaseData in '..\..\Units\PhaseData.pas',
+  PhaseProperty in '..\..\Units\PhaseProperty.pas',
+  BillsClipboard in '..\..\Units\BillsClipboard.pas',
+  BillsTree in '..\..\Units\BillsTree.pas',
+  ProjectCommands in '..\..\Units\ProjectCommands.pas',
+  PhaseCompareDm in '..\..\DataModules\PhaseCompareDm.pas' {PhaseCompareData: TDataModule},
+  PhaseCompareFme in '..\..\Frames\PhaseCompareFme.pas' {PhaseCompareFrame: TFrame},
+  OptionFrm in '..\..\Forms\OptionFrm.pas' {OptionForm},
+  DealPaymentDm in '..\..\DataModules\DealPaymentDm.pas' {DealPaymentData: TDataModule},
+  DealPaymentFme in '..\..\Frames\DealPaymentFme.pas' {DealPaymentFrame: TFrame},
+  PhasePayDm in '..\..\DataModules\PhasePayDm.pas' {PhasePayData: TDataModule},
+  ZJJLDm in '..\..\DataModules\ZJJLDm.pas' {ZJJLData: TDataModule},
+  BillsGatherDm in '..\..\DataModules\BillsGatherDm.pas' {BillsGatherData: TDataModule},
+  BillsGatherFme in '..\..\Frames\BillsGatherFme.pas' {BillsGatherFrame: TFrame},
+  LoginFrm in '..\..\Forms\LoginFrm.pas' {LoginFrm},
+  PHPWebDm in '..\..\DataModules\PHPWebDm.pas' {PHPWeb: TDataModule},
+  MD5Unit in '..\..\Units\MD5Unit.pas',
+  ConstUnit in '..\..\Units\ConstUnit.pas',
+  ExportExcel in '..\..\Units\ExportExcel.pas',
+  mEncryptEditions in '..\..\Encrypt\mEncryptEditions.pas',
+  mEncryptUnit in '..\..\Encrypt\mEncryptUnit.pas',
+  CryptUtils in '..\..\Encrypt\CryptUtils.pas',
+  EncryptDog in '..\..\Encrypt\EncryptDog.pas',
+  mEncryptPWD in '..\..\Encrypt\mEncryptPWD.pas',
+  mEncryptTypes in '..\..\Encrypt\mEncryptTypes.pas',
+  mR1Encrypt in '..\..\Encrypt\mR1Encrypt.pas',
+  mS4Utils in '..\..\Encrypt\mS4Utils.pas',
+  mSNSEncrypt in '..\..\Encrypt\mSNSEncrypt.pas',
+  Rockey1 in '..\..\Encrypt\Rockey1.pas',
+  mConnectEncrypt in '..\..\Encrypt\NetClient\mConnectEncrypt.pas',
+  FindUserFrm in '..\..\Forms\FindUserFrm.pas' {FindUserForm},
+  CslJson in '..\..\Units\CslJson.pas',
+  OrderCheckerFme in '..\..\Frames\OrderCheckerFme.pas' {OrderCheckerFrame: TFrame},
+  CheckerFme in '..\..\Frames\CheckerFme.pas' {CheckerFrame: TFrame},
+  WebNewTenderFrm in '..\..\Forms\WebNewTenderFrm.pas' {WebNewTenderForm},
+  ScFileArchiver in '..\..\Encrypt\ScFileArchiver.pas',
+  SearchDm in '..\..\DataModules\SearchDm.pas' {SearchData: TDataModule},
+  DealBillsDm in '..\..\DataModules\DealBillsDm.pas' {DealBillsData: TDataModule},
+  BGLDm in '..\..\DataModules\BGLDm.pas' {BGLData: TDataModule},
+  StaffDm in '..\..\DataModules\StaffDm.pas' {StaffData: TDataModule},
+  BillsCompileDm in '..\..\DataModules\BillsCompileDm.pas' {BillsCompileData: TDataModule},
+  BillsMeasureDm in '..\..\DataModules\BillsMeasureDm.pas' {BillsMeasureData: TDataModule},
+  ReportManager in '..\..\Units\ReportManager.pas',
+  BGLSelectFrm in '..\..\Forms\BGLSelectFrm.pas' {BGLSelectForm},
+  BillsCompileFme in '..\..\Frames\BillsCompileFme.pas' {BillsCompileFrame: TFrame},
+  BillsMeasureFme in '..\..\Frames\BillsMeasureFme.pas' {BillsMeasureFrame: TFrame},
+  BatchReplaceBillsFrm in '..\..\Forms\BatchReplaceBillsFrm.pas' {BatchReplaceBillsForm},
+  ZJJLFme in '..\..\Frames\ZJJLFme.pas' {ZJJLFrame: TFrame},
+  BGLFme in '..\..\Frames\BGLFme.pas' {BGLFrame: TFrame},
+  MergeTextFrm in '..\..\Forms\MergeTextFrm.pas' {MergeTextForm},
+  ReportsFrm in '..\..\Forms\ReportsFrm.pas' {ReportsForm},
+  ReportAdjustFrm in '..\..\Forms\ReportAdjustFrm.pas' {ReportAdjustForm},
+  SearchFme in '..\..\Frames\SearchFme.pas' {SearchFrame: TFrame},
+  AuthFrm in '..\..\Forms\AuthFrm.pas' {AuthorizeForm},
+  AboutFrm in '..\..\Forms\AboutFrm.pas' {AboutForm},
+  ImportExcelHintFrm in '..\..\Forms\ImportExcelHintFrm.pas' {ImportExcelHintForm},
+  PasswordInputFrm in '..\..\Forms\PasswordInputFrm.pas' {PasswordInputForm},
+  BatchInsertBillsFrm in '..\..\Forms\BatchInsertBillsFrm.pas' {BatchInsertBillsForm},
+  MainDataListDm in '..\..\DataModules\MainDataListDm.pas' {MainListData: TDataModule},
+  mProgressFrm in '..\..\Forms\mProgressFrm.pas' {mProgress},
+  rmGclBillsBGDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsBGDm.pas' {rmGclBillsBGData: TDataModule},
+  rmGclBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsCompareDm.pas' {rmGclBillsCompareData: TDataModule},
+  rmBGLExecutionDm in '..\..\DataModules\ReportMemoryDm\rmBGLExecutionDm.pas' {rmBGLExecutionData: TDataModule},
+  rmBillsGatherDm in '..\..\DataModules\ReportMemoryDm\rmBillsGatherDm.pas' {rmBillsGatherData: TDataModule},
+  rmFxBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsAddDm.pas' {rmFxBillsAddData: TDataModule},
+  rmFxBillsCompareDm in '..\..\DataModules\ReportMemoryDm\rmFxBillsCompareDm.pas' {rmFxBillsCompareData: TDataModule},
+  rmGclBillsAddDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAddDm.pas' {rmGclBillsAddData: TDataModule},
+  rmGridHeaderDm in '..\..\DataModules\ReportMemoryDm\rmGridHeaderDm.pas' {rmGridHeaderData: TDataModule},
+  rmCacheData in '..\..\DataModules\ReportMemoryDm\rmCacheData.pas',
+  rmSelectProjectFrm in '..\..\Forms\rmSelectProjectFrm.pas' {ProjectSelectForm},
+  ConditionalDefines in '..\..\Units\ConditionalDefines.pas',
+  ProgressHintFrm in '..\..\Forms\ProgressHintFrm.pas' {ProgressHintForm},
+  CheckAndClearFrm in '..\..\Forms\CheckAndClearFrm.pas' {CheckAndClearForm},
+  rmGclBillsAuditCompareDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsAuditCompareDm.pas' {rmGclBillsAuditCompareData: TDataModule},
+  rmTestFrm in '..\..\DataModules\ReportMemoryDm\rmTestFrm.pas' {rmTestForm},
+  DealBillsFrm in '..\..\Forms\DealBillsFrm.pas' {DealBillsForm},
+  TenderBackupFrm in '..\..\Forms\TenderBackupFrm.pas' {TenderBackupForm},
+  TenderBackupDm in '..\..\DataModules\TenderBackupDm.pas' {TenderBackupData: TDataModule},
+  BillsBookmarkDm in '..\..\DataModules\BillsBookmarkDm.pas' {BillsBookmarkData: TDataModule},
+  BookmarkFme in '..\..\Frames\BookmarkFme.pas' {BookmarkFrame: TFrame},
+  rmDealInfosDm in '..\..\DataModules\ReportMemoryDm\rmDealInfosDm.pas' {rmDealInfosData: TDataModule},
+  rmXmjBGLDetailDm in '..\..\DataModules\ReportMemoryDm\rmXmjBGLDetailDm.pas' {rmXmjBGLDetailData: TDataModule},
+  WelcomeFrm in '..\..\Forms\WelcomeFrm.pas' {WelcomeForm},
+  rmOtherReport1Dm in '..\..\DataModules\ReportMemoryDm\rmOtherReport1Dm.pas' {rmOtherReport1Data: TDataModule},
+  CheckerMemoFrm in '..\..\Forms\CheckerMemoFrm.pas' {CheckerMemoForm},
+  CslHint in '..\..\Units\CslHint.pas',
+  IPFrm in '..\..\Forms\IPFrm.pas' {IPForm},
+  TenderBackupManager in '..\..\Units\TenderBackupManager.pas',
+  UpFileManageUnit in '..\..\Units\UpFileManageUnit.pas',
+  UpFileFrame in '..\..\Forms\UpFileFrame.pas',
+  UpFileManageFrame in '..\..\Forms\UpFileManageFrame.pas',
+  SheetSelectFrm in '..\..\Forms\SheetSelectFrm.pas' {SheetSelectForm},
+  ReportInteractInfo in '..\..\Units\ReportInteractInfo.pas',
+  Checker in '..\..\Units\Checker.pas',
+  AuditSelectFrm in '..\..\Forms\ReportInteractFrms\AuditSelectFrm.pas' {AuditSelctForm},
+  DealBillsFme in '..\..\Frames\DealBillsFme.pas' {DealBillsFrame: TFrame},
+  rmGclBillsPlaneDm in '..\..\DataModules\ReportMemoryDm\rmGclBillsPlaneDm.pas' {rmGclBillsPlaneData: TDataModule},
+  StageCompareDm in '..\..\DataModules\StageCompareDm.pas' {StageCompareData: TDataModule},
+  mDataRecord in '..\..\Units\mDataRecord.pas',
+  BGLClipboard in '..\..\Units\BGLClipboard.pas',
+  rmMentalCustomized1Dm in '..\..\DataModules\ReportMemoryDm\rmMentalCustomized1Dm.pas' {rmMentalCustomized1Data: TDataModule},
+  rmGcl_XmjBillsDm in '..\..\DataModules\ReportMemoryDm\rmGcl_XmjBillsDm.pas' {rmGcl_XmjBillsData: TDataModule},
+  rmCustomized2Dm in '..\..\DataModules\ReportMemoryDm\rmCustomized2Dm.pas' {rmCustomized2Data: TDataModule},
+  CalcDecimal in '..\..\Units\CalcDecimal.pas',
+  BillsPasteSelectFrm in '..\..\Forms\BillsPasteSelectFrm.pas' {BillsPasteSelectForm},
+  DetailExcelImport in '..\..\Units\DetailExcelImport.pas',
+  mProgressProFrm in '..\..\Forms\mProgressProFrm.pas' {ProgressProForm},
+  rmHaBaiCustomizedDm in '..\..\DataModules\ReportMemoryDm\rmHaBaiCustomizedDm.pas' {rmHaBaiCustomizedData: TDataModule},
+  ProjectGLDm in '..\..\DataModules\ProjectGLDm.pas' {ProjectGLData: TDataModule},
+  PriceMarginBillsDm in '..\..\DataModules\PriceMarginBillsDm.pas' {PriceMarginBillsData: TDataModule},
+  GclBillsGatherModel in '..\..\Units\GclBillsGatherModel.pas',
+  DetailGLDm in '..\..\DataModules\DetailGLDm.pas' {DetailGLData: TDataModule},
+  PriceMarginFme in '..\..\Frames\PriceMarginFme.pas' {PriceMarginFrame: TFrame},
+  ProjectGLFme in '..\..\Frames\ProjectGLFme.pas' {ProjectGLFrame: TFrame},
+  SelectDetailGLsFrm in '..\..\Forms\SelectDetailGLsFrm.pas' {SelectDetailGLsForm},
+  DealPayPlanFrm in '..\..\Forms\DealPayPlanFrm.pas' {DealPayPlanForm},
+  BaseClipboard in '..\..\Units\BaseClipboard.pas',
+  mPegFilter in '..\..\Units\mPegFilter.pas',
+  tpBaseGatherData in '..\..\TenderPartition\tpBaseGatherData.pas',
+  tpGatherGcl in '..\..\TenderPartition\tpGatherGcl.pas',
+  tpGatherTree in '..\..\TenderPartition\tpGatherTree.pas',
+  tpMainData in '..\..\TenderPartition\tpMainData.pas',
+  tpMainFrm in '..\..\TenderPartition\tpMainFrm.pas' {tpMainForm},
+  tpNoPegDm in '..\..\TenderPartition\tpNoPegDm.pas' {tpNoPegData: TDataModule},
+  tpPartTender in '..\..\TenderPartition\tpPartTender.pas',
+  tpPartTenderFme in '..\..\TenderPartition\tpPartTenderFme.pas' {tpPartTenderFrame: TFrame},
+  tpPartTenderSet in '..\..\TenderPartition\tpPartTenderSet.pas',
+  tpPartTenderSetFme in '..\..\TenderPartition\tpPartTenderSetFme.pas' {tpPartTenderSetFrame: TFrame},
+  tpPeg in '..\..\TenderPartition\tpPeg.pas',
+  tpPeg_GclDm in '..\..\TenderPartition\tpPeg_GclDm.pas' {tpPeg_GclData: TDataModule},
+  tpPeg_GclFme in '..\..\TenderPartition\tpPeg_GclFme.pas' {tpPeg_GclFrame: TFrame},
+  tpPegBlock in '..\..\TenderPartition\tpPegBlock.pas',
+  tpPegGclGatherDm in '..\..\TenderPartition\tpPegGclGatherDm.pas' {tpPegGclGatherData: TDataModule},
+  tpPegGclGatherFme in '..\..\TenderPartition\tpPegGclGatherFme.pas' {tpPegGclGatherFrame: TFrame},
+  tpPegPartSettingFrm in '..\..\TenderPartition\tpPegPartSettingFrm.pas' {tpPegPartSettingForm},
+  tpPricePartSettingFrm in '..\..\TenderPartition\tpPricePartSettingFrm.pas' {tpPricePartSettingForm},
+  tpSelectTenderDm in '..\..\TenderPartition\tpSelectTenderDm.pas' {tpSelectTenderData: TDataModule},
+  tpSelectTenderNode in '..\..\TenderPartition\tpSelectTenderNode.pas',
+  tpSelectTendersFrm in '..\..\TenderPartition\tpSelectTendersFrm.pas' {SelectTendersForm},
+  tpTrialPegInputFrm in '..\..\TenderPartition\tpTrialPegInputFrm.pas' {TrialPegInputForm},
+  PriceMarginBillsFme in '..\..\Frames\PriceMarginBillsFme.pas' {PriceMarginBillsFrame: TFrame},
+  ReportPrepare in '..\..\Report\ReportPrepare.pas',
+  rdpBillsGatherDm in '..\..\Report\DataPrepare\rdpBillsGatherDm.pas' {rdpBillsGatherData: TDataModule},
+  rdpTables in '..\..\Report\DataPrepare\rdpTables.pas',
+  ColVisibleManager in '..\..\Units\ColVisibleManager.pas',
+  ReportConnection in '..\..\Report\ReportConnection.pas',
+  rgpGatherControl in '..\..\Report\ProjGather\rgpGatherControl.pas',
+  rpgBillsCalcDm in '..\..\Report\ProjGather\rpgBillsCalcDm.pas' {rpgBillsCalcData: TDataModule},
+  rpgBillsDm in '..\..\Report\ProjGather\rpgBillsDm.pas' {rpgBillsData: TDataModule},
+  rpgGatherControl in '..\..\Report\ProjGather\rpgGatherControl.pas',
+  rpgGatherData in '..\..\Report\ProjGather\rpgGatherData.pas',
+  rpgGatherProjDm in '..\..\Report\ProjGather\rpgGatherProjDm.pas' {rpgGatherProjData: TDataModule},
+  rProjGatherTables in '..\..\Report\ProjGather\rProjGatherTables.pas',
+  ProjGatherTree in '..\..\ProjGather\ProjGatherTree.pas',
+  ProjGather in '..\..\ProjGather\ProjGather.pas',
+  CalcData in '..\..\Units\CalcData.pas',
+  GatherProjInfo in '..\..\ProjGather\GatherProjInfo.pas',
+  ProjGatherCalcData in '..\..\ProjGather\ProjGatherCalcData.pas',
+  ProjGatherSelectFrm in '..\..\ProjGather\ProjGatherSelectFrm.pas' {ProjGatherSelectForm},
+  DealBillsExcelImport in '..\..\Units\DealBillsExcelImport.pas',
+  ExcelImport_Bills in '..\..\Units\ExcelImport_Bills.pas',
+  ExcelImport_GclBills in '..\..\Units\ExcelImport_GclBills.pas',
+  DbTreeImport in '..\..\Units\DbTreeImport.pas',
+  DbTreeDm in '..\..\DataModules\DbTreeDm.pas' {DbTreeData: TDataModule},
+  DebugUsers in '..\..\Units\DebugUsers.pas',
+  OtherMeasurePhaseDm in '..\..\DataModules\OtherMeasurePhaseDm.pas' {OtherMeasurePhaseData: TDataModule},
+  OtherMeasureOnceDm in '..\..\DataModules\OtherMeasureOnceDm.pas' {OtherMeasureOnceData: TDataModule},
+  OMPhaseRecord in '..\..\Units\DataRecord\OMPhaseRecord.pas',
+  OtherMeasureFme in '..\..\Frames\OtherMeasureFme.pas' {OtherMeasureFrame: TFrame},
+  ProjGatherSelectFme in '..\..\ProjGather\ProjGatherSelectFme.pas' {ProjGatherSelectFrame: TFrame},
+  rpgZoneGatherControl in '..\..\Report\ProjGather\Zone\rpgZoneGatherControl.pas',
+  rpgZoneProjGatherSelectFrm in '..\..\Report\ProjGather\Zone\rpgZoneProjGatherSelectFrm.pas' {rpgZoneProjGatherSelectForm},
+  UpFileSelectOnLineFrm in '..\..\Forms\UpFileSelectOnLineFrm.pas' {UpFileSelectOnLineForm},
+  LogUtils in '..\..\Units\LogUtils.pas',
+  ReportPdfHelper in '..\..\Units\ReportPdfHelper.pas',
+  SelectOnlineSignPhaseFrm in '..\..\Forms\SelectOnlineSignPhaseFrm.pas' {SelectOnlineSignPhaseForm},
+  SignOnlineReportsFrm in '..\..\Forms\SignOnlineReportsFrm.pas' {SignOnlineReportsForm},
+  SignReports in '..\..\Units\SignReports.pas',
+  VirtualTrees in '..\..\..\SmartCost\Components\virtualtree\VirtualTrees.pas',
+  TemplateManagerHelper in '..\..\Units\TemplateManagerHelper.pas',
+  RenameSignReportFrm in '..\..\Forms\RenameSignReportFrm.pas' {RenameSignReportForm},
+  rmWeiWuZjjlGatherDm in '..\..\DataModules\ReportMemoryDm\rmWeiWuZjjlGatherDm.pas' {rmWeiWuZjjlGatherData: TDataModule},
+  SetGuestFrm in '..\..\Forms\SetGuestFrm.pas' {SetGuestForm},
+  ReportManagerFrm in '..\..\Forms\ReportManagerFrm.pas',
+  ReportManagerDM in '..\..\DataModules\ReportManagerDM.pas' {Reports: TDataModule},
+  ReportHistoryFrm in '..\..\Forms\ReportHistoryFrm.pas' {ReportHistoryForm},
+  ProjGatherDealPay in '..\..\ProjGather\ProjGatherDealPay.pas',
+  ProjGatherProperties in '..\..\ProjGather\ProjGatherProperties.pas',
+  rpgDealPayDm in '..\..\Report\ProjGather\rpgDealPayDm.pas' {rgpDealPayData: TDataModule},
+  superobject in '..\..\Units\superobject\superobject.pas',
+  FileDownLoadFrm in '..\..\Forms\FileDownLoadFrm.pas' {FileDownLoadForm},
+  MeasureGatherZJJL in '..\..\Units\MeasureGatherZJJL.pas',
+  stgGatherControl in '..\..\SubTenderGather\stgGatherControl.pas',
+  stgGatherCacheData in '..\..\SubTenderGather\stgGatherCacheData.pas',
+  stgGatherDm in '..\..\SubTenderGather\stgGatherDm.pas' {stgGatherData: TDataModule},
+  stgGatherUtils in '..\..\SubTenderGather\stgGatherUtils.pas',
+  stgResultFrm in '..\..\SubTenderGather\stgResultFrm.pas' {stgResultForm},
+  stgExcelExport in '..\..\SubTenderGather\stgExcelExport.pas',
+  stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
+  stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  stgGather in '..\..\SubTenderGather\stgGather.pas',
+  stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule},
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas';
+
+{$R *.res}
+
+var
+  Mutex: THandle;
+  IPForm: TIPForm;
+  vFDForm: TFileDownLoadForm;
+  sInfo, sURL, sName: string;
+
+begin
+  Mutex := CreateMutex(nil, True, G_AppHandleName);
+
+  if GetLastError = ERROR_ALREADY_EXISTS then
+    Application.MessageBox('程序正在运行, 请勿重复打开该软件!', '系统提示', MB_OK + MB_ICONINFORMATION)
+  else
+  begin
+    Application.CreateHandle;
+    Application.Initialize;
+    Application.Title := '纵横公路工程结算决算计量一体化软件云版';
+    {$IFDEF _mCloud}
+      IPForm := TIPForm.Create(nil);
+      try
+        if not IPForm.HasIP then
+        begin
+          IPForm.ShowModal;
+          if IPForm.ModalResult <> mrOK then
+          begin
+            Application.Terminate;
+            Exit;
+          end;
+        end;
+      finally
+        IPForm.Free;
+      end;
+
+      {$IFDEF _mLoginNoPW}
+      sName := PHPWeb.GetNameFromURLProtocol(ParamStr(1));
+
+         
+      if sName = '' then         // 表示手工运行的
+      begin
+        Application.MessageBox('请从 项目管理信息平台 打开软件。', '系统提示', MB_OK + MB_ICONINFORMATION);
+        Application.Terminate;
+      end
+      else
+
+      begin
+        // For Test only!
+//        Application.MessageBox(PChar(ParamStr(1) + #10#13 + sName), '系统提示', MB_OK + MB_ICONINFORMATION);
+//        Application.Terminate;
+        if sName[1]= '%' then
+           sName:=UTF8Decode(HttpDecode(sName));
+
+        case PHPWeb.Login(sName, '', 2, sInfo, sURL) of
+          ltLoginFail:
+          begin
+            Application.MessageBox('该用户尚未注册不能登录!', '操作提醒', MB_OK + MB_ICONWARNING);
+            Application.Terminate;
+          end;
+
+          ltUpdate:  // 升级
+          begin
+            if Application.MessageBox(PChar(sInfo), '系统提示', MB_OKCANCEL + MB_ICONQUESTION) = ID_OK then
+            begin
+              vFDForm := TFileDownLoadForm.Create(nil);
+              try
+                vFDForm.URL := sURL;
+                vFDForm.ShowModal;
+              finally
+                vFDForm.Free;
+              end;
+            end;
+            Application.Terminate;
+          end;
+
+          ltDisCon:
+          begin
+            Application.MessageBox('网络错误,请稍后重试!', '操作提醒', MB_OK + MB_ICONWARNING);
+            Application.Terminate;
+          end;
+
+        else
+          ;
+        end;  
+      end;
+
+      {$ELSE}
+      if not LoginForm then
+      begin
+        Application.Terminate;
+        Exit;
+      end;
+      {$ENDIF}
+      
+    {$ENDIF}
+
+    if CheckDogExists then
+    begin
+      Application.CreateForm(TMainForm, MainForm);
+  Application.CreateForm(TSetGuestForm, SetGuestForm);
+  end;
+    Application.Run;
+  end;
+
+  ReleaseMutex(Mutex);
+end.

+ 16 - 2
Dprs/Pro/Measure.dof

@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=3
 MajorVer=3
 MinorVer=1
 MinorVer=1
 Release=7
 Release=7
-Build=2187
+Build=2369
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=936
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横结算决算计量一体化专业版
 FileDescription=纵横结算决算计量一体化专业版
-FileVersion=3.1.7.2187
+FileVersion=3.1.7.2369
 InternalName=
 InternalName=
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalTrademarks=Measure
 LegalTrademarks=Measure
@@ -136,3 +136,17 @@ ProductVersion=3.1.7
 [Excluded Packages]
 [Excluded Packages]
 C:\Program Files (x86)\Borland\Delphi7\Lib\3F\Developer Express Inc\ExpressEditors Library 5\Delphi 7\Bin\dclcxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc.
 C:\Program Files (x86)\Borland\Delphi7\Lib\3F\Developer Express Inc\ExpressEditors Library 5\Delphi 7\Bin\dclcxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc.
 C:\Program Files (x86)\Borland\Delphi7\Lib\3F\Developer Express Inc\ExpressEditors Library 5\Delphi 7\Bin\dclcxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc.
 C:\Program Files (x86)\Borland\Delphi7\Lib\3F\Developer Express Inc\ExpressEditors Library 5\Delphi 7\Bin\dclcxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc.
+[HistoryLists\hlConditionals]
+Count=1
+Item0=_mEncrypt;
+[HistoryLists\hlUnitAliases]
+Count=1
+Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
+[HistoryLists\hlUnitOutputDirectory]
+Count=1
+Item0=..\..\Dcus
+[HistoryLists\hlOutputDirectorry]
+Count=3
+Item0=D:\SmartCostExe\Measure
+Item1=D:\Program Files (x86)\纵横软件\纵横结算决算计量一体化软件(专业版)
+Item2=D:\Program Files (x86)\纵横软件\纵横结算决算计量一体化软件(云版)

+ 7 - 1
Dprs/Pro/Measure.dpr

@@ -234,7 +234,13 @@ uses
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
-  stgTables in '..\..\SubTenderGather\stgTables.pas';
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas',
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule};
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/Pro/Measure.res


+ 4 - 3
Dprs/Pro/Measure_Cloud.dof

@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=3
 MajorVer=3
 MinorVer=1
 MinorVer=1
 Release=7
 Release=7
-Build=2187
+Build=2369
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=936
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横结算决算计量一体化云版
 FileDescription=纵横结算决算计量一体化云版
-FileVersion=3.1.7.2187
+FileVersion=3.1.7.2369
 InternalName=
 InternalName=
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalTrademarks=Measure
 LegalTrademarks=Measure
@@ -149,5 +149,6 @@ Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
 Count=1
 Count=1
 Item0=..\..\Dcus
 Item0=..\..\Dcus
 [HistoryLists\hlOutputDirectorry]
 [HistoryLists\hlOutputDirectorry]
-Count=1
+Count=2
 Item0=D:\SmartCostExe\Measure
 Item0=D:\SmartCostExe\Measure
+Item1=D:\Program Files (x86)\纵横软件\纵横结算决算计量一体化软件(云版)1

+ 7 - 1
Dprs/Pro/Measure_Cloud.dpr

@@ -241,7 +241,13 @@ uses
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
-  stgTables in '..\..\SubTenderGather\stgTables.pas';
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas',
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule};
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/Pro/Measure_Cloud.res


+ 2 - 2
Dprs/Pro/Measure_GuangDong.dof

@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=3
 MajorVer=3
 MinorVer=1
 MinorVer=1
 Release=7
 Release=7
-Build=2187
+Build=2369
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=936
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横结算决算计量一体化广东专业版
 FileDescription=纵横结算决算计量一体化广东专业版
-FileVersion=3.1.7.2187
+FileVersion=3.1.7.2369
 InternalName=
 InternalName=
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalTrademarks=Measure
 LegalTrademarks=Measure

+ 7 - 1
Dprs/Pro/Measure_GuangDong.dpr

@@ -234,7 +234,13 @@ uses
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
-  stgTables in '..\..\SubTenderGather\stgTables.pas';
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas',
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule};
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/Pro/Measure_GuangDong.res


+ 8 - 7
Dprs/Pro/Measure_GuangDong_Cloud.dof

@@ -111,11 +111,11 @@ ProjectLang=
 RootDir=D:\Program Files\Borland\Delphi7\Bin\
 RootDir=D:\Program Files\Borland\Delphi7\Bin\
 [Version Info]
 [Version Info]
 IncludeVerInfo=1
 IncludeVerInfo=1
-AutoIncBuild=1
+AutoIncBuild=0
 MajorVer=3
 MajorVer=3
 MinorVer=1
 MinorVer=1
 Release=7
 Release=7
-Build=2187
+Build=2368
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=936
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横结算决算计量一体化广东云版
 FileDescription=纵横结算决算计量一体化广东云版
-FileVersion=3.1.7.2187
+FileVersion=3.1.7.2368
 InternalName=
 InternalName=
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalTrademarks=Measure
 LegalTrademarks=Measure
@@ -134,8 +134,7 @@ OriginalFilename=
 ProductName=纵横公路工程结算决算一体化软件
 ProductName=纵横公路工程结算决算一体化软件
 ProductVersion=3.1.7.1
 ProductVersion=3.1.7.1
 [Excluded Packages]
 [Excluded Packages]
-C:\Program Files (x86)\Borland\Delphi7\Lib\3F\Developer Express Inc\ExpressEditors Library 5\Delphi 7\Bin\dclcxEditorsVCLD7.bpl=ExpressEditors Library 5 (VCL Edition) by Developer Express Inc.
-C:\Program Files (x86)\Borland\Delphi7\Lib\3F\Developer Express Inc\ExpressEditors Library 5\Delphi 7\Bin\dclcxExtEditorsVCLD7.bpl=ExpressExtendedEditors Library 5 (VCL Edition) by Developer Express Inc.
+c:\program files (x86)\borland\delphi7\Bin\DBWEBXPRT.BPL=Borland Web Wizard Package
 [HistoryLists\hlConditionals]
 [HistoryLists\hlConditionals]
 Count=1
 Count=1
 Item0=_mCloud;_mGuangDong
 Item0=_mCloud;_mGuangDong
@@ -143,8 +142,10 @@ Item0=_mCloud;_mGuangDong
 Count=1
 Count=1
 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
 Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
 [HistoryLists\hlUnitOutputDirectory]
 [HistoryLists\hlUnitOutputDirectory]
-Count=1
+Count=2
 Item0=..\..\Dcus
 Item0=..\..\Dcus
+Item1=C:\DelphiTemp
 [HistoryLists\hlOutputDirectorry]
 [HistoryLists\hlOutputDirectorry]
-Count=1
+Count=2
 Item0=D:\SmartCostExe\Measure
 Item0=D:\SmartCostExe\Measure
+Item1=C:\Program Files (x86)\纵横软件\纵横结算决算计量一体化软件(广东云版)

+ 8 - 1
Dprs/Pro/Measure_GuangDong_Cloud.dpr

@@ -240,7 +240,14 @@ uses
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
-  stgTables in '..\..\SubTenderGather\stgTables.pas';
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  MScrollBox in '..\..\..\SmartCost\Components\MBaseControl\Source\MScrollBox.pas',
+  BillsPosTree in '..\..\Units\BillsPosTree.pas',
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule};
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/Pro/Measure_GuangDong_Cloud.res


+ 2 - 2
Dprs/Pro/Measure_GuangDong_TZ.dof

@@ -115,7 +115,7 @@ AutoIncBuild=0
 MajorVer=3
 MajorVer=3
 MinorVer=1
 MinorVer=1
 Release=7
 Release=7
-Build=2186
+Build=2368
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=936
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横0号台账广东专业版
 FileDescription=纵横0号台账广东专业版
-FileVersion=3.1.7.2186
+FileVersion=3.1.7.2368
 InternalName=
 InternalName=
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalTrademarks=Measure
 LegalTrademarks=Measure

+ 7 - 1
Dprs/Pro/Measure_GuangDong_TZ.dpr

@@ -234,7 +234,13 @@ uses
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
-  stgTables in '..\..\SubTenderGather\stgTables.pas';
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  BillsPosTree in '..\..\Units\BillsPosTree.pas';
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/Pro/Measure_GuangDong_TZ.res


+ 2 - 2
Dprs/Pro/Measure_TZ.dof

@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=3
 MajorVer=3
 MinorVer=1
 MinorVer=1
 Release=7
 Release=7
-Build=2187
+Build=2369
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=936
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横0号台账专业版
 FileDescription=纵横0号台账专业版
-FileVersion=3.1.7.2187
+FileVersion=3.1.7.2369
 InternalName=
 InternalName=
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalTrademarks=Measure
 LegalTrademarks=Measure

+ 7 - 1
Dprs/Pro/Measure_TZ.dpr

@@ -234,7 +234,13 @@ uses
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
-  stgTables in '..\..\SubTenderGather\stgTables.pas';
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas';
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/Pro/Measure_TZ.res


+ 2 - 2
Dprs/Trail/Measure.dof

@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=3
 MajorVer=3
 MinorVer=1
 MinorVer=1
 Release=7
 Release=7
-Build=2187
+Build=2369
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=936
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横结算决算计量一体化学习版
 FileDescription=纵横结算决算计量一体化学习版
-FileVersion=3.1.7.2187
+FileVersion=3.1.7.2369
 InternalName=
 InternalName=
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalTrademarks=Measure
 LegalTrademarks=Measure

+ 7 - 1
Dprs/Trail/Measure.dpr

@@ -234,7 +234,13 @@ uses
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
-  stgTables in '..\..\SubTenderGather\stgTables.pas';
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  BillsPosTree in '..\..\Units\BillsPosTree.pas';
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/Trail/Measure.res


+ 2 - 2
Dprs/Trail/Measure_GuangDong.dof

@@ -115,7 +115,7 @@ AutoIncBuild=1
 MajorVer=3
 MajorVer=3
 MinorVer=1
 MinorVer=1
 Release=7
 Release=7
-Build=2187
+Build=2369
 Debug=0
 Debug=0
 PreRelease=0
 PreRelease=0
 Special=0
 Special=0
@@ -126,7 +126,7 @@ CodePage=936
 [Version Info Keys]
 [Version Info Keys]
 CompanyName=珠海纵横创新软件有限公司
 CompanyName=珠海纵横创新软件有限公司
 FileDescription=纵横结算决算计量一体化广东学习版
 FileDescription=纵横结算决算计量一体化广东学习版
-FileVersion=3.1.7.2187
+FileVersion=3.1.7.2369
 InternalName=
 InternalName=
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalCopyright=版权所有(C)珠海纵横创新软件有限公司2003-2016
 LegalTrademarks=Measure
 LegalTrademarks=Measure

+ 7 - 1
Dprs/Trail/Measure_GuangDong.dpr

@@ -234,7 +234,13 @@ uses
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSelectFileFrm in '..\..\SubTenderGather\stgSelectFileFrm.pas' {stgSelectFileForm},
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFile in '..\..\SubTenderGather\stgSubGatherFile.pas',
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
   stgSubGatherFileDm in '..\..\SubTenderGather\stgSubGatherFileDm.pas' {stgSubGatherData: TDataModule},
-  stgTables in '..\..\SubTenderGather\stgTables.pas';
+  stgTables in '..\..\SubTenderGather\stgTables.pas',
+  rmZhongKaiDm in '..\..\DataModules\ReportMemoryDm\rmZhongKaiDm.pas' {rmZhongKaiData: TDataModule},
+  AttachmentInfoDm in '..\..\DataModules\AttachmentInfoDm.pas' {AttachmentInfoData: TDataModule},
+  DealPayFinalDm in '..\..\DataModules\DealPayFinalDm.pas' {DealPayFinalData: TDataModule},
+  rmWuJiuZqzfGatherDm in '..\..\DataModules\ReportMemoryDm\rmWuJiuZqzfGatherDm.pas' {rmWuJiuZqzfGatherData: TDataModule},
+  uGetMacAddr in '..\..\Units\uGetMacAddr.pas',
+  BillsPosTree in '..\..\Units\BillsPosTree.pas';
 
 
 {$R *.res}
 {$R *.res}
 
 

二进制
Dprs/Trail/Measure_GuangDong.res


+ 25 - 0
Forms/BatchInsertBillsFrm.dfm

@@ -317,6 +317,18 @@ object BatchInsertBillsForm: TBatchInsertBillsForm
       item
       item
         Item = MainForm.dxbtnInsertCol
         Item = MainForm.dxbtnInsertCol
         Visible = True
         Visible = True
+      end
+      item
+        Item = MainForm.dxbtnInsertRow
+        Visible = True
+      end
+      item
+        Item = MainForm.dxbtnDeleteRow
+        Visible = True
+      end
+      item
+        Item = MainForm.dxbtnRemapedPaste
+        Visible = True
       end>
       end>
     UseOwnFont = False
     UseOwnFont = False
     OnPopup = dxpmInsertBillsPopup
     OnPopup = dxpmInsertBillsPopup
@@ -404,6 +416,7 @@ object BatchInsertBillsForm: TBatchInsertBillsForm
     Top = 139
     Top = 139
   end
   end
   object alBatchInsertBills: TActionList
   object alBatchInsertBills: TActionList
+    Images = MainForm.Images
     Left = 203
     Left = 203
     Top = 99
     Top = 99
     object actnInsertCol: TAction
     object actnInsertCol: TAction
@@ -411,6 +424,18 @@ object BatchInsertBillsForm: TBatchInsertBillsForm
       OnExecute = actnInsertColExecute
       OnExecute = actnInsertColExecute
       OnUpdate = actnInsertColUpdate
       OnUpdate = actnInsertColUpdate
     end
     end
+    object actnDeleteRow: TAction
+      Caption = #21024#38500
+      ImageIndex = 6
+      OnExecute = actnDeleteRowExecute
+      OnUpdate = actnDeleteRowUpdate
+    end
+    object actnInsertRow: TAction
+      Caption = #26032#22686
+      ImageIndex = 2
+      OnExecute = actnInsertRowExecute
+      OnUpdate = actnInsertRowUpdate
+    end
   end
   end
   object dxpmBills: TdxBarPopupMenu
   object dxpmBills: TdxBarPopupMenu
     BarManager = MainForm.dxBarManager
     BarManager = MainForm.dxBarManager

+ 29 - 0
Forms/BatchInsertBillsFrm.pas

@@ -39,6 +39,8 @@ type
     alBatchInsertBills: TActionList;
     alBatchInsertBills: TActionList;
     actnInsertCol: TAction;
     actnInsertCol: TAction;
     dxpmBills: TdxBarPopupMenu;
     dxpmBills: TdxBarPopupMenu;
+    actnDeleteRow: TAction;
+    actnInsertRow: TAction;
     procedure zgPositionCustomPaste(Sender: TObject; ABounds: TRect;
     procedure zgPositionCustomPaste(Sender: TObject; ABounds: TRect;
       ASourSheet: TZjSheet);
       ASourSheet: TZjSheet);
     procedure zgBillsCustomPaste(Sender: TObject; ABounds: TRect;
     procedure zgBillsCustomPaste(Sender: TObject; ABounds: TRect;
@@ -58,6 +60,10 @@ type
       Shift: TShiftState; X, Y: Integer);
       Shift: TShiftState; X, Y: Integer);
     procedure actnInsertColUpdate(Sender: TObject);
     procedure actnInsertColUpdate(Sender: TObject);
     procedure FormResize(Sender: TObject);
     procedure FormResize(Sender: TObject);
+    procedure actnDeleteRowExecute(Sender: TObject);
+    procedure actnDeleteRowUpdate(Sender: TObject);
+    procedure actnInsertRowExecute(Sender: TObject);
+    procedure actnInsertRowUpdate(Sender: TObject);
   private
   private
     FInsertType: TInsertType;
     FInsertType: TInsertType;
     FBillsCompileData: TBillsCompileData;
     FBillsCompileData: TBillsCompileData;
@@ -456,7 +462,10 @@ end;
 
 
 procedure TBatchInsertBillsForm.dxpmInsertBillsPopup(Sender: TObject);
 procedure TBatchInsertBillsForm.dxpmInsertBillsPopup(Sender: TObject);
 begin
 begin
+  dxpmInsertBills.ItemLinks[7].Visible := (dxpmInsertBills.Tag = 1);
   SetDxBtnAction(actnInsertCol, MainForm.dxbtnInsertCol);
   SetDxBtnAction(actnInsertCol, MainForm.dxbtnInsertCol);
+  SetDxBtnAction(actnDeleteRow, MainForm.dxbtnDeleteRow);
+  SetDxBtnAction(actnInsertRow, MainForm.dxbtnInsertRow);
 end;
 end;
 
 
 procedure TBatchInsertBillsForm.actnInsertColExecute(Sender: TObject);
 procedure TBatchInsertBillsForm.actnInsertColExecute(Sender: TObject);
@@ -494,4 +503,24 @@ begin
   pnlBills.Height := Trunc((pnlPositon_Bills.Height - pnlOther.Height)/22*9);
   pnlBills.Height := Trunc((pnlPositon_Bills.Height - pnlOther.Height)/22*9);
 end;
 end;
 
 
+procedure TBatchInsertBillsForm.actnDeleteRowExecute(Sender: TObject);
+begin
+  zgPosition.DeleteRow(zgPosition.CurRow);
+end;
+
+procedure TBatchInsertBillsForm.actnDeleteRowUpdate(Sender: TObject);
+begin
+  TAction(Sender).Visible := dxpmInsertBills.Tag = 0;
+end;
+
+procedure TBatchInsertBillsForm.actnInsertRowExecute(Sender: TObject);
+begin
+  zgPosition.InsertRow(zgPosition.CurRow);
+end;
+
+procedure TBatchInsertBillsForm.actnInsertRowUpdate(Sender: TObject);
+begin   
+  TAction(Sender).Visible := dxpmInsertBills.Tag = 0;
+end;
+
 end.
 end.

+ 5 - 2
Forms/FileDownLoadFrm.pas

@@ -116,13 +116,16 @@ begin
 end;
 end;
 
 
 procedure TDownThread.SetURL(const Value: string);
 procedure TDownThread.SetURL(const Value: string);
-var s: string;
+var s, path: string;
 begin
 begin
   FURL := Value;
   FURL := Value;
+  path := ExtractFilePath(Application.ExeName) + 'Web\';
+  ForceDirectories(path);
+
   // 反斜杠 ExtractFileName 函数搞不定,这里先转换
   // 反斜杠 ExtractFileName 函数搞不定,这里先转换
   s := StringReplace(Value, '/', '\', [rfReplaceAll, rfIgnoreCase]);
   s := StringReplace(Value, '/', '\', [rfReplaceAll, rfIgnoreCase]);
   FFileName := ExtractFileName(s);
   FFileName := ExtractFileName(s);
-  FLocalFile := ExtractFilePath(Application.ExeName) + 'Web\' + FFileName;
+  FLocalFile := path + FFileName;
   TFileDownLoadForm(FOwner).RefreshDisplay(FFileName);
   TFileDownLoadForm(FOwner).RefreshDisplay(FFileName);
 
 
   Resume;    // 在这里唤醒
   Resume;    // 在这里唤醒

+ 2 - 2
Forms/LoginFrm.pas

@@ -165,8 +165,8 @@ begin
 
 
   if G_IsTest then
   if G_IsTest then
   begin
   begin
-    cbUser.Text := '1835082984@qq.com';
-    edtPW.Text := '654321';
+    cbUser.Text := '1971614655@qq.com';
+    edtPW.Text := '3850888';
   end;
   end;
 end;
 end;
 
 

+ 99 - 11
Forms/MainFrm.dfm

@@ -1,10 +1,10 @@
 object MainForm: TMainForm
 object MainForm: TMainForm
-  Left = 541
-  Top = 330
+  Left = 706
+  Top = 349
   Width = 750
   Width = 750
   Height = 538
   Height = 538
   ActiveControl = jpsMainProjectsManager
   ActiveControl = jpsMainProjectsManager
-  Caption = 'me'
+  Caption = 'measure'
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = ANSI_CHARSET
   Font.Charset = ANSI_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
@@ -208,8 +208,8 @@ object MainForm: TMainForm
       object jpsProjects: TJimPages
       object jpsProjects: TJimPages
         Left = 0
         Left = 0
         Top = 0
         Top = 0
-        Width = 971
-        Height = 440
+        Width = 742
+        Height = 417
         ActivePageIndex = -1
         ActivePageIndex = -1
         Align = alClient
         Align = alClient
         Caption = 'jpsProjects'
         Caption = 'jpsProjects'
@@ -431,12 +431,16 @@ object MainForm: TMainForm
           Visible = True
           Visible = True
         end
         end
         item
         item
-          Item = dxbtnImportSubTenderGather
+          Item = dxsiImportSubTenderGather
           Visible = True
           Visible = True
         end
         end
         item
         item
           Item = dxbtnExportBillsJson
           Item = dxbtnExportBillsJson
           Visible = True
           Visible = True
+        end
+        item
+          Item = dxbtnExportBillsPosExcelData
+          Visible = True
         end>
         end>
     end
     end
     object dxsiEdit: TdxBarSubItem
     object dxsiEdit: TdxBarSubItem
@@ -1031,7 +1035,7 @@ object MainForm: TMainForm
           Visible = True
           Visible = True
         end
         end
         item
         item
-          Item = dxbtnGatherSubTender
+          Item = dxsiGatherSub
           Visible = True
           Visible = True
         end>
         end>
     end
     end
@@ -1169,9 +1173,9 @@ object MainForm: TMainForm
       Hint = #23548#20986#24635#21253#22522#20934#25991#20214
       Hint = #23548#20986#24635#21253#22522#20934#25991#20214
     end
     end
     object dxbtnGatherSubTender: TdxBarButton
     object dxbtnGatherSubTender: TdxBarButton
-      Caption = #20998#21253#26631#27573#27719#24635
+      Caption = #20998#21253#26631#27573#27719#24635#65288#19977#32423#28165#21333' - '#38656#22522#20934#25991#20214#65289
       Category = 2
       Category = 2
-      Hint = #20998#21253#26631#27573#27719#24635
+      Hint = #20998#21253#26631#27573#27719#24635#65288#19977#32423#28165#21333' - '#38656#22522#20934#25991#20214#65289
       Visible = ivAlways
       Visible = ivAlways
       OnClick = dxbtnGatherSubTenderClick
       OnClick = dxbtnGatherSubTenderClick
     end
     end
@@ -1203,11 +1207,77 @@ object MainForm: TMainForm
     object dxbtnImportSubTenderGather: TdxBarButton
     object dxbtnImportSubTenderGather: TdxBarButton
       Action = actnImportSubTenderGather
       Action = actnImportSubTenderGather
       Category = 4
       Category = 4
+      Hint = #23548#20837#20998#21253#27719#24635#25968#25454#65288#19977#32423#28165#21333' - '#22522#20110#22522#20934#25991#20214#65289
     end
     end
     object dxbtnExportBillsJson: TdxBarButton
     object dxbtnExportBillsJson: TdxBarButton
       Action = actnExportBillsJson
       Action = actnExportBillsJson
       Category = 3
       Category = 3
     end
     end
+    object dxbtnExportBillsPosExcelData: TdxBarButton
+      Action = actnExportBillsPosExcelData
+      Category = 2
+    end
+    object dxbtnDeleteRow: TdxBarButton
+      Caption = #21024#38500
+      Category = 2
+      Hint = #21024#38500
+      Visible = ivAlways
+      ImageIndex = 6
+    end
+    object dxbtnInsertRow: TdxBarButton
+      Caption = #26032#22686
+      Category = 2
+      Hint = #26032#22686
+      Visible = ivAlways
+      ImageIndex = 2
+    end
+    object dxsiGatherSub: TdxBarSubItem
+      Caption = #20998#21253#39033#30446#27719#24635
+      Category = 2
+      Visible = ivAlways
+      ItemLinks = <
+        item
+          Item = dxbtnGatherSubTender
+          Visible = True
+        end
+        item
+          Item = dxbtnGatherSubTenderGcl
+          Visible = True
+        end>
+    end
+    object dxbtnGatherSubTenderGcl: TdxBarButton
+      Caption = #20998#21253#26631#27573#27719#24635#65288#24037#31243#37327#28165#21333#65289
+      Category = 2
+      Hint = #20998#21253#26631#27573#27719#24635#65288#24037#31243#37327#28165#21333#65289
+      Visible = ivAlways
+      OnClick = dxbtnGatherSubTenderGclClick
+    end
+    object dxsiImportSubTenderGather: TdxBarSubItem
+      Caption = #23548#20837#20998#21253#27719#24635#25968#25454
+      Category = 2
+      Visible = ivAlways
+      ItemLinks = <
+        item
+          Item = dxbtnImportSubTenderGather
+          Visible = True
+        end
+        item
+          Item = dxbtnImportSubTenderGatherGcl
+          Visible = True
+        end
+        item
+          Item = dxbtnImportSubTenderGatherExcel
+          Visible = True
+        end>
+    end
+    object dxbtnImportSubTenderGatherGcl: TdxBarButton
+      Action = actnImportSubTenderGatherGcl
+      Category = 2
+    end
+    object dxbtnImportSubTenderGatherExcel: TdxBarButton
+      Action = actnImportSubTenderGatherGclExcel
+      Category = 2
+    end
   end
   end
   object Images: TImageList
   object Images: TImageList
     DrawingStyle = dsTransparent
     DrawingStyle = dsTransparent
@@ -3389,14 +3459,32 @@ object MainForm: TMainForm
     end
     end
     object actnImportSubTenderGather: TAction
     object actnImportSubTenderGather: TAction
       Category = 'File'
       Category = 'File'
-      Caption = #23548#20837#20998#21253#27719#24635#25968#25454
+      Caption = #23548#20837#20998#21253#27719#24635#25968#25454#65288#19977#32423#28165#21333' - '#22522#20110#22522#20934#25991#20214#65289
       OnExecute = actnImportSubTenderGatherExecute
       OnExecute = actnImportSubTenderGatherExecute
       OnUpdate = actnImportSubTenderGatherUpdate
       OnUpdate = actnImportSubTenderGatherUpdate
     end
     end
     object actnExportBillsJson: TAction
     object actnExportBillsJson: TAction
       Caption = #23548#20986#28165#21333'Json'#25968#25454
       Caption = #23548#20986#28165#21333'Json'#25968#25454
       OnExecute = actnExportBillsJsonExecute
       OnExecute = actnExportBillsJsonExecute
-      OnUpdate = actnCloseProjectUpdate
+      OnUpdate = actnExportBillsJsonUpdate
+    end
+    object actnExportBillsPosExcelData: TAction
+      Caption = #23548#20986#28165#21333#37096#20301#26126#32454'Excel'#25968#25454
+      OnExecute = actnExportBillsPosExcelDataExecute
+      OnUpdate = actnExportBillsJsonUpdate
+    end
+    object actnImportSubTenderGatherGcl: TAction
+      Category = 'File'
+      Caption = #23548#20837#20998#21253#27719#24635#25968#25454#65288#24037#31243#37327#28165#21333#65289
+      OnExecute = actnImportSubTenderGatherGclExecute
+      OnUpdate = actnImportSubTenderGatherUpdate
+    end
+    object actnImportSubTenderGatherGclExcel: TAction
+      Category = 'File'
+      Caption = #23548#20837#20998#21253#27719#24635#25968#25454#65288#24037#31243#37327#28165#21333#65289
+      ImageIndex = 13
+      OnExecute = actnImportSubTenderGatherGclExcelExecute
+      OnUpdate = actnImportSubTenderGatherUpdate
     end
     end
   end
   end
   object dxpmTabSet: TdxBarPopupMenu
   object dxpmTabSet: TdxBarPopupMenu

+ 81 - 3
Forms/MainFrm.pas

@@ -180,6 +180,17 @@ type
     actnImportSubTenderGather: TAction;
     actnImportSubTenderGather: TAction;
     dxbtnExportBillsJson: TdxBarButton;
     dxbtnExportBillsJson: TdxBarButton;
     actnExportBillsJson: TAction;
     actnExportBillsJson: TAction;
+    dxbtnExportBillsPosExcelData: TdxBarButton;
+    actnExportBillsPosExcelData: TAction;
+    dxbtnDeleteRow: TdxBarButton;
+    dxbtnInsertRow: TdxBarButton;
+    dxsiGatherSub: TdxBarSubItem;
+    dxbtnGatherSubTenderGcl: TdxBarButton;
+    dxsiImportSubTenderGather: TdxBarSubItem;
+    dxbtnImportSubTenderGatherGcl: TdxBarButton;
+    actnImportSubTenderGatherGcl: TAction;
+    actnImportSubTenderGatherGclExcel: TAction;
+    dxbtnImportSubTenderGatherExcel: TdxBarButton;
     procedure FormCreate(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
     procedure FormDestroy(Sender: TObject);
     procedure jtsProjectsChange(Sender: TObject; NewTab: Integer;
     procedure jtsProjectsChange(Sender: TObject; NewTab: Integer;
@@ -230,6 +241,11 @@ type
     procedure actnImportSubTenderGatherExecute(Sender: TObject);
     procedure actnImportSubTenderGatherExecute(Sender: TObject);
     procedure actnImportSubTenderGatherUpdate(Sender: TObject);
     procedure actnImportSubTenderGatherUpdate(Sender: TObject);
     procedure actnExportBillsJsonExecute(Sender: TObject);
     procedure actnExportBillsJsonExecute(Sender: TObject);
+    procedure actnExportBillsJsonUpdate(Sender: TObject);
+    procedure actnExportBillsPosExcelDataExecute(Sender: TObject);
+    procedure dxbtnGatherSubTenderGclClick(Sender: TObject);
+    procedure actnImportSubTenderGatherGclExecute(Sender: TObject);
+    procedure actnImportSubTenderGatherGclExcelExecute(Sender: TObject);
   private
   private
     FProjectManagerFrame: TProjectManagerFrame;
     FProjectManagerFrame: TProjectManagerFrame;
     FProjectFrames: TList;
     FProjectFrames: TList;
@@ -268,7 +284,7 @@ uses
   FindUserFrm, ImportExcelHintFrm, ConfigDoc, ExportExcel,
   FindUserFrm, ImportExcelHintFrm, ConfigDoc, ExportExcel,
   ProjectCommands, BillsCompileDm, tpMainFrm,
   ProjectCommands, BillsCompileDm, tpMainFrm,
   DealBillsExcelImport, ExcelImport_Bills, DetailExcelImport,
   DealBillsExcelImport, ExcelImport_Bills, DetailExcelImport,
-  stgGatherControl, stgSelectFileFrm;
+  stgGatherControl, stgSelectFileFrm, stgGclGatherControl, stgGclSelectFileFrm;
 
 
 {$R *.dfm}
 {$R *.dfm}
 {$R MeasureIcons.RES}
 {$R MeasureIcons.RES}
@@ -444,7 +460,7 @@ function TMainForm.CreateProjectView(ARec: TsdDataRecord): TProjectFrame;
   var
   var
     ProjectFrame: TProjectFrame;
     ProjectFrame: TProjectFrame;
   begin
   begin
-    AProjectData.IsGuest := FProjectManagerFrame.IsGuest;
+    //AProjectData.IsGuest := FProjectManagerFrame.IsGuest;
     ProjectFrame := TProjectFrame.Create(AProjectData);
     ProjectFrame := TProjectFrame.Create(AProjectData);
     FProjectFrames.Add(ProjectFrame);
     FProjectFrames.Add(ProjectFrame);
     ProjectFrame.Parent := APage;
     ProjectFrame.Parent := APage;
@@ -945,7 +961,7 @@ begin
     WarningMessage('未开始计量,请在开始计量后再导入分包汇总数据。')
     WarningMessage('未开始计量,请在开始计量后再导入分包汇总数据。')
   else if CurProjectFrame.ProjectData.StageDataReadOnly then
   else if CurProjectFrame.ProjectData.StageDataReadOnly then
     WarningMessage('当前正在查看数据非最新数据,请切换至最新一期再导入分包汇总数据。')
     WarningMessage('当前正在查看数据非最新数据,请切换至最新一期再导入分包汇总数据。')
-  else if QuestMessage('导入将清空标段本期所有计量数据(合同计量、数量变更计量),确定继续?') and SelectFile(sFileName, '.sgf') then
+  else if QuestMessage('导入将清空标段本期所有计量数据(合同计量),确定继续?') and SelectFile(sFileName, '.sgf') then
     CurProjectFrame.ProjectData.ImportSubTenderGather(sFileName);
     CurProjectFrame.ProjectData.ImportSubTenderGather(sFileName);
 end;
 end;
 
 
@@ -963,4 +979,66 @@ begin
     CurProjectFrame.ProjectData.BillsCompileData.RecursiveExportBillsJson(sFileName);
     CurProjectFrame.ProjectData.BillsCompileData.RecursiveExportBillsJson(sFileName);
 end;
 end;
 
 
+procedure TMainForm.actnExportBillsJsonUpdate(Sender: TObject);
+begin
+  TAction(Sender).Visible := _IsDebugView;
+  TAction(Sender).Enabled := jtsProjects.Tabs.Count > 1;
+end;
+
+procedure TMainForm.actnExportBillsPosExcelDataExecute(Sender: TObject);
+var
+  sFileName: string;
+  Exportor: TBillsPosExcelExportor;
+begin
+  if SaveExcelFile(sFileName) then
+  begin
+    Exportor := TBillsPosExcelExportor.Create;
+    try
+      Exportor.ExportToFile(CurProjectFrame.ProjectData.BillsCompileData.BillsCompileTree, sFileName);
+    finally
+      Exportor.Free;
+    end;
+  end;
+end;
+
+procedure TMainForm.dxbtnGatherSubTenderGclClick(Sender: TObject);
+var
+  gc: TstgGclGatherControl;
+begin
+  gc := TstgGclGatherControl.Create;
+  Screen.Cursor := crHourGlass;
+  try
+    if SelectFileForSubTenderGclGather(gc) then
+      gc.Gather;
+  finally
+    gc.Free;
+    Screen.Cursor := crDefault;
+  end;
+end;
+
+procedure TMainForm.actnImportSubTenderGatherGclExecute(Sender: TObject);
+var
+  sFileName: string;
+begin
+  if CurProjectFrame.ProjectData.ProjProperties.PhaseCount = 0 then
+    WarningMessage('未开始计量,请在开始计量后再导入分包汇总数据。')
+  else if CurProjectFrame.ProjectData.StageDataReadOnly then
+    WarningMessage('当前正在查看数据非最新数据,请切换至最新一期再导入分包汇总数据。')
+  else if QuestMessage('导入将清空标段本期所有计量数据(合同计量),确定继续?') and SelectFile(sFileName, '.sgfg') then
+    CurProjectFrame.ProjectData.ImportSubTenderGatherGcl(sFileName);
+end;
+
+procedure TMainForm.actnImportSubTenderGatherGclExcelExecute(
+  Sender: TObject);
+var
+  sFileName: string;
+begin
+  if CurProjectFrame.ProjectData.ProjProperties.PhaseCount = 0 then
+    WarningMessage('未开始计量,请在开始计量后再导入分包汇总数据。')
+  else if CurProjectFrame.ProjectData.StageDataReadOnly then
+    WarningMessage('当前正在查看数据非最新数据,请切换至最新一期再导入分包汇总数据。')
+  else if QuestMessage('导入将清空标段本期所有计量数据(合同计量),确定继续?') and SelectExcelFile(sFileName) then
+    CurProjectFrame.ProjectData.ImportSubTenderGatherGclExcel(sFileName);
+end;
+
 end.
 end.

+ 31 - 6
Forms/OptionFrm.dfm

@@ -85,19 +85,33 @@ object OptionForm: TOptionForm
         Left = 11
         Left = 11
         Top = 52
         Top = 52
         Width = 430
         Width = 430
-        Height = 117
+        Height = 141
         Caption = #28165#21333#27719#24635#36229#35745#26174#31034
         Caption = #28165#21333#27719#24635#36229#35745#26174#31034
         TabOrder = 3
         TabOrder = 3
         object lblTitleOverRange: TLabel
         object lblTitleOverRange: TLabel
           Left = 8
           Left = 8
-          Top = 22
+          Top = 45
           Width = 102
           Width = 102
           Height = 12
           Height = 12
           Caption = #32047#35745#23436#25104#21512#21516#35745#37327'>'
           Caption = #32047#35745#23436#25104#21512#21516#35745#37327'>'
         end
         end
+        object Label1: TLabel
+          Left = 8
+          Top = 22
+          Width = 12
+          Height = 12
+          Caption = #36229
+        end
+        object Label2: TLabel
+          Left = 70
+          Top = 22
+          Width = 48
+          Height = 12
+          Caption = '% '#26102#26174#31034
+        end
         object rbLedger: TRadioButton
         object rbLedger: TRadioButton
           Left = 8
           Left = 8
-          Top = 43
+          Top = 66
           Width = 113
           Width = 113
           Height = 17
           Height = 17
           Caption = '0'#21495#21488#36134#25968#37327
           Caption = '0'#21495#21488#36134#25968#37327
@@ -107,7 +121,7 @@ object OptionForm: TOptionForm
         object rbDeal: TRadioButton
         object rbDeal: TRadioButton
           Tag = 1
           Tag = 1
           Left = 8
           Left = 8
-          Top = 67
+          Top = 90
           Width = 113
           Width = 113
           Height = 17
           Height = 17
           Caption = #31614#32422#28165#21333#25968#37327
           Caption = #31614#32422#28165#21333#25968#37327
@@ -117,17 +131,28 @@ object OptionForm: TOptionForm
         object rbBoth: TRadioButton
         object rbBoth: TRadioButton
           Tag = 2
           Tag = 2
           Left = 8
           Left = 8
-          Top = 91
+          Top = 114
           Width = 209
           Width = 209
           Height = 17
           Height = 17
           Caption = '0'#21495#21488#36134#25968#37327#25110#31614#32422#28165#21333#25968#37327
           Caption = '0'#21495#21488#36134#25968#37327#25110#31614#32422#28165#21333#25968#37327
           TabOrder = 2
           TabOrder = 2
           OnClick = rbLedgerClick
           OnClick = rbLedgerClick
         end
         end
+        object edtOverRangePercent: TEdit
+          Left = 25
+          Top = 19
+          Width = 40
+          Height = 20
+          TabOrder = 3
+          Text = '100'
+          OnExit = edtOverRangePercentExit
+          OnKeyDown = edtOverRangePercentKeyDown
+          OnKeyPress = edtOverRangePercentKeyPress
+        end
       end
       end
       object GroupBox1: TGroupBox
       object GroupBox1: TGroupBox
         Left = 11
         Left = 11
-        Top = 176
+        Top = 200
         Width = 430
         Width = 430
         Height = 49
         Height = 49
         Caption = #23548#20986'Excel'
         Caption = #23548#20986'Excel'

+ 42 - 0
Forms/OptionFrm.pas

@@ -26,8 +26,15 @@ type
     rbBoth: TRadioButton;
     rbBoth: TRadioButton;
     GroupBox1: TGroupBox;
     GroupBox1: TGroupBox;
     cbExcelWithMis: TCheckBox;
     cbExcelWithMis: TCheckBox;
+    Label1: TLabel;
+    edtOverRangePercent: TEdit;
+    Label2: TLabel;
     procedure cbAutoSaveClick(Sender: TObject);
     procedure cbAutoSaveClick(Sender: TObject);
     procedure rbLedgerClick(Sender: TObject);
     procedure rbLedgerClick(Sender: TObject);
+    procedure edtOverRangePercentKeyPress(Sender: TObject; var Key: Char);
+    procedure edtOverRangePercentExit(Sender: TObject);
+    procedure edtOverRangePercentKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
   private
   private
     procedure SetSaveIntervalEnable(AEnable: Boolean);
     procedure SetSaveIntervalEnable(AEnable: Boolean);
     function GetOverRangeType: Integer;
     function GetOverRangeType: Integer;
@@ -74,6 +81,7 @@ begin
     SetSaveIntervalEnable(cbAutoSave.Checked);
     SetSaveIntervalEnable(cbAutoSave.Checked);
     cbbSaveIntervall.Text := IntToStr(AutoSaveInterval);
     cbbSaveIntervall.Text := IntToStr(AutoSaveInterval);
     Self.OverRangeType := OverRangeType;
     Self.OverRangeType := OverRangeType;
+    edtOverRangePercent.Text := IntToStr(OverRangePercent);
     cbExcelWithMis.Checked := ExcelWithMis;
     cbExcelWithMis.Checked := ExcelWithMis;
   end;
   end;
 end;
 end;
@@ -85,6 +93,7 @@ begin
     AutoSave := cbAutoSave.Checked;
     AutoSave := cbAutoSave.Checked;
     AutoSaveInterval := StrToIntDef(cbbSaveIntervall.Text, 15);
     AutoSaveInterval := StrToIntDef(cbbSaveIntervall.Text, 15);
     OverRangeType := Self.OverRangeType;
     OverRangeType := Self.OverRangeType;
+    OverRangePercent := StrToIntDef(edtOverRangePercent.Text, 100);
     ExcelWithMis := cbExcelWithMis.Checked;
     ExcelWithMis := cbExcelWithMis.Checked;
   end;
   end;
 end;
 end;
@@ -123,4 +132,37 @@ begin
   TRadioButton(Sender).Checked := True;
   TRadioButton(Sender).Checked := True;
 end;
 end;
 
 
+procedure TOptionForm.edtOverRangePercentKeyPress(Sender: TObject;
+  var Key: Char);
+begin
+  if not (Key in ['0'..'9', #8, #13]) then
+    Key := #0;
+end;
+
+procedure TOptionForm.edtOverRangePercentExit(Sender: TObject);
+var
+  fPer: Double;
+begin
+  fPer := StrToIntDef(TEdit(Sender).text, 0);
+  if (fPer < 50) then
+    TEdit(Sender).text := '50'
+  else if (fPer > 100) then
+    TEdit(Sender).text := '100';
+end;
+
+procedure TOptionForm.edtOverRangePercentKeyDown(Sender: TObject;
+  var Key: Word; Shift: TShiftState);                          
+var
+  fPer: Double;
+begin
+  if (Key = 13) then
+  begin
+    fPer := StrToIntDef(TEdit(Sender).text, 0);
+    if (fPer < 50) then
+      TEdit(Sender).text := '50'
+    else if (fPer > 100) then
+      TEdit(Sender).text := '100';
+  end;
+end;
+
 end.
 end.

文件差异内容过多而无法显示
+ 330 - 409
Forms/ProjectPropertiesFrm.dfm


+ 53 - 32
Forms/ProjectPropertiesFrm.pas

@@ -70,7 +70,6 @@ type
     lblSafeTitel: TLabel;
     lblSafeTitel: TLabel;
     pnlSafeBar: TPanel;
     pnlSafeBar: TPanel;
     lblUnlockPassword: TLabel;
     lblUnlockPassword: TLabel;
-    imgValid: TImageList;
     pnlUnlockPassword: TPanel;
     pnlUnlockPassword: TPanel;
     pnlOrgPW: TPanel;
     pnlOrgPW: TPanel;
     leUnlockPassword: TLabeledEdit;
     leUnlockPassword: TLabeledEdit;
@@ -92,31 +91,11 @@ type
     cbShowDesignQuantity: TCheckBox;
     cbShowDesignQuantity: TCheckBox;
     cbShowAlias: TCheckBox;
     cbShowAlias: TCheckBox;
     tobtnCalcParameters: TToolButton;
     tobtnCalcParameters: TToolButton;
-    pnlCalcParametersBar: TPanel;
-    lblCalcParametersTitel: TLabel;
-    leQuantityDigit: TLabeledEdit;
-    lblDigit: TLabel;
-    leTotalPriceDigit: TLabeledEdit;
-    udQuantity: TUpDown;
-    udTotalPrice: TUpDown;
-    gbPM_Digit: TGroupBox;
-    lePM_PriceDigit: TLabeledEdit;
-    udPM_PriceDigit: TUpDown;
     pnlReport: TPanel;
     pnlReport: TPanel;
     leReport: TLabel;
     leReport: TLabel;
     cbShowReportShading: TCheckBox;
     cbShowReportShading: TCheckBox;
     edtReportShading: TEdit;
     edtReportShading: TEdit;
     tobtnDateTime: TToolButton;
     tobtnDateTime: TToolButton;
-    lblDateTime: TLabel;
-    pnlDateTime: TPanel;
-    lblBaseline: TLabel;
-    dtpBaseline: TDateTimePicker;
-    lblDeadline: TLabel;
-    dtpDeadline: TDateTimePicker;
-    lblDateHint: TLabel;
-    cbDealPayAloneDigiy: TCheckBox;
-    leDealPayTotalPriceDigit: TLabeledEdit;
-    udDealPayTotalPriceDigit: TUpDown;
     pnlReportView: TPanel;
     pnlReportView: TPanel;
     lblReportShowStateTitle: TLabel;
     lblReportShowStateTitle: TLabel;
     pnlReportViewBar: TPanel;
     pnlReportViewBar: TPanel;
@@ -140,6 +119,32 @@ type
     pnlViewPart2: TPanel;
     pnlViewPart2: TPanel;
     pnlApprovalCode: TPanel;
     pnlApprovalCode: TPanel;
     cbShowApprovalCode: TCheckBox;
     cbShowApprovalCode: TCheckBox;
+    leSubsistStart: TLabeledEdit;
+    pnlDateTimeRela: TPanel;
+    pnlDateTime: TPanel;
+    lblDateTime: TLabel;
+    dtpBaseline: TDateTimePicker;
+    lblBaseline: TLabel;
+    dtpDeadline: TDateTimePicker;
+    lblDeadline: TLabel;
+    lblDateHint: TLabel;
+    pnlTechRela: TPanel;
+    lblCalcParametersTitel: TLabel;
+    lblDigit: TLabel;
+    leQuantityDigit: TLabeledEdit;
+    udQuantity: TUpDown;
+    leTotalPriceDigit: TLabeledEdit;
+    udTotalPrice: TUpDown;
+    cbDealPayAloneDigiy: TCheckBox;
+    leDealPayTotalPriceDigit: TLabeledEdit;
+    udDealPayTotalPriceDigit: TUpDown;
+    gbPM_Digit: TGroupBox;
+    lePM_PriceDigit: TLabeledEdit;
+    udPM_PriceDigit: TUpDown;
+    pnlCalcParametersBar: TPanel;
+    udSubsistStart: TUpDown;
+    lePriceDigit: TLabeledEdit;
+    udPrice: TUpDown;
     procedure btnOkClick(Sender: TObject);
     procedure btnOkClick(Sender: TObject);
     procedure leContractPriceClick(Sender: TObject);
     procedure leContractPriceClick(Sender: TObject);
     procedure msbBaseMouseWheel(Sender: TObject; Shift: TShiftState;
     procedure msbBaseMouseWheel(Sender: TObject; Shift: TShiftState;
@@ -301,17 +306,21 @@ begin
   leMaterialSubsist.Text := FloatToStr(FProjProperties.MaterialSubsist);
   leMaterialSubsist.Text := FloatToStr(FProjProperties.MaterialSubsist);
   leMaterialSubsist.ReadOnly := (FProjProperties.PhaseCount > 1) or ((FProjProperties.PhaseCount = 1) and (FProjProperties.AuditStatus <> 0));
   leMaterialSubsist.ReadOnly := (FProjProperties.PhaseCount > 1) or ((FProjProperties.PhaseCount = 1) and (FProjProperties.AuditStatus <> 0));
   SetWindowLong(leMaterialSubsist.Handle, GWL_STYLE, GetWindowLong(leMaterialSubsist.Handle, GWL_STYLE) or ES_RIGHT);
   SetWindowLong(leMaterialSubsist.Handle, GWL_STYLE, GetWindowLong(leMaterialSubsist.Handle, GWL_STYLE) or ES_RIGHT);
+
+  udSubsistStart.Position := FProjProperties.SubsistStart;
+  SetWindowLong(leSubsistStart.Handle, GWL_STYLE, GetWindowLong(leSubsistStart.Handle, GWL_STYLE) or ES_RIGHT);
 end;
 end;
 
 
 procedure TProjectPropertiesForm.SaveDealPay;
 procedure TProjectPropertiesForm.SaveDealPay;
 begin
 begin
+  FProjProperties.SubsistStart := udSubsistStart.Position;
   if (FProjProperties.PhaseCount > 1) or ((FProjProperties.PhaseCount = 1) and (FProjProperties.AuditStatus <> 0)) then Exit;
   if (FProjProperties.PhaseCount > 1) or ((FProjProperties.PhaseCount = 1) and (FProjProperties.AuditStatus <> 0)) then Exit;
   FProjProperties.ContractPrice := StrToFloatDef(leContractPrice.Text, 0);
   FProjProperties.ContractPrice := StrToFloatDef(leContractPrice.Text, 0);
   FProjProperties.StartedSubsisit := StrToFloatDef(leStartedSubsist.Text, 0);
   FProjProperties.StartedSubsisit := StrToFloatDef(leStartedSubsist.Text, 0);
   FProjProperties.MaterialSubsist := StrToFloatDef(leMaterialSubsist.Text, 0);
   FProjProperties.MaterialSubsist := StrToFloatDef(leMaterialSubsist.Text, 0);
   FProjectData.DealPaymentData.CalcStarted_RangePrice;
   FProjectData.DealPaymentData.CalcStarted_RangePrice;
   if FProjectData.PhaseData.Active then
   if FProjectData.PhaseData.Active then
-    FProjectData.PhaseData.PhasePayData.CalculateAll;                              
+    FProjectData.PhaseData.PhasePayData.CalculateAll;
 end;
 end;
 
 
 procedure TProjectPropertiesForm.leContractPriceClick(Sender: TObject);
 procedure TProjectPropertiesForm.leContractPriceClick(Sender: TObject);
@@ -356,15 +365,15 @@ end;
 
 
 procedure TProjectPropertiesForm.ResetContentsCheck;
 procedure TProjectPropertiesForm.ResetContentsCheck;
 begin
 begin
-  if msbBase.VertScrollBar.Position < 523 then
+  if msbBase.VertScrollBar.Position < 528 then
     ResetContentsCheck(tobtnDealInfo.Tag)
     ResetContentsCheck(tobtnDealInfo.Tag)
-  else if msbBase.VertScrollBar.Position < 683 then
+  else if msbBase.VertScrollBar.Position < 688 then
     ResetContentsCheck(tobtnTechParameters.Tag)
     ResetContentsCheck(tobtnTechParameters.Tag)
-  else if msbBase.VertScrollBar.Position < 796 then
+  else if msbBase.VertScrollBar.Position < 816 then
     ResetContentsCheck(tobtnDealPayment.Tag)
     ResetContentsCheck(tobtnDealPayment.Tag)
-  else if msbBase.VertScrollBar.Position < 926 then
+  else if msbBase.VertScrollBar.Position < 957 then
     ResetContentsCheck(tobtnSafe.Tag)
     ResetContentsCheck(tobtnSafe.Tag)
-  else if msbBase.VertScrollBar.Position < 1101 then
+  else if msbBase.VertScrollBar.Position < 1163 then
     ResetContentsCheck(tobtnCalcParameters.Tag)
     ResetContentsCheck(tobtnCalcParameters.Tag)
   else
   else
     ResetContentsCheck(tobtnDateTime.Tag);
     ResetContentsCheck(tobtnDateTime.Tag);
@@ -381,15 +390,15 @@ begin
   if ATag = tobtnDealInfo.Tag then
   if ATag = tobtnDealInfo.Tag then
     msbBase.VertScrollBar.Position := 0
     msbBase.VertScrollBar.Position := 0
   else if ATag = tobtnTechParameters.Tag then
   else if ATag = tobtnTechParameters.Tag then
-    msbBase.VertScrollBar.Position := 523
+    msbBase.VertScrollBar.Position := 528
   else if ATag = tobtnDealPayment.Tag then
   else if ATag = tobtnDealPayment.Tag then
-    msbBase.VertScrollBar.Position := 683
+    msbBase.VertScrollBar.Position := 688
   else if ATag = tobtnSafe.Tag then
   else if ATag = tobtnSafe.Tag then
-    msbBase.VertScrollBar.Position := 796
+    msbBase.VertScrollBar.Position := 816
   else if ATag = tobtnCalcParameters.Tag then
   else if ATag = tobtnCalcParameters.Tag then
-    msbBase.VertScrollBar.Position := 926
+    msbBase.VertScrollBar.Position := 957
   else if ATag = tobtnDateTime.Tag then
   else if ATag = tobtnDateTime.Tag then
-    msbBase.VertScrollBar.Position := 1101;
+    msbBase.VertScrollBar.Position := 1163;
 end;
 end;
 
 
 procedure TProjectPropertiesForm.InitDealInfo;
 procedure TProjectPropertiesForm.InitDealInfo;
@@ -619,14 +628,21 @@ begin
   begin
   begin
     FProjProperties.QuantityDigit := udQuantity.Position;
     FProjProperties.QuantityDigit := udQuantity.Position;
     FProjProperties.TotalPriceDigit := udTotalPrice.Position;
     FProjProperties.TotalPriceDigit := udTotalPrice.Position;
+    FProjProperties.PriceDigit := udPrice.Position;
     FProjectData.ResetFloatDigitView;
     FProjectData.ResetFloatDigitView;
     FProjProperties.DecimalManager.Common.Quantity.Digit := udQuantity.Position;
     FProjProperties.DecimalManager.Common.Quantity.Digit := udQuantity.Position;
     FProjProperties.DecimalManager.Common.TotalPrice.Digit := udTotalPrice.Position;
     FProjProperties.DecimalManager.Common.TotalPrice.Digit := udTotalPrice.Position;
+    FProjProperties.DecimalManager.Common.Price.Digit := udPrice.Position;
     FProjProperties.DecimalManager.PriceMargin.Quantity.Digit := udQuantity.Position;
     FProjProperties.DecimalManager.PriceMargin.Quantity.Digit := udQuantity.Position;
     FProjProperties.DecimalManager.PriceMargin.TotalPrice.Digit := udTotalPrice.Position;
     FProjProperties.DecimalManager.PriceMargin.TotalPrice.Digit := udTotalPrice.Position;
 
 
     FProjProperties.DealPayAloneDigit := cbDealPayAloneDigiy.Checked;
     FProjProperties.DealPayAloneDigit := cbDealPayAloneDigiy.Checked;
     FProjProperties.DecimalManager.DealPay.TotalPrice.Digit := udDealPayTotalPriceDigit.Position;
     FProjProperties.DecimalManager.DealPay.TotalPrice.Digit := udDealPayTotalPriceDigit.Position;
+  end else if ((FProjProperties.PhaseCount > 0) and (not FProjectData.PhaseData.StageDataReadOnly) and (FProjectData.PhaseData.StageIndex = 0)) then
+  begin
+    FProjProperties.PriceDigit := udPrice.Position;
+    FProjProperties.DecimalManager.Common.Price.Digit := udPrice.Position;
+    FProjectData.ResetFloatDigitView;
   end;
   end;
   if (FProjProperties.PhaseCount = 1) and not FProjectData.PriceMarginReadOnly then
   if (FProjProperties.PhaseCount = 1) and not FProjectData.PriceMarginReadOnly then
     FProjProperties.DecimalManager.PriceMargin.Price.Digit := udPM_PriceDigit.Position;
     FProjProperties.DecimalManager.PriceMargin.Price.Digit := udPM_PriceDigit.Position;
@@ -641,6 +657,11 @@ begin
   leTotalPriceDigit.ReadOnly := FProjProperties.PhaseCount > 0;
   leTotalPriceDigit.ReadOnly := FProjProperties.PhaseCount > 0;
   udTotalPrice.Enabled := FProjProperties.PhaseCount = 0;
   udTotalPrice.Enabled := FProjProperties.PhaseCount = 0;
 
 
+  udPrice.Position := FProjProperties.PriceDigit;
+  udPrice.Min := FProjProperties.PriceDigitMin;
+  lePriceDigit.ReadOnly := (FProjProperties.PhaseCount > 0) and (FProjectData.PhaseData.StageDataReadOnly or (FProjectData.PhaseData.StageIndex > 0));
+  udPrice.Enabled := not lePriceDigit.ReadOnly;
+
   udPM_PriceDigit.Position := FProjProperties.DecimalManager.PriceMargin.Price.Digit;
   udPM_PriceDigit.Position := FProjProperties.DecimalManager.PriceMargin.Price.Digit;
   lePM_PriceDigit.ReadOnly := FProjectData.PriceMarginReadOnly and (FProjProperties.PhaseCount > 1);
   lePM_PriceDigit.ReadOnly := FProjectData.PriceMarginReadOnly and (FProjProperties.PhaseCount > 1);
   udPM_PriceDigit.Enabled := not lePM_PriceDigit.ReadOnly;
   udPM_PriceDigit.Enabled := not lePM_PriceDigit.ReadOnly;

+ 2 - 1
Forms/ReportsFrm.pas

@@ -210,7 +210,8 @@ begin
     ReportsForm.ShowModal;
     ReportsForm.ShowModal;
   finally
   finally
     ReportsForm.Free;
     ReportsForm.Free;
-    AProjectData.ClearReportCacheData;
+    if not _IsDebugView then
+      AProjectData.ClearReportCacheData;
   end;
   end;
 end;
 end;
 
 

+ 109 - 142
Forms/UpFileFrame.dfm

@@ -52,13 +52,13 @@ object UpFileView: TUpFileView
   object pnlPlay: TPanel
   object pnlPlay: TPanel
     Left = 189
     Left = 189
     Top = 12
     Top = 12
-    Width = 64
+    Width = 68
     Height = 29
     Height = 29
     Color = clTeal
     Color = clTeal
     TabOrder = 0
     TabOrder = 0
     Visible = False
     Visible = False
     object btnPlay: TPNGButton
     object btnPlay: TPNGButton
-      Left = 0
+      Left = 56
       Top = 0
       Top = 0
       Width = 28
       Width = 28
       Height = 30
       Height = 30
@@ -345,136 +345,123 @@ object UpFileView: TUpFileView
       OnClick = btnPlayClick
       OnClick = btnPlayClick
     end
     end
     object btnDelete: TPNGButton
     object btnDelete: TPNGButton
-      Left = 31
-      Top = 0
-      Width = 23
-      Height = 30
+      Left = 33
+      Top = 7
+      Width = 16
+      Height = 16
       Hint = #32447#19978#31227#38500
       Hint = #32447#19978#31227#38500
       Layout = pbsImageLeft
       Layout = pbsImageLeft
       Spacing = 4
       Spacing = 4
       ImageNormal.Data = {
       ImageNormal.Data = {
-        89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
-        F8000000097048597300000B1300000B1301009A9C1800000149694343505068
-        6F746F73686F70204943432070726F66696C65000078DAAD8E3D4BC35014404F
-        AA2888D40A411CDF242D68A5D8C18CE987ADA0886987B65B9B3ED2D236092FCF
-        6A7F84A35B0717FF81B3B383E02038F913DC04A70E0E11323888E099CE3D702F
-        175275BB52AAA63230F1B5726A25D16A77C4EA332B2C0140D78DC2D3C65113C0
-        0F7CC90F3E5F31005EF6EC4AA9CADF587343A5810570D297910B461D185DEA50
-        83710F98BD51A8C178044CD574CA60BC01692FF67720DD8B7D01A455ABDD81D4
-        3A607AB10BC0ECC55E044C2DAF34403908676AE80DB4C8BA3951B02C4BD8FDA0
-        27456316693989C4B1EF062A0C5457CB7E5ED8E3B17086DE4047C291915453D9
-        CF13FF0DC066BCECD44A225BB0ACC31CFF4CABDD11B17D9C6300C6D653D212DC
-        0B35FD562375F0FB9CDC986FC3D91D2C2F9256BC86DB5DD8B849DA4E0132FBF0
-        30FF02D75C586FBAA536520000055E4944415478DA8D947D4C136718C0DFBB6B
-        7BA5BDAB7CD44AD15640C04427B89138158D894830D91F32095BD4A873BA1897
-        4CAD645BB6E95F5BB28F64C9B63FCC7046E74734DA6D14D9DCFE50834A011117
-        9C7C48624433E568E929F49A7ED2DE9EE7B8EBBA816E6FF2E6DABBF7FDFDDEE7
-        7D9EF7A55AE6CC21D8529393C46036AF3397966E3AE0F536FD1E8D76937F3513
-        4D93269B8DF0F04CE20B598689294233CC52DBA2456F9FE8ED6D3E1208FC9A39
-        874201C219965D57BA7DBBDB6436670FB7B5097BAF5D6BF8231EF73E4F202793
-        28A928D9B8B1D562B33946BBBA425F74746CF584429EB4C0939747688097EDD8
-        E1A609C90E7474101E20015114F683E47686245330097019E0A5F5F5AD269E77
-        F82F5F26C6DC5C92A428E9D3CECE6D1E495224D445A7B3A678CB96F3344D2B70
-        0C1B26127EF66C223E7922EC6B6F4F47A20938F83D897058B989E31C3E80E356
-        5138C66A257159963EEFE9D9D63C31E1A1DAAAABCF14AD5DBBE9B13A88509412
-        3A76943C999810F679BD8A0405DF0280A3E98AE2BA3A05EEBF7449591405DFB4
-        C5CD292A229786867EDB3338B881AACCCA7AF9CB952B9B73AD567BC8E723324A
-        A06B4F1E80A22409EF747636F483E47B9BADBCB2BEFE67D66452E014265A85E3
-        788BDD4E46C361D1D5D3E3EA8B46CF6154A45CAFAFFA66CD1A776E76B63D2808
-        5383B163125102DBF238187C747A60E0E37D0D0DEFE7715CB14F855310B1B672
-        0B14CC682C26EEBD71A371201E77033A4C69092C3718AABE5EB5CA9D6BB1D8A5
-        D1D1A9EDCA10610273162E2449962563B09D14CA55388A78842712E2DEEE6E84
-        9F076444497266192A92AA2A778ED96C0FA10400CA80789C24A351C2E8F5242E
-        8A448EC5A6B606130BCF5973E7123FCB8AAE81817FC0A70934C9572B56B8F340
-        32FEE001494E4C9064284464906024506D84D6E908ADCA15B8D128EE9F013EA3
-        00DB62907CB664C969DEE72B8C42240A10C058290C3E018EFF4DB02D82D138F2
-        DEE0E08703B1D834B822C0D2438B9CF13206A1BF6EB1BC75B0A6E688CFEB2593
-        E3E3845125B43ADE60B110736121F9A8B7F7939660F0107946A34EA97791D260
-        726A2A791565B5B5E7CD914899FFE245E5938E61F0CE51B6461399F2F389A0D7
-        3F6CECEBDBDC178B75CC28F040DD2A11E001C3CA21A4A278FDFA563A1C760817
-        2E28C0F4EAD5DF8C2AC0FF98038161843DBDBD0D20F14E13FCA80A5253A7B8A2
-        08E03A808FB6B428001D548EB6F7069E2704AA09E10C44C36448FEA42861F7AD
-        5BD3248A4039B9B072843319702C4B654BA0730031C0D5213F7D4A1281801289
-        4E8B06BE5B0A0AC8C3544AD879F366437F8684FA017200115414D6D6B6329188
-        43F078942AD1E00CF4EC79F3C82396F51D1B1E6EDA5D52B2730145CD8DF8FD4A
-        745A6E1855722F9110767475A525D44F05052FCEAFAE6EA1013E02701A739DB1
-        3284074C26ACF303508A2797188D5587972E753B29CA1E1B1B9B92E07855C241
-        E2EF86C3C2CEEEEED76E4722EDD4F5D5ABCFCC723A373D3C7BF6EF3DC76D0151
-        8EC341C6007E6070B031B3CE5F60D9AAA6CA4AF702BDDE1E83EDD26B126D5170
-        9B1EEFEFFFE5CD3B775EA57659ADAF6CCECF3F4BFC7E3E02D700AE0493882B7F
-        6A368BAEBB771B673A442839BA6C99BB8C65ED0998A73318881EE6727031DE4F
-        24C2BBAE5FFFA02D186C524E721DC7D5B98A8B4FCA63637C14C2CE763AC938C7
-        898D43438DFDCF38A19AE4D8F2E5EEC570ADA06416E4E0412A15DE7AE5CAA176
-        493A0A43A4F45551C7F375AEF9F34F596499830B5B7CF7DEBDE7C2D312C8C909
-        B8BB5ECACFB7DF97A4C8F6AB570F02FC3B844FBB8B40B2A1C66A7DE3F0C84833
-        C0DDFF05D75A7956D6AAFDA5A5AE13C3C3D7AE4AD27178154C97E90CE30DEA33
-        FE7FE0194D8F05083D96F9F22F2F189250BDF7C0B10000000049454E44AE4260
-        82}
+        89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+        610000001974455874536F6674776172650041646F626520496D616765526561
+        647971C9653C0000032669545874584D4C3A636F6D2E61646F62652E786D7000
+        000000003C3F787061636B657420626567696E3D22EFBBBF222069643D225735
+        4D304D7043656869487A7265537A4E54637A6B633964223F3E203C783A786D70
+        6D65746120786D6C6E733A783D2261646F62653A6E733A6D6574612F2220783A
+        786D70746B3D2241646F626520584D5020436F726520352E362D633134352037
+        392E3136333439392C20323031382F30382F31332D31363A34303A3232202020
+        2020202020223E203C7264663A52444620786D6C6E733A7264663D2268747470
+        3A2F2F7777772E77332E6F72672F313939392F30322F32322D7264662D73796E
+        7461782D6E7323223E203C7264663A4465736372697074696F6E207264663A61
+        626F75743D222220786D6C6E733A786D703D22687474703A2F2F6E732E61646F
+        62652E636F6D2F7861702F312E302F2220786D6C6E733A786D704D4D3D226874
+        74703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F222078
+        6D6C6E733A73745265663D22687474703A2F2F6E732E61646F62652E636F6D2F
+        7861702F312E302F73547970652F5265736F75726365526566232220786D703A
+        43726561746F72546F6F6C3D2241646F62652050686F746F73686F7020434320
+        32303139202857696E646F7773292220786D704D4D3A496E7374616E63654944
+        3D22786D702E6969643A33333445363239424131354131314539414432304646
+        373936324139334543462220786D704D4D3A446F63756D656E7449443D22786D
+        702E6469643A3333344536323943413135413131453941443230464637393632
+        413933454346223E203C786D704D4D3A4465726976656446726F6D2073745265
+        663A696E7374616E636549443D22786D702E6969643A33333445363239394131
+        35413131453941443230464637393632413933454346222073745265663A646F
+        63756D656E7449443D22786D702E6469643A3333344536323941413135413131
+        453941443230464637393632413933454346222F3E203C2F7264663A44657363
+        72697074696F6E3E203C2F7264663A5244463E203C2F783A786D706D6574613E
+        203C3F787061636B657420656E643D2272223F3EE1BDCE94000000C549444154
+        78DA63FCFFFF3F03258071F019F0B2B2022C20DEDEC1488C388A012045DCF6F6
+        60F6D78307E18A7189633540203A86E1D7830760FEB7A347C03497B50D986653
+        5060F8B074096E036086F0874730FCBE7B17459C555999E1E3CA15F8BD806C08
+        87BE3E8AD88F8B173134E337405D03D5809B37883300A419E4571060D7D606D3
+        3FAF5E05D3A0B021180BAC121210CDBA7A0C5F76EF02B3795CDD187E5EBE0466
+        FF7EF1027F2CF0383A81D95FF6EF4389466CE238BD802DC1109590C801036F00
+        00F80F97E1939D14CA0000000049454E44AE426082}
       ImageOver.Data = {
       ImageOver.Data = {
-        89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D
-        F8000000097048597300000B1300000B1301009A9C1800000149694343505068
-        6F746F73686F70204943432070726F66696C65000078DAAD8E3D4BC35014404F
-        AA2888D40A411CDF242D68A5D8C18CE987ADA0886987B65B9B3ED2D236092FCF
-        6A7F84A35B0717FF81B3B383E02038F913DC04A70E0E11323888E099CE3D702F
-        175275BB52AAA63230F1B5726A25D16A77C4EA332B2C0140D78DC2D3C65113C0
-        0F7CC90F3E5F31005EF6EC4AA9CADF587343A5810570D297910B461D185DEA50
-        83710F98BD51A8C178044CD574CA60BC01692FF67720DD8B7D01A455ABDD81D4
-        3A607AB10BC0ECC55E044C2DAF34403908676AE80DB4C8BA3951B02C4BD8FDA0
-        27456316693989C4B1EF062A0C5457CB7E5ED8E3B17086DE4047C291915453D9
-        CF13FF0DC066BCECD44A225BB0ACC31CFF4CABDD11B17D9C6300C6D653D212DC
-        0B35FD562375F0FB9CDC986FC3D91D2C2F9256BC86DB5DD8B849DA4E0132FBF0
-        30FF02D75C586FBAA53652000005A84944415478DA8D947D6C13651CC77FCF5D
-        7B7DDFBAEEADB751D8962010CCC6C401A60485608C2E0262900C844C27B2A07F
-        80D32C03063A10D4C444A2338C09928180BBC84BA6D1A8216132FF2028381893
-        2D9B736BD66DD0ADB475D76BD73B7FCFB3B2976CA0CFE5EE69EF9EE7FBF93DBF
-        37B28B7B16E888693218F9F49549098F16550CD6D60C43F71598328C50CAAD84
-        24A28311FA5753F111059E181664253EBEED90FFE2B956F5E2F71377100AA0E2
-        3ACEBEF28945C592C362B05FF9FD376FF9E0A7EBC2D0DFF43080A629F854F316
-        CD7DB9213DC5EEBADD7223B477F0AB4D5EADE5FC18A0823C053C8ABB97BC22F1
-        00F6AE5BD721D596025DA121EF4E84C89320E380288A6B28BE78DEA606BBD5E4
-        EAB8D1045653329E8704770D9ED9ECD59A198454E9D63F5D505054CF738489A3
-        59A0E2D6546B3274FFE3F7560C554F38C928C0CE1C1343F18D0D768BC9D57EF3
-        32731787EF134DA9208316AC1CBAB0B957BB7A9E1C72EC3BB5686141D18DAB57
-        467D4A08A86A0C393148B1A480271C40C8E7718811B6724F22409FB770EE7A26
-        DE71F317EA2620C053A7D153C16C7B0E1C1D6CFDE1B47264353143F6E2838E57
-        CFCDB03A445FE00EA81482B7C6E651488F12F256F80FAF5310F21AF74C6EE1BC
-        4DDF5A4C0657474B23103C31109E41E8BE744B26B445877D7B03753BC2D0FD35
-        193D78B2FB43C70E698639411C08F43337516B401D611B53CC69D0AA043DC782
-        97F6ED99B7A53CCB6CCA6943710ED7113C315D4FAF34B308ED31C5B7FBDE9132
-        3446C2CDC3643C7CE9EE83496F48338C36F16EB02F9E82F74131164057463644
-        04013A6F51F11873271547A742AA3903C5A3BEDD815A2A5E8F1B6516E4C94948
-        21DBA44CC12CFA427DEC335BA02A3012A3A92C801CF1A0E610BE47004430B031
-        48170AA09333F9DE93CF4C129F02B80F39602F955C7AB3E80D74C2C8C81D88AA
-        DD28EAA327C6501AB0B06C38F36CB353BF183A79B36FEF34E2D302E83020A4DC
-        BCF164B2D29D158AFD8C52094C981001F420B08CE171B6EBE7431B6FEEFD4096
-        762AD03B453C0E304E83084316C9DFF25946F19176EF4F10519B41CFAC16D84D
-        AD32F159E0B0CC81D240C3FE3EED5A253C6090D2782F1A1D7A0C172D7F2EAF20
-        7B6DBD43093FD2E9A9665F0462427113B39D277A7CEAC12ECC86DB9CF077D5F0
-        990D61E8FD755A4005B78A55A04A38F4336B61790B73D634E894B0EB76CF474C
-        5037663DCA120BE8509CDE3CEE144DB3A195F0DEB2D0492CC6DEA6298077E280
-        18163F009F978FE2028AB7F71CA0D268B91DBF0BF417BAC58596F847012C1E14
-        4E2139701D88777BF0F8140803D0CE82D99E979FFD62835E915DED9EFD71CB93
-        465D825732A6A2D9E8C48CF54138D283273120DC803387400E9CE699705553BD
-        DB02C7B0E2C721E46D8C01062D6F41F65A1447B778DE05BA4507284E7866A528
-        2C8116CED45F1B6EAA79D3B4AC64092199F7140F0318B0B3EA083D1301D1E282
-        4635EADDEAAF1D8390727E4D7EEEACE72EF091B0EB4FCF1ED6B2685AEA69BEE3
-        E5149642376FC53CAF7F0B37D51961A6FB636B91F418E1C460D80B062C3E0306
-        5D8843D2AC4EF8312A7B5FF7D7BD24C35F97497562E529675266D11F5DDB99E5
-        023870E6192843580E5DBCCD57254B6513F3DC0819EE4F6CC5929BD78B217900
-        8C08317214800AD83E6639B2A064A0E5BB63E1EA17C81C6E45E15661EE698874
-        D8026A132EB2B0A272EA5740AFCE86E5FF4DD974454421D58925D272DE20CAF2
-        5D30F00298F114E9D654B8148B0EAFBD73BAC2AF5DAB61952C92F96B2A0CCBEB
-        B448B72DA436A2F8F3D0C727FAAAC267CB1E54A1F72187ED5BA4426C2BB2EC03
-        5742065C56D5E1C2FEE39501ADF90B5C121C6B1522C945C8D213699A666D03F0
-        BDAF5C78A8F83864A6FB685289B421214DBC140EC9AB064EEC46F15A2A3EA517
-        2164F5323EB7F8FCC8C573282EFD97F838247BE90663E18EB34A63A35F6BFE12
-        5F0526F4A2294388CF91FF233EA9CF00AB5965E2CB7F01ADCF605006FF4B6B00
-        00000049454E44AE426082}
+        89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+        610000001974455874536F6674776172650041646F626520496D616765526561
+        647971C9653C0000032669545874584D4C3A636F6D2E61646F62652E786D7000
+        000000003C3F787061636B657420626567696E3D22EFBBBF222069643D225735
+        4D304D7043656869487A7265537A4E54637A6B633964223F3E203C783A786D70
+        6D65746120786D6C6E733A783D2261646F62653A6E733A6D6574612F2220783A
+        786D70746B3D2241646F626520584D5020436F726520352E362D633134352037
+        392E3136333439392C20323031382F30382F31332D31363A34303A3232202020
+        2020202020223E203C7264663A52444620786D6C6E733A7264663D2268747470
+        3A2F2F7777772E77332E6F72672F313939392F30322F32322D7264662D73796E
+        7461782D6E7323223E203C7264663A4465736372697074696F6E207264663A61
+        626F75743D222220786D6C6E733A786D703D22687474703A2F2F6E732E61646F
+        62652E636F6D2F7861702F312E302F2220786D6C6E733A786D704D4D3D226874
+        74703A2F2F6E732E61646F62652E636F6D2F7861702F312E302F6D6D2F222078
+        6D6C6E733A73745265663D22687474703A2F2F6E732E61646F62652E636F6D2F
+        7861702F312E302F73547970652F5265736F75726365526566232220786D703A
+        43726561746F72546F6F6C3D2241646F62652050686F746F73686F7020434320
+        32303139202857696E646F7773292220786D704D4D3A496E7374616E63654944
+        3D22786D702E6969643A33374230333530314131354131314539383834434139
+        334444373334313946362220786D704D4D3A446F63756D656E7449443D22786D
+        702E6469643A3337423033353032413135413131453938383443413933444437
+        333431394636223E203C786D704D4D3A4465726976656446726F6D2073745265
+        663A696E7374616E636549443D22786D702E6969643A33374230333446464131
+        35413131453938383443413933444437333431394636222073745265663A646F
+        63756D656E7449443D22786D702E6469643A3337423033353030413135413131
+        453938383443413933444437333431394636222F3E203C2F7264663A44657363
+        72697074696F6E3E203C2F7264663A5244463E203C2F783A786D706D6574613E
+        203C3F787061636B657420656E643D2272223F3EF2B4FEA7000000B749444154
+        78DA63FCFFFF3F03258071F019F02D361A2CC0B578292331E228068014711919
+        43D8E7CEC215E312C76E40422203C3B97310FEA58B609A4B4F1FA2C0C888E1DB
+        82F9B80D801B1213CBC070E60CAA674D4C18BE2D598CDF0B28862828A28A3DB8
+        8FA119BF011292A8622F9E13670058B3A01084636D03A18F1E81C8BD7F47442C
+        7072413876760CDF76EE8004A2BB0703C3A1431035DFBF1188056717087BEF1E
+        D468C4228ED30BD8120C5109891C30F0060000955793E1E66A6FFC0000000049
+        454E44AE426082}
       ButtonStyle = pbsNoFrame
       ButtonStyle = pbsNoFrame
       ParentShowHint = False
       ParentShowHint = False
       ShowHint = True
       ShowHint = True
       OnClick = btnDeleteClick
       OnClick = btnDeleteClick
     end
     end
+    object btnOpen: TPNGButton
+      Left = 11
+      Top = 6
+      Width = 16
+      Height = 16
+      Hint = #25171#24320
+      Layout = pbsImageLeft
+      Spacing = 0
+      ImageNormal.Data = {
+        89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+        610000000467414D410000AFC837058AE90000001974455874536F6674776172
+        650041646F626520496D616765526561647971C9653C000000A34944415478DA
+        63FCFFFF3F032580719818707AB139888D6C1223218DA6B127510CF86F1A9B0D
+        973CBD782A5E4BB11A60E0EBC9F0EFD755B020139B364EDD17366F07EBC33040
+        C7419FE1CA818B447B1DC30088B3B289D20DF222D000460C0340AEF8FBED2C5E
+        CDCC5CC66097623540CFDD96E1DF0FFCDE60E2D067B8B4F33076038C822318FE
+        FFBD85DFF3CC6A0CE7D6AEC06E00256100629392245163811240B101002F927B
+        E1247F3BB80000000049454E44AE426082}
+      ImageOver.Data = {
+        89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF
+        610000000467414D410000AFC837058AE90000001974455874536F6674776172
+        650041646F626520496D616765526561647971C9653C000000A34944415478DA
+        63FCFFFF3F032580719818707AB139888D6C1223218DA6B127510CF86F1A9B0D
+        973CBD782A5E4BB11A60E0EBC9F0EFD755B020139B364EDD17366F07EBC33040
+        C7419FE1CA818B447B1DC30088B3B289D20DF222D000460C0340AEF8FBED2C5E
+        CDCC5CC66097623540CFDD96E1DF0FFCDE60E2D067B8B4F33076038C822318FE
+        FFBD85DFF3CC6A0CE7D6AEC06E00256100629392245163811240B101002F927B
+        E1247F3BB80000000049454E44AE426082}
+      ButtonStyle = pbsNoFrame
+      ParentShowHint = False
+      ShowHint = True
+      OnClick = btnOpenClick
+    end
   end
   end
   object pnlOrder: TPanel
   object pnlOrder: TPanel
     Left = 56
     Left = 56
@@ -514,24 +501,4 @@ object UpFileView: TUpFileView
       OnClick = btnCancelClick
       OnClick = btnCancelClick
     end
     end
   end
   end
-  object cxHintStyleController1: TcxHintStyleController
-    Global = False
-    HintStyle.CallOutPosition = cxbpAuto
-    HintStyle.CaptionFont.Charset = DEFAULT_CHARSET
-    HintStyle.CaptionFont.Color = clWindowText
-    HintStyle.CaptionFont.Height = -11
-    HintStyle.CaptionFont.Name = 'MS Sans Serif'
-    HintStyle.CaptionFont.Style = []
-    HintStyle.Color = clCream
-    HintStyle.Font.Charset = DEFAULT_CHARSET
-    HintStyle.Font.Color = clWindowText
-    HintStyle.Font.Height = -13
-    HintStyle.Font.Name = #24494#36719#38597#40657
-    HintStyle.Font.Style = []
-    HintStyle.Rounded = True
-    HintStyle.RoundRadius = 5
-    HintHidePause = 60000
-    Left = 13
-    Top = 11
-  end
 end
 end

+ 21 - 11
Forms/UpFileFrame.pas

@@ -20,30 +20,28 @@ type
     shpBottom: TShape;
     shpBottom: TShape;
     imgFile: TImage;
     imgFile: TImage;
     lblFile: TLabel;
     lblFile: TLabel;
-    cxHintStyleController1: TcxHintStyleController;
     pnlPlay: TPanel;
     pnlPlay: TPanel;
     btnPlay: TPNGButton;
     btnPlay: TPNGButton;
     btnDelete: TPNGButton;
     btnDelete: TPNGButton;
     pnlOrder: TPanel;
     pnlOrder: TPanel;
     btnUp: TSpeedButton;
     btnUp: TSpeedButton;
     btnCancel: TSpeedButton;
     btnCancel: TSpeedButton;
+    btnOpen: TPNGButton;
     procedure btnCancelClick(Sender: TObject);
     procedure btnCancelClick(Sender: TObject);
     procedure btnUpClick(Sender: TObject);
     procedure btnUpClick(Sender: TObject);
     procedure btnPlayClick(Sender: TObject);
     procedure btnPlayClick(Sender: TObject);
     procedure lblFileClick(Sender: TObject);
     procedure lblFileClick(Sender: TObject);
     procedure FrameClick(Sender: TObject);
     procedure FrameClick(Sender: TObject);
     procedure btnDeleteClick(Sender: TObject);
     procedure btnDeleteClick(Sender: TObject);
+    procedure btnOpenClick(Sender: TObject);
   private
   private
-    FOwner: TObject;
     FData: TUpFile;
     FData: TUpFile;
     FProjectData: TObject;
     FProjectData: TObject;
     procedure SetData(const Value: TUpFile);
     procedure SetData(const Value: TUpFile);
-    procedure SetOwner(const Value: TObject);
     procedure SetProjectData(const Value: TObject);
     procedure SetProjectData(const Value: TObject);
     { Private declarations }
     { Private declarations }
   public
   public
     { Public declarations }
     { Public declarations }
-    property Owner: TObject read FOwner write SetOwner;
     property Data: TUpFile read FData write SetData;
     property Data: TUpFile read FData write SetData;
     property ProjectData: TObject read FProjectData write SetProjectData;
     property ProjectData: TObject read FProjectData write SetProjectData;
 
 
@@ -88,11 +86,6 @@ begin
   Data.OnStatusChange := DoOnStatusChange;
   Data.OnStatusChange := DoOnStatusChange;
 end;
 end;
 
 
-procedure TUpFileView.SetOwner(const Value: TObject);
-begin
-  FOwner := Value;
-end;
-
 procedure TUpFileView.ShowNormal;
 procedure TUpFileView.ShowNormal;
 begin
 begin
   Color := clWindow;
   Color := clWindow;
@@ -220,7 +213,7 @@ begin
     begin
     begin
       pnlOrder.Visible := False;
       pnlOrder.Visible := False;
 //      pnlPlay.Visible := PHPWeb.UserID = Data.UperID;
 //      pnlPlay.Visible := PHPWeb.UserID = Data.UperID;
-      pnlPlay.Visible := not TProjectData(FProjectData).IsHistoryPhase;
+      pnlPlay.Visible := (not TProjectData(FProjectData).IsHistoryPhase) and (not TProjectData(FProjectData).IsGuest);
       lblInfo.Visible := True;
       lblInfo.Visible := True;
       lblInfo.Font.Color := clBlack;
       lblInfo.Font.Color := clBlack;
       lblInfo.Caption := Data.UperName;
       lblInfo.Caption := Data.UperName;
@@ -288,7 +281,7 @@ const
   G_Left = 268;
   G_Left = 268;
   G_Top = 12;
   G_Top = 12;
 begin
 begin
-  inherited;
+  inherited Create(AOwner);
   lblInfo.Left := G_Left;
   lblInfo.Left := G_Left;
 
 
   pnlPlay.ParentColor := True;
   pnlPlay.ParentColor := True;
@@ -316,5 +309,22 @@ begin
   RefreshStatus(Data.Status);
   RefreshStatus(Data.Status);
 end;
 end;
 
 
+procedure TUpFileView.btnOpenClick(Sender: TObject);
+var
+  sDownFile: string;
+begin
+  sDownFile := TProjectData(FProjectData).AttachmentInfoData.GetAttachmentPath(Data.ID);
+  if (sDownFile <> '') then
+  begin
+    if FileExists(sDownFile) then
+      ShellExecute(0, 'open', PChar(ExtractFileName(sDownFile)), '', PChar(ExtractFilePath(sDownFile)), SW_SHOWNORMAL)
+    else
+      TipMessage('当前文件不存在,请重新下载');
+  end
+  else if FileExists(Data.LocalFile) then
+    ShellExecute(0, 'open', PChar(ExtractFileName(Data.LocalFile)), '', PChar(ExtractFilePath(Data.LocalFile)), SW_SHOWNORMAL)
+  else
+    TipMessage('当前文件不存在,请重新下载');
+end;
 
 
 end.
 end.

+ 1 - 1
Forms/UpFileManageFrame.dfm

@@ -711,7 +711,7 @@ object UpFileManageView: TUpFileManageView
   end
   end
   object tDelView: TTimer
   object tDelView: TTimer
     Enabled = False
     Enabled = False
-    Interval = 100
+    Interval = 200
     OnTimer = tDelViewTimer
     OnTimer = tDelViewTimer
     Left = 200
     Left = 200
     Top = 16
     Top = 16

+ 41 - 29
Forms/UpFileManageFrame.pas

@@ -60,12 +60,12 @@ type
     procedure FrameMouseWheel(Sender: TObject; Shift: TShiftState;
     procedure FrameMouseWheel(Sender: TObject; Shift: TShiftState;
       WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
       WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
   private
   private
+    FBeginRefresh: Boolean;
     FDetailIsEdit: Boolean;
     FDetailIsEdit: Boolean;
     FSelected: TUpFileView;
     FSelected: TUpFileView;
     FDatas: TUpFiles;
     FDatas: TUpFiles;
     FWaitForDelete: TUpFileView;
     FWaitForDelete: TUpFileView;
     FDeleteAttachmentOnLine: Boolean;
     FDeleteAttachmentOnLine: Boolean;
-    FOwner: TObject;
     FProjectData: TObject;
     FProjectData: TObject;
     FRec: TsdDataRecord;
     FRec: TsdDataRecord;
     procedure SetSelected(const Value: TUpFileView);
     procedure SetSelected(const Value: TUpFileView);
@@ -81,7 +81,6 @@ type
     procedure DetailIntoEditStatus;
     procedure DetailIntoEditStatus;
     procedure AddUpFileView(AUpFile: TUpFile);
     procedure AddUpFileView(AUpFile: TUpFile);
     procedure SetWaitForDelete(const Value: TUpFileView);
     procedure SetWaitForDelete(const Value: TUpFileView);
-    procedure SetOwner(const Value: TObject);
     procedure SetProjectData(const Value: TObject);
     procedure SetProjectData(const Value: TObject);
     procedure SetRec(const Value: TsdDataRecord);
     procedure SetRec(const Value: TsdDataRecord);
     procedure SelectUpFile;
     procedure SelectUpFile;
@@ -91,9 +90,8 @@ type
     procedure DeleteViewAndData(AView: TUpFileView; ANeedDeleteOnLine: Boolean);
     procedure DeleteViewAndData(AView: TUpFileView; ANeedDeleteOnLine: Boolean);
     procedure DoOnBillChange(ARec: TsdDataRecord);
     procedure DoOnBillChange(ARec: TsdDataRecord);
     procedure RefreshViews;
     procedure RefreshViews;
-    
+
     property ProjectData: TObject read FProjectData write SetProjectData;
     property ProjectData: TObject read FProjectData write SetProjectData;
-    property Owner: TObject read FOwner write SetOwner;
     property Selected: TUpFileView read FSelected write SetSelected;
     property Selected: TUpFileView read FSelected write SetSelected;
     property DetailIsEdit: Boolean read FDetailIsEdit write SetDetailIsEdit;   // 明细部分处理编辑状态
     property DetailIsEdit: Boolean read FDetailIsEdit write SetDetailIsEdit;   // 明细部分处理编辑状态
     property Datas: TUpFiles read FDatas write SetDatas;
     property Datas: TUpFiles read FDatas write SetDatas;
@@ -104,13 +102,10 @@ type
 implementation
 implementation
 
 
 uses PHPWebDm, ProjectData, IdGlobal, ProjectFme, ConstUnit, MainFrm,
 uses PHPWebDm, ProjectData, IdGlobal, ProjectFme, ConstUnit, MainFrm,
-  BillsMeasureDm, UtilMethods, UpFileSelectOnLineFrm;
-
+  BillsMeasureDm, UtilMethods, UpFileSelectOnLineFrm, ShellAPI;
 
 
 {$R *.dfm}
 {$R *.dfm}
 
 
-
-
 { TUpFileManageView }
 { TUpFileManageView }
 
 
 
 
@@ -149,10 +144,19 @@ begin
 end;
 end;
 
 
 procedure TUpFileManageView.ClearViews;
 procedure TUpFileManageView.ClearViews;
-var i: Integer;
+var
+  i: Integer;
+  obj: TControl;
 begin
 begin
   for i := sbFile.ControlCount - 1 downto 0 do
   for i := sbFile.ControlCount - 1 downto 0 do
-    TUpFileView(sbFile.Controls[i]).Free;
+  begin
+    obj := sbFile.Controls[i];
+    if Assigned(obj) then
+    begin
+      sbFile.RemoveControl(obj);
+      obj.Free;
+    end;
+  end;
 end;
 end;
 
 
 procedure TUpFileManageView.RefreshViews;
 procedure TUpFileManageView.RefreshViews;
@@ -160,7 +164,7 @@ var i: Integer;
 begin
 begin
   LockWindowUpdate(Self.Handle);
   LockWindowUpdate(Self.Handle);
   try
   try
-    btnSelectUpFile.Visible := not TProjectData(FProjectData).IsHistoryPhase;
+    btnSelectUpFile.Visible := (not TProjectData(FProjectData).IsHistoryPhase) and (not TProjectData(FProjectData).IsGuest);
     ClearViews;
     ClearViews;
     ClearDetail;
     ClearDetail;
     {'HasAttachment'是不可靠的。一但它不可靠,会导致:有附件却不显示,用户会以为
     {'HasAttachment'是不可靠的。一但它不可靠,会导致:有附件却不显示,用户会以为
@@ -171,8 +175,9 @@ begin
     if (FRec <> nil) {and (FRec.ValueByName('HasAttachment').AsBoolean = True)} then
     if (FRec <> nil) {and (FRec.ValueByName('HasAttachment').AsBoolean = True)} then
       for i := 0 to Datas.Count - 1 do
       for i := 0 to Datas.Count - 1 do
       begin
       begin
-        if (Datas[i].BillID = FRec.ValueByName('ID').AsInteger) and (Datas[i].Phase = TProjectData(FProjectData).PhaseIndex) then
-          AddUpFileView(Datas[i]);
+        if Assigned(Datas[i]) then
+          if (Datas[i].BillID = FRec.ValueByName('ID').AsInteger) and (Datas[i].Phase = TProjectData(FProjectData).PhaseIndex) then
+            AddUpFileView(Datas[i]);
       end;
       end;
   finally
   finally
     pnlHead.Repaint;
     pnlHead.Repaint;
@@ -306,9 +311,8 @@ begin
 // 先删再增会重复。
 // 先删再增会重复。
 //  vVew.Name := Format('UpFileView%d', [AUpFile.No]);    // 此时ID尚末获取,不能用ID
 //  vVew.Name := Format('UpFileView%d', [AUpFile.No]);    // 此时ID尚末获取,不能用ID
   vVew.Name := Format('UpFileView_%s', [PHPWeb.TempName]);
   vVew.Name := Format('UpFileView_%s', [PHPWeb.TempName]);
-  vVew.Owner := Self;
   vVew.ProjectData := FProjectData;
   vVew.ProjectData := FProjectData;
-  vVew.parent := sbFile;
+  sbFile.InsertControl(vVew);
   vVew.Align := alTop;
   vVew.Align := alTop;
   vVew.Data := AUpFile;
   vVew.Data := AUpFile;
 end;
 end;
@@ -331,8 +335,10 @@ begin
       Application.MessageBox('线上附件移除失败,请重试!', '警告', MB_OK + MB_ICONWARNING);
       Application.MessageBox('线上附件移除失败,请重试!', '警告', MB_OK + MB_ICONWARNING);
       Exit;
       Exit;
     end;
     end;
+  sbFile.RemoveControl(WaitForDelete);
   WaitForDelete.Free;
   WaitForDelete.Free;
   Datas.Delete(vUpFile);
   Datas.Delete(vUpFile);
+  vUpFile.Free;
 end;
 end;
 
 
 procedure TUpFileManageView.SetWaitForDelete(const Value: TUpFileView);
 procedure TUpFileManageView.SetWaitForDelete(const Value: TUpFileView);
@@ -340,13 +346,6 @@ begin
   FWaitForDelete := Value;
   FWaitForDelete := Value;
 end;
 end;
 
 
-procedure TUpFileManageView.SetOwner(const Value: TObject);
-begin
-  FOwner := Value;
-  TProjectFrame(FOwner).BillsMeasureFrame.BillsMeasureData.OnRecChange := DoOnBillChange;
-  TProjectFrame(FOwner).BillsCompileFrame.BillsCompileData.OnRecChange := DoOnBillChange;
-end;
-
 procedure TUpFileManageView.SetProjectData(const Value: TObject);
 procedure TUpFileManageView.SetProjectData(const Value: TObject);
 begin
 begin
   FProjectData := Value;
   FProjectData := Value;
@@ -354,7 +353,7 @@ end;
 
 
 procedure TUpFileManageView.btnDownClick(Sender: TObject);
 procedure TUpFileManageView.btnDownClick(Sender: TObject);
 var svDlg: TSaveDialog;
 var svDlg: TSaveDialog;
-  sFile: string;
+  sFile, sName, sPath: string;
 begin
 begin
   if not Assigned(Selected) then Exit;
   if not Assigned(Selected) then Exit;
 
 
@@ -377,6 +376,10 @@ begin
       if PHPWeb.DownFile(Selected.Data.DownURL, sFile) then
       if PHPWeb.DownFile(Selected.Data.DownURL, sFile) then
       begin
       begin
         Selected.Data.Status := ufsNormal;
         Selected.Data.Status := ufsNormal;
+        sName := ExtractFileName(sFile);
+        sPath := ExtractFilePath(sFile);
+        TProjectData(FProjectData).AttachmentInfoData.SaveAttachmentPath(Selected.Data.ID, sFile);
+        ShellExecute(Handle, 'open', pchar(sName), nil, pchar(sPath), SW_SHOWNORMAL);
       end
       end
       else
       else
       begin
       begin
@@ -394,25 +397,34 @@ end;
 constructor TUpFileManageView.Create(AOwner: TComponent);
 constructor TUpFileManageView.Create(AOwner: TComponent);
 begin
 begin
   inherited;
   inherited;
+  FBeginRefresh := False;
   FRec := nil;
   FRec := nil;
   lblBillName.Caption := '';
   lblBillName.Caption := '';
   lblBillName.Update;
   lblBillName.Update;
 
 
   pnlDetail.Visible := G_IsCloud;
   pnlDetail.Visible := G_IsCloud;
+
+  TProjectFrame(AOwner).BillsMeasureFrame.BillsMeasureData.OnRecChange := DoOnBillChange;
+  TProjectFrame(AOwner).BillsCompileFrame.BillsCompileData.OnRecChange := DoOnBillChange;
 end;
 end;
 
 
 procedure TUpFileManageView.DoOnBillChange(ARec: TsdDataRecord);
 procedure TUpFileManageView.DoOnBillChange(ARec: TsdDataRecord);
 begin
 begin
-  FRec := ARec;
-
   with TProjectFrame(Owner) do
   with TProjectFrame(Owner) do
   begin
   begin
     if not (jpsAssistant.Visible and (jpsAssistant.ActivePage = jpsAssistantUpFile)) then
     if not (jpsAssistant.Visible and (jpsAssistant.ActivePage = jpsAssistantUpFile)) then
       Exit;
       Exit;
   end;
   end;
+  if FBeginRefresh then Exit;
 
 
-  RefreshBill;
-  RefreshViews;
+  FBeginRefresh := True;
+  try
+    FRec := ARec;
+    RefreshBill;
+    RefreshViews;
+  finally
+    FBeginRefresh := False;
+  end;
 end;
 end;
 
 
 procedure TUpFileManageView.SetRec(const Value: TsdDataRecord);
 procedure TUpFileManageView.SetRec(const Value: TsdDataRecord);
@@ -456,9 +468,9 @@ begin
     begin
     begin
       sFile := vODlg.Files[i];
       sFile := vODlg.Files[i];
       iV := FileSizeByName(sFile);
       iV := FileSizeByName(sFile);
-      if iV >= 10485760 then
+      if iV >= 52428800 then
       begin
       begin
-        Application.MessageBox(PChar('“' + sFile + '”过大,单个文件上传不能超过10M!'), '提示', MB_OK + MB_ICONINFORMATION);
+        Application.MessageBox(PChar('“' + sFile + '”过大,单个文件上传不能超过50M!'), '提示', MB_OK + MB_ICONINFORMATION);
         Continue;
         Continue;
       end;
       end;
 
 

+ 1 - 0
Frames/BGLFme.dfm

@@ -497,6 +497,7 @@ object BGLFrame: TBGLFrame
     object actnCopyBGLBlock: TAction
     object actnCopyBGLBlock: TAction
       Caption = #22797#21046#25972#22359
       Caption = #22797#21046#25972#22359
       OnExecute = actnCopyBGLBlockExecute
       OnExecute = actnCopyBGLBlockExecute
+      OnUpdate = actnCopyBGLBlockUpdate
     end
     end
   end
   end
   object dxpmBGL: TdxBarPopupMenu
   object dxpmBGL: TdxBarPopupMenu

+ 9 - 4
Frames/BGLFme.pas

@@ -143,6 +143,10 @@ procedure TBGLFrame.dxpmBGLPopup(Sender: TObject);
 begin
 begin
   SetDxBtnAction(actnBatchWritePos_Reason, MainForm.dxbtnBatchWritePos_Reason);
   SetDxBtnAction(actnBatchWritePos_Reason, MainForm.dxbtnBatchWritePos_Reason);
   SetDxBtnAction(actnCopyBGLBlock, MainForm.dxbtnCopyBillsBlock);
   SetDxBtnAction(actnCopyBGLBlock, MainForm.dxbtnCopyBillsBlock);
+  if _IsCloud then
+  begin
+    dxpmBGL.ItemLinks.Items[2].Visible := False;
+  end;
 end;
 end;
 
 
 procedure TBGLFrame.actnBatchWritePos_ReasonExecute(Sender: TObject);
 procedure TBGLFrame.actnBatchWritePos_ReasonExecute(Sender: TObject);
@@ -208,7 +212,7 @@ end;
 procedure TBGLFrame.zgBGLPaste(Sender: TObject; const ABounds: TRect;
 procedure TBGLFrame.zgBGLPaste(Sender: TObject; const ABounds: TRect;
   var Allow: Boolean);
   var Allow: Boolean);
 begin
 begin
-  if HasBGLBlockFormat then
+  if (not _IsCloud) and HasBGLBlockFormat then
   begin
   begin
     Allow := False;
     Allow := False;
     PasteBGLBlock;
     PasteBGLBlock;
@@ -217,10 +221,10 @@ end;
 
 
 procedure TBGLFrame.actnCopyBGLBlockUpdate(Sender: TObject);
 procedure TBGLFrame.actnCopyBGLBlockUpdate(Sender: TObject);
 begin
 begin
-  if _IsDebugView then
-    TAction(Sender).Visible := True
+  if _IsCloud then
+    TAction(Sender).Visible := False
   else
   else
-    TAction(Sender).Visible := False;
+    TAction(Sender).Visible := True;
 end;
 end;
 
 
 procedure TBGLFrame.zgBGLGetCellEditor(Sender: TObject; ACoord: TPoint;
 procedure TBGLFrame.zgBGLGetCellEditor(Sender: TObject; ACoord: TPoint;
@@ -279,6 +283,7 @@ begin
     else if sInfo <> '' then
     else if sInfo <> '' then
       WarningMessage(sInfo);
       WarningMessage(sInfo);
   finally
   finally
+    sgs.Free;
     Screen.Cursor := crDefault;
     Screen.Cursor := crDefault;
   end;
   end;
 end;
 end;

+ 18 - 0
Frames/BillsCompileFme.dfm

@@ -756,6 +756,24 @@ object BillsCompileFrame: TBillsCompileFrame
         Width = 50
         Width = 50
         Visible = False
         Visible = False
         ReadOnly = True
         ReadOnly = True
+      end
+      item
+        Title.Caption = 'IndexCode'
+        Title.CaptionAcrossCols = '1'
+        Title.Font.Charset = GB2312_CHARSET
+        Title.Font.Color = clWindowText
+        Title.Font.Height = -12
+        Title.Font.Name = #23435#20307
+        Title.Font.Style = []
+        Alignment = taLeftJustify
+        Font.Charset = GB2312_CHARSET
+        Font.Color = clWindowText
+        Font.Height = -12
+        Font.Name = #23435#20307
+        Font.Style = []
+        FieldName = 'IndexCode'
+        Visible = False
+        ReadOnly = False
       end>
       end>
     Grid = zgBillsCompile
     Grid = zgBillsCompile
     ExtendRowCount = 3
     ExtendRowCount = 3

+ 10 - 1
Frames/BillsCompileFme.pas

@@ -99,6 +99,8 @@ type
     procedure SetShowDesignQuantity(const Value: Boolean);
     procedure SetShowDesignQuantity(const Value: Boolean);
     procedure SetShowAlias(const Value: Boolean);
     procedure SetShowAlias(const Value: Boolean);
     procedure SetShowApprovalCode(const Value: Boolean);
     procedure SetShowApprovalCode(const Value: Boolean);
+
+    procedure OnGridBeforeDelete(Sender: TObject; var CanExecute: Boolean);
   public
   public
     constructor Create(AParent: TFrame; ABillsCompileData: TBillsCompileData);
     constructor Create(AParent: TFrame; ABillsCompileData: TBillsCompileData);
     destructor Destroy; override;
     destructor Destroy; override;
@@ -239,9 +241,10 @@ begin
   end;
   end;
   zgBillsCompile.OnExpandMouseDown := ExpandMouseDown;
   zgBillsCompile.OnExpandMouseDown := ExpandMouseDown;
   FBillsCompileData.RefreshRow := RefreshTreeRow;
   FBillsCompileData.RefreshRow := RefreshTreeRow;
-  
+
   if not _IsDebugView then
   if not _IsDebugView then
     zgBillsCompile.OnKeyDown := nil;
     zgBillsCompile.OnKeyDown := nil;
+  stdBillsCompile.OnGridBeforeDelete := OnGridBeforeDelete;
 end;
 end;
 
 
 destructor TBillsCompileFrame.Destroy;
 destructor TBillsCompileFrame.Destroy;
@@ -736,4 +739,10 @@ begin
   zgBillsCompile.InvalidateRow(ARowIndex + zgBillsCompile.FixedRowCount);
   zgBillsCompile.InvalidateRow(ARowIndex + zgBillsCompile.FixedRowCount);
 end;
 end;
 
 
+procedure TBillsCompileFrame.OnGridBeforeDelete(Sender: TObject;
+  var CanExecute: Boolean);
+begin
+  CanExecute := QuestMessage('请确认是否执行删除操作');
+end;
+
 end.
 end.

+ 22 - 5
Frames/BillsGatherFme.pas

@@ -160,10 +160,21 @@ procedure TBillsGatherFrame.zgGclBillsCellGetColor(Sender: TObject;
     Result := bHasSame and bHasDiffer;
     Result := bHasSame and bHasDiffer;
   end;
   end;
 
 
+  function CheckOverRangePercent(AQty, ACompareQty: Double): Boolean;
+  var
+    fCompare: Double;
+  begin
+    fCompare := TProjectData(FBillsGatherData.ProjectData).ProjProperties.DecimalManager.Common.Quantity.CompareValue;
+    if Abs(AQty) > fCompare then
+      Result := (ACompareQty / AQty * 100) > SupportManager.ConfigInfo.OverRangePercent
+    else
+      Result := Abs(ACompareQty) > fCompare;
+  end;
+
   function CheckOverRange(ARecIndex: Integer): Boolean;
   function CheckOverRange(ARecIndex: Integer): Boolean;
   var
   var
     Rec: TsdDataRecord;
     Rec: TsdDataRecord;
-    fQuantity, fDealQuantity, fEndDealQuantity, fCompare: Double;
+    fQuantity, fDealQuantity, fEndDealQuantity: Double;
   begin
   begin
     Rec := saGclBills.DataView.Records[ARecIndex];
     Rec := saGclBills.DataView.Records[ARecIndex];
     Result := False;
     Result := False;
@@ -172,23 +183,29 @@ procedure TBillsGatherFrame.zgGclBillsCellGetColor(Sender: TObject;
     fDealQuantity := Rec.ValueByName('DealQuantity').AsFloat;
     fDealQuantity := Rec.ValueByName('DealQuantity').AsFloat;
     fQuantity := Rec.ValueByName('Quantity').AsFloat;
     fQuantity := Rec.ValueByName('Quantity').AsFloat;
     fEndDealQuantity := Rec.ValueByName('EndDealQuantity').AsFloat;
     fEndDealQuantity := Rec.ValueByName('EndDealQuantity').AsFloat;
-    fCompare := TProjectData(FBillsGatherData.ProjectData).ProjProperties.DecimalManager.Common.Quantity.CompareValue;
+    case SupportManager.ConfigInfo.OverRangeType of
+      0: Result := CheckOverRangePercent(fQuantity, fEndDealQuantity);
+      1: Result := CheckOverRangePercent(fDealQuantity, fEndDealQuantity);
+      2: Result := CheckOverRangePercent(fQuantity, fEndDealQuantity) or CheckOverRangePercent(fDealQuantity, fEndDealQuantity);
+    end;
+    (*
     case SupportManager.ConfigInfo.OverRangeType of
     case SupportManager.ConfigInfo.OverRangeType of
       0: Result := QuantityRoundTo(fEndDealQuantity - fQuantity) > fCompare;
       0: Result := QuantityRoundTo(fEndDealQuantity - fQuantity) > fCompare;
       1: Result := QuantityRoundTo(fEndDealQuantity - fDealQuantity) > fCompare;
       1: Result := QuantityRoundTo(fEndDealQuantity - fDealQuantity) > fCompare;
       2: Result := (QuantityRoundTo(fEndDealQuantity - fQuantity) > fCompare)
       2: Result := (QuantityRoundTo(fEndDealQuantity - fQuantity) > fCompare)
                 or (QuantityRoundTo(fEndDealQuantity - fDealQuantity) > fCompare);
                 or (QuantityRoundTo(fEndDealQuantity - fDealQuantity) > fCompare);
     end;
     end;
+    *)
   end;
   end;
 
 
 var
 var
   bSimilarBills: Boolean;
   bSimilarBills: Boolean;
 begin
 begin
-  if (ACoord.Y >= zgGclBills.FixedRowCount) and (ACoord.Y < zgGclBills.FixedRowCount + saGclBills.DataView.RecordCount) then
+  if (ACoord.Y >= zgGclBills.FixedRowCount + 1) and (ACoord.Y < zgGclBills.FixedRowCount + saGclBills.DataView.RecordCount) then
   begin
   begin
-    if ACoord.Y = zgGclBills.FixedRowCount then
+    if ACoord.Y = zgGclBills.FixedRowCount + 1 then
       bSimilarBills := CheckSimilarBills(ACoord.Y, ACoord.Y + 1)
       bSimilarBills := CheckSimilarBills(ACoord.Y, ACoord.Y + 1)
-    else if ACoord.Y < zgGclBills.RowCount - zgGclBills.FixedRowCount then
+    else if ACoord.Y < zgGclBills.FixedRowCount + saGclBills.DataView.RecordCount then
       bSimilarBills := CheckSimilarBills(ACoord.Y, ACoord.Y - 1) or
       bSimilarBills := CheckSimilarBills(ACoord.Y, ACoord.Y - 1) or
           CheckSimilarBills(ACoord.Y, ACoord.Y + 1)
           CheckSimilarBills(ACoord.Y, ACoord.Y + 1)
     else
     else

+ 15 - 1
Frames/BillsMeasureFme.pas

@@ -103,6 +103,8 @@ type
     procedure SetShowAlias(const Value: Boolean);
     procedure SetShowAlias(const Value: Boolean);
     procedure SetShowApprovalCode(const Value: Boolean);
     procedure SetShowApprovalCode(const Value: Boolean);
     procedure SetShowIsGather(const Value: Boolean);
     procedure SetShowIsGather(const Value: Boolean);
+
+    procedure OnGridBeforeDelete(Sender: TObject; var CanExecute: Boolean);
   public
   public
     constructor Create(AProjectFrame: TFrame; ABillsMeasureData: TBillsMeasureData);
     constructor Create(AProjectFrame: TFrame; ABillsMeasureData: TBillsMeasureData);
     destructor Destroy; override;
     destructor Destroy; override;
@@ -146,6 +148,7 @@ begin
   FColVisibleManager := TBM_ColVisibleManager.Create(stdBillsMeasure);
   FColVisibleManager := TBM_ColVisibleManager.Create(stdBillsMeasure);
   if not _IsDebugView then
   if not _IsDebugView then
     zgBillsMeasure.OnKeyDown := nil;
     zgBillsMeasure.OnKeyDown := nil;
+  stdBillsMeasure.OnGridBeforeDelete := OnGridBeforeDelete;
 end;
 end;
 
 
 destructor TBillsMeasureFrame.Destroy;
 destructor TBillsMeasureFrame.Destroy;
@@ -213,7 +216,12 @@ end;
 
 
 procedure TBillsMeasureFrame.actnCalculateAllExecute(Sender: TObject);
 procedure TBillsMeasureFrame.actnCalculateAllExecute(Sender: TObject);
 begin
 begin
-  TProjectData(FBillsMeasureData.ProjectData).CalculateAll;
+  Screen.Cursor := crHourGlass;
+  try
+    TProjectData(FBillsMeasureData.ProjectData).CalculateAll;
+  finally
+    Screen.Cursor := crDefault;
+  end;
 end;
 end;
 
 
 procedure TBillsMeasureFrame.zgBillsMeasureCellGetColor(Sender: TObject; ACoord: TPoint;
 procedure TBillsMeasureFrame.zgBillsMeasureCellGetColor(Sender: TObject; ACoord: TPoint;
@@ -815,4 +823,10 @@ begin
   TAction(Sender).Enabled := PhaseData.Active and not PhaseData.StageDataReadOnly;
   TAction(Sender).Enabled := PhaseData.Active and not PhaseData.StageDataReadOnly;
 end;
 end;
 
 
+procedure TBillsMeasureFrame.OnGridBeforeDelete(Sender: TObject;
+  var CanExecute: Boolean);
+begin
+  CanExecute := QuestMessage('请确认是否执行删除操作');
+end;
+
 end.
 end.

+ 3 - 1
Frames/CheckerFme.pas

@@ -187,7 +187,9 @@ begin
       vCM := TChecker.Create;
       vCM := TChecker.Create;
       iIndex := vProj.Checkers.Add(StrToInt(vA[i, 4]), vA[i, 0], vA[i, 2], vA[i, 6], vA[i, 8]);
       iIndex := vProj.Checkers.Add(StrToInt(vA[i, 4]), vA[i, 0], vA[i, 2], vA[i, 6], vA[i, 8]);
       if vStatus in [csFinished, csNotPass] then
       if vStatus in [csFinished, csNotPass] then
-        vProj.Checkers.LastChecker := vProj.Checkers.Item[iIndex];
+        vProj.Checkers.LastChecker := vProj.Checkers.Item[iIndex]
+      else
+        vProj.Checkers.LastChecker := nil;
     end;
     end;
     RepairOrder;
     RepairOrder;
   end
   end

+ 15 - 6
Frames/ProjectFme.pas

@@ -213,7 +213,7 @@ uses
   ConstUnit, MD5Unit, sdIDTree, sdDB, mProgressFrm, ConditionalDefines,
   ConstUnit, MD5Unit, sdIDTree, sdDB, mProgressFrm, ConditionalDefines,
   ProjectCommands, ProjectProperty, CheckerMemoFrm, BillsMeasureDm,
   ProjectCommands, ProjectProperty, CheckerMemoFrm, BillsMeasureDm,
   ProgressHintFrm, mProgressProFrm, ReportManagerFrm, BillsCompileDm,
   ProgressHintFrm, mProgressProFrm, ReportManagerFrm, BillsCompileDm,
-  ScFileArchiverConsts, Math, ZJJLDm;
+  ScFileArchiverConsts, Math, ZJJLDm, Checker;
 
 
 {$R *.dfm}
 {$R *.dfm}
 
 
@@ -265,7 +265,7 @@ begin
     ButtonControl_UpToWeb;
     ButtonControl_UpToWeb;
     RepairAudits;
     RepairAudits;
 
 
-    if FProjectData.IsGuest then
+//    if FProjectData.IsGuest then
       tobtnUpFile.Visible := False;
       tobtnUpFile.Visible := False;
   end;
   end;
 end;
 end;
@@ -413,6 +413,7 @@ begin
 
 
       ButtonControl_NewPhase;
       ButtonControl_NewPhase;
       ButtonControl_UpToWeb;
       ButtonControl_UpToWeb;
+      MainForm.ProjectManagerFrame.HighlightProject(FProjectData.WebID);
     end;
     end;
 
 
     Result := True;
     Result := True;
@@ -553,7 +554,7 @@ procedure TProjectFrame.dxsbViewControlItemClick(Sender: TObject;
       if (Item.Tag = xbiBillsCompile.Tag) or (Item.Tag = xbiBillsMeasure.Tag) then
       if (Item.Tag = xbiBillsCompile.Tag) or (Item.Tag = xbiBillsMeasure.Tag) then
         CheckUpFile;
         CheckUpFile;
 
 
-      tobtnUpFile.Visible := (Item.Tag = xbiBillsMeasure.Tag) and (not ProjectData.IsGuest);
+      tobtnUpFile.Visible := (Item.Tag = xbiBillsMeasure.Tag){ and (not ProjectData.IsGuest)};
       if (tobtnUpFile.Visible = False) and (jpsAssistant.ActivePage = jpsAssistantUpFile) then
       if (tobtnUpFile.Visible = False) and (jpsAssistant.ActivePage = jpsAssistantUpFile) then
         jpsAssistant.ActivePage := jpsAssistantStandardBills;
         jpsAssistant.ActivePage := jpsAssistantStandardBills;
     end;
     end;
@@ -916,6 +917,7 @@ var sURL, sAppFile, sJsonFile_Bills, sJsonFile_Common, sAppFile_UnLock,
   vCF: TCheckerMemoForm;
   vCF: TCheckerMemoForm;
   bNeedFreeEarlier: Boolean;
   bNeedFreeEarlier: Boolean;
 
 
+
   // 1 审核; 2 批复。
   // 1 审核; 2 批复。
   function SaveAndExport(AType: Integer): Boolean;
   function SaveAndExport(AType: Integer): Boolean;
 
 
@@ -926,10 +928,12 @@ var sURL, sAppFile, sJsonFile_Bills, sJsonFile_Common, sAppFile_UnLock,
       else if AType = 2 then
       else if AType = 2 then
         Result := ProjectData.ReplyProject(sAppFile);
         Result := ProjectData.ReplyProject(sAppFile);
     end;
     end;
+
   begin
   begin
     Result := False;
     Result := False;
     ProgressProCreate(100, '本地数据文件上传到云端');
     ProgressProCreate(100, '本地数据文件上传到云端');
     ProgressProRun('保存本地数据...', 0);
     ProgressProRun('保存本地数据...', 0);
+    ProjectData.Checkers.LastChecker := ProjectData.Checkers.FindByID(PHPWeb.UserID);
     ProjectData.SaveAndCheck;
     ProjectData.SaveAndCheck;
     ProgressProRun('保存本地数据。OK', 10, pmtEdit);
     ProgressProRun('保存本地数据。OK', 10, pmtEdit);
 
 
@@ -1066,7 +1070,9 @@ begin
         DeleteFile(sAppFile);
         DeleteFile(sAppFile);
         ProgressProRun('上传数据包到云端。OK', 100, pmtEdit, pptSet);
         ProgressProRun('上传数据包到云端。OK', 100, pmtEdit, pptSet);
         if ProjectData.CurUserIsChecker then
         if ProjectData.CurUserIsChecker then
+        begin
           ProjectData.Checkers.FindByID(PHPWeb.UserID).Memo := sCheckerMemo;
           ProjectData.Checkers.FindByID(PHPWeb.UserID).Memo := sCheckerMemo;
+        end;
 
 
         if ProjectData.PhaseIndex = 0 then   // 0号台账,现已废弃
         if ProjectData.PhaseIndex = 0 then   // 0号台账,现已废弃
         begin
         begin
@@ -1077,6 +1083,9 @@ begin
           vRec := MainForm.ProjectManagerFrame.Rec(ProjectData.ProjectID);
           vRec := MainForm.ProjectManagerFrame.Rec(ProjectData.ProjectID);
           vRec.BeginUpdate;
           vRec.BeginUpdate;
           vRec.ValueByName('WebMD5').AsString := sMD5_JL;
           vRec.ValueByName('WebMD5').AsString := sMD5_JL;
+          if ProjectData.CurUserIsOwner then
+            vRec.ValueByName('AuditStatus').AsInteger := -1;
+          vRec.ValueByName('WebMeWorking').AsBoolean := False;
           vRec.EndUpdate;
           vRec.EndUpdate;
           MainForm.ProjectManagerFrame.ShowProjectInfoTop;
           MainForm.ProjectManagerFrame.ShowProjectInfoTop;
 
 
@@ -1398,8 +1407,8 @@ end;
 
 
 procedure TProjectFrame.CreateUpFile;
 procedure TProjectFrame.CreateUpFile;
 begin
 begin
-  FUpFileManageView := TUpFileManageView.Create(nil);
-  FUpFileManageView.Owner := Self;
+  FUpFileManageView := TUpFileManageView.Create(Self);
+  //FUpFileManageView.Owner := Self;
   
   
   FUpFileManageView.ProjectData := FProjectData;
   FUpFileManageView.ProjectData := FProjectData;
   FUpFileManageView.Datas := FProjectData.AttachmentData;
   FUpFileManageView.Datas := FProjectData.AttachmentData;
@@ -1647,7 +1656,7 @@ begin
     if (APageIndex = xbiBillsCompile.Tag) or (APageIndex = xbiBillsMeasure.Tag) then
     if (APageIndex = xbiBillsCompile.Tag) or (APageIndex = xbiBillsMeasure.Tag) then
       CheckUpFile;
       CheckUpFile;
 
 
-    tobtnUpFile.Visible := (APageIndex = xbiBillsMeasure.Tag) and (not ProjectData.IsGuest);
+    tobtnUpFile.Visible := (APageIndex = xbiBillsMeasure.Tag) {and (not ProjectData.IsGuest)};
     if (tobtnUpFile.Visible = False) and (jpsAssistant.ActivePage = jpsAssistantUpFile) then
     if (tobtnUpFile.Visible = False) and (jpsAssistant.ActivePage = jpsAssistantUpFile) then
       jpsAssistant.ActivePage := jpsAssistantStandardBills;
       jpsAssistant.ActivePage := jpsAssistantStandardBills;
   end;
   end;

+ 2 - 0
Frames/ProjectManagerFme.dfm

@@ -89,6 +89,8 @@ object ProjectManagerFrame: TProjectManagerFrame
     OnCurrentChanged = zgProjectsCurrentChanged
     OnCurrentChanged = zgProjectsCurrentChanged
     OnDrawCellText = zgProjectsDrawCellText
     OnDrawCellText = zgProjectsDrawCellText
     OnShowHint = zgProjectsShowHint
     OnShowHint = zgProjectsShowHint
+    OnCellGetColor = zgProjectsCellGetColor
+    OnCellGetFont = zgProjectsCellGetFont
     OnMouseDown = zgProjectsMouseDown
     OnMouseDown = zgProjectsMouseDown
     Align = alClient
     Align = alClient
   end
   end

+ 115 - 17
Frames/ProjectManagerFme.pas

@@ -100,6 +100,10 @@ type
     procedure actnGuestUpdate(Sender: TObject);
     procedure actnGuestUpdate(Sender: TObject);
     procedure actnEpureExecute(Sender: TObject);
     procedure actnEpureExecute(Sender: TObject);
     procedure actnEpureUpdate(Sender: TObject);
     procedure actnEpureUpdate(Sender: TObject);
+    procedure zgProjectsCellGetColor(Sender: TObject; ACoord: TPoint;
+      var AColor: TColor);
+    procedure zgProjectsCellGetFont(Sender: TObject; ACoord: TPoint;
+      AFont: TFont);
   private
   private
     FProjectManagerData: TProjectManagerData;
     FProjectManagerData: TProjectManagerData;
 
 
@@ -140,7 +144,7 @@ type
     FSignOnlineSwitch: Integer;
     FSignOnlineSwitch: Integer;
     FEpureOnlineSwitch: Integer;
     FEpureOnlineSwitch: Integer;
 
 
-    function ReceiveFile(const AFileName: string; AIsReback: Boolean = False): Boolean;
+    function ReceiveFile(const AFileName: string; AIsReback: Boolean = False; AWorking: Boolean = False): Boolean;
     function ImportFile(const AFileName: string; AFileMD5: string = ''): Boolean;
     function ImportFile(const AFileName: string; AFileMD5: string = ''): Boolean;
     procedure ConnectButtonWithAction;
     procedure ConnectButtonWithAction;
     function GetImportProjectName(const AFileName: string; AParent: TsdIDTreeNode): string;
     function GetImportProjectName(const AFileName: string; AParent: TsdIDTreeNode): string;
@@ -154,8 +158,8 @@ type
     procedure CheckWebFolders(AFolderID, ASubFolderID: Integer;
     procedure CheckWebFolders(AFolderID, ASubFolderID: Integer;
       AFolderName, ASubFolderName: string);
       AFolderName, ASubFolderName: string);
     // ANewBidName: 项目的最新标段名(取自服务器,有人改名了,本地的就变成旧的)
     // ANewBidName: 项目的最新标段名(取自服务器,有人改名了,本地的就变成旧的)
-    procedure CheckBidName(AID: Integer; ANewBidName: string); overload;
-    procedure CheckBidName(AUserID, AWebID: Integer; ANewBidName: string); overload;
+    procedure CheckBidName(AID: Integer; ANewBidName: string);
+    procedure CheckLocalProperties(AUserID, AWebID: Integer; ANewBidName, ANewCheckStatus: string);
     procedure ClearLocalValues;
     procedure ClearLocalValues;
     procedure GetLocalValues(ARec: TsdDataRecord); overload;
     procedure GetLocalValues(ARec: TsdDataRecord); overload;
     // 用户ID、网络标段ID、Type=1可以定位一个标段。
     // 用户ID、网络标段ID、Type=1可以定位一个标段。
@@ -165,7 +169,7 @@ type
     function LocalMD5(AUserID, AWebID: Integer): string;
     function LocalMD5(AUserID, AWebID: Integer): string;
     procedure BubbleSortProjects;
     procedure BubbleSortProjects;
     // AReceiveKind: 1 接收; 2 导入
     // AReceiveKind: 1 接收; 2 导入
-    function FileDownAndReceive(ADownURL: string; AReceiveKind: Integer): Boolean;
+    function FileDownAndReceive(ADownURL: string; AReceiveKind: Integer; AWorking: Boolean = false): Boolean;
     // 线上审批的起止人
     // 线上审批的起止人
     procedure OnLineChecker(AAr: TOVArr; var ABegin, AEnd: Integer; var AOnLineEndIsOwner: Boolean);
     procedure OnLineChecker(AAr: TOVArr; var ABegin, AEnd: Integer; var AOnLineEndIsOwner: Boolean);
 
 
@@ -178,6 +182,8 @@ type
     // AType: -2 繁忙; -1 正常读取; 0 第0期; 1 第1期。
     // AType: -2 繁忙; -1 正常读取; 0 第0期; 1 第1期。
     procedure ShowProjectInfoTop(AType: Integer = -1);
     procedure ShowProjectInfoTop(AType: Integer = -1);
     function Rec(AProjectID: Integer): TsdDataRecord;
     function Rec(AProjectID: Integer): TsdDataRecord;
+    function RecByWebID(AWebID: Integer): TsdDataRecord;
+    function HighlightProject(AWebID: Integer): Boolean;
     function CurRec: TsdDataRecord;
     function CurRec: TsdDataRecord;
     function CurRecAttachmentPath: string;
     function CurRecAttachmentPath: string;
     function AttachmentFileCountsWithoutManageFile(ANode: TsdIDTreeNode): Integer;
     function AttachmentFileCountsWithoutManageFile(ANode: TsdIDTreeNode): Integer;
@@ -453,7 +459,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-function TProjectManagerFrame.ReceiveFile(const AFileName: string; AIsReback: Boolean): Boolean;
+function TProjectManagerFrame.ReceiveFile(const AFileName: string; AIsReback: Boolean; AWorking: Boolean): Boolean;
 var
 var
   vRP: TReceiveProject;
   vRP: TReceiveProject;
   vNode: TsdIDTreeNode;
   vNode: TsdIDTreeNode;
@@ -476,6 +482,7 @@ begin
         vNode.Rec.BeginUpdate;
         vNode.Rec.BeginUpdate;
         vNode.Rec.ValueByName('WebMD5').AsString := FWebMD5_OnLine;
         vNode.Rec.ValueByName('WebMD5').AsString := FWebMD5_OnLine;
         vNode.Rec.ValueByName('WebUserID').AsInteger := PHPWeb.UserID;
         vNode.Rec.ValueByName('WebUserID').AsInteger := PHPWeb.UserID;
+        vNode.Rec.ValueByName('WebMeWorking').AsBoolean := AWorking;
         vNode.Rec.EndUpdate;
         vNode.Rec.EndUpdate;
       end;
       end;
     end
     end
@@ -630,6 +637,7 @@ procedure TProjectManagerFrame.actnNewTenderExecute(Sender: TObject);
         vRec.ValueByName('WebAuthorID').AsInteger := PHPWeb.UserID;   // 编制人
         vRec.ValueByName('WebAuthorID').AsInteger := PHPWeb.UserID;   // 编制人
         vRec.ValueByName('WebUserID').AsInteger := PHPWeb.UserID;  // 当前用户,用于只显示自己的项目
         vRec.ValueByName('WebUserID').AsInteger := PHPWeb.UserID;  // 当前用户,用于只显示自己的项目
         vRec.ValueByName('WebKey').AsString := sKey;
         vRec.ValueByName('WebKey').AsString := sKey;
+        vRec.ValueByName('WebMeWorking').AsBoolean := True;
         vRec.EndUpdate;
         vRec.EndUpdate;
 
 
         GetLocalValues(vRec);
         GetLocalValues(vRec);
@@ -1345,7 +1353,7 @@ begin
           FWebMD5_Local := LocalMD5(PHPWeb.UserID, FWebID);
           FWebMD5_Local := LocalMD5(PHPWeb.UserID, FWebID);
 
 
           CheckWebFolders(iFolderID, iSubFolderID, FWebFolder_OnLine, FWebSubFolder_OnLine);
           CheckWebFolders(iFolderID, iSubFolderID, FWebFolder_OnLine, FWebSubFolder_OnLine);
-          CheckBidName(PHPWeb.UserID, FWebID, FWebBidName_OnLine);
+          CheckLocalProperties(PHPWeb.UserID, FWebID, FWebBidName_OnLine, vArr[i, 4]);
 
 
           if FWebMD5_OnLine <> FWebMD5_Local then
           if FWebMD5_OnLine <> FWebMD5_Local then
           begin
           begin
@@ -1358,7 +1366,12 @@ begin
               FOnLineCheckerEnd := 0;
               FOnLineCheckerEnd := 0;
             end;
             end;
 
 
-            if not FileDownAndReceive(sURL, 1) then Exit;
+            if not FileDownAndReceive(sURL, 1, (FWebCheckStatusMy = csChecking)) then Exit;
+          end
+          else      //   上个人没改数据直接审批通过,文件没变,下个人本地文件跟线上文件完全一样,不下载不更新,不会高显示。这里强制高亮
+          begin
+            if (FWebCheckStatusMy = csChecking) then
+              HighlightProject(FWebID);
           end;
           end;
         end;
         end;
 
 
@@ -1408,6 +1421,7 @@ begin
     vNode.Rec.BeginUpdate;
     vNode.Rec.BeginUpdate;
     vNode.Rec.ValueByName('WebMD5').AsString := AFileMD5;
     vNode.Rec.ValueByName('WebMD5').AsString := AFileMD5;
     vNode.Rec.ValueByName('WebUserID').AsInteger := PHPWeb.UserID;
     vNode.Rec.ValueByName('WebUserID').AsInteger := PHPWeb.UserID;
+//    vNode.Rec.ValueByName('WebMeWorking').AsBoolean := True;
     vNode.Rec.EndUpdate;
     vNode.Rec.EndUpdate;
 
 
     FProjectManagerData.Save;
     FProjectManagerData.Save;
@@ -1579,8 +1593,7 @@ begin
 end;
 end;
 
 
 
 
-procedure TProjectManagerFrame.CheckBidName(AUserID, AWebID: Integer;
-  ANewBidName: string);
+procedure TProjectManagerFrame.CheckLocalProperties(AUserID, AWebID: Integer; ANewBidName, ANewCheckStatus: string);
 var i: Integer;
 var i: Integer;
   vTree: TsdIDTree;
   vTree: TsdIDTree;
   vRec: TsdDataRecord;
   vRec: TsdDataRecord;
@@ -1591,11 +1604,12 @@ begin
     (CurRec.ValueByName('Type').AsInteger = 1) then
     (CurRec.ValueByName('Type').AsInteger = 1) then
   begin
   begin
     if (CurRec.ValueByName('Name').AsString <> ANewBidName) then
     if (CurRec.ValueByName('Name').AsString <> ANewBidName) then
-    begin
       CurRec.ValueByName('Name').AsString := ANewBidName;
       CurRec.ValueByName('Name').AsString := ANewBidName;
-      ProjectManager.Save;
-    end;
 
 
+//    if (CurRec.ValueByName('AuditStatus').AsString <> ANewCheckStatus) then
+//      CurRec.ValueByName('AuditStatus').AsString := ANewCheckStatus;
+
+    ProjectManager.Save;
     Exit;
     Exit;
   end;
   end;
 
 
@@ -1608,10 +1622,12 @@ begin
       (vRec.ValueByName('Type').AsInteger = 1) then
       (vRec.ValueByName('Type').AsInteger = 1) then
     begin
     begin
       if vRec.ValueByName('Name').AsString <> ANewBidName then
       if vRec.ValueByName('Name').AsString <> ANewBidName then
-      begin
         vRec.ValueByName('Name').AsString := ANewBidName;
         vRec.ValueByName('Name').AsString := ANewBidName;
-        ProjectManager.Save;
-      end;
+
+//      if (vRec.ValueByName('AuditStatus').AsString <> ANewCheckStatus) then
+//         vRec.ValueByName('AuditStatus').AsString := ANewCheckStatus;
+
+      ProjectManager.Save;
       Break;
       Break;
     end;
     end;
   end;
   end;
@@ -1744,7 +1760,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-function TProjectManagerFrame.FileDownAndReceive(ADownURL: string; AReceiveKind: Integer): Boolean;
+function TProjectManagerFrame.FileDownAndReceive(ADownURL: string; AReceiveKind: Integer; AWorking: Boolean): Boolean;
 var sLocalFile, sHint: string;
 var sLocalFile, sHint: string;
   bCanImp: Boolean;
   bCanImp: Boolean;
   vFileCheck: TTenderFileChecker;
   vFileCheck: TTenderFileChecker;
@@ -1789,7 +1805,7 @@ begin
   end;
   end;
 
 
   // 接收更新
   // 接收更新
-  if not ReceiveFile(sLocalFile, (AReceiveKind = 2)) then
+  if not ReceiveFile(sLocalFile, (AReceiveKind = 2), AWorking) then
   begin
   begin
     sHint := Format('已从云端下载新的 [%s] 到本地 [%s],但接收失败,请删除该项目然后重新从云端获取!', [FWebBidName_OnLine, sLocalFile]);
     sHint := Format('已从云端下载新的 [%s] 到本地 [%s],但接收失败,请删除该项目然后重新从云端获取!', [FWebBidName_OnLine, sLocalFile]);
     Application.MessageBox(PChar(sHint), '系统提醒', MB_OK + MB_ICONWARNING);
     Application.MessageBox(PChar(sHint), '系统提醒', MB_OK + MB_ICONWARNING);
@@ -2025,4 +2041,86 @@ begin
       HasCompletePhase(stdProjects.IDTree.Selected.Rec);
       HasCompletePhase(stdProjects.IDTree.Selected.Rec);
 end;
 end;
 
 
+procedure TProjectManagerFrame.zgProjectsCellGetColor(Sender: TObject;
+  ACoord: TPoint; var AColor: TColor);
+var
+  vItem: TsdIDTreeNode;
+  value: String;
+  pc: Integer;
+begin
+  vItem := stdProjects.IDTree.Items[ACoord.Y - zgProjects.FixedRowCount];
+
+  if Assigned(vItem.Rec) then
+  begin
+    if ACoord.X = 11 then
+    begin
+      value := vItem.Rec.ValueByName('AuditStatus').asString;
+      pc := vItem.Rec.ValueByName('PhaseCount').AsInteger;
+      if (value = '-1') and (pc <> 0) then
+        AColor := TColor($00daedd4);
+    end;
+
+    if vItem.Rec.ValueByName('WebMeWorking').AsBoolean then
+    begin
+      AColor := TColor($000099FF);
+    end;
+  end;
+end;
+
+procedure TProjectManagerFrame.zgProjectsCellGetFont(Sender: TObject;
+  ACoord: TPoint; AFont: TFont);
+//var
+//  vItem: TsdIDTreeNode;
+//  value: String;
+begin
+//  if ACoord.X = 11 then
+//  begin
+//    vItem := stdProjects.IDTree.Items[ACoord.Y - zgProjects.FixedRowCount];
+//    value := vItem.Rec.ValueByName('AuditStatus').asString;
+//
+//    if (value = '-1') then
+//      AFont.Color := TColor($00daedd4);
+//
+//  end;
+end;
+
+function TProjectManagerFrame.RecByWebID(AWebID: Integer): TsdDataRecord;
+var i: Integer;
+  vTree: TsdIDTree;
+  vRec: TsdDataRecord;
+begin
+  Result := nil;
+
+  if (CurRec <> nil) and
+    (CurRec.ValueByName('WebUserID').AsInteger = PHPWeb.UserID) and
+    (CurRec.ValueByName('WebID').AsInteger = AWebID) and
+    (CurRec.ValueByName('Type').AsInteger = 1) then
+  begin
+    Result := CurRec;
+    Exit;
+  end;
+
+  vTree := stdProjects.IDTree;
+  for i := 0 to vTree.Count - 1 do
+  begin
+    vRec := vTree.Items[i].Rec;
+    if (vRec.ValueByName('WebUserID').AsInteger = PHPWeb.UserID) and
+      (vRec.ValueByName('WebID').AsInteger = AWebID) and
+      (vRec.ValueByName('Type').AsInteger = 1) then
+    begin
+      Result := vRec;
+      Break;
+    end;
+  end;
+end;
+
+function TProjectManagerFrame.HighlightProject(AWebID: Integer): Boolean;
+var vRec: TsdDataRecord;
+begin
+  vRec := RecByWebID(AWebID);
+  vRec.BeginUpdate;
+  vRec.ValueByName('WebMeWorking').AsBoolean := True;
+  vRec.EndUpdate;
+end;
+
 end.
 end.

+ 11 - 3
Frames/SearchFme.dfm

@@ -100,6 +100,16 @@ object SearchFrame: TSearchFrame
           TabOrder = 2
           TabOrder = 2
           OnClick = rbCommonClick
           OnClick = rbCommonClick
         end
         end
+        object rbRelaFile: TRadioButton
+          Tag = 1
+          Left = 181
+          Top = 15
+          Width = 45
+          Height = 17
+          Caption = #38468#20214
+          TabOrder = 3
+          OnClick = rbCommonClick
+        end
       end
       end
     end
     end
     object pnlSearchKey: TPanel
     object pnlSearchKey: TPanel
@@ -145,7 +155,7 @@ object SearchFrame: TSearchFrame
         Height = 424
         Height = 424
         Options = [goRangeSelect, goRowSizing, goColSizing, goCellNotMaintainData, goFixedRowShowNo, goFixedColShowNo, goAlwaysShowSelection]
         Options = [goRangeSelect, goRowSizing, goColSizing, goCellNotMaintainData, goFixedRowShowNo, goFixedColShowNo, goAlwaysShowSelection]
         OptionsEx = []
         OptionsEx = []
-        ColCount = 8
+        ColCount = 9
         RowCount = 4
         RowCount = 4
         ShowGridLine = False
         ShowGridLine = False
         DefaultColWidth = 73
         DefaultColWidth = 73
@@ -177,8 +187,6 @@ object SearchFrame: TSearchFrame
         Font.Name = #23435#20307
         Font.Name = #23435#20307
         Font.Style = []
         Font.Style = []
         FieldName = 'Code'
         FieldName = 'Code'
-        Width = 80
-        Visible = False
         ReadOnly = True
         ReadOnly = True
       end
       end
       item
       item

+ 6 - 3
Frames/SearchFme.pas

@@ -23,6 +23,7 @@ type
     pnlSearchResult: TPanel;
     pnlSearchResult: TPanel;
     zgSearchResult: TZJGrid;
     zgSearchResult: TZJGrid;
     rbBelowRange: TRadioButton;
     rbBelowRange: TRadioButton;
+    rbRelaFile: TRadioButton;
     procedure rbCommonClick(Sender: TObject);
     procedure rbCommonClick(Sender: TObject);
     procedure btnSearchClick(Sender: TObject);
     procedure btnSearchClick(Sender: TObject);
     procedure zgSearchResultMouseDown(Sender: TObject;
     procedure zgSearchResultMouseDown(Sender: TObject;
@@ -59,10 +60,10 @@ end;
 procedure TSearchFrame.rbCommonClick(Sender: TObject);
 procedure TSearchFrame.rbCommonClick(Sender: TObject);
 begin
 begin
   edtKeyword.Enabled := rbCommon.Checked;
   edtKeyword.Enabled := rbCommon.Checked;
-  if rbCommon.Checked then
+  {if rbCommon.Checked then
     zaSearchResult.Column('Code').Width := 80
     zaSearchResult.Column('Code').Width := 80
   else
   else
-    zaSearchResult.Column('Code').Width := 0;
+    zaSearchResult.Column('Code').Width := 0;}
 end;
 end;
 
 
 procedure TSearchFrame.btnSearchClick(Sender: TObject);
 procedure TSearchFrame.btnSearchClick(Sender: TObject);
@@ -72,7 +73,9 @@ begin
   else if rbOverRange.Checked then
   else if rbOverRange.Checked then
     FSearchData.SearchOverRange
     FSearchData.SearchOverRange
   else if rbBelowRange.Checked then
   else if rbBelowRange.Checked then
-    FSearchData.SearchBelowRange;
+    FSearchData.SearchBelowRange
+  else if rbRelaFile.Checked then
+    FSearchData.SearchRelaFile;
 end;
 end;
 
 
 procedure TSearchFrame.zgSearchResultMouseDown(Sender: TObject;
 procedure TSearchFrame.zgSearchResultMouseDown(Sender: TObject;

+ 1 - 1
Frames/StandardBillsFme.dfm

@@ -233,7 +233,7 @@ object StandardBillsFrame: TStandardBillsFrame
     Top = 80
     Top = 80
   end
   end
   object odLib: TOpenDialog
   object odLib: TOpenDialog
-    Options = [ofHideReadOnly, ofNoChangeDir, ofEnableSizing]
+    Options = [ofReadOnly, ofHideReadOnly, ofNoChangeDir, ofEnableSizing]
     Left = 32
     Left = 32
     Top = 80
     Top = 80
   end
   end

+ 24 - 5
Frames/StandardBillsFme.pas

@@ -117,14 +117,33 @@ end;
 procedure TStandardBillsFrame.spbtnLibsClick(Sender: TObject);
 procedure TStandardBillsFrame.spbtnLibsClick(Sender: TObject);
 
 
   procedure ChangeStandardBills(const sFileName: string);
   procedure ChangeStandardBills(const sFileName: string);
+  var
+    sOldName: string;
   begin
   begin
-    case FBillsType of
-      btXm: SupportManager.ConfigInfo.StandardXmLib := ExtractFileName(odLib.FileName);
-      btGcl: SupportManager.ConfigInfo.StandardGclLib := ExtractFileName(odLib.FileName);
-    end;
     Screen.Cursor := crHourGlass;
     Screen.Cursor := crHourGlass;
     try
     try
-      ConnectStandardLib;
+      try
+        case FBillsType of
+          btXm:
+          begin
+            sOldName := SupportManager.ConfigInfo.StandardXmLib;
+            SupportManager.ConfigInfo.StandardXmLib := ExtractFileName(odLib.FileName);
+          end;
+          btGcl:
+          begin
+            sOldName := SupportManager.ConfigInfo.StandardGclLib;
+            SupportManager.ConfigInfo.StandardGclLib := ExtractFileName(odLib.FileName);
+          end;
+        end;
+        ConnectStandardLib;
+      except
+        ErrorMessage('朞嶝돨깃硫헌데꼇옵街깎');
+        case FBillsType of
+          btXm: SupportManager.ConfigInfo.StandardXmLib := ExtractFileName(sOldName);
+          btGcl: SupportManager.ConfigInfo.StandardGclLib := ExtractFileName(sOldName);
+        end;
+        ConnectStandardLib;
+      end;
     finally
     finally
       Screen.Cursor := crDefault;
       Screen.Cursor := crDefault;
     end;
     end;

+ 0 - 0
Report/DataPrepare/rdpBillsGatherDm.dfm


部分文件因为文件数量过多而无法显示