配件退回

This commit is contained in:
cwchen 2024-11-15 09:30:20 +08:00
parent 814bf38433
commit 757fa3958f
4 changed files with 60 additions and 59 deletions

View File

@ -155,17 +155,17 @@ function submitApply(data) {
if (fileList.length === 0) { if (fileList.length === 0) {
return layer.msg('请上传附件证明', { icon: 7 }); return layer.msg('请上传附件证明', { icon: 7 });
} }
// 校验配件入库数量 // 校验配件退回数量
if (list.length === 0) { if (list.length === 0) {
return layer.msg('未填写配件入库数量', { icon: 7 }); return layer.msg('未添加配件退回数据', { icon: 7 });
} }
for (let i = 0; i < list.length; i++) { for (let i = 0; i < list.length; i++) {
if (!list[i].inputNum || list[i].inputNum === '0') { if (!list[i].inputNum || list[i].inputNum === '0') {
return layer.msg('入库配件明细,第' + (i + 1) + '行,未填写配件入库数量', { icon: 7 }); return layer.msg('入库配件明细,第' + (i + 1) + '行,未填写配件入库数量', { icon: 7 });
} }
} }
data.field.details = list; data.field.detailsVoList = list;
data.field.userName = $('#createId').find('option:checked').text();
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 +175,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/partInput/addInputData'; let url = dataUrl + 'backstage/partBack/backInfo';
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);
@ -203,19 +203,15 @@ function submitApply(data) {
function getBaseTableData() { function getBaseTableData() {
let tableData = []; let tableData = [];
$('#baseTable tbody tr').each(function (index, item) { $('#baseTable tbody tr').each(function (index, item) {
let price = $(this).find('td').eq(7).find('input[name="price"]').val(); let ghNum = $(this).find('td').eq(7).find('input[name="ghNum"]').val();
let num = $(this).find('td').eq(6).find('input[name="num"]').val();
tableData.push({ tableData.push({
partId: $(this).attr('id'), partId: $(this).attr('id'),
partType: $(this).find('td').eq(2).html(), partType: $(this).find('td').eq(2).html(),
partName: $(this).find('td').eq(3).html(), partName: $(this).find('td').eq(3).html(),
partModel: $(this).find('td').eq(4).html(), partModel: $(this).find('td').eq(4).html(),
partUnit: $(this).find('td').eq(5).html(), partUnit: $(this).find('td').eq(5).html(),
inputNum: num ? num : 0, backNum: ghNum ? ghNum : 0,
partPrice: price ? price : 0, remark: $(this).find('td').eq(8).find('input[name="remark"]').val(),
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; return tableData;
@ -234,44 +230,44 @@ function chooseFitType() {
// 查询 // 查询
function search() { function search() {
let keyWord = $('#type').val(); let keyWord = $('#partType').val();
let keyWord2 = $('#name').val(); let keyWord2 = $('#partName').val();
let keyWord3 = $('#model').val(); let keyWord3 = $('#partModel').val();
if (!keyWord && !keyWord2 && !keyWord3) { if (!keyWord && !keyWord2 && !keyWord3) {
setTableData(jjDataArr); setTableData(jjDataArr);
} else if (keyWord && !keyWord2 && !keyWord3) { } else if (keyWord && !keyWord2 && !keyWord3) {
let dataList = jjDataArr.filter(item => { let dataList = jjDataArr.filter(item => {
return item.type.indexOf(keyWord) > -1; return item.partType.indexOf(keyWord) > -1;
}) })
setTableData(dataList); setTableData(dataList);
} else if (!keyWord && keyWord2 && !keyWord3) { } else if (!keyWord && keyWord2 && !keyWord3) {
let dataList = jjDataArr.filter(item => { let dataList = jjDataArr.filter(item => {
return item.name.indexOf(keyWord2) > -1; return item.partName.indexOf(keyWord2) > -1;
}) })
setTableData(dataList); setTableData(dataList);
} else if (!keyWord && !keyWord2 && keyWord3) { } else if (!keyWord && !keyWord2 && keyWord3) {
let dataList = jjDataArr.filter(item => { let dataList = jjDataArr.filter(item => {
return item.model.indexOf(keyWord3) > -1; return item.partModel.indexOf(keyWord3) > -1;
}) })
setTableData(dataList); setTableData(dataList);
} else if (keyWord && keyWord2 && !keyWord3) { } else if (keyWord && keyWord2 && !keyWord3) {
let dataList = jjDataArr.filter(item => { let dataList = jjDataArr.filter(item => {
return item.type.indexOf(keyWord) > -1 && item.name.indexOf(keyWord2) > -1; return item.partType.indexOf(keyWord) > -1 && item.partName.indexOf(keyWord2) > -1;
}) })
setTableData(dataList); setTableData(dataList);
} else if (keyWord && !keyWord2 && keyWord3) { } else if (keyWord && !keyWord2 && keyWord3) {
let dataList = jjDataArr.filter(item => { let dataList = jjDataArr.filter(item => {
return item.type.indexOf(keyWord) > -1 && item.model.indexOf(keyWord3) > -1; return item.partType.indexOf(keyWord) > -1 && item.partModel.indexOf(keyWord3) > -1;
}) })
setTableData(dataList); setTableData(dataList);
} else if (!keyWord && keyWord2 && keyWord3) { } else if (!keyWord && keyWord2 && keyWord3) {
let dataList = jjDataArr.filter(item => { let dataList = jjDataArr.filter(item => {
return item.name.indexOf(keyWord2) > -1 && item.model.indexOf(keyWord3) > -1; return item.partName.indexOf(keyWord2) > -1 && item.partModel.indexOf(keyWord3) > -1;
}) })
setTableData(dataList); setTableData(dataList);
} else if (keyWord && keyWord2 && keyWord3) { } else if (keyWord && keyWord2 && keyWord3) {
let dataList = jjDataArr.filter(item => { let dataList = jjDataArr.filter(item => {
return item.type.indexOf(keyWord) > -1 && item.name.indexOf(keyWord2) > -1 && item.model.indexOf(keyWord3) > -1; return item.partType.indexOf(keyWord) > -1 && item.partName.indexOf(keyWord2) > -1 && item.partModel.indexOf(keyWord3) > -1;
}) })
setTableData(dataList); setTableData(dataList);
} }
@ -279,9 +275,9 @@ function search() {
// 重置 // 重置
function resetSearch() { function resetSearch() {
$('#type').val(''); $('#partType').val('');
$('#name').val(''); $('#partName').val('');
$('#model').val(''); $('#partModel').val('');
setTableData(jjDataArr); setTableData(jjDataArr);
} }
@ -328,16 +324,17 @@ function setTableData(results) {
html += '<td><input onclick="sel(this.checked,this,' + l.id + ')" name="check" type="checkbox"></td>'; 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'>" html += "<td style='vertical-align:middle;' class='center hidden-480'>"
+ (i + 1) + "</td>"; + (i + 1) + "</td>";
html += "<td>" + l.type + "</td>"; html += "<td>" + l.partType + "</td>";
html += "<td>" + l.name + "</td>"; html += "<td>" + l.partName + "</td>";
html += "<td>" + l.model + "</td>"; html += "<td>" + l.partModel + "</td>";
html += "<td>" + l.unit + "</td>"; html += "<td>" + l.partUnit + "</td>";
html += "<td>" + setFormInput(l.num, 1) + "</td>"; html += "<td>" + l.lyNum + "</td>";
html += "<td>" + setFormInput(l.remarks, 2) + "</td>"; html += "<td lyNum='" + l.lyNum + "'>" + setFormInput(l.num, 1) + "</td>";
html += "<td>" + setFormInput(l.remark, 2) + "</td>";
html += "</tr>"; html += "</tr>";
} }
} else { } else {
html += "<tr><td colspan='10' class='center'>没有相关数据</td></tr>"; html += "<tr><td colspan='9' class='center'>没有相关数据</td></tr>";
} }
$("#baseTable tbody").empty().append(html); $("#baseTable tbody").empty().append(html);
layui.form.render(); layui.form.render();
@ -346,9 +343,9 @@ function setTableData(results) {
function setFormInput(value, type) { function setFormInput(value, type) {
let html = '<form class="layui-form layuimini-form"><div class="layui-inline">'; let html = '<form class="layui-form layuimini-form"><div class="layui-inline">';
if (type === 1) { // 本次退回量 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">'; html += '<input class="layui-input" name="ghNum" onblur="checkValue(this,1)" value="' + setNullValue(value) + '" autocomplete="off" lay-verify="required" maxlength="9" lay-affix="clear">';
} else if (type === 2) { // 备注 } else if (type === 2) { // 备注
html += '<input class="layui-input" placeholder="请输入备注" id="remarks" name="remarks" value="' + setNullValue(value) + '" maxLength="255" lay-affix="clear"></input>'; html += '<input class="layui-input" placeholder="请输入备注" id="remark" name="remark" value="' + setNullValue(value) + '" maxLength="255" lay-affix="clear"></input>';
} }
html += '</div></form>'; html += '</div></form>';
return html; return html;
@ -419,11 +416,16 @@ function delFitType() {
// 校验数据 // 校验数据
function checkValue(that, type) { function checkValue(that, type) {
let value = $(that).val(); let value = $(that).val();
let lyNum = $(that).parents('td').attr('lyNum');
console.log('领用数量:' + lyNum);
if (type === 1) { // 本次退回量 if (type === 1) { // 本次退回量
const regex = /^(0|[1-9]\d{0,6})$/; const regex = /^(0|[1-9]\d{0,6})$/;
if (!regex.test(value) && value) { if (!regex.test(value) && value) {
layer.msg(' 本次退回量输入不合法,请重新输入!', { icon: 5 }) $(that).val(0);
$(that).val(''); return layer.msg('本次退回量输入不合法,请重新输入!', { icon: 5 })
} else if (value && value > lyNum) {
$(that).val(0);
return layer.msg('本次退回量不能超过累计领料数量,请重新输入!', { icon: 5 })
} }
} }
} }

View File

@ -33,7 +33,7 @@ function setParams(obj) {
bindAction: '#hideUpload', //绑定的按钮 bindAction: '#hideUpload', //绑定的按钮
choose: function (obj) { choose: function (obj) {
let length = $('.file-iteme').length; let length = $('.file-iteme').length;
if(length >= 5){ if (length >= 5) {
return layer.msg('最多上传5个附件证明', { icon: 7 }); return layer.msg('最多上传5个附件证明', { icon: 7 });
} }
uploadObj.config.elem.next()[0].value = ''; uploadObj.config.elem.next()[0].value = '';
@ -419,14 +419,15 @@ function checkValue(that, type) {
if (type === 1) { // 入库量 if (type === 1) { // 入库量
const regex = /^(0|[1-9]\d{0,6})$/; const regex = /^(0|[1-9]\d{0,6})$/;
if (!regex.test(value) && value) { if (!regex.test(value) && value) {
layer.msg('入库量输入不合法,请重新输入!', { icon: 5 }) $(that).val(0);
$(that).val(''); return layer.msg('入库量输入不合法,请重新输入!', { icon: 5 })
} }
} else if (type === 2) { // 单价 } 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)?))$/; 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) { if (!regex.test(value) && value) {
layer.msg('单价输入不合法,请重新输入!', { icon: 5 }) $(that).val(0);
$(that).val(''); return layer.msg('单价输入不合法,请重新输入!', { icon: 5 })
} }
} }
} }

View File

@ -77,10 +77,8 @@ function initTable() {
$.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.ghNum = item2.ghNum;
item.price = item2.price; item.remark = item2.remark;
item.remarks = item2.remarks;
item.manufacturer = item2.manufacturer;
} }
}); });
}); });
@ -192,21 +190,20 @@ function initTable() {
table.on('edit(currentTableId2)', function (obj) { table.on('edit(currentTableId2)', function (obj) {
var field = obj.field; // 得到修改的字段 var field = obj.field; // 得到修改的字段
var value = obj.value // 得到修改后的值 var value = obj.value // 得到修改后的值
if (field === 'num') { // 本次入库 if (field === 'ghNum') { // 本次退回
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)) {
obj.reedit(); obj.reedit();
return layer.msg('格式不正确最大输入6位数且为正整数', { icon: 7 }) return layer.msg('格式不正确最大输入6位数且为正整数', { icon: 7 })
} }
// 获取累计领料数量
let lyNum = obj.data.lyNum ? obj.data.lyNum : 0;
if(value > lyNum){
return layer.msg('本次退回量不能超过累计领料数量', { icon: 7 })
}
} }
} else if (field === 'price') { } else if (field === 'remark') { // 备注
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();

View File

@ -63,7 +63,7 @@
<p style="font-size: 16px;font-weight: bold;">您还没选择退料配件类型</p> <p style="font-size: 16px;font-weight: bold;">您还没选择退料配件类型</p>
<p style="color: #999999;">需要添加配件类型后才能执行退料入库操作</p> <p style="color: #999999;">需要添加配件类型后才能执行退料入库操作</p>
<p style="color: #999999;">只可退回选择的维修人员已经领用过的配件类型</p> <p style="color: #999999;">只可退回选择的维修人员已经领用过的配件类型</p>
<button class="layui-btn layui-bg-blue" onclick="chooseFitType()">选择盘点配件类型</button> <button class="layui-btn layui-bg-blue" onclick="chooseFitType()">选择退回配件类型</button>
</div> </div>
<fieldset class="table-search-fieldset" id="search-info" style="display: none;"> <fieldset class="table-search-fieldset" id="search-info" style="display: none;">
<legend>搜索信息</legend> <legend>搜索信息</legend>
@ -72,19 +72,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: 200px;"> <div class="layui-input-inline" style="width: 200px;">
<input type="text" name="type" id="type" autocomplete="off" class="layui-input" <input type="text" name="partType" id="partType" 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: 200px;"> <div class="layui-input-inline" style="width: 200px;">
<input type="text" name="name" id="name" autocomplete="off" class="layui-input" <input type="text" name="partName" id="partName" 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: 200px;"> <div class="layui-input-inline" style="width: 200px;">
<input type="text" name="model" id="model" autocomplete="off" class="layui-input" <input type="text" name="partModel" id="partModel" autocomplete="off" class="layui-input"
lay-affix="clear" placeholder="输入规格型号" maxlength="30"> lay-affix="clear" placeholder="输入规格型号" maxlength="30">
</div> </div>
</div> </div>
@ -110,9 +110,10 @@
<th style="width: 10%" class="center">序号</th> <th style="width: 10%" class="center">序号</th>
<th style="width: 15%" class="center">配件类型</th> <th style="width: 15%" class="center">配件类型</th>
<th style="width: 15%" class="center">配件名称</th> <th style="width: 15%" class="center">配件名称</th>
<th style="width: 15%" 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: 15%" class="center"><span style="color: red;">*</span> 本次退回量</th> <th style="width: 10%" class="center">累计领料数量</th>
<th style="width: 10%" class="center"><span style="color: red;">*</span> 本次退回量</th>
<th style="width: 15%" class="center">备注</th> <th style="width: 15%" class="center">备注</th>
</tr> </tr>
</thead> </thead>