配件入库

This commit is contained in:
cwchen 2024-11-12 20:10:13 +08:00
parent c8593e3f8b
commit b61aecb994
5 changed files with 428 additions and 146 deletions

View File

@ -127,7 +127,7 @@ blockquote {
text-align: left; text-align: left;
} }
.classTable tr:nth-child(odd) { .classTable tr th {
background-color: #f2f2f2; background-color: #f2f2f2;
} }

View File

@ -1,13 +1,12 @@
let idParam, objParam, fileList = new Array(), imgListUp = new Array(); let idParam, objParam, fileList = new Array(), imgListUp = new Array();
let form, laydate, layer, upload, table, util; let form, laydate, layer, upload, table, util;
let pageNum = 1, tableIns; // 定义分页 let pageNum = 1, tableIns; // 定义分页
let jjDataArr = []; // 新增需求计划外机具的数据 let jjDataArr = []; // 入库配件数据
let jjDetailArr = []; // 机具明细数据 let jjDetailArr = []; // 机具明细数据
let cjList = []; // 厂家下拉选
let delIdArr = [];
function setParams(obj) { function setParams(obj) {
objParam = JSON.parse(obj); objParam = JSON.parse(obj);
idParam = objParam.proId;
$('#proName').html(objParam.proName);
$('#planNum').html(objParam.planNum);
layui.use(['form', 'layer', 'laydate', 'upload', 'table'], function () { layui.use(['form', 'layer', 'laydate', 'upload', 'table'], function () {
form = layui.form; form = layui.form;
layer = layui.layer; layer = layui.layer;
@ -16,7 +15,7 @@ function setParams(obj) {
table = layui.table; table = layui.table;
util = layui.util; util = layui.util;
laydate.render({ laydate.render({
elem: '#createDay' elem: '#inputDay'
}); });
form.verify(); form.verify();
form.on('submit(formData)', function (data) { form.on('submit(formData)', function (data) {
@ -51,6 +50,7 @@ function setParams(obj) {
} }
}); });
}); });
getVendList();
} }
// 设置文件类型 // 设置文件类型
function handleFileType(index, file, result) { function handleFileType(index, file, result) {
@ -106,25 +106,6 @@ function saveData2() {
$('#formSubmit').trigger('click') $('#formSubmit').trigger('click')
} }
// 复选框全选
function selectAll(selectStatus) {//传入参数(全选框的选中状态)
//根据name属性获取到单选框的input使用each方法循环设置所有单选框的选中状态
if (selectStatus) {
$("input[name='check']").each(function (i, n) {
n.checked = true;
$(n).parent().parent().find('td').eq(2).find('input').prop('readonly', false).removeAttr('style').val('0');
});
} else {
$("input[name='check']").each(function (i, n) {
n.checked = false;
$(n).parent().parent().find('td').eq(2).find('input').prop('readonly', true).css({
'background-color': '#f0f0f0',
'border': '1px solid #d9d9d9'
}).val('');
});
}
}
function setNumColor(value, type) { // 1.需要量 2.已发货量 3.差缺量 function setNumColor(value, type) { // 1.需要量 2.已发货量 3.差缺量
let color = '#66b1ff'; let color = '#66b1ff';
if (type === 1) { if (type === 1) {
@ -140,32 +121,22 @@ function setNumColor(value, type) { // 1.需要量 2.已发货量 3.差缺量
// 提交 // 提交
function submitApply(data) { function submitApply(data) {
let list = []; let list = getBaseTableData();
// 校验发货附件是否上传 // 校验附件证明是否上传
if (fileList.length === 0) { if (fileList.length === 0) {
return layer.msg('请上传发货附件', { icon: 7 }); return layer.msg('请上传附件证明', { icon: 7 });
} }
// 校验调整量发生变化是否填写备注 // 校验配件入库数量
for (let i = 0; i < jjDetailArr.length; i++) {
let obj = jjDetailArr[i];
if (obj.tzNum > 0 && !obj.remarks) {
return layer.msg(obj.type + '-' + obj.name + '-' + obj.module + ',已修改调整量,请填写备注', { icon: 7 });
}
}
// 添加机具发货数据
for (let i = 0; i < jjDetailArr.length; i++) {
let obj = jjDetailArr[i];
if (obj.num > 0 || obj.tzNum > 0) {
list.push(obj);
}
}
// 校验机具发货数量
if (list.length === 0) { if (list.length === 0) {
return layer.msg('未填写发货数量', { icon: 7 }); return layer.msg('未填写配件入库数量', { icon: 7 });
} }
data.field.proId = idParam; for (let i = 0; i < list.length; i++) {
data.field.list = list;
data.field.addList = jjDataArr; if (!list[i].inputNum || list[i].inputNum === '0') {
return layer.msg('入库配件明细,第' + (i + 1) + '行,未填写配件入库数量', { icon: 7 });
}
}
data.field.details = list;
let formData = new FormData(); let formData = new FormData();
//遍历最终文件集合 //遍历最终文件集合
for (let i = 0; i < fileList.length; i++) { for (let i = 0; i < fileList.length; i++) {
@ -175,7 +146,7 @@ function submitApply(data) {
console.log(JSON.stringify(data.field)); console.log(JSON.stringify(data.field));
let loadingMsg = layer.msg('正在提交保存,请稍等...', { icon: 16, shade: 0.01, time: '0' }); let loadingMsg = layer.msg('正在提交保存,请稍等...', { icon: 16, shade: 0.01, time: '0' });
console.log(JSON.stringify(data.field)); console.log(JSON.stringify(data.field));
let url = dataUrl + 'backstage/planOut/insertProOutPutInfo'; let url = dataUrl + 'backstage/partInput/addInputData';
ajaxRequestByUploadFile(url, formData, function () { ajaxRequestByUploadFile(url, formData, function () {
$('.save').addClass("layui-btn-disabled").attr("disabled", true); $('.save').addClass("layui-btn-disabled").attr("disabled", true);
$('.cancel').addClass("layui-btn-disabled").attr("disabled", true); $('.cancel').addClass("layui-btn-disabled").attr("disabled", true);
@ -199,17 +170,25 @@ function submitApply(data) {
}, null); }, null);
} }
// 获取入库配件明细数据
// 处理数字 function getBaseTableData() {
function handleNum(value) { let tableData = [];
if (!value) { $('#baseTable tbody tr').each(function (index, item) {
return null; let price = $(this).find('td').eq(7).find('input[name="price"]').val();
} let num = $(this).find('td').eq(6).find('input[name="num"]').val();
const regex = /^(0|[1-9]\d{0,6})$/; tableData.push({
if (!regex.test(value)) { partId: $(this).attr('id'),
return layer.msg('格式不正确最大输入6位数且为正整数', { icon: 7 }) partType: $(this).find('td').eq(2).html(),
} partName: $(this).find('td').eq(3).html(),
return null; partModel: $(this).find('td').eq(4).html(),
partUnit: $(this).find('td').eq(5).html(),
inputNum: num ? num : 0,
partPrice: price ? price : 0,
vendId: $(this).find('td').eq(8).find('select[name="manufacturer"]').val(),
remark: $(this).find('td').eq(9).find('input[name="remarks"]').val(),
})
})
return tableData;
} }
@ -222,10 +201,244 @@ function chooseFitType() {
openIframeByParamObj("choose_fit_type", '选择入库配件类型', "./choose_fit_type_list.html", '92%', '95%', params); openIframeByParamObj("choose_fit_type", '选择入库配件类型', "./choose_fit_type_list.html", '92%', '95%', params);
} }
function addJjDatas(data) { // 查询
console.log('新增的数据:' + data); function search() {
jjDataArr = JSON.parse(data); let keyWord = $('#type').val();
let keyWord2 = $('#name').val();
let keyWord3 = $('#model').val();
if (!keyWord && !keyWord2 && !keyWord3) {
setTableData(jjDataArr);
} else if (keyWord && !keyWord2 && !keyWord3) {
let dataList = jjDataArr.filter(item => {
return item.type.indexOf(keyWord) > -1;
})
setTableData(dataList);
} else if (!keyWord && keyWord2 && !keyWord3) {
let dataList = jjDataArr.filter(item => {
return item.name.indexOf(keyWord2) > -1;
})
setTableData(dataList);
} else if (!keyWord && !keyWord2 && keyWord3) {
let dataList = jjDataArr.filter(item => {
return item.model.indexOf(keyWord3) > -1;
})
setTableData(dataList);
} else if (keyWord && keyWord2 && !keyWord3) {
let dataList = jjDataArr.filter(item => {
return item.type.indexOf(keyWord) > -1 && item.name.indexOf(keyWord2) > -1;
})
setTableData(dataList);
} else if (keyWord && !keyWord2 && keyWord3) {
let dataList = jjDataArr.filter(item => {
return item.type.indexOf(keyWord) > -1 && item.model.indexOf(keyWord3) > -1;
})
setTableData(dataList);
} else if (!keyWord && keyWord2 && keyWord3) {
let dataList = jjDataArr.filter(item => {
return item.name.indexOf(keyWord2) > -1 && item.model.indexOf(keyWord3) > -1;
})
setTableData(dataList);
} else if (keyWord && keyWord2 && keyWord3) {
let dataList = jjDataArr.filter(item => {
return item.type.indexOf(keyWord) > -1 && item.name.indexOf(keyWord2) > -1 && item.model.indexOf(keyWord3) > -1;
})
setTableData(dataList);
} }
}
// 重置
function resetSearch() {
$('#type').val('');
$('#name').val('');
$('#model').val('');
setTableData(jjDataArr);
}
// 子页面回调数据
function addFitDatas(data) {
console.log('新增的数据:' + data);
if (jjDataArr.length > 0) { // 继续添加数据
let newJjDataArr = JSON.parse(data);
$.each(newJjDataArr, function (index, item) {
updateOrAddObject(item.id, item);
});
setTableData(jjDataArr);
} else { // 第一次添加数据
jjDataArr = JSON.parse(data);
if (jjDataArr && jjDataArr.length > 0) {
$('#no_data_title').css({ 'display': 'none' });
$('#search-info').removeAttr('style');
$('#table-box').removeAttr('style');
setTableData(jjDataArr);
}
}
function updateOrAddObject(id, newObject) {
const index = jjDataArr.findIndex(obj => obj.id === id);
if (index !== -1) {
// 如果对象存在,则替换它
jjDataArr[index] = newObject;
} else {
// 如果对象不存在,则添加到数组
jjDataArr.push(newObject);
}
}
}
// 入库配件明细表格赋值
function setTableData(results) {
$('#allCheck').prop('checked', false)
var html = "";
if (results && results.length > 0) {
for (var i = 0; i < results.length; i++) {
var l = results[i];
html += "<tr id='" + l.id + "'>";
html += '<td><input onclick="sel(this.checked,this,' + l.id + ')" name="check" type="checkbox"></td>';
html += "<td style='vertical-align:middle;' class='center hidden-480'>"
+ (i + 1) + "</td>";
html += "<td>" + l.type + "</td>";
html += "<td>" + l.name + "</td>";
html += "<td>" + l.model + "</td>";
html += "<td>" + l.unit + "</td>";
html += "<td>" + setFormInput(l.num, 1) + "</td>";
html += "<td>" + setFormInput(l.price, 2) + "</td>";
html += "<td>" + setFormInput(l.manufacturer, 3) + "</td>";
html += "<td>" + setFormInput(l.remarks, 4) + "</td>";
html += "</tr>";
}
} else {
html += "<tr><td colspan='10' class='center'>没有相关数据</td></tr>";
}
$("#baseTable tbody").empty().append(html);
layui.form.render();
}
function setFormInput(value, type) {
let html = '<form class="layui-form layuimini-form"><div class="layui-inline">';
if (type === 1) { // 入库量
html += '<input class="layui-input" name="num" onblur="checkValue(this,1)" value="' + setNullValue(value) + '" autocomplete="off" lay-verify="required" maxlength="9" lay-affix="clear">';
} else if (type === 2) { // 单价
html += '<input class="layui-input" name="price" onblur="checkValue(this,2)" value="' + setNullValue(value) + '" autocomplete="off" lay-verify="required" maxlength="9" lay-affix="clear">';
} else if (type === 3) { // 厂家
html += '<select class="layui-select" name="manufacturer" id="manufacturer" lay-search>' +
setSelectData(value) +
'</select>';
} else if (type === 4) { // 备注
html += '<input class="layui-input" placeholder="请输入备注" id="remarks" name="remarks" value="' + setNullValue(value) + '" maxLength="255" lay-affix="clear"></input>';
}
html += '</div></form>';
return html;
}
function setSelectData(value) {
let html = '';
$.each(cjList, function (index, item) {
if (item.id === value) {
html += '<option value="' + item.id + '" selected>' + item.name + '</option>'
} else {
html += '<option value="' + item.id + '">' + item.name + '</option>'
}
})
return html;
}
// 厂家下拉选
function getVendList() {
cjList.splice(0, cjList.length);
let encryptedData = {};
let url = dataUrl + 'backstage/paType/getVendList?encryptedData=' + encodeURIComponent(JSON.stringify(encryptedData));
ajaxRequest(url, "GET", null, false, function () {
}, function (result) {
console.log(result);
if (result.code === 200) {
cjList = result.data;
}
}, function (xhr, status, error) {
errorFn(xhr, status, error)
}, null);
}
// 复选框全选
function selectAll(selectStatus) {//传入参数(全选框的选中状态)
if (selectStatus) {
$("input[name='check']").each(function (i, n) {
n.checked = true;
});
$.each(jjDataArr, function (index, item) {
delIdArr.push(item.id);
})
} else {
$("input[name='check']").each(function (i, n) {
n.checked = false;
});
delIdArr.splice(0, delIdArr.length);
}
}
// 单个选中
function sel(selectStatus, that, id) {
if (selectStatus) {
$(that).prop('checked', true);
delIdArr.push(id);
} else {
$(that).prop('checked', false);
for (let i = 0; i < delIdArr.length; i++) {
if (delIdArr[i] == id) {
arr.splice(i, 1);
break;
}
}
}
}
// 删除选中
function delFitType() {
if (delIdArr.length == 0) {
layer.msg('请先选择需要删除的数据!', { icon: 7 })
return;
}
let layerIndex = layer.confirm('<h5 style="color:red">确定要删除选中数据吗!</h5>', { title: '操作提示' }, function () {
layer.close(layerIndex);
for (let i = 0; i < delIdArr.length; i++) {
for (let j = 0; j < jjDataArr.length; j++) {
let id = jjDataArr[j].id;
if (delIdArr[i] == id) {
jjDataArr.splice(j, 1);
break;
}
}
}
if (jjDataArr.length === 0) {
$('#no_data_title').removeAttr('style');
$('#search-info').css({ 'display': 'none' });
$('#table-box').css({ 'display': 'none' });
} else {
setTableData(jjDataArr);
}
});
}
// 校验数据
function checkValue(that, type) {
let value = $(that).val();
if (type === 1) { // 入库量
const regex = /^(0|[1-9]\d{0,6})$/;
if (!regex.test(value) && value) {
layer.msg('入库量输入不合法,请重新输入!', { icon: 5 })
$(that).val('');
}
} else if (type === 2) { // 单价
const regex = /^(?:1(?:\d{0,8}|[0-9]*\.\d{1,2})|(?:[1-9]\d{0,7}|[1-9]\d{0,6}\.\d{1,2}|[1-9]\d{1,7}\.\d{2}|100000000(?:\.00)?))$/;
if (!regex.test(value) && value) {
layer.msg('单价输入不合法,请重新输入!', { icon: 5 })
$(that).val('');
}
}
}
// 关闭页面 // 关闭页面
function closePage(type) { function closePage(type) {
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引

View File

@ -4,20 +4,38 @@ let pageNum = 1;
let quanju = new Array();//全局 let quanju = new Array();//全局
let huancun = new Array();//缓存 let huancun = new Array();//缓存
let huancunObj = new Array();//缓存2 let huancunObj = new Array();//缓存2
let cjList = [];
let jjDetailArr = []; // 入库配件类型数据
function setParams(obj) { function setParams(obj) {
objParam = JSON.parse(obj); objParam = JSON.parse(obj);
console.log(objParam); console.log(objParam);
$('#proName').html(objParam.proName);
layui.use(["form", "table", 'element', 'layer', 'util'], function () { layui.use(["form", "table", 'element', 'layer', 'util'], function () {
form = layui.form; form = layui.form;
table = layui.table; table = layui.table;
element = layui.element; element = layui.element;
layer = layui.layer; layer = layui.layer;
util = layui.util; util = layui.util;
getVendList();
initTable(); initTable();
}); });
} }
// 厂家下拉选
function getVendList() {
cjList.splice(0, cjList.length);
let encryptedData = {};
let url = dataUrl + 'backstage/paType/getVendList?encryptedData=' + encodeURIComponent(JSON.stringify(encryptedData));
ajaxRequest(url, "GET", null, false, function () {
}, function (result) {
console.log(result);
if (result.code === 200) {
cjList = result.data;
}
}, function (xhr, status, error) {
errorFn(xhr, status, error)
}, null);
}
// 查询/重置 // 查询/重置
function queryTable(type) { function queryTable(type) {
if (type === 1) { if (type === 1) {
@ -25,6 +43,7 @@ function queryTable(type) {
} else if (type === 2) { } else if (type === 2) {
$('#name').val(''); $('#name').val('');
$('#module').val(''); $('#module').val('');
$('#type').val('');
layui.form.render(); layui.form.render();
reloadTable(1); reloadTable(1);
} }
@ -39,7 +58,8 @@ function reloadTable(pageNum) {
where: { where: {
encryptedData: JSON.stringify({ encryptedData: JSON.stringify({
'name': $('#name').val(), 'name': $('#name').val(),
'module': $('#module').val(), 'model': $('#model').val(),
'type': $('#type').val(),
}), }),
}, },
}, },
@ -56,11 +76,12 @@ function initTable() {
headers: { headers: {
authorization: sessionStorage.getItem("gz-token"), authorization: sessionStorage.getItem("gz-token"),
}, },
url: dataUrl + "backstage/planOut/getPorInfoDetail", url: dataUrl + "backstage/paType/findByPage",
where: { where: {
encryptedData: JSON.stringify({ encryptedData: JSON.stringify({
'type': $('#type').val(),
'name': $('#name').val(), 'name': $('#name').val(),
'module': $('#module').val(), 'model': $('#model').val(),
}), }),
}, },
request: { request: {
@ -68,17 +89,18 @@ function initTable() {
limitName: 'pageSize' limitName: 'pageSize'
}, },
parseData: function (res) { // res 即为原始返回的数据 parseData: function (res) { // res 即为原始返回的数据
/* if (jjDetailArr && res.list) { if (jjDetailArr && res.list) {
$.each(res.list, function (index, item) { $.each(res.list, function (index, item) {
$.each(jjDetailArr, function (index2, item2) { $.each(jjDetailArr, function (index2, item2) {
if (item.id === item2.id) { if (item.id === item2.id) {
item.num = item2.num; item.num = item2.num;
item.tzNum = item2.tzNum; item.price = item2.price;
item.outId = item2.outId; item.remarks = item2.remarks;
item.manufacturer = item2.manufacturer;
} }
}); });
}); });
} */ }
return { return {
"code": 0, // 解析接口状态 "code": 0, // 解析接口状态
"msg": '获取成功', // 解析提示文本 "msg": '获取成功', // 解析提示文本
@ -112,7 +134,7 @@ function initTable() {
align: "center", align: "center",
}, },
{ {
field: "module", field: "model",
width: '10%', width: '10%',
title: "规格型号", title: "规格型号",
unresize: true, unresize: true,
@ -135,7 +157,7 @@ function initTable() {
style: 'outline: 1px solid #e6e6e6;outline-offset: -5px;' style: 'outline: 1px solid #e6e6e6;outline-offset: -5px;'
}, },
{ {
field: "num", field: "price",
width: '9.8%', width: '9.8%',
title: "单价(元)", title: "单价(元)",
unresize: true, unresize: true,
@ -144,16 +166,15 @@ function initTable() {
style: 'outline: 1px solid #e6e6e6;outline-offset: -5px;' style: 'outline: 1px solid #e6e6e6;outline-offset: -5px;'
}, },
{ {
field: "num", field: "manufacturer",
width: '15%', width: '15%',
title: "<span style='color:red'> * </span>配件厂家", title: "<span style='color:red'> * </span>配件厂家",
unresize: true, unresize: true,
align: "center", align: "center",
templet: '#TPL-select-demo' templet: '#TPL-select-demo'
// style: 'outline: 1px solid #e6e6e6;outline-offset: -5px;'
}, },
{ {
field: "remark", field: "remarks",
width: '12%', width: '12%',
title: "备注", title: "备注",
unresize: true, unresize: true,
@ -171,25 +192,15 @@ function initTable() {
var options = this; var options = this;
table.resize("currentTableId"); table.resize("currentTableId");
pageNum = tableIns.config.page.curr; pageNum = tableIns.config.page.curr;
// layui form select 事件
form.on('select(select-demo)', function (obj) { form.on('select(select-demo)', function (obj) {
console.log(obj); console.log(obj);
var value = obj.value; // 获取选中项 value var value = obj.value; // 获取选中项 value
// 获取当前行数据(如 id 等字段,以作为数据修改的索引) // 获取当前行数据(如 id 等字段,以作为数据修改的索引)
var data = table.getRowData(options.id, obj.elem); var data = table.getRowData(options.id, obj.elem);
// 更新数据中对应的字段 // 更新数据中对应的字段
data.city = value; data.manufacturer = value;
// 显示当前行最新数据 - 仅用于示例展示 updateOrAddObject(data.id, data);
showData(data);
}); });
// 展示数据 - 仅用于演示
var showData = function (data) {
return layer.msg('当前行最新数据:<br>' + util.escape(JSON.stringify(data)), {
offset: '16px',
anim: 'slideDown'
});
};
// 获取当前行数据 - 自定义方法 // 获取当前行数据 - 自定义方法
table.getRowData = function (tableId, elem) { table.getRowData = function (tableId, elem) {
var index = $(elem).closest('tr').data('index'); var index = $(elem).closest('tr').data('index');
@ -198,8 +209,6 @@ function initTable() {
//设置全部数据到全局变量 //设置全部数据到全局变量
quanju = res.data; quanju = res.data;
//在缓存中找到id ,然后设置data表格中的选中状态
//循环所有数据找出对应关系设置checkbox选中状态
for (var i = 0; i < res.data.length; i++) { for (var i = 0; i < res.data.length; i++) {
for (var j = 0; j < huancun.length; j++) { for (var j = 0; j < huancun.length; j++) {
//数据id和要勾选的id相同时checkbox选中 //数据id和要勾选的id相同时checkbox选中
@ -222,14 +231,10 @@ function initTable() {
} }
}, },
}); });
table.on('edit(currentTableId)', function (obj) { table.on('edit(currentTableId2)', function (obj) {
console.log(obj);
var field = obj.field; // 得到修改的字段 var field = obj.field; // 得到修改的字段
var value = obj.value // 得到修改后的值 var value = obj.value // 得到修改后的值
var oldValue = obj.oldValue // 得到修改前的值 -- v2.8.0 新增 if (field === 'num') { // 本次入库量
var data = obj.data // 得到所在行所有键值
var col = obj.getCol(); // 得到当前列的表头配置属性 -- v2.8.0 新增
if (field === 'num' || field === 'tzNum') { // 本次发货量/调整量
if (value) { if (value) {
const regex = /^(0|[1-9]\d{0,6})$/; const regex = /^(0|[1-9]\d{0,6})$/;
if (!regex.test(value)) { if (!regex.test(value)) {
@ -237,7 +242,13 @@ function initTable() {
return layer.msg('格式不正确最大输入6位数且为正整数', { icon: 7 }) return layer.msg('格式不正确最大输入6位数且为正整数', { icon: 7 })
} }
} }
} else if (field === 'outId') { // 备注 } else if (field === 'price') {
const regex = /^(?:1(?:\d{0,8}|[0-9]*\.\d{1,2})|(?:[1-9]\d{0,7}|[1-9]\d{0,6}\.\d{1,2}|[1-9]\d{1,7}\.\d{2}|100000000(?:\.00)?))$/;
if (!regex.test(value)) {
obj.reedit();
return layer.msg('单价格式不正确!', { icon: 7 })
}
} else if (field === 'remarks') { // 备注
if (value) { if (value) {
if (value.length > 255) { if (value.length > 255) {
obj.reedit(); obj.reedit();
@ -248,34 +259,19 @@ function initTable() {
// 显示 - 仅用于演示 // 显示 - 仅用于演示
// layer.msg('[ID: ' + data.id + '] ' + field + ' 字段更改值为:' + util.escape(value)); // layer.msg('[ID: ' + data.id + '] ' + field + ' 字段更改值为:' + util.escape(value));
let id = obj.data.id; let id = obj.data.id;
let num = obj.data.num; updateOrAddObject(id, obj.data);
let tzNum = obj.data.tzNum;
let outId = obj.data.outId;
let type = obj.data.type;
let name = obj.data.name;
let module = obj.data.module;
let objParam = {
id: id,
num: num,
tzNum: tzNum,
outId: outId,
type: type,
name: name,
module: module,
remarks: outId
}
updateOrAddObject(id, objParam);
}); });
//复选框选中监听,将选中的id 设置到缓存数组,或者删除缓存数组 //复选框选中监听,将选中的id 设置到缓存数组,或者删除缓存数组
table.on('checkbox(currentTableId2)', function (obj) { table.on('checkbox(currentTableId2)', function (obj) {
alert(12);
if (obj.checked === true) { if (obj.checked === true) {
if (obj.type === 'one' && huancun.indexOf(obj.data.id) === -1) { if (obj.type === 'one' && huancun.indexOf(obj.data.id) === -1) {
huancun.push(obj.data.id); huancun.push(obj.data.id);
huancunObj.push(obj.data);
} else { } else {
for (let i = 0; i < quanju.length; i++) { for (let i = 0; i < quanju.length; i++) {
if (huancun.indexOf(quanju[i].id) === -1) { if (huancun.indexOf(quanju[i].id) === -1) {
huancun.push(quanju[i].id); huancun.push(quanju[i].id);
huancunObj.push(quanju[i]);
} }
} }
} }
@ -284,6 +280,7 @@ function initTable() {
for (let i = 0; i < huancun.length; i++) { for (let i = 0; i < huancun.length; i++) {
if (huancun[i] === obj.data.id) { if (huancun[i] === obj.data.id) {
removeByValue(huancun, huancun[i]);//调用自定义的根据值移除函数 removeByValue(huancun, huancun[i]);//调用自定义的根据值移除函数
removeByValue(huancunObj, huancunObj[i]);//调用自定义的根据值移除函数
} }
} }
} else { } else {
@ -291,6 +288,7 @@ function initTable() {
for (let j = 0; j < huancun.length; j++) { for (let j = 0; j < huancun.length; j++) {
if (huancun[j] === quanju[i].id) { if (huancun[j] === quanju[i].id) {
removeByValue(huancun, +huancun[j]);//调用自定义的根据值移除函数 removeByValue(huancun, +huancun[j]);//调用自定义的根据值移除函数
removeByValue(huancunObj, +huancunObj[j]);//调用自定义的根据值移除函数
} }
} }
} }
@ -299,17 +297,83 @@ function initTable() {
}); });
} }
// 根据id 判断对象数组的对象是否存在 如果存在则替换,不存在则添加
function updateOrAddObject(id, newObject) {
const index = jjDetailArr.findIndex(obj => obj.id === id);
if (index !== -1) {
// 如果对象存在,则替换它
jjDetailArr[index] = newObject;
} else {
// 如果对象不存在,则添加到数组
jjDetailArr.push(newObject);
}
}
//自定义方法,根据值去移除
function removeByValue(arr, val) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] == val) {
arr.splice(i, 1);
break;
}
}
for (let i = 0; i < huancunObj.length; i++) {
if (huancunObj[i].id == val) {
huancunObj.splice(i, 1);
break;
}
}
}
// 保存数据
function saveData2(params) {
let dataArr = [];
if (huancun.length === 0) {
return layer.msg('未添加数据', { icon: 7 });
} else {
$.each(huancunObj, function (index, item) {
dataArr.push(item);
})
for (let i = 0; i < huancun.length; i++) {
const id = huancun[i];
for (let j = 0; j < jjDetailArr.length; j++) {
const obj = jjDetailArr[j];
if (id === obj.id) {
updateOrAddObject2(id, obj);
}
}
}
}
console.log(dataArr);
let layerIndex = layer.confirm('<h5 style="color:red">数据即将被添加,请仔细检查数据是否有错误!</h5>', { title: '操作提示' }, function () {
layer.close(layerIndex);
closePage(1, JSON.stringify(dataArr));
});
// 替换对象
function updateOrAddObject2(id, newObject) {
const index = dataArr.findIndex(obj => obj.id === id);
if (index !== -1) {
// 如果对象存在,则替换它
dataArr[index] = newObject;
} else {
// 如果对象不存在,则添加到数组
dataArr.push(newObject);
}
}
}
// 配件类型 // 配件类型
function addFitTypeData() { function addFitTypeData() {
openIframeByParamObj2("add_fit_type_data", "配件类型", "../../../page/basic/fit_type_list.html", "92%", "95%", {}); openIframeByParamObj2("add_fit_type_data", "配件类型", "../../../page/basic/fit_type_list.html", "92%", "95%", {});
} }
function closePage(type) { function closePage(type,params) {
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引 let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
parent.layer.close(index); // 再执行关闭 parent.layer.close(index); // 再执行关闭
if (type == 1) { if (type == 1) {
window.parent.reloadData(); window.parent.addFitDatas(params);
} }
} }

View File

@ -20,8 +20,7 @@
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label required" style="width: 100px !important;">入库人</label> <label class="layui-form-label required" style="width: 100px !important;">入库人</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input class="layui-input" name="userName" id="userName" autocomplete="off" <input class="layui-input" name="inputUser" id="inputUser" autocomplete="off" lay-verify="required" maxlength="30" lay-affix="clear">
lay-verify="required" maxlength="30" lay-affix="clear">
</div> </div>
</div> </div>
<div class="layui-inline"> <div class="layui-inline">
@ -30,7 +29,7 @@
<div class="layui-input-prefix"> <div class="layui-input-prefix">
<i class="layui-icon layui-icon-date"></i> <i class="layui-icon layui-icon-date"></i>
</div> </div>
<input class="layui-input" id="createDay" autocomplete="off" name="createDay" <input class="layui-input" id="inputDay" autocomplete="off" name="inputDay"
lay-verify="required" readonly style="cursor: pointer;"> lay-verify="required" readonly style="cursor: pointer;">
</div> </div>
</div> </div>
@ -38,8 +37,7 @@
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label required" style="width: 100px !important;">备注</label> <label class="layui-form-label required" style="width: 100px !important;">备注</label>
<div class="layui-input-inline" style="width: 764px;"> <div class="layui-input-inline" style="width: 764px;">
<textarea placeholder="请输入备注" lay-verify="required" id="remarks" name="remarks" <textarea placeholder="请输入备注" lay-verify="required" id="remark" name="remark" class="layui-textarea" maxLength="255" lay-affix="clear"></textarea>
class="layui-textarea" maxLength="255" lay-affix="clear"></textarea>
</div> </div>
</div> </div>
<button type="submit" id="formSubmit" class="layui-btn" lay-submit="" lay-filter="formData" <button type="submit" id="formSubmit" class="layui-btn" lay-submit="" lay-filter="formData"
@ -72,22 +70,30 @@
<form class="layui-form layui-form-pane" action="#" onsubmit="return false;"> <form class="layui-form layui-form-pane" action="#" onsubmit="return false;">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-inline"> <div class="layui-inline">
<div class="layui-input-inline" style="width: 300px;"> <div class="layui-input-inline" style="width: 200px;">
<input type="text" name="type" id="type" autocomplete="off" class="layui-input"
lay-affix="clear" placeholder="输入配件类型" maxlength="30">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline" style="width: 200px;">
<input type="text" name="name" id="name" autocomplete="off" class="layui-input" <input type="text" name="name" id="name" autocomplete="off" class="layui-input"
lay-affix="clear" placeholder="输入物机名称" maxlength="30"> lay-affix="clear" placeholder="输入配件名称" maxlength="30">
</div> </div>
</div> </div>
<div class="layui-inline"> <div class="layui-inline">
<div class="layui-input-inline" style="width: 300px;"> <div class="layui-input-inline" style="width: 200px;">
<input type="text" name="module" id="module" autocomplete="off" class="layui-input" <input type="text" name="model" id="model" autocomplete="off" class="layui-input"
lay-affix="clear" placeholder="输入规格" maxlength="30"> lay-affix="clear" placeholder="输入规格型号" maxlength="30">
</div> </div>
</div> </div>
<div class="layui-inline"> <div class="layui-inline">
<button class="layui-btn layui-bg-blue" onclick="queryTable(1)"><i <button class="layui-btn layui-bg-blue" onclick="search()"><i
class="layui-icon"></i> 搜 索</button> class="layui-icon"></i> 搜 索</button>
<button class="layui-btn layui-btn-primary" onclick="queryTable(2)"><i <button class="layui-btn layui-btn-primary" onclick="resetSearch()"><i
class="layui-icon layui-icon-refresh"></i> 重 置</button> class="layui-icon layui-icon-refresh"></i> 重 置</button>
<button class="layui-btn layui-bg-blue" onclick="chooseFitType()">选择入库配件类型</button>
<button class="layui-btn layui-bg-red" onclick="delFitType()">删除选中</button>
</div> </div>
</div> </div>
</form> </form>
@ -98,7 +104,7 @@
<thead> <thead>
<tr> <tr>
<th style="width: 5%" class="center"> <th style="width: 5%" class="center">
<input onclick="selectAll(this.checked)" type="checkbox"> <input id="allCheck" onclick="selectAll(this.checked)" type="checkbox">
</th> </th>
<th style="width: 5%" class="center">序号</th> <th style="width: 5%" class="center">序号</th>
<th style="width: 10%" class="center">配件类型</th> <th style="width: 10%" class="center">配件类型</th>

View File

@ -43,19 +43,19 @@
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-inline"> <div class="layui-inline">
<div class="layui-input-inline" style="width: 160px;"> <div class="layui-input-inline" style="width: 160px;">
<input type="text" name="keyWord" id="keyWord" autocomplete="off" <input type="text" name="type" id="type" autocomplete="off"
class="layui-input" lay-affix="clear" placeholder="输入配件类型" maxlength="30"> class="layui-input" lay-affix="clear" placeholder="输入配件类型" maxlength="30">
</div> </div>
</div> </div>
<div class="layui-inline"> <div class="layui-inline">
<div class="layui-input-inline" style="width: 160px;"> <div class="layui-input-inline" style="width: 160px;">
<input type="text" name="keyWord" id="keyWord" autocomplete="off" <input type="text" name="name" id="name" autocomplete="off"
class="layui-input" lay-affix="clear" placeholder="输入配件名称" maxlength="30"> class="layui-input" lay-affix="clear" placeholder="输入配件名称" maxlength="30">
</div> </div>
</div> </div>
<div class="layui-inline"> <div class="layui-inline">
<div class="layui-input-inline" style="width: 160px;"> <div class="layui-input-inline" style="width: 160px;">
<input type="text" name="keyWord" id="keyWord" autocomplete="off" <input type="text" name="model" id="model" autocomplete="off"
class="layui-input" lay-affix="clear" placeholder="输入规格型号" maxlength="30"> class="layui-input" lay-affix="clear" placeholder="输入规格型号" maxlength="30">
</div> </div>
</div> </div>
@ -86,11 +86,10 @@
</div> </div>
</body> </body>
<script type="text/html" id="TPL-select-demo"> <script type="text/html" id="TPL-select-demo">
{{# var cityList = d.cityList || ["北京","上海","广州","城市-1"]; }} {{# var manufacturerList = cjList; }}
<select name="city" lay-filter="select-demo" lay-append-to="body" lay-search> <select name="city" lay-filter="select-demo" lay-append-to="body" lay-search>
<option value="">select 方式</option> {{# layui.each(manufacturerList, function(i, v){ }}
{{# layui.each(cityList, function(i, v){ }} <option value="{{= v.id }}" {{=v.id===d.manufacturer ? 'selected' : '' }}>{{= v.name }}</option>
<option value="{{= v }}" {{= v === d.city ? 'selected' : '' }}>{{= v }}</option>
{{# }); }} {{# }); }}
</select> </select>
</script> </script>