ChengDa_English/SGGL/FineUIPro.Web/JDGL/WBSCompleteAndReal/WBSCompleteAudit.aspx

373 lines
26 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WBSCompleteAudit.aspx.cs" Inherits="FineUIPro.Web.JDGL.WBSCompleteAndReal.WBSCompleteAudit" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>实际进度(<asp:Literal runat="server" Text="<%$ Resources:Lan,EarnedValueCurve_CompletedValue%>"/>/<asp:Literal runat="server" Text="<%$ Resources:Lan,EarnedValueCurve_ActualCost%>"/>)测量录入</title>
<link href="../../res/css/common.css" rel="stylesheet" type="text/css" />
<style>
.f-grid-row.green {
background-color: green;
background-image: none;
}
.f-grid-row.red {
background-color: #FF7575;
background-image: none;
}
.f-grid-row.hui {
background-color: #ADADAD;
background-image: none;
}
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
.customlabel span {
color: red;
font-weight: bold;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" ShowBorder="false" ShowHeader="false" Layout="Region">
<Items>
<f:Panel runat="server" ID="panelLeftRegion" RegionPosition="Left" RegionSplit="true"
EnableCollapse="true" Width="300" Title="<%$ Resources:Lan,WBSCompleteAudit_GridTitle%>" TitleToolTip="<%$ Resources:Lan,WBSCompleteAudit_GridTitle%>"
ShowBorder="true" ShowHeader="true" AutoScroll="true" BodyPadding="5px" IconFont="ArrowCircleLeft">
<Items>
<f:Tree ID="trWBS" Width="250" EnableCollapse="true" ShowHeader="true" OnNodeCommand="trWBS_NodeCommand"
OnNodeExpand="trWBS_NodeExpand" AutoLeafIdentification="true" runat="server">
<Listeners>
<f:Listener Event="beforenodecontextmenu" Handler="onTreeNodeContextMenu" />
</Listeners>
</f:Tree>
</Items>
</f:Panel>
<f:Panel runat="server" ID="panelCenterRegion" RegionPosition="Center" ShowBorder="true"
Layout="VBox" ShowHeader="false" BodyPadding="5px" IconFont="PlusCircle" Title=""
TitleToolTip="" AutoScroll="true">
<Items>
<f:Grid ID="Grid1" Width="870px" ShowBorder="true" ShowHeader="true" EnableCollapse="true"
Title="<%$ Resources:Lan,WBSCompleteAudit_GridTitle%>" runat="server" BoxFlex="1" DataKeyNames="WbsDetailId"
AllowSorting="true" EnableColumnLines="true" SortField="WbsDetailId" SortDirection="ASC"
AllowCellEditing="true" ClicksToEdit="1" ShowSelectedCell="true" DataIDField="WbsDetailId"
IsDatabasePaging="true" AllowFilters="true" OnFilterChange="Grid1_FilterChange">
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Top" runat="server">
<Items>
<f:DatePicker runat="server" ID="txtMonths" DateFormatString="yyyy-MM" AutoPostBack="true"
Label="<%$ Resources:Lan,WBSPlanSet_YearsMonthsStr%>" LabelWidth="50px" Width="150px" OnTextChanged="txtMonths_TextChanged">
</f:DatePicker>
<f:Button ID="btnSave1" Icon="SystemSave" runat="server" ToolTip="<%$ Resources:Lan,WeightsAudit_SaveButton2%>" Hidden="true"
OnClick="btnSave_Click">
</f:Button>
</Items>
<Items>
<f:Label ID="red" runat="server" CssClass="customlabel" Text="<%$ Resources:Lan,WBSCompleteAudit_ColorLegend%>">
</f:Label>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:GroupField EnableLock="true" HeaderText="<%$ Resources:Lan,WBSReport_SubdivisionProject%>" TextAlign="Center">
<Columns>
<f:RenderField Width="89px" ColumnID="Code" DataField="Code" FieldType="String" HeaderText="<%$ Resources:Lan,WeightsAudit_Code%>"
HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="Name" DataField="Name" FieldType="String"
HeaderText="<%$ Resources:Lan,WeightsAudit_Name%>" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField EnableLock="true" HeaderText="<%$ Resources:Lan,WBSReport_SubSubdivisionProject%>" TextAlign="Center">
<Columns>
<f:RenderField Width="89px" ColumnID="ChildCode" DataField="ChildCode" FieldType="String"
HeaderText="<%$ Resources:Lan,WeightsAudit_Code%>" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ChildName" DataField="ChildName" FieldType="String"
HeaderText="<%$ Resources:Lan,WeightsAudit_Name%>" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField EnableLock="true" HeaderText="<%$ Resources:Lan,PlanAdjust_MeasurementMark_Weights%>" TextAlign="Center" Hidden="true">
<Columns>
<f:RenderField Width="70px" ColumnID="Weights" DataField="Weights" FieldType="String"
Hidden="true" HeaderText="<%$ Resources:Lan,WeightsAudit_Weights%>" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="WeightsMoneyStr" DataField="WeightsMoneyStr"
FieldType="String" Hidden="true" HeaderText="<%$ Resources:Lan,WeightsAudit_WeightsMoney%>" HeaderTextAlign="Center"
TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField EnableLock="true" HeaderText="计划值(万元)" TextAlign="Center" Hidden="true">
<Columns>
<f:RenderField Width="70px" ColumnID="PlanValue" DataField="PlanValue" FieldType="String"
Hidden="true" HeaderText="<%$ Resources:Lan,WBSReport_PlanValue%>" HeaderTextAlign="Center" TextAlign="Left" EnableColumnEdit="false">
<Editor>
<f:NumberBox ID="nbPlanValue" NoDecimal="false" NoNegative="false" MinValue="0" runat="server"
Required="true">
</f:NumberBox>
</Editor>
</f:RenderField>
<f:RenderField Width="90px" ColumnID="PlanValueTotal" DataField="PlanValueTotal"
FieldType="String" Hidden="true" HeaderText="<%$ Resources:Lan,WBSReport_PlanValueTotal%>" HeaderTextAlign="Center" TextAlign="Left"
EnableColumnEdit="false">
<Editor>
<f:NumberBox ID="nbPlanValueTotal" NoDecimal="false" NoNegative="false" MinValue="0"
runat="server">
</f:NumberBox>
</Editor>
</f:RenderField>
</Columns>
</f:GroupField>
<f:RenderField Width="100px" ColumnID="EngineerQuantity" DataField="EngineerQuantity"
FieldType="Float" HeaderText="<%$ Resources:Lan,WeightsAudit_EngineerQuantity%>" HeaderTextAlign="Center" TextAlign="Left">
<Editor>
<f:NumberBox ID="nbEngineerQuantity" NoDecimal="false" NoNegative="false" MinValue="0"
runat="server" Required="true">
</f:NumberBox>
</Editor>
</f:RenderField>
<f:GroupField EnableLock="true" HeaderText="完成值(万元)" TextAlign="Center">
<Columns>
<f:RenderField Width="70px" ColumnID="CompleteValue" DataField="CompleteValue" FieldType="Float"
HeaderText="<%$ Resources:Lan,WBSCompleteAudit_CompleteValue%>" HeaderTextAlign="Center" TextAlign="Left" EnableColumnEdit="false">
<Editor>
<f:NumberBox ID="nbCompleteValue" NoDecimal="false" NoNegative="false" MinValue="0"
runat="server" Required="true">
</f:NumberBox>
</Editor>
</f:RenderField>
<f:RenderField Width="100px" ColumnID="CompleteValueRate" DataField="CompleteValueRate"
FieldType="Float" HeaderText="<%$ Resources:Lan,WBSCompleteAudit_CompleteValueRate%>" HeaderTextAlign="Center" TextAlign="Left"
EnableColumnEdit="false">
<Editor>
<f:NumberBox ID="nbCompleteRate" NoDecimal="false" NoNegative="false" MinValue="0"
runat="server" Required="true">
</f:NumberBox>
</Editor>
</f:RenderField>
<f:RenderField Width="90px" ColumnID="CompleteValueTotal" DataField="CompleteValueTotal"
FieldType="Float" HeaderText="<%$ Resources:Lan,WBSCompleteAudit_CompleteValueTotal%>" HeaderTextAlign="Center" TextAlign="Left"
EnableColumnEdit="false">
<Editor>
<f:NumberBox ID="nbCompleteValueTotal" NoDecimal="false" NoNegative="false" MinValue="0"
runat="server">
</f:NumberBox>
</Editor>
</f:RenderField>
<f:RenderField Width="90px" ColumnID="CompleteValueRateTotal" DataField="CompleteValueRateTotal"
FieldType="Float" HeaderText="<%$ Resources:Lan,WBSReport_CompleteValuePercentage%>" HeaderTextAlign="Center" TextAlign="Left"
EnableColumnEdit="false">
<Editor>
<f:NumberBox ID="nbCompleteValueRateTotal" NoDecimal="false" NoNegative="false" MinValue="0"
runat="server">
</f:NumberBox>
</Editor>
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField EnableLock="true" HeaderText="实耗值(万元)" TextAlign="Center">
<Columns>
<f:RenderField Width="90px" ColumnID="RealValue" DataField="RealValue" FieldType="Float"
EnableColumnEdit="false" HeaderText="<%$ Resources:Lan,WBSReport_RealValue%>" HeaderTextAlign="Center" TextAlign="Left">
<Editor>
<f:NumberBox ID="nbRealValue" NoDecimal="false" NoNegative="false" MinValue="0" runat="server"
Required="true">
</f:NumberBox>
</Editor>
</f:RenderField>
<f:RenderField Width="90px" ColumnID="RealValueTotal" DataField="RealValueTotal"
FieldType="Float" HeaderText="<%$ Resources:Lan,WBSReport_RealValueTotal%>" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField EnableLock="true" HeaderText="赢得值EV万元" TextAlign="Center">
<Columns>
<f:RenderField Width="90px" ColumnID="SVValue" DataField="SVValue" FieldType="Float"
HeaderText="<%$ Resources:Lan,WBSCompleteAudit_SVValue%>" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="CVValue" DataField="CVValue" FieldType="Float"
HeaderText="<%$ Resources:Lan,WBSCompleteAudit_CVValue%>" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField EnableLock="true" HeaderText="<%$ Resources:Lan,PlanAdjust_ProgressPlan%>" TextAlign="Center">
<Columns>
<f:RenderField Width="90px" ColumnID="StartDate" DataField="StartDate" FieldType="Date"
HeaderText="<%$ Resources:Lan,WeightsAudit_StartDate%>" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderTextAlign="Center"
TextAlign="Center">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="EndDate" DataField="EndDate" FieldType="Date"
HeaderText="<%$ Resources:Lan,WeightsAudit_EndDate%>" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderTextAlign="Center"
TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:RenderField Width="10px" ColumnID="WbsDetailId" DataField="WbsDetailId" Hidden="true"
FieldType="String" HeaderText="主键" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="10px" ColumnID="Id" DataField="Id" Hidden="true" FieldType="String"
HeaderText="对应WbsId" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="10px" ColumnID="WeightsMoney" DataField="WeightsMoney" Hidden="true"
FieldType="Float" HeaderText="总计划费用" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="10px" ColumnID="CompleteValueTotalPart" DataField="CompleteValueTotalPart"
Hidden="true" FieldType="Float" HeaderText="累计完成值(不包含当月值)" HeaderTextAlign="Center"
TextAlign="Center">
</f:RenderField>
<f:RenderField Width="10px" ColumnID="RealValueTotalPart" DataField="RealValueTotalPart"
Hidden="true" FieldType="Float" HeaderText="累计实耗值(不包含当月值)" HeaderTextAlign="Center"
TextAlign="Center">
</f:RenderField>
<f:RenderField Width="50px" ColumnID="ChangeId" DataField="Weights" FieldType="String"
HeaderText="变化的列" Hidden="true" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="50px" ColumnID="BudgetUnitPrice" DataField="BudgetUnitPrice"
FieldType="Float" Hidden="true" HeaderText="<%$ Resources:Lan,WeightsAudit_BudgetUnitPrice%>" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="50px" ColumnID="CostUnivalent" DataField="CostUnivalent" FieldType="Float"
Hidden="true" HeaderText="<%$ Resources:Lan,WeightsAudit_CostUnivalent%>" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="afteredit" Handler="onGridAfterEdit" />
</Listeners>
</f:Grid>
</Items>
</f:Panel>
</Items>
</f:Panel>
<f:Menu ID="Menu1" runat="server">
<f:MenuButton ID="btnMenuCorrect" OnClick="btnMenuCorrect_Click" EnablePostBack="true" runat="server"
Text="<%$ Resources:Lan,WBSCompleteAudit_MenuCorrect%>">
</f:MenuButton>
</f:Menu>
</form>
<script type="text/javascript">
var menuID = '<%= Menu1.ClientID %>';
// 保存当前菜单对应的树节点ID
var currentNodeId;
// 返回false来阻止浏览器右键菜单
function onTreeNodeContextMenu(event, nodeId) {
currentNodeId = nodeId;
F(menuID).show();
return false;
}
function updateSummary() {
var totalRateSum = 0;
var totalEngineerQuantitySum = 0;
var totalRateSumAll = 0;
var weightsMoneySum = 0;
var completeValueTotalPart = 0;
var realValueTotalPart = 0;
var planValueTotal = 0;
var rowId = "";
var grid1ClientID = '<%= Grid1.ClientID %>';
var me = F(grid1ClientID), totalCompleteValueSum = 0, totalRealValueSum = 0, allTotal = 0;
me.getRowEls().each(function (index, tr) {
if (tr.rowIndex != 0) {
totalCompleteValueSum += 1.00 * me.getCellValue(tr, 'CompleteValue');
totalRealValueSum += 1.00 * me.getCellValue(tr, 'RealValue');
totalEngineerQuantitySum += 1.00 * me.getCellValue(tr, 'EngineerQuantity');
}
if (tr.rowIndex == 0) {
rowId = me.getCellValue(tr, 'WbsDetailId');
if (me.getCellValue(tr, 'WeightsMoney') != "") {
weightsMoneySum = (me.getCellValue(tr, 'WeightsMoney')).toFixed(2);
}
if (me.getCellValue(tr, 'CompleteValueTotalPart') != "") {
completeValueTotalPart = (me.getCellValue(tr, 'CompleteValueTotalPart')).toFixed(2);
}
if (me.getCellValue(tr, 'RealValueTotalPart') != "") {
realValueTotalPart = (me.getCellValue(tr, 'RealValueTotalPart')).toFixed(2);
}
planValueTotal = me.getCellValue(tr, 'PlanValueTotal');
}
});
totalCompleteValueSumAll = (1.00 * completeValueTotalPart + 1.00 * totalCompleteValueSum).toFixed(2);
if (weightsMoneySum != 0) {
totalRateSum = (totalCompleteValueSum / weightsMoneySum * 100).toFixed(2);
totalRateSumAll = (totalCompleteValueSumAll / weightsMoneySum * 100).toFixed(2);
}
me.updateCellValue(rowId, 'EngineerQuantity', totalEngineerQuantitySum.toFixed(2));
me.updateCellValue(rowId, 'CompleteValue', totalCompleteValueSum.toFixed(2));
me.updateCellValue(rowId, 'CompleteValueRate', totalRateSum);
me.updateCellValue(rowId, 'CompleteValueTotal', totalCompleteValueSumAll);
me.updateCellValue(rowId, 'CompleteValueRateTotal', totalRateSumAll);
me.updateCellValue(rowId, 'RealValue', totalRealValueSum.toFixed(2));
me.updateCellValue(rowId, 'RealValueTotal', (1.00 * realValueTotalPart + 1.00 * totalRealValueSum).toFixed(2));
me.updateCellValue(rowId, 'SVValue', (1.00 * totalCompleteValueSumAll - 1.00 * planValueTotal).toFixed(2));
me.updateCellValue(rowId, 'CVValue', (1.00 * totalCompleteValueSumAll - 1.00 * realValueTotalPart - 1.00 * totalRealValueSum).toFixed(2));
}
function onGridAfterEdit(event, value, params) {
var me = this, columnId = params.columnId, rowId = params.rowId;
me.updateCellValue(rowId, 'ChangeId', rowId);
if (columnId === 'EngineerQuantity') {
var engineerQuantity = me.getCellValue(rowId, 'EngineerQuantity');
var budgetUnitPrice = me.getCellValue(rowId, 'BudgetUnitPrice');
var costUnivalent = me.getCellValue(rowId, 'CostUnivalent');
var completeValue = (engineerQuantity * budgetUnitPrice).toFixed(2);
var weights = me.getCellValue(rowId, 'CompleteValueRate');
var weightsMoneys = me.getCellValue(rowId, 'WeightsMoney');
var completeValueTotalPart = me.getCellValue(rowId, 'CompleteValueTotalPart');
var planValueTotal = me.getCellValue(rowId, 'PlanValueTotal');
var lastCompleteValue = weightsMoneys - completeValueTotalPart; //剩余未完成值
if (me.getCellValue(rowId, 'CompleteValue') > weightsMoneys) {
me.updateCellValue(rowId, 'CompleteValue', weightsMoneys)
}
if (me.getCellValue(rowId, 'CompleteValue') > lastCompleteValue) {
me.updateCellValue(rowId, 'CompleteValue', lastCompleteValue)
}
if (completeValue.toString() != "" && weightsMoneys.toString() != "" && (weights.toString() == "" || completeValue.toString() != (completeValue / weightsMoneys * 100).toFixed(2))) {
me.updateCellValue(rowId, 'CompleteValueRate', (completeValue / weightsMoneys * 100).toFixed(2));
}
me.updateCellValue(rowId, 'CompleteValue', completeValue)
me.updateCellValue(rowId, 'CompleteValueTotal', 1.00 * completeValueTotalPart + 1.00 * completeValue)
me.updateCellValue(rowId, 'CompleteValueRateTotal', ((1.00 * completeValueTotalPart + 1.00 * completeValue) * 100 / weightsMoneys).toFixed(2))
me.updateCellValue(rowId, 'SVValue', (1.00 * completeValueTotalPart + 1.00 * completeValue - 1.00 * planValueTotal).toFixed(2))
if (weightsMoneys == completeValueTotalPart + completeValue) {
me.updateCellValue(rowId, 'CompleteValueRateTotal', 100)
}
var realValue = (engineerQuantity * costUnivalent).toFixed(2);
var realValueTotalPart = me.getCellValue(rowId, 'RealValueTotalPart');
if (realValue == "") {
me.updateCellValue(rowId, 'RealValue', completeValue)
me.updateCellValue(rowId, 'RealValueTotal', 1.00 * realValueTotalPart + 1.00 * completeValue)
me.updateCellValue(rowId, 'CVValue', (1.00 * completeValueTotalPart - 1.00 * realValueTotalPart).toFixed(2))
}
if (realValue != "") {
me.updateCellValue(rowId, 'RealValue', realValue)
me.updateCellValue(rowId, 'RealValueTotal', 1.00 * realValueTotalPart + 1.00 * realValue)
me.updateCellValue(rowId, 'CVValue', ((1.00 * completeValueTotalPart + 1.00 * completeValue) - (1.00 * realValueTotalPart + 1.00 * realValue)).toFixed(2))
}
}
updateSummary();
}
</script>
</body>
</html>