凯云水利水电工程造价系统 (四)配合比单价(2)

凯云水利水电工程造价系统 (四)配合比单价(2)

3.6-3.1.2 配合比单价明细
3.6-3.1.2.1  添加

(1)添加配合比单价明细,点击添加按钮:


(图 23)

当你单击材料单价中材料列表的一行,数据就会绑定到下面的datagrid中,代码如下:


(图 24)

                    // 添加-点击材料单价
                   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)

选好要添加的材料单价后,就点击左上角的保存按钮,所触发的界面层的方法:


(图 26)

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)删除配合比单价明细,所触发的界面层大方法:


(图 28)

//删除配合比明细
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)对于添加好了的配合比明细,可以选中一条进行替换 :


(图 29)


(图 30)

点击保存按钮,进行替换:


(图 31)

所触发的界面层的方法:

//修改配合比单价明细(替换)

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 复制

(图 32)

界面层的方法:

//复制配合比明细
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)复制成功之后,就进行粘贴功能:


(图 33)

界面层的方法:

//粘贴配合比明细
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 计算预算单价

(图 35)


(图 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 {

}
});

}

仅供学习参考,禁止商业用途,否则后果自负!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值