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

373 lines
25 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>实际进度(完成值/实耗值)测量录入</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="实际进度(完成值)测量值录入" TitleToolTip="实际进度(完成值)测量值录入"
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="实际进度(完成值)测量值录入" 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="月份" LabelWidth="50px" Width="150px" OnTextChanged="txtMonths_TextChanged">
</f:DatePicker>
<f:Button ID="btnSave1" Icon="SystemSave" runat="server" ToolTip="保存" Hidden="true"
OnClick="btnSave_Click">
</f:Button>
</Items>
<Items>
<f:Label ID="red" runat="server" CssClass="customlabel" Text="红色:计划已结束但尚未完成的项、灰色:计划尚未开始的项、绿色:之前累计完成值+当月值等于总计划值">
</f:Label>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:GroupField EnableLock="true" HeaderText="分部工程" TextAlign="Center">
<Columns>
<f:RenderField Width="89px" ColumnID="Code" DataField="Code" FieldType="String" HeaderText="编码"
HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="Name" DataField="Name" FieldType="String"
HeaderText="名称" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField EnableLock="true" HeaderText="子分部工程" TextAlign="Center">
<Columns>
<f:RenderField Width="89px" ColumnID="ChildCode" DataField="ChildCode" FieldType="String"
HeaderText="编码" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ChildName" DataField="ChildName" FieldType="String"
HeaderText="名称" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField EnableLock="true" HeaderText="测量标志(权重)" TextAlign="Center" Hidden="true">
<Columns>
<f:RenderField Width="70px" ColumnID="Weights" DataField="Weights" FieldType="String"
Hidden="true" HeaderText="占比(%)" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="WeightsMoneyStr" DataField="WeightsMoneyStr"
FieldType="String" Hidden="true" HeaderText="费用(万元)" 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="月计划" 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="累计计划" 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="工程量" 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="月完成" 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="月完成比例%" 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="累计完成" 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="累计%" 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="月实耗" 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="累计实耗" 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="进度SV" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="CVValue" DataField="CVValue" FieldType="Float"
HeaderText="费用CV" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField EnableLock="true" HeaderText="进度计划" TextAlign="Center">
<Columns>
<f:RenderField Width="90px" ColumnID="StartDate" DataField="StartDate" FieldType="Date"
HeaderText="开始日期" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderTextAlign="Center"
TextAlign="Center">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="EndDate" DataField="EndDate" FieldType="Date"
HeaderText="结束日期" 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="预算单价" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="50px" ColumnID="CostUnivalent" DataField="CostUnivalent" FieldType="Float"
Hidden="true" HeaderText="成本单价" 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="修正完成值">
</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>