• 叶签形式的表格制作


    第一步:制作表格

      

       var data = ${empty data ? "''" : data};
    	 var kpiTabData = data["kpiTabData"];
    	 var kpiObjectList = data["kpiObjectList"];
    
    var row3 = '<tr name="data_row">';
    	    row3 += '<td name="row_checkbox" height="26px" style="text-align:center"><a class="icon-remove" title="Delete" style="cursor:pointer;"></a><input name="id" type="hidden" value="" /><input name="sno" type="hidden" value="" /></td>';
    		row3 += '<td name="level"><input type="text" value="" /></td>';
    		row3 += '<td name="M-1"><input type="text" value="" /></td>';
    		row3 += '<td name="remark" class="bg_green" style="200px;"><textarea class="bg_green" style="100%;border:0px solid" maxlength="500"></textarea></td>';
    	    row3 += '</tr>';
    

      

    第二步:遍历list,将数据传入表格中

    if(kpiObjectList){
    	    	addKpiListRows();
    	    }else{
    	    	addRow3(1,1,projectCode);
    	    }
    
        function addKpiListRows(){
    	    	if(kpiObjectList.length > 0){
    	    		for(var k=0;k<kpiTabData.length;k++){
    			    	for(var i=0;i<kpiObjectList.length;i++){
    			    		var rowobj = $(row3);
    				    	$(rowobj).attr("id","row_"+ i);
    				    	$(rowobj).find("td[name='row_checkbox']").find("input[name='sno']").val(kpiObjectList[i]["sort"]);
    				    	$(rowobj).find("td[name='row_checkbox']").find("input[name='id']").val(kpiObjectList[i]["id"]);
    						$(rowobj).find("td[name='level']").find("input").val(kpiObjectList[i]["kpiIndName"]);
    						$(rowobj).find("td[name='M-1']").find("input").val(kpiObjectList[i]["kpiIndRequire"]);
    						$(rowobj).find("td[name='remark']").children("textarea").val(kpiObjectList[i]["remarks"]);
    						if(kpiObjectList[i]["kpiIndTypeValue"]==kpiTabData[k]["value"]){ // 判断语句十分关键   会从这个判断语句找到相应的叶签将数据放上去
    							$("#kpi"+kpiTabData[k]["value"]).append($(rowobj));    //将数据添加到相应的标签上
    						}
    			    	}
    			    	
    		    	}
    		    }else{
    		    	addRow3(1,1,projectCode);
    		    }
    	    }
    	    
    

      

    第三步:制作活体叶签

      <div class="page_step2">
    
    						<div class="page_con">
    							<h1>
    								<div class="accordion-heading">
    									<a class="accordion-toggle collapsed" data-toggle="collapse"
    										data-href="collapsekpi" href="#collapsekpi"> <i
    										class="icon-chevron-right"></i> <span class="projectCss">合同要求KPI/KQI</span>
    									</a>
    								</div>
    							</h1>
    							<div style="height:10px;">
    							</div>
    
                              <!---  //叶签制作 -->
    							<div id="collapsekpi" class="panel-collapse collapse">
    
    
    								<ul id="myTab" class="nav nav-tabs">
    									<c:forEach items="${kpiTabList}" var="item" varStatus="status">
    
    										<li><a href="#tab${item.value}" data-toggle="tab">${item.label}</a></li>
    
    									</c:forEach>
    								</ul>
    								<div id="myTabContent" class="tab-content">
    								<!---遍历list将叶签放在表头位置,实现活(叶签)样式 -->
    									<c:forEach items="${kpiTabList}" var="item" varStatus="status">
    										<div class="tab-pane fade" id="tab${item.value}">
    								<!---将table的id的名称附上活的id值 便于对应相应的表格,便于js遍历处的数据放在相应得table表格上 -->
    											<table id="kpi${item.value}" width="100%" cellpadding="0"
    												cellspacing="0">
    												<tr class="tb_tt">
    													<td style=" 80px;">操作</td>
    													<td>KPI 指标名称<font color="red">*</font></td>
    													<td>指标要求<font color="red">*</font></td>
    													<td>计算公式描述<font color="red">*</font></td>
    												</tr>
    											</table>
    											<!---将其设置成按钮的格式,点击的时候执行mytable(str)函数,将当前遍历的值传入函数,便于找到相应的表格,将空白栏添加进去-->
    											<a href="#javascript:;" id="kpi_add${item.value}"
    												name="kpi_add${item.value}" style="display: inline-block;"
    												class="btn_add" type="button"
    												onclick="mytable(${item.value});"></a>
    										</div>
    
    									</c:forEach>
    								</div>
    								<script>
    							    $(function () {
    							        $('#myTab li:eq(0) a').tab('show');
    							    });
    							</script>
    							</div>
    
    						</div>
    
    					</div>
    

      

     

    add按钮请求的方法  将添加的表格放在相应的列表中   
    		function mytable(str,projectCode){
    			
    					var lastRow = $("#kpi"+str+" tr").length;   //最后一行的长度
    					var sno = $("#kpi"+str+" tr:last").find("td[name='row_checkbox']").find("input[name='sno']").val()*1+1;
    
    			var row3 = '<tr name="data_row">';
    			    row3 += '<td name="row_checkbox" height="26px" style="text-align:center"><a class="icon-remove" title="Delete" style="cursor:pointer;"></a><input name="id" type="hidden" value="" /><input name="sno" type="hidden" value="" /></td>';
    				row3 += '<td name="level"><input type="text" value="" /></td>';
    				row3 += '<td name="M-1"><input type="text" value="" /></td>';
    				row3 += '<td name="remark" class="bg_green" style="200px;"><textarea class="bg_green" style="100%;border:0px solid" maxlength="500"></textarea></td>';
    			    row3 += '</tr>';
    			    
    							var objRow = $(row3);
    							if(isNaN(sno)){   //当有些遍历出来的标签其下面没有数据的时,添加新数据第一条的sno将会是NaN这个值,传入后端遍历将会出错,必须判断很重要这一步。
    								sno=1;
    							}
    							objRow.find("td[name='row_checkbox']").find("input[name='sno']").val(sno);
    								$("#kpi"+str).append(objRow);
    				
    		}
    

      

     

    第四步:存入数据传入后台

    //注意的是定义变量的时候一定要注意作用域,不然很多都是无效的引入,到处是undefined
                      var data = ${empty data ? "''" : data};
    					var kpiTabData = data["kpiTabData"];
    					var kpiData =[];
    					for(var p=0;p<kpiTabData.length;p++){
    						
    					$("#kpi"+kpiTabData[p]["value"]).find("tr[name='data_row']").each(function(index,elment){
    						var obj = {};
    						obj.id = $(elment).find("td[name='row_checkbox']").find("input[name='id']").val();
    						obj.sort = $(elment).find("td[name='row_checkbox']").find("input[name='sno']").val();
    						obj.projectBasicId = projectId;
    						//将对应的kpiTabData[p]["label"]放进去,因为前台的kpiIndType是隐藏的,但是数据库中需要值
    						obj.kpiIndType = kpiTabData[p]["label"];  
    						obj.kpiIndName = $(elment).find("td[name='level']").find("input").val();
    						obj.kpiIndRequire = $(elment).find("td[name='M-1']").find("input").val();
    						obj.remarks = $(elment).find("td[name='remark']").children("textarea").val();
    						kpiData.push(obj);
     
    						
    						if($(elment).find("td[name='level']").find("input").val() == '') {
    							oo = $(elment).find("td[name='level']").find("input");
    							oox = "请输入KPI指标名称!";
    							isnext = true;
    							return false;
    						}
    						
    						if($(elment).find("td[name='M-1']").find("input").val() == '') {
    							oo = $(elment).find("td[name='M-1']").find("input");
    							oox = "请输入指标要求!";
    							isnext = true;
    							return false;
    						}
    						
    						/*if($(elment).find("td[name='remark']").children("textarea").val() == '') {
    							oo = $(elment).find("td[name='remark']").children("textarea");
    							oox = "请输入计算公式描述!";
    							isnext = true;
    							return false;
    						}*/
    					});
    					
    					
    					}
    					
    					kpiData = JSON.stringify(kpiData);
    // 					window.alert("kpiDatas%%%%%"+kpiDatas);
    					if(isnext && kpiData != "[]"){
    						alert(oox);
    						oo.focus();
    						return false;
    					}
    					$.post("${ctx}/delivery/platform/saveContractInfoData",{projectId:"${projectInfo.id}",manageData:manageData,serviceData:serviceData,slaData:slaData,kpiData:kpiData},function(result){
    						if(result=="success"){
    							if(resultType == '2'){
    								alert("Save data success!");	
    								window.location.reload();				
    							}
    						}else if(result == "fail"){
    							if(resultType == '2'){
    								alert("Save data fail!");					
    							}
    						}
    					});
    				}else{
    					if(resultType == '2'){
    						alert("Please select a project!");
    					}
    				}		
    			}
    

      

  • 相关阅读:
    ServletContext笔记
    Session笔记
    Cookie笔记
    递归实现取数组最大值
    栈结构实现队列结构
    返回栈中最小元素的两种实现O(1)
    数组实现不超过固定大小的队列(环形数组)
    双向链表实现栈和队列
    Windows Server 2008 R2 / Windows Server 2012 R2 安装 .NET Core 3.1
    Windows 7 / Windows Server 2008 R2 升级至 SP1
  • 原文地址:https://www.cnblogs.com/jiajialeps/p/10163114.html
Copyright © 2020-2023  润新知