gz_gqj_web/js/demandPlan/child/add_jj_data.js

223 lines
6.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let form, layer, idParam, objParam;
let moduleList = [];
function setParams(params) {
objParam = JSON.parse(params);
idParam = objParam.proId;
layui.use(["form", "layer"], function () {
form = layui.form;
layer = layui.layer;
// 机具名称下拉选监听事件
form.on('select(name)', function (data) {
getProDevSelected(data.value, 2);
});
// 规格下拉选监听事件
form.on('select(module)', function (data) {
let obj = findObjById(data.value);
$('.classTable tbody tr').find('td').eq(2).html(obj.unit);
$('.classTable tbody tr').find('td').eq(3).html(obj.num);
$('.classTable tbody tr').attr('name', obj.pname)
$('.classTable tbody tr').attr('type', obj.ppName)
$('.classTable tbody tr').attr('module', obj.name)
});
});
getProDevSelected('', 1);
if (objParam.jjDataArrStr) {
// 表格数据回显
let dataArr = JSON.parse(objParam.jjDataArrStr);
$.each(dataArr, function (index, item) {
let html =
"<tr class='pa' pId='" + item.pId + "' id='" + item.id + "' name='" + item.name + "' type='" + item.type + "' module='" + item.module + "'>" +
"<td>" + item.name + "</td>" +
"<td>" + item.module + "</td>" +
"<td>" + item.unit + "</td>" +
"<td>" + item.num + "</td>" +
"<td>" + item.fhNum + "</td>" +
"<td>" + item.remark + "</td>" +
"<td><a style='color:#4491d3;cursor: pointer;' onclick='delPartData(this)'>删除</a></td>" +
"</tr>";
$(".classTable2 tbody").append(html);
});
}
}
// 根据ID查找对象
function findObjById(id) {
return moduleList.find(obj => obj.id === id);
}
// 获取需求计划外机具
function getProDevSelected(id, type) {
let encryptedData = {
'pId': id,
'proId': idParam
};
let url = dataUrl + 'backstage/planOut/getProDevSelected?encryptedData=' + encodeURIComponent(JSON.stringify(encryptedData));
ajaxRequest(url, "GET", null, true, function () {
}, function (result) {
if (result.code === 200) {
if (type === 1) {
setSelectData(result.data);
} else if (type === 2) {
moduleList = [];
moduleList = result.data;
setSelectData2(result.data);
}
}
}, function (xhr, status, error) {
errorFn(xhr, status, error)
}, null);
}
// 机具下拉选赋值
function setSelectData(list) {
let html = '<option value="">请选择</option>';
if (list && list.length > 0) {
$.each(list, function (index, item) {
html += '<option value="' + item.id + '">' + item.name + '</option>';
})
}
$('#name').empty().append(html);
layui.form.render();
}
// 规格下拉选
function setSelectData2(list) {
let html = '<option value="">请选择</option>';
if (list && list.length > 0) {
$.each(list, function (index, item) {
html += '<option value="' + item.id + '" item="' + JSON.stringify(item) + '">' + item.name + '</option>';
})
}
$('#module').empty().append(html);
layui.form.render();
}
// 保存并继续添加
function addTableData() {
// 校验添加的数据
let pId = $('#name').val();
let id = $('#module').val();
let fhNum = $('#fhNum').val();
if (!pId) {
return layer.msg('请选择机具', { icon: 7 });
}
if (!id) {
return layer.msg('请选择规格', { icon: 7 });
}
if (!fhNum) {
return layer.msg('请输入本次发货量', { icon: 7 });
}
let size = $(".pa").length;
if (size === 0) {
addTrData();
} else {
let pId = $('#name').val();
let id = $('#module').val();
let flag = false, trIndex = 0;
$(".classTable2 tbody tr").each(function (index, item) {
let trpId = $(this).attr('pId');
let trId = $(this).attr('id');
if (pId === trpId && id === trId) {
flag = true;
trIndex = index;
}
})
if (flag) {
let fhNum = $('#fhNum').val();
let remark = $('#remark').val();
let layerIndex = layer.confirm('<h5 style="color:red">该配件名称和规格已存在,若继续添加,则会覆盖!</h5>', { title: '操作提示' }, function () {
$(".classTable2 tbody tr").eq(trIndex).find('td').eq(4).html(fhNum);
$(".classTable2 tbody tr").eq(trIndex).find('td').eq(5).html(remark);
layer.close(layerIndex);
});
} else {
addTrData();
}
}
}
// 保存
function saveData() {
let dataArr = [];
let size = $(".pa").length;
if (size === 0) {
return layer.msg('未添加数据', { icon: 7 });
}
$(".pa").each(function (index, item) {
let obj = {};
let pId = $(this).attr('pId');
let id = $(this).attr('id');
let name = $(this).attr('name');
let type = $(this).attr('type');
let module = $(this).attr('module');
let unit = $(this).find('td').eq(2).html();
let num = $(this).find('td').eq(3).html();
let fhNum = $(this).find('td').eq(4).html();
let remark = $(this).find('td').eq(5).html();
obj.pId = pId;
obj.id = id;
obj.moduleId = id;
obj.type = type;
obj.name = name;
obj.module = module;
obj.unit = unit;
obj.num = num;
obj.fhNum = fhNum;
obj.remark = remark;
dataArr.push(obj);
})
let layerIndex = layer.confirm('<h5 style="color:red">数据即将被添加,请仔细检查数据是否有错误!</h5>', { title: '操作提示' }, function () {
layer.close(layerIndex);
closePage(1, JSON.stringify(dataArr));
});
}
function addTrData() {
let name = $('.classTable tbody tr').attr('name');
let type = $('.classTable tbody tr').attr('type');
let module = $('.classTable tbody tr').attr('module');
let pId = $('#name').val();
let id = $('#module').val();
let unit = $('.classTable tbody tr').find('td').eq(2).html();
let num = $('.classTable tbody tr').find('td').eq(3).html();
let fhNum = $('#fhNum').val();
let remark = $('#remark').val();
let html = "<tr class='pa' pId='" + pId + "' id='" + id + "' name='" + name + "' type='" + type + "' module='" + module + "'>" +
"<td>" + name + "</td>" +
"<td>" + module + "</td>" +
"<td>" + unit + "</td>" +
"<td>" + num + "</td>" +
"<td>" + fhNum + "</td>" +
"<td>" + remark + "</td>" +
"<td><a style='color:#4491d3;cursor: pointer;' onclick='delPartData(this)'>删除</a></td>" +
"</tr>";
$(".classTable2 tbody").append(html);
}
function delPartData(that) {
var indexMsg = layer.confirm("<h5 style='color:red'>您确定删除此条数据吗?</h5>", { btn: ['确定', '取消'] }, function () {
layer.close(indexMsg);
$(that).parent().parent().remove();
});
}
// 处理数字
function handleNum(that, value) {
if (!value) {
return;
}
const regex = /^(1|[1-9]\d{0,6})$/;
if (!regex.test(value)) {
layer.msg('格式不正确最小为1,最大输入6位数且为正整数', { icon: 7 })
$(that).val(1);
}
}
function closePage(type, params) {
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
if (type == 1) {
window.parent.addJjDatas(params);
}
parent.layer.close(index); // 再执行关闭
}