凯云水利水电工程造价管理系统 技术解析(六) 机械单价(一)

机械单价

功能实现

 机械单价包含三个部分:一个是机械单价分类,一个是机械单价,一个是机械单价明细。机械分类的是一个下拉树,可以对其进行新增,删除和修改它的节点。当点击机械分类时,机械单价会出现相应的数据。

    机械单价数据处理包括添加、修改、删除、复制、粘贴、导入、导出

对于机械单价的导出、导入:系统将自动给出一个路径,把机械单价的所有数据导入到一张Excel表。导入:先手动填写一些数据,这些数据要根据数据库的参数来写,一一对应才能导入到

机械单价的表里。导入之前先选择要导入的文件。

   机械单价的点击一下机械单价的添加、会弹出一张表,进行添加。而修改、 是在datagrid里面操作的。

机械单价的复制、粘贴:复制现有的数据,复制后的数据代号后会有”复制“两字,还有整数进行区分。然后进行粘贴到最后一行。

机械单价的查询分为多条件模糊查询和多条件精确查询:查询分为:根据代号、名称、名称的首字母查询,当选中下拉框方式中的代号,如果不选中模糊先查询,则为精确查询,反之,则为模糊查询。

如果是被使用过的数据就会记录下来,你可以根据是否显示已使用来查询使用过的数据。



 //下面就是生成这个界面的html代码;

  <div>
   <table>
    <tr>
    <td>
     <div class="easyui-panel"  title=" 机械分类" style="width:260px;height:650px; right: 333px;" data-options="iconCls:'icon-save',tools:'#tt'"> 
        <ul class="easyui-tree" id="TreShuXing" data-options="onClick:onClickRowMingXi,onAfterEdit:onAfterEdit">	
	      </ul>  
     </div>
    <div id="tt" style="height:auto">
		<a οnclick="xingzengshuxing()" href="javascript:void(0)" class="icon-add "></a>
		<a  οnclick="xiugai()"  href="javascript:void(0)" class="icon-edit" ></a>
		<a οnclick="shanqujiedian()" href="javascript:void(0)" class="icon-cut" ></a>
		<a href="javascript:void(0)" class="icon-help" ></a>
	</div>



     </td>
     <td>
     <div style="width:730px;">
     <table>
       <tr>
       <a οnclick="tianjia()"><input  id="tianjia" type="submit" value="添加" /></a> 
       <a οnclick="deleteline()" ><input id="shanqu" type="submit" value="删去"   /></a>
       <a οnclick="copy()" ><input  id="fuzhi"type="submit" value="复制"  /></a>
       <a οnclick="paste()" ><input id="zhantie" type="submit" value="粘贴" /></a> 
       <form action="/JiXieDanJia/GetTableFromExcel" method="post"  enctype="multipart/form-data"> 
                        <text>选择上传文件</text>
                        <input name="file1" type="file" id="file" />
                        <input type="submit" name="Upload" value="导入" /> 
                        </form>
       <a οnclick="modification()" ><input  type="submit" value="修改一行" /></a>
     <td><a οnclick="daochu()" ><input  type="submit" value="导出" /></a></td> 
      </tr>
     </table>
     </div>
     <div class="easyui-panel" style="width:1030px;height:620px" data-options="noheader:true" > 
     机械单价: 关键之查询:<input id="guanjianzichanxun" data-options="onChange:ww" />方式:<input  class="easyui-combobox"   id="fangshi" /><input type="checkbox"id="yishiyong" />仅显示已使用<input type="checkbox"id="chaxun"  />模糊查询
        <a οnclick="ww()" ><input  id="" type="submit" value="查询" /></a> 
      <table id="w机械单价"class="easyui-datagrid" style="width:1000px;height:220px" data-options="onClickRow:onClickRow,singleSelect:true,onAfterEdit:onAfter,fitColumns:true" > 
         <thead frozen="true">
			<tr>
				<th field="Code" width="150">代号</th>
                <th field="Name" width="100"editor="text" >名称</th> 
               <th data-options="field:'Unit',align:'center',width:80,
                formatter:function(value,row){
                  
                return row.NatureGatherDetailName;
						 },
			          editor:{
							type:'combobox',
							options:{
								valueField:'NatureGatherDetailID',
								textField:'NatureGatherDetailName',
                                url:'/JiXieDanJia/bandingdanwei/'
								
							}
						}
			         "> 单位</th>
			</tr>
		</thead>
		<thead>
			<tr>
				<th colspan="2">一类(机械)</th>
				<th colspan="2">二类(人工)</th>
                <th colspan="2" >三类(材料)</th>
			</tr>
			<tr>
                 <th field="jixiedanjiaID" width="60" align="right" hidden="true">机械单价ID</th>
                 <th field="jixiedanjiafenleiID" width="60" align="right"  hidden="true">机械单价分类ID</th>
				<th field="cost1" width="60" align="right">费用</th>
				<th field="xishu" width="60" align="right">系数</th>
				<th field="cost2" width="60" align="right">费用</th>
				<th field="xishu1" width="60" align="right">系数</th>
				<th field="cost3" width="60" align="right">费用</th>
				<th field="系数2" width="60" align="right">系数</th>
				<th field="BudgetPrice" width="80" align="right">预算单价</th>
				<th field="Remark" width="100" align="right"editor="text">备注</th>
			</tr>
		</thead> 
     </table>
       <div>
       <a οnclick="addwindow1()" ><input  type="submit" value="添加" /></a>
       <a οnclick="deletedetailed()" ><input   type="submit" value="删去" /></a>
       <a οnclick="replace1()" ><input type="submit" value="替换" /></a>
       <a οnclick="btn_copydetailed()"><input type="submit" value="复制" /></a>
       <a οnclick="btn_pastedetailed()" ><input  type="submit" value="粘贴" /></a>
         <a οnclick="btn_finish()" ><input  type="submit" value="修改一行" /></a>
       
       </div>
      <table id="w机械组成" class="easyui-datagrid" style="width:1000px;height:220px"data-options="onClickRow:onClickRowMachineryconstitute,singleSelect:true,onAfterEdit:onAfterconstitute" >
       <thead> 
       <tr>      
                 <th field="MachineryComeposeID" width="60" align="right" hidden="true">机械组成ID</th>
                <th field="MachineryPriceID" width="60" align="right" hidden="true">机械单价ID</th>
                <th field="Code" width="100" align="right">代号</th>
				<th field="Name" width="100" align="right">名称</th>
				<th field="Unit" width="100" align="right">单位</th>
				<th field="BudgetPrice" width="100" align="right">预算价格</th>
			
				<th field="ComBineGetPrice" width="100" align="right">合价</th>
				<th field="CountNumber" width="100" align="right"editor="text">计算数量</th>
				  <th data-options="field:'MachineryType',align:'center',width:80"> 类型</th>
       </tr> 
       </thead>  
      </table>
      </div>
      </td>
    </tr>
   </table>
    </div>

//下面就是左边绑定下拉树的代码:


第一步:存储过程的代码


第二步:逻辑层的代码:

  //查询绑定下拉树

   public DataTable ChaXunShuXing(int ID)
        {

            SqlParameter[] SQlCMDpas = {
                                             new SqlParameter("@Type", SqlDbType.Char),
                                             new SqlParameter("BuildProjectID",SqlDbType.Char),
                                             };
            SQlCMDpas[0].Value = "ChaXunShuXing";
            SQlCMDpas[1].Value = ID;
            DataTable dt = niaho.DAL_SelectDB_Par("JiXieDanJia", SQlCMDpas);
            return dt;
        }

第三步:控制器的代码:

查询绑定下拉树:

 //查询下拉树
        public ContentResult ChaXunShuXing(string ID)
        {
            DataTable dt = niaho.ChaXunShuXing(Convert.ToInt32(ID));//这方法就是调用了逻辑层的代码:
            StringBuilder stringbuilder = new StringBuilder();//实例化
            stringbuilder.Append(GetDataString(dt, "0"));//这就是调用下面的方法
            var r = GetDataString(dt, "0");//这是一个调用下面的方法
            if (r.Length > 0)//这是用它查出来有多少行来判断,如果小于0,就返回一个1
            {
                stringbuilder = stringbuilder.Remove(stringbuilder.Length - 2, 2);
                return Content(stringbuilder.ToString());
            }
            else
            {
                return Content("1");
            }

        }

        public string GetDataString(DataTable dt, string id)//这就是上面调用的方法
        {
            StringBuilder stringbuilder = new StringBuilder();//实例化
            DataView dv = new DataView(dt);//把查出来的数据放到一个新的dataview里面


            dv.RowFilter = "MachineryPriceClassesFurID=" + id;//这就是通过父ID来赛选它是否还有子节点
            DataTable dtChild = dv.ToTable();// 这就是查出的所有子节点
            if (dtChild.Rows.Count > 0)//如果数量大于0,就还有子节点
            {
                stringbuilder.Append("[");
                for (int i = 0; i < dtChild.Rows.Count; i++)
                {
                    string leiid = dtChild.Rows[i]["MachineryPriceClassesID"].ToString();//这就是主键ID
                    string chidstring = GetDataString(dt, dtChild.Rows[i]["MachineryPriceClassesID"].ToString());//这就是循环调用自身的方法,来判断是否还有子节点
                    if (!string.IsNullOrEmpty(chidstring))//这是判断,如果有子节点就执行这个方法,否则就else
                    {
                        stringbuilder.Append("{ \"id\":\"" + dtChild.Rows[i]["MachineryPriceClassesID"].ToString() + "\",\"text\":\"" + dtChild.Rows[i]["MachineryPriceClassesName"].ToString() + "\",\"state\":\"closed\",\"children\":");
                        stringbuilder.Append(chidstring);


                    }
                    else
                    {
                        stringbuilder.Append("{\"id\":\"" + dtChild.Rows[i]["MachineryPriceClassesID"].ToString() + "\",\"text\":\"" + dtChild.Rows[i]["MachineryPriceClassesName"].ToString() + "\"},");
                    }
                }
                stringbuilder.Replace(",", "", stringbuilder.Length - 1, 1);//这是一个把逗号替换成空
                stringbuilder.Append("]},");//收尾
            }
            return stringbuilder.ToString();//把值返回给上面调用它方法
        }

//第四步:界面层

查询绑定下拉树

  $(document).ready(function () {//一打开界面就执行的方法
   $('#TreShuXing').tree({ url: '/JiXieDanJia/ChaXunShuXing?ID='+@Session["项?目?ID"] });//这就是调用了控制器的方法,返回数据就绑定给下拉树

  });

//下面就是下拉树添加的方法;


第一步:添加下拉树存储过程


第二步:添加下拉树逻辑层

   public int InsertJiXieDanJia(string MachineryPriceClassesName, int MachineryPriceClassesFurID, int BuildProjectID)
        {
            SqlParameter[] mySQL = {
                                   new SqlParameter("@type",SqlDbType.Char),                                   
                                                               
                                   new SqlParameter("@MachineryPriceClassesName",SqlDbType.Char),                                   
                                   new SqlParameter("@MachineryPriceClassesFurID",SqlDbType.Int),    
                                   new SqlParameter("@BuildProjectID",SqlDbType.Int),
                                
     

                                   };
            mySQL[0].Value = "InsertJiXieDanJia11";
            mySQL[1].Value = MachineryPriceClassesName;
            mySQL[2].Value = MachineryPriceClassesFurID;
            mySQL[3].Value = BuildProjectID;

            int i = niaho.DAL_OPTableDB_Par("JiXieDanJia", mySQL);
            return i;
        }

第三步:添加下拉树控制器:

   public ContentResult InsertJiXieDanJia(string MachineryPriceClassesName, string MachineryPriceClassesFurID, string BuildProjectID)
        {

            int i = niaho.InsertJiXieDanJia(MachineryPriceClassesName, Convert.ToInt32(MachineryPriceClassesFurID), Convert.ToInt32(BuildProjectID));//这是调用逻辑层的方法
            string k = i.ToString();
            return Content(k);
        }

第四步:添加下拉树界面层:

  //新增节点    
        function xingzengshuxing() {
       
               $.getJSON("/JiXieDanJia/ChaXunShuXing?ID=" + @Session["项目ID"],
                       function (data) {//这是调用了上面查询绑定下拉树得方法
                        if(data==1){//这就是返回的值,用来判断,如果一行数据也没有就,新增父节点
                     $.getJSON("/JiXieDanJia/InsertJiXieDanJia?MachineryPriceClassesName=" + "(末命名)" + "&"
                                                + "MachineryPriceClassesFurID=" + 0 + "&"
                                                +"BuildProjectID="+ @Session["项目ID"],
                                                function (data) {                  
                                                    expand();//新增完就展开下拉树,下面就有展开下拉树的方法
                                                    alert("已成功添加到你选中的节点下了,请你及时编制");
                                                });   
                                                }
                                 else{
                  var o = $('#TreShuXing').tree('getSelected');
              if (o) {
           
                    if (confirm('是否添加节点?,添加完成要编制窝')) {//这就是判断它是否新增;
            $.getJSON("/JiXieDanJia/InsertJiXieDanJia?MachineryPriceClassesName=" + "(末命名)" + "&"
                                                + "MachineryPriceClassesFurID=" + ID + "&"
                                                  +"BuildProjectID="+ @Session["项目ID"],
                                                function (data) {
                                                    expand();//这就是展开下拉树
                                                    alert("已成功添加到你选中的节点下了,请你及时编制");
                                                });
                                                   }else{

                                                   }
                                                }
                                            else {
                                                alert("请选择左边的下拉树");
                                            }
                                       }                  
                                 });
                          }

//展开下拉树

  //展开下拉树
    function expand() {
   
        $('#TreShuXing').tree({ url: '/JiXieDanJia/ChaXunShuXing?ID='+@Session["项目ID"] });//这是查询一遍
           setTimeout(function () { expandf(); }, 500); //这是一个延迟执行的方法
    }
    function expandf() {
  
        $('#TreShuXing').tree('expandAll');//这就是展开所有节点的方法
      
       
    }

下面就是修改下拉树节点的方法:


第一步:修改下拉树存储过程的代码


第二步:修改下拉树逻辑层的代码

 public int UpdateJiXieDanJia(int MachineryPriceClassesFurID, string MachineryPriceClassesName)
        {
            SqlParameter[] mySQL = {
                                   new SqlParameter("@type",SqlDbType.Char),                                   
                                                               
                                   new SqlParameter("@MachineryPriceClassesID",SqlDbType.Int),                                   
                                   new SqlParameter("@MachineryPriceClassesName",SqlDbType.Char),                                   
                              
     

                                   };
            mySQL[0].Value = "UpdateJiXieDanJia";
            mySQL[1].Value = MachineryPriceClassesFurID;
            mySQL[2].Value = MachineryPriceClassesName;

            int i = niaho.DAL_OPTableDB_Par("JiXieDanJia", mySQL);
            return i;
        }

第三步:修改下拉树控制器的代码

 public ContentResult UpdateJiXieDanJia(string MachineryPriceClassesFurID, string MachineryPriceClassesName)
        {
            int i = niaho.UpdateJiXieDanJia(Convert.ToInt32(MachineryPriceClassesFurID), MachineryPriceClassesName);
            string k = i.ToString();
            return Content(k);
        }

第四步:修改下拉树界面层代码

 var g = "";

   function xiugai() {
  
        if (confirm('是否编制节点?')) {
            g = 1;//点击确定g就等于1,就可以进行下面下拉树的编制
        } else { 
        }
    }
   function onClickRowMingXi(index) {
         
        if(g==1){
      $('#TreShuXing').tree('beginEdit',   index.target);//这就是开始编制下拉树
                g=2;//g等于2,就是一结束编制就不能再一次编制,只能重新点击确定编制
           }
           else{
           }
}

//结束编制立马就进行下拉树的修改

function onAfterEdit(dd, jj, kk) {//这就是结束编制之后执行的方法
     
       $.getJSON("/JiXieDanJia/UpdateJiXieDanJia?MachineryPriceClassesFurID=" + dd.id + "&"
                                                + "MachineryPriceClassesName=" + dd.text + "&"
                                              ,
                                      function (data) {

                                          alert("修改成功");
                                      });
    }

//下面就是下拉树的删去操作


第一步:删去下拉树存储过程




第二步:删去下拉树逻辑层的代码

 public DataTable IDChaXunJieXieDanJia(int parentID)
        {
            SqlParameter[] SQlCMDpas = {
                                             new SqlParameter("@Type", SqlDbType.Char),
                                               new SqlParameter("@MachineryPriceClassesFurID", SqlDbType.Int)
                                        };
            SQlCMDpas[0].Value = "IDChaXunJieXieDanJia";
            SQlCMDpas[1].Value = parentID;
            DataTable dt = niaho.DAL_SelectDB_Par("JiXieDanJia", SQlCMDpas);
            return dt;
        }

   删去子节点的代码;

  public int ShanChuJieXieDanJia(int childID)
        {

            SqlParameter[] SQlCMDpas = {
                                             new SqlParameter("@type", SqlDbType.Char),
                                             new SqlParameter("@MachineryPriceClassesID", SqlDbType.Int),
                                          
                                             };
            SQlCMDpas[0].Value = "ShanChuJieXieDanJia";
            SQlCMDpas[1].Value = childID;
            int i = niaho.DAL_OPTableDB_Par("JiXieDanJia", SQlCMDpas);
            return i;
        }

 删去父节点的代码:

 public int deleteJiXieDanJiajiedianFuQingJieDian(int MachineryPriceClassesID)
        {
            SqlParameter[] mySQL = {
                                   new SqlParameter("@type",SqlDbType.Char),                                   
                                                               
                                                                 
                                   new SqlParameter("@MachineryPriceClassesID",SqlDbType.Int),                                   
                                
     

                                   };
            mySQL[0].Value = "deleteJiXieDanJiajiedianFuQingJieDian";

            mySQL[1].Value = MachineryPriceClassesID;
<pre name="code" class="csharp">  public ContentResult deleteJiXieDanJiajiedianFuQingJieDian(string MachineryPriceClassesID)
        {
            int i = niaho.deleteJiXieDanJiajiedianFuQingJieDian(Convert.ToInt32(MachineryPriceClassesID));//这是调用逻辑层的删去父节点的代码
            string k = i.ToString();
            return Content(k);返回给界面层
        }


 
  
 

//第三步:删去下拉树控制器的代码

  public ContentResult deleteJiXieDanJiajiedian(string MachineryPriceClassesFurID)
        {

            childdelete(Convert.ToInt32(MachineryPriceClassesFurID));//这是调有下面的方法


            return Content("true");//跳转到资料主页面
        }


        public void childdelete(int parentID)
        {
            DataTable dtf = niaho.IDChaXunJieXieDanJia(parentID);//这就是调用逻辑层的代码把所有数据都查出来
            int rcount = dtf.Rows.Count;//获取总行数

            if (rcount > 0)
            {
                for (int i = 0; i < rcount; i++)
                {
                    int childID = Convert.ToInt32(dtf.Rows[i]["MachineryPriceClassesID"]);
                    childdelete(childID);//这是调用自身的方法,查找是否还有下一级,有就继续删去
                    niaho.ShanChuJieXieDanJia(childID);//这是调用逻辑层的代码,进行子节点的删去
                }
            }
            else
            {

                return;
            }

        }
  删去父节点
  public ContentResult deleteJiXieDanJiajiedianFuQingJieDian(string MachineryPriceClassesID)
        {
            int i = niaho.deleteJiXieDanJiajiedianFuQingJieDian(Convert.ToInt32(MachineryPriceClassesID));//这是调用逻辑层的删去父节点的代码
            string k = i.ToString();
            return Content(k);返回给界面层
        }

第四步:删去下拉树界面层的代码

   function shanqujiedian() {
     
                   var row = $('#TreShuXing').tree('getSelected');
                if (row) {
                    $.getJSON("/JiXieDanJia/deleteJiXieDanJiajiedian?MachineryPriceClassesFurID=" + ID,
                   function (data) {//这是删去子节点的方法
                       $.getJSON("/JiXieDanJia/deleteJiXieDanJiajiedianFuQingJieDian?MachineryPriceClassesID=" + ID,
                      function (data) {//这是删去父节点的方法
                          expand();
                          alert("删去成功");

                      });
                   })
              }
               }




仅供学习,禁止用于商业用途



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值