321 lines
11 KiB
JavaScript
321 lines
11 KiB
JavaScript
let idParam, objParam;
|
|
let form, laydate, layer, upload, table, util;
|
|
let pageNum = 1, tableIns; // 定义分页
|
|
let jjDataArr = []; // 配件数据
|
|
let proList = []; // 工程下拉选
|
|
let delIdArr = [];
|
|
function setParams(obj) {
|
|
objParam = JSON.parse(obj);
|
|
layui.use(['form', 'layer', 'laydate', 'upload', 'table'], function () {
|
|
form = layui.form;
|
|
layer = layui.layer;
|
|
laydate = layui.laydate;
|
|
upload = layui.upload;
|
|
table = layui.table;
|
|
util = layui.util;
|
|
laydate.render({
|
|
elem: '#needTime'
|
|
});
|
|
form.verify();
|
|
form.on('submit(formData)', function (data) {
|
|
submitApply(data);
|
|
});
|
|
form.render();
|
|
getProList();
|
|
});
|
|
}
|
|
|
|
// 工程下拉选
|
|
function getProList() {
|
|
let url = dataUrl + 'backstage/planApplication/getProList';
|
|
ajaxRequest(url, "POST", null, false, function () {
|
|
}, function (result) {
|
|
if (result.code === 200) {
|
|
setSelectData(result.data);
|
|
}
|
|
}, function (xhr, status, error) {
|
|
errorFn(xhr, status, error)
|
|
}, null);
|
|
}
|
|
|
|
// 工程下拉选赋值
|
|
function setSelectData(proList) {
|
|
let html = '';
|
|
$.each(proList, function (index, item) {
|
|
html += '<option value="' + item.id + '">' + item.name + '</option>'
|
|
})
|
|
$('#projectId').empty().append(html);
|
|
layui.form.render();
|
|
}
|
|
|
|
function saveData2() {
|
|
$('#formSubmit').trigger('click')
|
|
}
|
|
|
|
function setNumColor(value, type) { // 1.需要量 2.已发货量 3.差缺量
|
|
let color = '#66b1ff';
|
|
if (type === 1) {
|
|
color = '#66b1ff';
|
|
} else if (type === 2) {
|
|
color = '#19be6b';
|
|
} else if (type === 3) {
|
|
color = '#ff9900';
|
|
}
|
|
return '<span style="color:' + color + ';font-weight:bold;">' + value + "</span>";
|
|
}
|
|
|
|
|
|
// 提交
|
|
function submitApply(data) {
|
|
let list = getBaseTableData();
|
|
// 校验配件入库数量
|
|
if (list.length === 0) {
|
|
return layer.msg('未添加机具数据', { icon: 7 });
|
|
}
|
|
for (let i = 0; i < list.length; i++) {
|
|
if (list[i].needNum === 0) {
|
|
return layer.msg('机具明细,第' + (i + 1) + '行,未填写需用量', { icon: 7 });
|
|
}
|
|
if (list[i].times === 0) {
|
|
return layer.msg('机具明细,第' + (i + 1) + '行,未填写需用天数', { icon: 7 });
|
|
}
|
|
}
|
|
data.field.jsonData = JSON.stringify(list);
|
|
let loadingMsg = layer.msg('正在提交保存,请稍等...', { icon: 16, shade: 0.01, time: '0' });
|
|
let url = dataUrl + 'backstage/planApplication/addPlan';
|
|
let params = {
|
|
encryptedData:JSON.stringify(data.field)
|
|
};
|
|
ajaxRequest(url, 'POST', params, true, function () {
|
|
$('.save').addClass("layui-btn-disabled").attr("disabled", true);
|
|
$('.cancel').addClass("layui-btn-disabled").attr("disabled", true);
|
|
}, function (result) {
|
|
layer.close(loadingMsg);
|
|
$('.save').removeClass("layui-btn-disabled").attr("disabled", false);
|
|
$('.cancel').removeClass("layui-btn-disabled").attr("disabled", false);
|
|
if (result.code === 200) {
|
|
parent.layer.msg(result.msg, { icon: 1 });
|
|
closePage(1);
|
|
} else {
|
|
layer.msg(result.msg, { icon: 2 });
|
|
}
|
|
}, function (xhr, status, error) {
|
|
layer.close(loadingMsg); // 关闭提示层
|
|
layer.msg('服务异常,请稍后重试', { icon: 16, scrollbar: false, time: 2000 });
|
|
$('.save').removeClass("layui-btn-disabled").attr("disabled", false);
|
|
$('.cancel').removeClass("layui-btn-disabled").attr("disabled", false);
|
|
errorFn(xhr, status, error)
|
|
}, null);
|
|
}
|
|
|
|
// 获取机具明细数据
|
|
function getBaseTableData() {
|
|
let tableData = [];
|
|
$('#baseTable tbody tr').each(function (index, item) {
|
|
let times = $(this).find('td').eq(7).find('input[name="times"]').val();
|
|
let needNum = $(this).find('td').eq(6).find('input[name="needNum"]').val();
|
|
tableData.push({
|
|
moduleId: $(this).attr('id'),
|
|
type: $(this).find('td').eq(2).html(),
|
|
typeName: $(this).find('td').eq(3).html(),
|
|
module: $(this).find('td').eq(4).html(),
|
|
unit: $(this).find('td').eq(5).html(),
|
|
needNum: needNum ? needNum : 0,
|
|
times: times ? times : 0,
|
|
remarks: $(this).find('td').eq(8).find('input[name="remarks"]').val(),
|
|
})
|
|
})
|
|
return tableData;
|
|
}
|
|
|
|
|
|
// 选择机具类型
|
|
function chooseFitType() {
|
|
let params = {};
|
|
openIframeByParamObj("choose_fit_type", '选择需求计划机具类型<span style="color:red;font-size:14px">(设备类请备注大、中、小)</span>', "./choose_tool_type_list.html", '92%', '95%', params);
|
|
}
|
|
|
|
// 查询
|
|
function search() {
|
|
let keyWord = $('#pName').val();
|
|
let keyWord2 = $('#name').val();
|
|
if (!keyWord && !keyWord2) {
|
|
setTableData(jjDataArr);
|
|
} else if (keyWord && !keyWord2) {
|
|
let dataList = jjDataArr.filter(item => {
|
|
return item.pName.indexOf(keyWord) > -1;
|
|
})
|
|
setTableData(dataList);
|
|
} else if (!keyWord && keyWord2) {
|
|
let dataList = jjDataArr.filter(item => {
|
|
return item.name.indexOf(keyWord2) > -1;
|
|
})
|
|
setTableData(dataList);
|
|
} else if (keyWord && keyWord2) {
|
|
let dataList = jjDataArr.filter(item => {
|
|
return item.pName.indexOf(keyWord) > -1 && item.name.indexOf(keyWord2) > -1;
|
|
})
|
|
setTableData(dataList);
|
|
}
|
|
}
|
|
|
|
// 重置
|
|
function resetSearch() {
|
|
$('#pName').val('');
|
|
$('#name').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.ppName + "</td>";
|
|
html += "<td>" + l.pName + "</td>";
|
|
html += "<td>" + l.name + "</td>";
|
|
html += "<td>" + l.unit + "</td>";
|
|
html += "<td>" + setFormInput(l.needNum, 1) + "</td>";
|
|
html += "<td>" + setFormInput(l.times == null ? 0 : l.times, 2) + "</td>";
|
|
html += "<td>" + setFormInput(l.remarks, 3) + "</td>";
|
|
html += "</tr>";
|
|
}
|
|
} else {
|
|
html += "<tr><td colspan='9' 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="needNum" 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="times" onblur="checkValue(this,2,\'需用天数\')" value="' + setNullValue(value) + '" autocomplete="off" lay-verify="required" maxlength="9" lay-affix="clear">';
|
|
} else if (type === 3) { // 备注
|
|
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 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, name) {
|
|
let value = $(that).val();
|
|
if (type === 1 || type === 2) { // 需用量 / 需用天数
|
|
const regex = /^(0|[1-9]\d{0,6})$/;
|
|
if (!regex.test(value) && value) {
|
|
layer.msg('' + name + '输入不合法,请重新输入!', { icon: 5 })
|
|
$(that).val(0);
|
|
}
|
|
}
|
|
}
|
|
|
|
// 关闭页面
|
|
function closePage(type) {
|
|
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
|
|
if (type == 1) {
|
|
window.parent.reloadData();
|
|
}
|
|
parent.layer.close(index); // 再执行关闭
|
|
} |