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