如果遇到这样的页面。
可以添加多行。
可以加载以前的数据修改功能。
添加和修改集合一起的页面。
先写一个定时器。把表格的数据全记录在array里面。保存或者提交直接提交这个array。
要定义一个row_index 遍历的时候就匹配row_index 修改对应行的数据。
这个row就是从1一行一行+1
表头id使用-1是添加。 别的id是修改
加载以前的数据,就向页面输出一些,之前的数据。
添加一行空数据,自己加数据。
删除行也要对array进行删除。
初始删除按钮 或者选择图纸按钮 放到一个方法里面进行初化。
还可以对table内的input进行监听。
var flag = [[${edit}]]; //true是修改 false是添加。
var row_index = 0;//这个是row_index 输入回车的是哪一行。 记录的是下标,不用row 用index更好。
var row = 0;//第0行。 从0开始
var headId = [[${headId} != null ? ${headId} : -1]];//表头id -1
var save_flag = false;//false没有提交, true提交了。 防止 别人再操作 弄个这东西。
var w_table, w_form,w_upload;
var material_select_html="";//材质 下拉的html内容。
var material_select_arr=[];//材质 下拉的html内容。
var superlier_select_html="";//供应商 下拉的html内容。
var superlier_select_arr= [];//供应商 下拉的html内容。
var technology_select_html="";//工艺 下拉的html内容。
var technology_select_arr= [];//工艺下拉的html内容。
var select_array = [];// 这里记录,存用户输入的数据, 这里存的是对象。
//定时记录 用户输入的数据。 为什么要定时记录用户输入的数据。
var timer1 ;
$(function() {
timer1 = setInterval(record_select_array_row_data,200);
if(flag){
console.log("这是修改");
load_before(headId);//根据id加载。
}else{
console.log("这是添加");
}
});
//定时记录用户输入的数据。
function record_select_array_row_data(){
$("#ruku_list table tbody tr").each(function() {
var row = $(this).attr("row");
var biaozhun = $(this).find('input[type="text"]#biaozhun').eq(0).val();
var guige =$(this).find('input[type="text"]#guige').eq(0).val();
var weight = $(this).find('input[type="text"]#weight').eq(0).val();
var number1 =$(this).find('input[type="text"]#number1').eq(0).val();
var danjia = $(this).find('input[type="text"]#danjia').eq(0).val();
var zongjia =$(this).find('input[type="text"]#zongjia').eq(0).val();
var material_id = $(this).find('select#material_id').eq(0).val();
var supplier_id =$(this).find('select#supplier_id').eq(0).val();
biaozhun = biaozhun.replaceAll("\"","“");
biaozhun=biaozhun.trim_shou_wei();
guige= guige.replaceAll("\"","“");
guige = guige.trim_shou_wei();
weight = weight.trim_shou_wei();
number1 = number1.trim_shou_wei();
danjia= danjia.trim_shou_wei();
zongjia= zongjia.trim_shou_wei();
console.log(row,biaozhun,guige,weight,number1,danjia,zongjia,material_id,supplier_id);
var rowData = select_array.find(function(item) {
return item.row == row;
});
if (rowData) {
//这些数据类型值 全是字符串。 包含row material_id supplier_id
rowData.row = row;
rowData.biaozhun = biaozhun;
rowData.guige = guige;
rowData.weight = weight;
rowData.number1 = number1;
rowData.danjia = danjia;
rowData.zongjia = zongjia;
rowData.material_id = material_id;//这是字符串
rowData.supplier_id = supplier_id;//这是字符串
}
});
}
//关闭 弹出的窗口 所有组件 清空弹窗口 的内容
function close_windows(){
$(".select_drawing_window table tbody").empty();
$(".select_drawing_window").hide();
$("#close").hide();
$("#zhezhao").hide();
}
//显示 弹出的窗口 所有组件 清空弹窗口 的内容
function show_windows(){
//$(".select_drawing_window table tbody").empty();
$(".select_drawing_window").show();
$("#zhezhao").show();
$("#close").show();
}
//监听键盘 按键
function listen_key_code(){
$("#ruku_list table tbody tr").each(function() {
$(this).find('input').off().keyup(function(event){
var tr_index = $(this).closest('tr').index();
var td_index = $(this).closest('td').index();
var tr_row = $(this).closest('tr').attr("row");
console.log("第"+tr_index+"行,第"+td_index+"列"+",row是"+tr_row);
var mye = event|| window.event;
var kcode = mye.keyCode;
if(kcode==40){//向下
console.log("向下");
var trList = $("#ruku_list table tbody tr");
$(trList).eq(parseInt(tr_index)+1).find("td").eq(td_index).find("input").focus();
}
if(kcode==38){//向上
console.log("上");
var trList = $("#ruku_list table tbody tr");
$(trList).eq(parseInt(tr_index)-1).find("td").eq(td_index).find("input").focus();
}
if(kcode==13){//回车
console.log("回车");
row_index = tr_index;
var trList = $("#ruku_list table tbody tr");
var biaozhun = $(trList).eq(tr_index).find('input[type="text"]#biaozhun').eq(0).val();
var guige =$(trList).eq(tr_index).find('input[type="text"]#guige').eq(0).val();
console.log("标准:"+biaozhun+",规格:"+guige);
//搜索标准和规格 ,看看有没有搜索出来东西。
search_biaozhun_guige(biaozhun,guige);
}
});
});
}
function search_biaozhun_guige(biaozhun,guige){
$.post("/admin/drawing/search", {biaozhun: biaozhun,guige:guige}, function (result) {
console.log(result.data);
if(result.count>0){
$(".select_drawing_window table tbody").empty();
result.data.forEach((item)=>{
$(".select_drawing_window table tbody").append('<tr>\n' +
'\t\t\t\t\t<td>'+item.biaozhun+'</td>\n' +
'\t\t\t\t\t<td>'+item.guige+'</td>\n' +
'\t\t\t\t</tr>');
});
show_windows();
//初始货 弹出窗口的点击事件
init_window_tr_click();
}else{
layer.msg("暂无记录");
return;
}
}, "json");
}
//初化窗口的点击事件。
function init_window_tr_click(){
var tableList = $(".select_drawing_window").find("table");
var table = $(tableList)[0];
var trList = $(table).find("tbody").find("tr");
for(var i=0;i<trList.size();i++){
$(trList.eq(i)).off("click").on("click",function(){
console.log($(this));
var td_list = $(this).find("td");
var biaozhun = $((td_list)[0]).text().trim_shou_wei();
var guige = $((td_list)[1]).text().trim_shou_wei();
console.log(biaozhun);
console.log(guige);
//给这个位置写上数据
var trList = $("#ruku_list table tbody tr");
var biaozhun = $(trList).eq(row_index).find('input[type="text"]#biaozhun').eq(0).val(biaozhun);
var guige =$(trList).eq(row_index).find('input[type="text"]#guige').eq(0).val(guige);
close_windows();
});
}
}
function add_row() {
if(save_flag){
return;
}
$("#ruku_list table tbody").append(' ' +
'<tr row="'+row+'" style="cursor: pointer; ">\n' +
' <td style=" padding: 0px;"><input id="biaozhun" class="layui-input" type="text" /></td>\n' +
' <td style=" padding: 0px;"><input id="guige" class="layui-input" type="text" /></td>\n' +
' <td style=" padding: 0px;"><input id="weight" class="layui-input" type="text" /></td>\n' +
' <td style=" padding: 0px;"><input id="number1" class="layui-input" type="text" /></td>\n' +
' <td style=" padding: 0px;"><input id="danjia" class="layui-input" type="text" /></td>\n' +
' <td style=" padding: 0px;"><input id="zongjia" class="layui-input" type="text" /></td>\n' +
' <td style="text-align: center; padding: 0px; " > ' +
material_select_html +
' </td>\n' +
' <td style="text-align: center; padding: 0px; " > ' +
superlier_select_html +
' </td>\n' +
' <td style="text-align: center; padding: 0px;"> ' +
'<button type="button" id="del" class="layui-btn layui-btn-xs layui-btn-danger">删除</button>\n' +
' </td>\n' +
' </tr>');
var obj = {};
obj.row = row;//添加一个空行。
obj.biaozhun = "";
obj.guige ="";
obj.weight ="";
obj.number1 = "";
obj.danjia ="";
obj.zongjia ="";
select_array.push(obj);
w_form.render(); //更新全部表单
init_del_click();
listen_key_code();//监听键盘
row++;
}
//初始化删除按钮操作
function init_del_click() {
var delList = $("#ruku_list ").find("button#del");
console.log("delList长度::" + delList.size());
$(delList).click(function () {
console.log($(this));
if(save_flag){
return;
}
//执行删除本行操作
$(this).parent().parent().remove();
//执行删除本行操作parent
});
}
//初始化,供应商、材质、工艺的下拉数据
function init_superlier_technology_material(){
$.post('/admin/supplier/list', {page:1,limit:10000}, function (result) {
superlier_select_arr = result.data;
superlier_select_html = superlier_select_html + "<select id='supplier_id'>";
result.data.forEach((supplier)=>{
superlier_select_html = superlier_select_html + '<option value="'+supplier.id+'">'+supplier.name+'</option>';
})
superlier_select_html = superlier_select_html + "</select>";
}, 'json');
/*
$.post('/admin/technology/list', {page:1,limit:10000}, function (result) {
technology_select_arr = result.data;
technology_select_html = technology_select_html + "<select>";
result.data.forEach((technology)=>{
technology_select_html = technology_select_html + '<option value="'+technology.id+'">'+technology.name+'</option>';
})
technology_select_html = technology_select_html + "</select>";
}, 'json');
*/
$.post('/admin/material/list', {page:1,limit:10000}, function (result) {
material_select_arr = result.data;
material_select_html = material_select_html + "<select id='material_id'>";
result.data.forEach((material)=>{
material_select_html = material_select_html + '<option value="'+material.id+'">'+material.name+'</option>';
})
material_select_html = material_select_html + "</select>";
}, 'json');
}
function save(){
if(select_array.length<1){
layer.msg("暂无数据,提交失败!");
return;
}
var index = layer.msg('提交中,请稍候', {
icon: 16,
time: false,
shade: 0.8
});
var headRemark = $("#remark").val();
var row_num = 1;
if (select_array.some(function(item) {
if(item.biaozhun.length<1){
layer.msg("第"+row_num+"行,请输入正确的标准");
return true;
}
if(item.guige.length<1){
layer.msg("第"+row_num+"行,请输入正确的规格");
return true;
}
if(!test_num2(item.number1)){
layer.msg("第"+row_num+"行,请输入正确的数量");
return true;
}
if(!test_float_num(item.danjia)){
layer.msg("第"+row_num+"行,请输入正确的单价");
return true;
}
if(!test_float_num(item.zongjia)){
layer.msg("第"+row_num+"行,请输入正确的总价");
return true;
}
if(!test_float_num(item.weight)){
layer.msg("第"+row_num+"行,请输入正确的重量");
return true;
}
row_num++;
})) {
return;
}
$.post("/admin/ycl/head/ruku", {id:headId,userId: "[[${session.currentUser.id}]]",select_array:JSON.stringify(select_array),remark:headRemark}, function (result) {
if(result.success){
$("#save").attr("onclick","void();");
$("#save").text("提交成功");
save_flag = true;
layer.confirm("提交成功", {
btn: ['好','我知道了'] //按钮
}, function(){
layer.closeAll();
}, function(){
layer.closeAll();
});
}else{
}
}, "json");
}站长微信:xiaomao0055
站长QQ:14496453