凯云水利水电工程造价系统 (四)配合比单价(2)
3.6-3.1.2 配合比单价明细
3.6-3.1.2.1 添加
(1)添加配合比单价明细,点击添加按钮:
当你单击材料单价中材料列表的一行,数据就会绑定到下面的datagrid中,代码如下:
// 添加-点击材料单价
var PanDuan=0;
function OnClickRowMaterialPrice(){
var MaterialPrice=$('#MaterialPrice').datagrid('getSelected');
//选中材料单价的一行
var PeiHeBiDanJiaMingXi=$('#w配合比明细').datagrid('getData');
//获取配合比明细的所有数据
for(var j=0;j<PeiHeBiDanJiaMingXi.rows.length;j++){
//循环所有数据
if(PeiHeBiDanJiaMingXi.rows[j]["Name"].trim()==MaterialPrice.Name){
//如果配合比明细的代号等于点击材料单价的代号,则PanDuan=1;
PanDuan=1;
}
else{
}
}
if( PanDuan!=1){
//所以,只有PanDuan!=1,才能执行下面的代码
PanDuan=0;
MaterialPrice.MaterialPriceID;
MaterialPrice.Code;
MaterialPrice.Name;
MaterialPrice.Unit;
MaterialPrice.BudgetPrice;
MaterialPrice.effectivityno;
//获取选中材料单价下的数据
var d=$('#intCode').datagrid('getData');
$('#intCode').datagrid("insertRow", {
index: d.rows.length,
row: {}
});
$('#intCode').datagrid('selectRow', d.rows.length-1);
$('#intCode').datagrid('getData').rows[d.rows.length-1]["materialpriceID"]= MaterialPrice.MaterialPriceID;
$('#intCode').datagrid('getData').rows[d.rows.length-1]["code"]=MaterialPrice.Code;
$('#intCode').datagrid('getData').rows[d.rows.length-1]["name"]=MaterialPrice.Name;
$('#intCode').datagrid('getData').rows[d.rows.length-1]["unit"]=MaterialPrice.Unit;
$('#intCode').datagrid('getData').rows[d.rows.length-1]["budgetprice"]=MaterialPrice.BudgetPrice;
$('#intCode').datagrid('getData').rows[d.rows.length-1]["effectivityno"]=MaterialPrice.effectivityno;
$('#intCode').datagrid('refreshRow', d.rows.length-1);
}
else{
PanDuan=0;
alert("不能添加相同的数据,请点击下一行!");
}
}
(图 25)
选好要添加的材料单价后,就点击左上角的保存按钮,所触发的界面层的方法:
function Save(){
var MixProportionPriceID=$('#w配合比单价表').datagrid('getSelected');
//先选中要新增配合比单价的一行
if (MixProportionPriceID){
//如果被选中了,就执行下面的代码
var d=$('#intCode').datagrid('getData');
for(var i=0;i<d.rows.length;i++){
$.getJSON("/PeiHeBiDanJia/InsertMixPriceDetail?Code="+$('#intCode').datagrid('getData').rows[i]["code"]+"&"
+"Unit="+$('#intCode').datagrid('getData').rows[i]["unit"]+"&"
+"BudgetPrice="+$('#intCode').datagrid('getData').rows[i]["budgetprice"]+"&"
+"MixProportionPriceID="+MixProportionPriceID.MixProportionPriceID+"&"
+"Total="+"0"+"&"
+"Name="+$('#intCode').datagrid('getData').rows[i]["name"]+"&"
+"QuoteAmout="+"0",
function(data){
for(var i=0;i<d.rows.length;i++){
$('#intCode').datagrid('deleteRow',i);
}
$('#w添加明细').window('close');
$.getJSON("/PeiHeBiDanJia/OnclickMixProporDetail?MixProportionPriceID="+MixProportionPriceID.MixProportionPriceID,
function(data){
$('#w配合比明细').datagrid('loadData', data);
}
);
});
}
}
else{
alert("请先选中配合比单价!,再进行添加 !");
}
}
把值传到控制器的方法:
#region 新增配合比明细
public ContentResult InsertMixPriceDetail(string Code, string Unit, string BudgetPrice, int MixProportionPriceID, string Total, string Name, string QuoteAmout)
{
int i = myMixProportionPrice.InsertMixPriceDetail(Code, Unit, BudgetPrice, MixProportionPriceID, Total, Name, QuoteAmout);
return Content(i.ToString());
//返回数据给界面层
}
#endregion
逻辑层的方法:
#region 新增配合比明细
public int InsertMixPriceDetail(string Code,string Unit,string BudgetPrice,int MixProportionPriceID,string Total,string Name,string QuoteAmout) {
SqlParameter[] mySqlParameter = {
new SqlParameter("@Type",SqlDbType.Char),
new SqlParameter ("@Code",SqlDbType.Char),
new SqlParameter ("@Unit",SqlDbType.Char),
new SqlParameter ("@BudgetPrice",SqlDbType.Char),
new SqlParameter ("@MixProportionPriceID",SqlDbType.Int),
new SqlParameter ("@Total",SqlDbType.Char),
new SqlParameter ("@Name",SqlDbType.Char),
new SqlParameter ("@QuoteAmout",SqlDbType.Char),
//和数据层中声明的变量名对应
};
mySqlParameter[0].Value = "InsertMixPriceDetail";
//和数据层的存储过程名对应
mySqlParameter[1].Value = Code;
mySqlParameter[2].Value = Unit;
mySqlParameter[3].Value = BudgetPrice;
mySqlParameter[4].Value = MixProportionPriceID;
mySqlParameter[5].Value = Total;
mySqlParameter[6].Value = Name;
mySqlParameter[7].Value = QuoteAmout;
int i = myDALMethod.DAL_OPTableDB_Par("MixProportionPrice",mySqlParameter);
return i;
//返回数据给控制器
}
#endregion
数据层的SQL新增语句:
--新增配合比单价明细
if @Type='InsertMixPriceDetail'
begin
insert SYS_MixProportionPriceDetailList(Code, Unit, BudgetPrice, MixProportionPriceID, Total, Name, QuoteAmout)
values ( @Code, @Unit,@BudgetPrice, @MixProportionPriceID, @Total, @Name, @QuoteAmout)
end
(图 27)
3.6-3.1.2.2 删除
(1)删除配合比单价明细,所触发的界面层大方法:
//删除配合比明细
function DeleteMixProporDetail(){
var MixProportionPriceID=$('#w配合比单价表').datagrid('getSelected');
var MixProporDetail=$('#w配合比明细').datagrid('getSelected');
//选中要删除的明细
if(MixProporDetail){
if(confirm('是否将要删除此条明细?')){
//确认是否要删除
$.getJSON("/PeiHeBiDanJia/DeleteMixPriceDetail?MixProportionPriceDetailID="+MixProporDetail.MixProportionPriceDetailID,
function(data){
if (data>0){
$.getJSON("/PeiHeBiDanJia/OnclickMixProporDetail?MixProportionPriceID="+MixProportionPriceID.MixProportionPriceID,
function(data){
$('#w配合比明细').datagrid('loadData', data);
JiSuan();
//掉用计算明细的预算单价的总和
//在这里调用原因是,当删除一条明细后,配合比单价的预算单价会自动重新更新
}
}
else{
alert("请选中你要删除的数据!");
}
}
function JiSuan(){
var Phb=$('#w配合比单价表').datagrid('getSelected');
var D=0;
var rengongMingXiID = $('#w配合比明细').datagrid('getData');
//获取配合比明细的所有数据
for (var i = 0; i < rengongMingXiID.rows.length; i++)
//循环查出的所有数据
{
D += rengongMingXiID.rows[i].Total*1;
//循环出总价,然后进行相加
}
$('#YingFuJingE').val(D);
$.getJSON("/PeiHeBiDanJia/Update_MixProportionPriceList?BuildProjectID=" + @Session["项目ID"] + "&"
+ "MixProportionPriceName=" +Phb.MixProportionPriceName + "&"
+ "Code=" +Phb.Code+ "&"
+ "Unit=" + Phb.Unit+ "&"
+ "Remark=" +"暂时没有备注" + "&"
+ "Budget=" +D+"&"
+"MixProportionPriceID="+Phb.MixProportionPriceID ,
function (data) {
if (data > 0) {
$.getJSON("/PeiHeBiDanJia/BindingMixProportionPrice?BuildProjectID="+@Session["项目ID"],
function(data){
$('#w配合比单价表').datagrid('loadData', data);
setTimeout(function(){ $('#w配合比单价表').datagrid('selectRow',InDexSs);},500);
});
} else {
}
});
}
3.6-3.1.2.3 替换
(1)对于添加好了的配合比明细,可以选中一条进行替换 :
(图 30)
点击保存按钮,进行替换:
所触发的界面层的方法:
//修改配合比单价明细(替换)
function Update_MixPriceDetail(){
var row = $('#w配合比单价表').datagrid('getSelected');
//选中配合比单价的一行
var MixProportionPriceDetailID=$('#w配合比明细').datagrid('getSelected');
//选中要替换配合比明细的一行
var MaterialPrice=$('#MaterialPriceID').datagrid('getSelected');
//选中替换数据的材料列表的数据
if(MixProportionPriceDetailID){
if(MixProportionPriceDetailID.Code.trim()!==MaterialPrice.Code.trim() && MixProportionPriceDetailID.Name.trim()!==MaterialPrice.Name.trim()){
//而且被替换的代号不能相等
$.getJSON("/PeiHeBiDanJia/Update_MixPriceDetail?Code="+MaterialPrice.Code+"&"
+"Unit="+MaterialPrice.Unit+"&"
+"MixProportionPriceID="+row.MixProportionPriceID+"&"
+"BudgetPrice="+MaterialPrice.BudgetPrice+"&"
+"Total="+"0.00"+"&"
+"Name="+MaterialPrice.Name+"&"
+"QuoteAmout="+"0"+"&"
+"MixProportionPriceDetailID="+MixProportionPriceDetailID.MixProportionPriceDetailID,
function(data){
if(data>0){
$.getJSON("/PeiHeBiDanJia/OnclickMixProporDetail?MixProportionPriceID="+row.MixProportionPriceID,
function(data){
$('#w配合比明细').datagrid('loadData', data);
JiSuan();
});
alert("替换成功!");
$('#w替换').window('close');
}
});
}
else{
alert("对不起!数据相同,不能替换");
}
}
else{
alert("请选中要替换的数据!");
}
}
替换其实就是一个修改功能,控制器、逻辑层就按照修改的方法来写
3.6-3.1.2..4 复制
界面层的方法:
//复制配合比明细
var daihao="";
var Unit="";
var CopyBudgetPrice="";
var CopyMixProportionPriceID="";
var CopyTotal="";
var CopyName="";
var CopyQuoteAmout="";
//声明全局变量,用于粘贴
var COPY=0
function CopyMixProporDetail(){
var d=$('#w配合比明细').datagrid('getSelected');
//选中要复制那一行的数据
var MixProportionPriceID=$('#w配合比单价表').datagrid('getSelected');
if(d){
COPY=1;
if(confirm('是否需要复制这条数据?')){
//确认是否要进行复制
daihao=d.Code.trim();
Unit=d.Unit;
CopyBudgetPrice=d.BudgetPrice;
CopyMixProportionPriceID=MixProportionPriceID.MixProportionPriceID;
CopyTotal=d.Total;
CopyName=d.Name;
CopyQuoteAmout=d.QuoteAmout;
//获取要复制那一行的数据,并把它赋值给声明的全局变量
alert("复制成功!");
}
}
else{
alert("亲,请选中要复制的数据!");
}
}
3.6-3.1.2.5 粘贴
(1)复制成功之后,就进行粘贴功能:
界面层的方法:
//粘贴配合比明细
function PasteMixProporDetail(){
var MixProportionPriceID=$('#w配合比单价表').datagrid('getSelected');
var y=daihao;
var t=y.length;
var e=y.substring(t-2,t);
var tr=daihao+"_复制";
var i=tr.length;
var d=tr.substring(i-3,i);
if(COPY==1){
if(MixProportionPriceID){
if (confirm('是否需要粘贴?')){
if (e=="_复制"){
var code=tr+"-_复制"
$.getJSON("/PeiHeBiDanJia/InsertMixPriceDetail?Code="+code+"&"
+"Unit="+Unit+"&"
+"BudgetPrice="+CopyBudgetPrice+"&"
+"MixProportionPriceID="+CopyMixProportionPriceID+"&"
+"Total="+"0.00"+"&"
+"Name="+CopyName+"&"
+"QuoteAmout="+"0",
function(data){
$.getJSON("/PeiHeBiDanJia/OnclickMixProporDetail?MixProportionPriceID="+MixProportionPriceID.MixProportionPriceID,
function(data){
$('#w配合比明细').datagrid('loadData', data);
alert("粘贴成功!数据已经在最后一行!");
}
);
//
});
}
else{
$.getJSON("/PeiHeBiDanJia/InsertMixPriceDetail?Code="+tr+"&"
+"Unit="+CopyUnit+"&"
+"BudgetPrice="+CopyBudgetPrice+"&"
+"MixProportionPriceID="+CopyMixProportionPriceID+"&"
+"Total="+"0.00"+"&"
+"Name="+CopyName+"&"
+"QuoteAmout="+"0",
function(data){
$.getJSON("/PeiHeBiDanJia/OnclickMixProporDetail?MixProportionPriceID="+MixProportionPriceID.MixProportionPriceID,
function(data){
$('#w配合比明细').datagrid('loadData', data);
alert("粘贴成功!数据已经在最后一行!");
});
});
}
}
else{
alert("已放弃粘贴!");
}
}
else{
alert("请先复制!");
}
}
else{
alert("请先复制!");
}
}
(图 34)
3.6-3.1.2.6 计算预算单价
(图 36)
(图 37)
点击一行,当结束编辑的时候,如果这行有值发生了变化,进行计算的方法:
//配合比单价的编辑
var editIndex = undefined;
function onClickRowMingXi(index) {
if (editIndex != index) {
$('#w配合比明细').datagrid('beginEdit', index);
$('#w配合比明细').datagrid('endEdit', editIndex);
editIndex = index;
}
}
//对人工单价的修改(计算)
function onAfterBefore(index,data,dd){
var Phb=$('#w配合比单价表').datagrid('getSelected');
var MixProportionPriceDetailID=$('#w配合比明细').datagrid('getChanges');
//如果配合比单价的一行数据发生改变,就把值赋值给MixProportionPriceDetailID
var PeiHeBiMingXi=$('#w配合比明细').datagrid('getData');
//获取配合比明细的所有数据
var d=MixProportionPriceDetailID.length;
//获取选中一行的长度
if(d>0){
//如果d>0,就说明有值发生了改变,就可以执行下面的代码
var PeiHeBiMingXiID=data.MixProportionPriceDetailID;
var Code=data.Code;
var Name=data.Name;
var Unit=data.Unit;
var BudgetPrice=data.BudgetPrice;
var QuoteAmout=data.QuoteAmout;
var Total=data.Total;
var MixPriceID=Phb.MixProportionPriceID;
var Count=(data.QuoteAmout*1)*(data.BudgetPrice*1);
//获取点击一行的数据
$.getJSON("/PeiHeBiDanJia/Update_MixPriceDetail?Code="+Code+"&"
+"Unit="+Unit+"&"
+"MixProportionPriceID="+MixPriceID+"&"
+"BudgetPrice="+BudgetPrice+"&"
+"Total="+Count+"&"
+"Name="+Name+"&"
+"QuoteAmout="+QuoteAmout+"&"
+"MixProportionPriceDetailID="+PeiHeBiMingXiID,
function(data){
if(data>0){
$.getJSON("/PeiHeBiDanJia/OnclickMixProporDetail?MixProportionPriceID="+Phb.MixProportionPriceID,
function(data){
$('#w配合比明细').datagrid('loadData', data);
Count11();
//调用计算预算单价的方法
$('#YingFuJingE').val(ZongJia);
});
}
});
}
}
function Count11(rowIndex, rowData, changes){
var YuSuanDanJia=0;
var PeiHeBiMingXi=$('#w配合比明细').datagrid('getData');
for(var j=0;j<PeiHeBiMingXi.rows.length;j++){
YuSuanDanJia+=PeiHeBiMingXi.rows[j].Total*1
}
var Phb=$('#w配合比单价表').datagrid('getSelected');
var Code=Phb.Code.trim();
var MixProportionPriceName=Phb.MixProportionPriceName.trim();
var Unit=Phb.Unit.trim();
var Remark=Phb.Remark;
$.getJSON("/PeiHeBiDanJia/Update_MixProportionPriceList?BuildProjectID=" + @Session["项目ID"] + "&"
+ "MixProportionPriceName=" + MixProportionPriceName + "&"
+ "Code=" +Code + "&"
+ "Unit=" + Unit+ "&"
+ "Remark=" +Remark + "&"
+ "Budget=" +YuSuanDanJia+"&"
+"MixProportionPriceID="+Phb.MixProportionPriceID ,
function (data) {
if (data > 0) {
$.getJSON("/PeiHeBiDanJia/BindingMixProportionPrice?BuildProjectID="+@Session["项目ID"],
function(data){
$('#w配合比单价表').datagrid('loadData', data);
$('#YingFuJingE').val(YuSuanDanJia);
setTimeout(function(){ $('#w配合比单价表').datagrid('selectRow',InDexSs);},500);
});
} else {
}
});
}
仅供学习参考,禁止商业用途,否则后果自负!