计划申请
This commit is contained in:
parent
b73198ad6f
commit
54f1a5b2fd
|
|
@ -201,6 +201,10 @@ function showProcess(){
|
|||
openIframeByParamObj("show_process", "流程说明", "./child/show_process.html", "70%", "65%", null);
|
||||
}
|
||||
|
||||
function applyPlan(obj) {
|
||||
openIframeByParamObj("apply_plan", "机具需求计划申请", "./child/apply_plan_form.html", "92%", "95%", obj);
|
||||
}
|
||||
|
||||
// 详情
|
||||
function applyPlanDetail(obj) {
|
||||
openIframeByParamObj("apply_plan_detail", "详情", "./child/apply_plan_detail.html", "92%", "95%", obj);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,358 @@
|
|||
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) {
|
||||
console.log(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].inputNum || list[i].inputNum === '0') {
|
||||
return layer.msg('入库配件明细,第' + (i + 1) + '行,未填写配件入库数量', { icon: 7 });
|
||||
}
|
||||
}
|
||||
data.field.details = list;
|
||||
let formData = new FormData();
|
||||
//遍历最终文件集合
|
||||
for (let i = 0; i < fileList.length; i++) {
|
||||
formData.append("file[]", fileList[i].file)
|
||||
}
|
||||
formData.append('params', JSON.stringify(data.field));
|
||||
console.log(JSON.stringify(data.field));
|
||||
let loadingMsg = layer.msg('正在提交保存,请稍等...', { icon: 16, shade: 0.01, time: '0' });
|
||||
console.log(JSON.stringify(data.field));
|
||||
let url = dataUrl + 'backstage/partInput/addInputData';
|
||||
ajaxRequestByUploadFile(url, formData, function () {
|
||||
$('.save').addClass("layui-btn-disabled").attr("disabled", true);
|
||||
$('.cancel').addClass("layui-btn-disabled").attr("disabled", true);
|
||||
}, function (result) {
|
||||
console.log(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 price = $(this).find('td').eq(7).find('input[name="price"]').val();
|
||||
let num = $(this).find('td').eq(6).find('input[name="num"]').val();
|
||||
tableData.push({
|
||||
partId: $(this).attr('id'),
|
||||
partType: $(this).find('td').eq(2).html(),
|
||||
partName: $(this).find('td').eq(3).html(),
|
||||
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(),
|
||||
vendName: $(this).find('td').eq(8).find('select[name="manufacturer"]').find('option:checked').text(),
|
||||
remark: $(this).find('td').eq(9).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 = $('#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 === 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 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) {
|
||||
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
|
||||
parent.layer.close(index); // 再执行关闭
|
||||
if (type == 1) {
|
||||
window.parent.reloadData();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,379 @@
|
|||
let objParam;
|
||||
let form, table, element, tableIns, layer, util;
|
||||
let pageNum = 1;
|
||||
let quanju = new Array();//全局
|
||||
let huancun = new Array();//缓存
|
||||
let huancunObj = new Array();//缓存2
|
||||
let cjList = [];
|
||||
let jjDetailArr = []; // 入库配件类型数据
|
||||
function setParams(obj) {
|
||||
objParam = JSON.parse(obj);
|
||||
console.log(objParam);
|
||||
layui.use(["form", "table", 'element', 'layer', 'util'], function () {
|
||||
form = layui.form;
|
||||
table = layui.table;
|
||||
element = layui.element;
|
||||
layer = layui.layer;
|
||||
util = layui.util;
|
||||
getVendList();
|
||||
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) {
|
||||
if (type === 1) {
|
||||
reloadTable(1);
|
||||
} else if (type === 2) {
|
||||
$('#name').val('');
|
||||
$('#module').val('');
|
||||
$('#type').val('');
|
||||
layui.form.render();
|
||||
reloadTable(1);
|
||||
}
|
||||
}
|
||||
|
||||
// 重载表格
|
||||
function reloadTable(pageNum) {
|
||||
table.reload("currentTableId", {
|
||||
page: {
|
||||
curr: pageNum ? pageNum : 1,
|
||||
},
|
||||
where: {
|
||||
encryptedData: JSON.stringify({
|
||||
'name': $('#name').val(),
|
||||
'model': $('#model').val(),
|
||||
'type': $('#type').val(),
|
||||
}),
|
||||
},
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// 表格数据
|
||||
function initTable() {
|
||||
tableIns = table.render({
|
||||
elem: "#currentTableId",
|
||||
id: 'currentTableId',
|
||||
height: "full-200",
|
||||
headers: {
|
||||
authorization: sessionStorage.getItem("gz-token"),
|
||||
},
|
||||
url: dataUrl + "backstage/paType/findByPage",
|
||||
where: {
|
||||
encryptedData: JSON.stringify({
|
||||
'type': $('#type').val(),
|
||||
'name': $('#name').val(),
|
||||
'model': $('#model').val(),
|
||||
}),
|
||||
},
|
||||
request: {
|
||||
pageName: 'pageNum',
|
||||
limitName: 'pageSize'
|
||||
},
|
||||
parseData: function (res) { // res 即为原始返回的数据
|
||||
if (jjDetailArr && res.list) {
|
||||
$.each(res.list, function (index, item) {
|
||||
$.each(jjDetailArr, function (index2, item2) {
|
||||
if (item.id === item2.id) {
|
||||
item.num = item2.num;
|
||||
item.price = item2.price;
|
||||
item.remarks = item2.remarks;
|
||||
item.manufacturer = item2.manufacturer;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
return {
|
||||
"code": 0, // 解析接口状态
|
||||
"msg": '获取成功', // 解析提示文本
|
||||
"count": res.total, // 解析数据长度
|
||||
"data": res.list // 解析数据列表
|
||||
};
|
||||
},
|
||||
cols: [
|
||||
[
|
||||
{ type: 'checkbox', width: '5%' },
|
||||
{
|
||||
width: '6%',
|
||||
title: "序号",
|
||||
align: "center",
|
||||
templet: function (d) {
|
||||
return d.LAY_NUM;
|
||||
},
|
||||
},
|
||||
{
|
||||
field: "type",
|
||||
width: '11.8%',
|
||||
title: "配件类型",
|
||||
unresize: true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
field: "name",
|
||||
width: '12%',
|
||||
title: "配件名称",
|
||||
unresize: true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
field: "model",
|
||||
width: '10%',
|
||||
title: "规格型号",
|
||||
unresize: true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
field: "unit",
|
||||
title: "单位",
|
||||
width: '8%',
|
||||
unresize: true,
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
field: "num",
|
||||
width: '10%',
|
||||
title: "<span style='color:red'> * </span>本次入库量",
|
||||
unresize: true,
|
||||
align: "center",
|
||||
edit: 'text',
|
||||
style: 'outline: 1px solid #e6e6e6;outline-offset: -5px;'
|
||||
},
|
||||
{
|
||||
field: "price",
|
||||
width: '9.8%',
|
||||
title: "单价(元)",
|
||||
unresize: true,
|
||||
align: "center",
|
||||
edit: 'text',
|
||||
style: 'outline: 1px solid #e6e6e6;outline-offset: -5px;'
|
||||
},
|
||||
{
|
||||
field: "manufacturer",
|
||||
width: '15%',
|
||||
title: "<span style='color:red'> * </span>配件厂家",
|
||||
unresize: true,
|
||||
align: "center",
|
||||
templet: '#TPL-select-demo'
|
||||
},
|
||||
{
|
||||
field: "remarks",
|
||||
width: '12%',
|
||||
title: "备注",
|
||||
unresize: true,
|
||||
align: "center",
|
||||
edit: 'textarea',
|
||||
style: 'outline: 1px solid #e6e6e6;outline-offset: -5px;'
|
||||
},
|
||||
|
||||
],
|
||||
],
|
||||
limits: [10, 15, 20, 25, 50, 100],
|
||||
limit: 10,
|
||||
page: true,
|
||||
done: function (res, curr, count) {
|
||||
var options = this;
|
||||
table.resize("currentTableId");
|
||||
pageNum = tableIns.config.page.curr;
|
||||
form.on('select(select-demo)', function (obj) {
|
||||
console.log(obj);
|
||||
var value = obj.value; // 获取选中项 value
|
||||
// 获取当前行数据(如 id 等字段,以作为数据修改的索引)
|
||||
var data = table.getRowData(options.id, obj.elem);
|
||||
// 更新数据中对应的字段
|
||||
data.manufacturer = value;
|
||||
updateOrAddObject(data.id, data);
|
||||
});
|
||||
// 获取当前行数据 - 自定义方法
|
||||
table.getRowData = function (tableId, elem) {
|
||||
var index = $(elem).closest('tr').data('index');
|
||||
return table.cache[tableId][index] || {};
|
||||
};
|
||||
|
||||
//设置全部数据到全局变量
|
||||
quanju = res.data;
|
||||
for (var i = 0; i < res.data.length; i++) {
|
||||
for (var j = 0; j < huancun.length; j++) {
|
||||
//数据id和要勾选的id相同时checkbox选中
|
||||
if (res.data[i].id === huancun[j]) {
|
||||
//这里才是真正的有效勾选
|
||||
res.data[i]["LAY_CHECKED"] = 'true';
|
||||
//找到对应数据改变勾选样式,呈现出选中效果
|
||||
var index = res.data[i]['LAY_INDEX'];
|
||||
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').prop('checked', true);
|
||||
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().addClass('layui-form-checked');
|
||||
}
|
||||
}
|
||||
}
|
||||
//设置全选checkbox的选中状态,只有改变LAY_CHECKED的值, table.checkStatus才能抓取到选中的状态
|
||||
let checkStatus = table.checkStatus('currentTableId');//这里的lightTable是指分页中的id
|
||||
if (checkStatus.isAll) {//是否全选
|
||||
//layTableAllChoose
|
||||
$('.layui-table th[data-field="0"] input[type="checkbox"]').prop('checked', true);//data-field值默认为0,如果在分页部分自定义了属性名,则需要改成对应的属性名
|
||||
$('.layui-table th[data-field="0"] input[type="checkbox"]').next().addClass('layui-form-checked');//data-field值默认为0,如果在分页部分自定义了属性名,则需要改成对应的属性名
|
||||
}
|
||||
},
|
||||
});
|
||||
table.on('edit(currentTableId2)', function (obj) {
|
||||
var field = obj.field; // 得到修改的字段
|
||||
var value = obj.value // 得到修改后的值
|
||||
if (field === 'num') { // 本次入库量
|
||||
if (value) {
|
||||
const regex = /^(0|[1-9]\d{0,6})$/;
|
||||
if (!regex.test(value)) {
|
||||
obj.reedit();
|
||||
return layer.msg('格式不正确,最大输入6位数,且为正整数!', { icon: 7 })
|
||||
}
|
||||
}
|
||||
} 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.length > 255) {
|
||||
obj.reedit();
|
||||
return layer.msg('备注最多输入255位!', { icon: 7 })
|
||||
}
|
||||
}
|
||||
}
|
||||
// 显示 - 仅用于演示
|
||||
// layer.msg('[ID: ' + data.id + '] ' + field + ' 字段更改值为:' + util.escape(value));
|
||||
let id = obj.data.id;
|
||||
updateOrAddObject(id, obj.data);
|
||||
});
|
||||
//复选框选中监听,将选中的id 设置到缓存数组,或者删除缓存数组
|
||||
table.on('checkbox(currentTableId2)', function (obj) {
|
||||
if (obj.checked === true) {
|
||||
if (obj.type === 'one' && huancun.indexOf(obj.data.id) === -1) {
|
||||
huancun.push(obj.data.id);
|
||||
huancunObj.push(obj.data);
|
||||
} else {
|
||||
for (let i = 0; i < quanju.length; i++) {
|
||||
if (huancun.indexOf(quanju[i].id) === -1) {
|
||||
huancun.push(quanju[i].id);
|
||||
huancunObj.push(quanju[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (obj.type === 'one') {
|
||||
for (let i = 0; i < huancun.length; i++) {
|
||||
if (huancun[i] === obj.data.id) {
|
||||
removeByValue(huancun, huancun[i]);//调用自定义的根据值移除函数
|
||||
removeByValue(huancunObj, huancunObj[i]);//调用自定义的根据值移除函数
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (let i = 0; i < quanju.length; i++) {
|
||||
for (let j = 0; j < huancun.length; j++) {
|
||||
if (huancun[j] === quanju[i].id) {
|
||||
removeByValue(huancun, +huancun[j]);//调用自定义的根据值移除函数
|
||||
removeByValue(huancunObj, +huancunObj[j]);//调用自定义的根据值移除函数
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 根据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() {
|
||||
openIframeByParamObj2("add_fit_type_data", "配件类型", "../../../page/basic/fit_type_list.html", "92%", "95%", {});
|
||||
}
|
||||
|
||||
function closePage(type,params) {
|
||||
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
|
||||
parent.layer.close(index); // 再执行关闭
|
||||
if (type == 1) {
|
||||
window.parent.addFitDatas(params);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
class="layui-icon"></i> 搜 索</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="queryTable(2)"><i
|
||||
class="layui-icon layui-icon-refresh"></i> 重 置</button>
|
||||
<button class="layui-btn layui-bg-blue" onclick="accessoryStore(1,{})"><i
|
||||
<button class="layui-btn layui-bg-blue" onclick="applyPlan({})"><i
|
||||
class="layui-icon layui-icon-file"></i> 需 求 计 划 申 请</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="exportExcel()"><i
|
||||
class="layui-icon layui-icon-download-circle"></i> 导 出</button>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,144 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>发货</title>
|
||||
<link rel="stylesheet" href="../../../lib/layui-v2.9.18/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="../../../css/font.css" media="all">
|
||||
<link rel="stylesheet" href="../../../css/data_form.css" media="all">
|
||||
<link rel="stylesheet" href="../../../css/accessory/accessory_store_form.css" media="all">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="main-box">
|
||||
<div id="basic-box">
|
||||
<form class="layui-form layuimini-form" onclick="return false;">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required" style="width: 100px !important;">申请工程</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="projectId" id="projectId" lay-verify="required" lay-search
|
||||
class="layui-select">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required" style="width: 110px !important;">需用日期</label>
|
||||
<div class="layui-input-inline layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-date"></i>
|
||||
</div>
|
||||
<input class="layui-input" id="needTime" autocomplete="off" name="needTime"
|
||||
lay-verify="required" readonly style="cursor: pointer;">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required" style="width: 100px !important;">项目部分</label>
|
||||
<div class="layui-input-inline">
|
||||
<input class="layui-input" name="projectPart" id="projectPart" autocomplete="off"
|
||||
lay-verify="required" maxlength="50" lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label required" style="width: 110px !important;">施工地点</label>
|
||||
<div class="layui-input-inline layui-input-wrap">
|
||||
<input class="layui-input" name="projectContent" id="projectContent" autocomplete="off"
|
||||
lay-verify="required" maxlength="50" lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label required" style="width: 100px !important;">计划说明</label>
|
||||
<div class="layui-input-inline" style="width: 764px;">
|
||||
<textarea placeholder="请输入计划说明" lay-verify="required" id="remark" name="remark"
|
||||
class="layui-textarea" maxLength="500" lay-affix="clear"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" id="formSubmit" class="layui-btn" lay-submit="" lay-filter="formData"
|
||||
style="display: none;"></button>
|
||||
</form>
|
||||
<div class="title layout">
|
||||
<span style="font-weight:700;text-decoration:none;color:#409EFF;">▋</span>
|
||||
<p>机具明细</p>
|
||||
</div>
|
||||
<!-- 无数据时-展示 -->
|
||||
<div id="no_data_title" class="layout">
|
||||
<img src="../../../images/no_data_icon.png" alt="无数据">
|
||||
<p style="font-size: 16px;font-weight: bold;">您还没选择需用机具类型</p>
|
||||
<p style="color: #999999;">请先添加机具类型后再执申请操作</p>
|
||||
<button class="layui-btn layui-bg-blue" onclick="chooseFitType()">选择机具类型</button>
|
||||
</div>
|
||||
<fieldset class="table-search-fieldset" id="search-info" style="display: none;">
|
||||
<legend>搜索信息</legend>
|
||||
<div style="margin: 10px 10px 10px 10px">
|
||||
<form class="layui-form layui-form-pane" action="#" onsubmit="return false;">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<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"
|
||||
lay-affix="clear" placeholder="输入配件名称" maxlength="30">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline" style="width: 200px;">
|
||||
<input type="text" name="model" id="model" autocomplete="off" class="layui-input"
|
||||
lay-affix="clear" placeholder="输入规格型号" maxlength="30">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layui-bg-blue" onclick="search()"><i class="layui-icon"></i> 搜
|
||||
索</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="resetSearch()"><i
|
||||
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>
|
||||
</form>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="table-box" table-responsive style="display: none;" id="table-box">
|
||||
<table id="baseTable" class="classTable table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 5%" class="center">
|
||||
<input id="allCheck" onclick="selectAll(this.checked)" type="checkbox">
|
||||
</th>
|
||||
<th style="width: 5%" class="center">序号</th>
|
||||
<th style="width: 10%" class="center">配件类型</th>
|
||||
<th style="width: 10%" class="center">配件名称</th>
|
||||
<th style="width: 10%" class="center">规格型号</th>
|
||||
<th style="width: 10%" class="center">单位</th>
|
||||
<th style="width: 10%" class="center"><span style="color: red;">*</span> 本次入库量</th>
|
||||
<th style="width: 10%" class="center">单价(元)</th>
|
||||
<th style="width: 15%" class="center"><span style="color: red;">*</span> 配件厂家</th>
|
||||
<th style="width: 15%" class="center">备注</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-box">
|
||||
<button class="layui-btn layui-bg-blue save" onclick="saveData2()">确定申请</button>
|
||||
<button class="layui-btn layui-btn-primary cancel" onclick="closePage()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script src="../../../lib/jquery-3.4.1/jquery-3.4.1.min.js" charset="utf-8"></script>
|
||||
<script src="../../../js/public.js" charset="utf-8"></script>
|
||||
<script src="../../../lib/layui-v2.9.18/layui/layui.js" charset="utf-8"></script>
|
||||
<script src="../../../js/demandPlan/child/apply_plan_form.js" charset="utf-8"></script>
|
||||
<script src="../../../js/openIframe.js" charset="utf-8"></script>
|
||||
|
||||
</html>
|
||||
|
|
@ -0,0 +1,103 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>需求计划机具类型</title>
|
||||
<link rel="stylesheet" href="../../../lib/layui-v2.9.18/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="../../../css/font.css" media="all">
|
||||
<link rel="stylesheet" href="../../../css/public.css" media="all">
|
||||
</head>
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.layui-table-view .layui-table th {
|
||||
font-size: 18px;
|
||||
color: #262626;
|
||||
letter-spacing: 1px;
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
.btn-box {
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
|
||||
<body>
|
||||
<div class="layuimini-container">
|
||||
<div class="layuimini-main">
|
||||
<fieldset class="table-search-fieldset">
|
||||
<legend>搜索信息</legend>
|
||||
<div style="margin: 10px 10px 10px 10px">
|
||||
<form class="layui-form layui-form-pane" action="#" onsubmit="return false;">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline" style="width: 160px;">
|
||||
<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: 160px;">
|
||||
<input type="text" name="name" id="name" autocomplete="off"
|
||||
class="layui-input" lay-affix="clear" placeholder="输入配件名称" maxlength="30">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline" style="width: 160px;">
|
||||
<input type="text" name="model" id="model" autocomplete="off"
|
||||
class="layui-input" lay-affix="clear" placeholder="输入规格型号" maxlength="30">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layui-bg-blue" onclick="queryTable(1)"><i
|
||||
class="layui-icon"></i> 搜 索</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="queryTable(2)"><i
|
||||
class="layui-icon layui-icon-refresh"></i> 重 置</button>
|
||||
<button type="button" class="layui-btn" onclick="addFitTypeData()">
|
||||
<i class="layui-icon layui-icon-add-1"></i>添 加
|
||||
</button>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<p>(需求计划无机具名称及规格,点击添加新数据)</p>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="table-box" table-responsive style="z-index: 1;">
|
||||
<table class="layui-hide" id="currentTableId" lay-filter="currentTableId2"></table>
|
||||
</div>
|
||||
<div class="btn-box">
|
||||
<button class="layui-btn layui-bg-blue save" onclick="saveData2()">确定</button>
|
||||
<button class="layui-btn layui-btn-primary cancel" onclick="closePage()">取消</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/html" id="TPL-select-demo">
|
||||
{{# var manufacturerList = cjList; }}
|
||||
<select name="city" lay-filter="select-demo" lay-append-to="body" lay-search>
|
||||
{{# layui.each(manufacturerList, function(i, v){ }}
|
||||
<option value="{{= v.id }}" {{=v.id===d.manufacturer ? 'selected' : '' }}>{{= v.name }}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</script>
|
||||
<script src="../../../lib/jquery-3.4.1/jquery-3.4.1.min.js" charset="utf-8"></script>
|
||||
<script src="../../../js/public.js" charset="utf-8"></script>
|
||||
<script src="../../../js/Print.js" charset="utf-8"></script>
|
||||
<script src="../../../lib/layui-v2.9.18/layui/layui.js" charset="utf-8"></script>
|
||||
<script src="../../../js/demandPlan/child/choose_tool_type_list.js" charset="utf-8"></script>
|
||||
<script src="../../../js/openIframe.js" charset="utf-8"></script>
|
||||
|
||||
</html>
|
||||
Loading…
Reference in New Issue