This commit is contained in:
cwchen 2024-11-13 09:37:03 +08:00
parent 4b3aca38f1
commit 54f2f3ffac
7 changed files with 1078 additions and 0 deletions

1
images/svg/u418.svg Normal file
View File

@ -0,0 +1 @@
<svg t="1721807514653" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5047" width="128" height="128"><path d="M353.103448 1024a70.62069 70.62069 0 0 1-70.620689-70.62069v-389.720276l85.556965-287.77931c4.696276-15.889655 12.782345-28.760276 28.513104-28.760276h513.359448c15.748414 0 22.722207 12.570483 28.513103 28.760276l85.556966 287.77931V953.37931a70.62069 70.62069 0 0 1-70.62069 70.62069z" fill="#5C97FF" opacity=".2" p-id="5048"></path><path d="M776.827586 953.37931h-706.206896a70.62069 70.62069 0 0 1-70.62069-70.620689v-494.344828h847.448276v494.344828a70.62069 70.62069 0 0 1-70.62069 70.620689z m-741.517241-529.655172v459.034483a35.310345 35.310345 0 0 0 35.310345 35.310345h706.206896a35.310345 35.310345 0 0 0 35.310345-35.310345v-459.034483z" fill="#5C97FF" p-id="5049"></path><path d="M812.137931 423.724138h-776.827586a35.310345 35.310345 0 0 1-35.310345-35.310345l105.931034-353.103448c7.062069-23.763862 18.590897-35.310345 35.310345-35.310345h158.896552v35.310345h-141.241379c-10.381241 0-15.042207 10.081103-17.655173 17.655172l-97.103448 317.793104a15.624828 15.624828 0 0 0 0.176552 13.788689 15.713103 15.713103 0 0 0 12.976551 3.884138h730.818207c5.896828 0 11.917241-0.317793 14.77738-4.184276a15.165793 15.165793 0 0 0 0.406069-13.488551l-97.103449-317.793104c-4.096-9.463172-7.64469-17.655172-17.655172-17.655172h-247.172414v-35.310345h264.827586c18.767448 0 27.68331 14.124138 35.310345 35.310345l105.931035 353.103448a35.310345 35.310345 0 0 1-35.29269 35.310345z" fill="#5C97FF" p-id="5050"></path><path d="M918.068966 0m17.655172 0l0 0q17.655172 0 17.655172 17.655172l0 918.068966q0 17.655172-17.655172 17.655172l0 0q-17.655172 0-17.655172-17.655172l0-918.068966q0-17.655172 17.655172-17.655172Z" fill="#5C97FF" p-id="5051"></path><path d="M282.482759 653.241379m17.655172 0l247.172414 0q17.655172 0 17.655172 17.655173l0 0q0 17.655172-17.655172 17.655172l-247.172414 0q-17.655172 0-17.655172-17.655172l0 0q0-17.655172 17.655172-17.655173Z" fill="#5C97FF" p-id="5052"></path><path d="M506.809379 758.289655a17.655172 17.655172 0 0 1-24.964413 0 17.655172 17.655172 0 0 1 0-24.964414l62.428689-62.428689-62.428689-62.42869a17.655172 17.655172 0 0 1 0-24.964414 17.655172 17.655172 0 0 1 24.964413 0l74.910897 74.910897a17.655172 17.655172 0 0 1 0 24.964414z" fill="#FFB266" p-id="5053"></path><path d="M335.448276 0m17.655172 0l35.310345 0q17.655172 0 17.655173 17.655172l0 0q0 17.655172-17.655173 17.655173l-35.310345 0q-17.655172 0-17.655172-17.655173l0 0q0-17.655172 17.655172-17.655172Z" fill="#5C97FF" p-id="5054"></path><path d="M441.37931 17.655172m-17.655172 0a17.655172 17.655172 0 1 0 35.310345 0 17.655172 17.655172 0 1 0-35.310345 0Z" fill="#5C97FF" p-id="5055"></path><path d="M300.137931 17.655172m-17.655172 0a17.655172 17.655172 0 1 0 35.310344 0 17.655172 17.655172 0 1 0-35.310344 0Z" fill="#5C97FF" p-id="5056"></path></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -188,4 +188,14 @@ function exportExcel() {
function accessoryStore(type, obj) {
obj.type = type;
openIframeByParamObj("accessory_store", "配件到货入库", "../accessory/child/accessory_store_form.html", "92%", "95%", obj);
}
// 配件入库详情
function accessoryStoreDetail(obj) {
openIframeByParamObj("accessory_store_detail", "配件到货入库", "../accessory/child/accessory_store_detail.html", "92%", "95%", obj);
}
// 配件入库编辑
function accessoryStoreEdit(obj) {
openIframeByParamObj("accessory_store_edit", "配件到货入库编辑", "../accessory/child/accessory_store_edit_form.html", "92%", "95%", obj);
}

View File

@ -0,0 +1,324 @@
let objParam;
let id = getUrlParam('id'); // 批次ID
let time = getUrlParam('time'); // 批次日期
let form, table, element, tableIns, layer;
let pageNum = 1;
function setParams(params) {
objParam = JSON.parse(params);
layui.use(["form", "table", 'element', 'layer'], function () {
form = layui.form;
table = layui.table;
element = layui.element;
layer = layui.layer;
getOutDetails();
initTable();
});
}
// 基本信息和附件文档接口
function getOutDetails() {
let params = {
encryptedData: JSON.stringify({
'proId': objParam.proId,
'id': id
})
};
let url = dataUrl + 'backstage/planOut/getOutDetails';
ajaxRequest(url, "POST", params, true, function () {
}, function (result) {
console.error(result);
if (result.code === 200) {
setBasicValue(result.data);
setFileTable(result.data.fileList);
} else {
setBasicValue(null);
setFileTable(null);
}
}, function (xhr, status, error) {
errorFn(xhr, status, error)
}, null);
}
function setBasicValue(obj) {
if (obj) {
$('#userName').html(obj.userName); parseInt();
$('#createDay').html(obj.createDay + '<a style="margin:0 5px;color:#409EFF;cursor: pointer;" onclick=\'viewGs(' + JSON.stringify(obj) + ')\'>查看概述</a>');
$('#remark').html(obj.remarks);
}
}
// 附件文档赋值
function setFileTable(fileList) {
$('#file-table tbody tr:not(:first)').remove();
let html = '';
if (fileList && fileList.length > 0) {
$.each(fileList, function (index, item) {
html += '<tr>' +
'<td>' + handleFileType(item.fileName) + item.fileName + '</td>' +
'<td><img src="../../../images/user_head_icon.png" width="20px" height="20px">' + item.createName + '</td>' +
'<td>入库附件</td>' +
'<td>' + item.createTime + '</td>' +
'<td><a style="margin:0 5px;color:#409EFF;cursor: pointer;" onclick=\'viewFile(' + JSON.stringify(item) + ')\'>预览</a>' +
'<a style="margin:0 5px;color:#409EFF;cursor: pointer;" onclick=\'downLoadFile(' + JSON.stringify(item) + ')\'>下载</a>' +
'</td>' +
'</tr>';
})
} else {
html = '<tr><td colspan="5" style="text-align: center;">暂无数据</td></tr>';
}
$('#file-table tbody').after(html);
}
// 处理文件类型
function handleFileType(value) {
value = value.toLowerCase();
let src = '';
if (value.indexOf('docx') > -1 || value.indexOf('doc') > -1) {
src = '../../../images/docx.png'
} else if (value.indexOf('xls') > -1 || value.indexOf('xlsx') > -1) {
src = '../../../images/xlsx.png'
} else if (value.indexOf('pdf') > -1) {
src = '../../../images/pdf.png'
} else if (value.indexOf('png') > -1 || value.indexOf('jpg') > -1 || value.indexOf('jpeg') > -1) {
src = '../../../images/img_icon.png'
}
return '<img width="20px" height="20px" src = "' + src + '" style="margin:0 5px;">'
}
// 查询/重置
function queryTable(type) {
if (type === 1) {
reloadTable(1);
} else if (type === 2) {
$('#name').val('');
$('#module').val('');
layui.form.render();
reloadTable(1);
}
}
// 刷新页面数据
function reloadData() {
reloadData(pageNum);
}
// 重载表格
function reloadTable(pageNum) {
table.reload("currentTableId", {
page: {
curr: pageNum ? pageNum : 1,
},
where: {
encryptedData: JSON.stringify({
'name': $('#name').val(),
'module': $('#module').val(),
'proId': objParam.proId,
'id': id
}),
},
},
);
}
// 初始化表格
function initTable() {
tableIns = table.render({
elem: "#currentTableId",
id: 'currentTableId',
headers: {
authorization: sessionStorage.getItem("gz-token"),
},
height: "full",
url: dataUrl + "backstage/planOut/getOutDetailList",
where: {
encryptedData: JSON.stringify({
'name': $('#name').val(),
'module': $('#module').val(),
'id': id
}),
},
request: {
pageName: 'pageNum',
limitName: 'pageSize'
},
parseData: function (res) { // res 即为原始返回的数据
return {
"code": 0, // 解析接口状态
"msg": '获取成功', // 解析提示文本
"count": res.total, // 解析数据长度
"data": res.list // 解析数据列表
};
},
cols: [
[
{
width: '8%',
title: "序号",
align: "center",
templet: function (d) {
return d.LAY_NUM;
},
},
{
field: "type",
width: '10%',
title: "配件类型",
unresize: true,
align: "center",
},
{
field: "name",
width: '10%',
title: "配件名称",
unresize: true,
align: "center",
},
{
field: "model",
title: "规格型号",
width: '10%',
unresize: true,
align: "center",
},
{
field: "unit",
title: "单位",
width: '10%',
unresize: true,
align: "center",
},
{
field: "needNum",
title: "入库量",
width: '10%',
unresize: true,
align: "center",
},
{
field: "fhNum",
width: '10%',
title: "单价(元)",
unresize: true,
align: "center",
},
{
field: "tzNum",
width: '15%',
title: "配件厂家",
unresize: true,
align: "center",
},
{
field: "remarks",
title: "备注",
width: '17%',
align: "center",
unresize: true,
},
],
],
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
done: function (res, curr, count) {
pageNum = tableIns.config.page.curr;
element.render();
table.resize("currentTableId");
},
});
}
// 导出
function exportExcel() {
let params = {
'name': $('#name').val(),
'module': $('#module').val(),
'proId': objParam.proId,
'id': id,
'curryDay': time
}
let url = dataUrl + "backstage/export/exportPcList";
exportExcelUtil(url, '发货详情-批次-' + time, JSON.stringify(params));
}
// 打印
function print() {
Print('#table-box', {
onStart: function () {
console.log('onStart', new Date())
},
onEnd: function () {
console.log('onEnd', new Date())
}
})
}
// 查看概述
function viewGs(obj) {
layer.open({
type: 1,
shade: false, // 不显示遮罩
content: '<div style="padding: 1%;">' + obj.details + '</div>',
title: '<h3 style="color: #F56C6C;">' + obj.createDay + '发货概述:</h3>',
btn: ['复制文字', '关闭'],
area: ['60%', '50%'],
move: false,
btnAlign: 'c', // 按钮居中显示
btn1: function () {
exeCommandCopyText(obj.gs);
},
btn2: function () {
layer.close();
},
});
}
// 复制文字
function exeCommandCopyText(text) {
try {
const t = document.createElement('textarea')
t.nodeValue = text
t.value = text
document.body.appendChild(t)
t.select()
document.execCommand('copy');
document.body.removeChild(t)
layer.msg('复制成功', { icon: 1 });
} catch (e) {
console.log(e)
layer.msg('复制失败', { icon: 2 });
}
}
// 预览文件
function viewFile(obj) {
let fileName = obj.fileName.toLowerCase();
if (fileName.indexOf('png') || fileName.indexOf('jpg') || fileName.indexOf('jpeg')) {
layer.photos({
shade: 0.5,
photos: {
"title": "图片预览",
"start": 0,
"data": [
{
"alt": "layer",
"pid": 1,
"src": fileUrl + obj.fileUrl + '?token=' + sessionStorage.getItem("gz-token"),
}
]
}
});
} else {
// 调用公司的预览文件的服务
}
}
// 下载文件
function downLoadFile(obj) {
console.log(obj);
let url = dataUrl + "backstage/export/download?fileId=" + obj.id;
downLoadFileUtil(url, obj.fileName, null);
}

View File

@ -0,0 +1,450 @@
let idParam, objParam, fileList = new Array(), imgListUp = new Array();
let form, laydate, layer, upload, table, util;
let pageNum = 1, tableIns; // 定义分页
let jjDataArr = []; // 入库配件数据
let jjDetailArr = []; // 机具明细数据
let cjList = []; // 厂家下拉选
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: '#inputDay'
});
form.verify();
form.on('submit(formData)', function (data) {
submitApply(data);
});
form.render();
let uploadObj = upload.render({
elem: '#test2',
multiple: true,
dataType: "json",
exts: 'jpg|png|jpeg|doc|docx|pdf|xlsx|xls',
acceptMime: 'image/jpg,image/png,image/jpeg,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
number: 5, //最大上传数量
size: 1024 * 10, //最大文件大小单位k
auto: false, //是否自动上传 默认为true
bindAction: '#hideUpload', //绑定的按钮
choose: function (obj) {
uploadObj.config.elem.next()[0].value = '';
obj.preview(function (index, file, result) {
console.log(file);
$('#uploader-list').append(
'<div id="" class="file-iteme">' +
'<div class="handle"><p>x</p></div>' +
handleFileType(index, file, result) +
'</div>'
);
let map = new Map();//将选择的图片索引和图片写成对象存入集合
map.index = index;
map.file = file;
fileList.push(map);
});
}
});
});
getVendList();
}
// 设置文件类型
function handleFileType(index, file, result) {
let html = '', img = '';
if (file.ext === 'doc' || file.ext === 'docx') {
img = '../../../images/docx.png';
} else if (file.ext === 'xls' || file.ext === 'xlsx') {
img = '../../../images/xlsx.png';
} else if (file.ext === 'pdf') {
img = '../../../images/PDF.png';
} else {
return '<img class="img" style="width: 130px;height: 120px;" data-index=' + index + ' data-name=' + file.name + ' src=' + result + '>';
}
html += '<div class="layout upload-file" data-index=' + index + '>' +
'<img src="' + img + '">' +
'<p style="text-align: center;font-size:12px;">' + file.name + '</p>' +
'</div>';
return html;
}
// 删除文件
$(document).on("click", ".file-iteme .handle", function (event) {
imgListUp.splice(0, imgListUp.length);
let index = $(this).next().attr('data-index');
$.each(fileList, function (inx, ele) {
//对比删除文件索引
//将未删除的存入新集合
if (index != ele.index) {
imgListUp.push(ele);
}
});
$(this).parent().remove();
//将新文件集合替换老集合
fileList.splice(0, fileList.length);
$.each(imgListUp, function (inx, ele) {
fileList.push(ele)
});
});
// 根据id 判断对象数组的对象是否存在 如果存在则替换,不存在则添加
function updateOrAddObject(id, newObject) {
const index = jjDetailArr.findIndex(obj => obj.id === id);
if (index !== -1) {
// 如果对象存在,则替换它
jjDetailArr[index] = newObject;
} else {
// 如果对象不存在,则添加到数组
jjDetailArr.push(newObject);
}
}
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 (fileList.length === 0) {
return layer.msg('请上传附件证明', { icon: 7 });
}
// 校验配件入库数量
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(),
remark: $(this).find('td').eq(9).find('input[name="remarks"]').val(),
})
})
return tableData;
}
// 选择入库配件类型
function chooseFitType() {
let params = {};
/* if (jjDataArr && jjDataArr.length > 0) {
params.jjDataArrStr = JSON.stringify(jjDataArr);
} */
openIframeByParamObj("choose_fit_type", '选择入库配件类型', "./choose_fit_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 === 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) {
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
parent.layer.close(index); // 再执行关闭
if (type == 1) {
window.parent.reloadData();
}
}

View File

@ -46,6 +46,10 @@
class="layui-icon layui-icon-refresh"></i> 重 置</button>
<button class="layui-btn layui-bg-blue" onclick="accessoryStore(1,{})"><i
class="layui-icon layui-icon-file"></i> 配 件 入 库</button>
<button class="layui-btn layui-bg-blue" onclick="accessoryStoreEdit({})"><i
class="layui-icon layui-icon-file"></i> 编 辑</button>
<button class="layui-btn layui-bg-blue" onclick="accessoryStoreDetail({})"><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>
</div>

View File

@ -0,0 +1,152 @@
<!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">
<link rel="stylesheet" href="../../../css/demandPlan/delivery_batch_list.css" media="all">
</head>
<style>
.layuimini-container {
height: auto;
}
#detail-box {
width: 100%;
height: 70px;
justify-content: space-between;
}
#detail-box>div {
margin: 0 20px;
}
#detail-box img {
width: 50px;
height: 50pz;
}
</style>
<body>
<div id="main-box">
<div class="layout" id="detail-box">
<div class="layout">
<img src="../../../images/svg/u418.svg">
<div class="layout" style="flex-direction: column;align-items: start;margin-left: 10px;">
<p style="font-size: 18px;font-weight: bold;" id="titleName">2024-05-05配件入库记录</p>
<p id="code">20240607096</p>
</div>
</div>
<div>
<button type="button" class="layui-btn layui-bg-blue" onclick="print()">打印</button>
</div>
</div>
<div id="basic-box">
<div class="title layout">
<span style="font-weight:700;text-decoration:none;color:#409EFF;"></span>
<p>基本信息</p>
</div>
<div id="basic-table">
<table class="classTable">
<tr>
<th>入库编号<span>(系统自动生成)</span></th>
<th>入库数量</th>
<th>成本价格(元)</th>
<th>入库人</th>
<th>入库日期</th>
</tr>
<tr>
<td id="userName"></td>
<td id="createDay"></td>
<td id="createDay2"></td>
<td id="createDay3"></td>
<td id="createDay4"></td>
</tr>
<tr>
<th colspan="5">备注</th>
</tr>
<tr>
<td colspan="5" id="remark"></td>
</tr>
</table>
</div>
</div>
<div id="file-box">
<div class="title layout">
<span style="font-weight:700;text-decoration:none;color:#409EFF;"></span>
<p>附件文档</p>
</div>
<div id="file-table-box">
<table class="classTable" id="file-table">
<tr>
<th>文件名</th>
<th>文件类型</th>
<th>上传人员</th>
<th>上传时间</th>
<th>操作</th>
</tr>
</table>
</div>
</div>
<div id="fhjj-box">
<div class="title layout">
<span style="font-weight:700;text-decoration:none;color:#409EFF;"></span>
<p>入库明细</p>
</div>
<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: 300px;">
<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: 300px;">
<input type="text" name="module" id="module" autocomplete="off"
class="layui-input" lay-affix="clear" placeholder="输入配件名称" maxlength="30">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline" style="width: 300px;">
<input type="text" name="module" id="module" 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 class="layui-btn layui-btn-primary" onclick="exportExcel()"><i
class="layui-icon layui-icon-download-circle"></i> 下 载</button>
</div>
</div>
</form>
</div>
</fieldset>
<div class="table-box" table-responsive style="z-index: 1;" id="table-box">
<table class="layui-hide" id="currentTableId" lay-filter="currentTableId2"></table>
</div>
</div>
</div>
</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="../../../js/Print.js" charset="utf-8"></script>
<script src="../../../lib/layui-v2.9.18/layui/layui.js" charset="utf-8"></script>
<script src="../../../js/accessory/child/accessory_store_detail.js" charset="utf-8"></script>
</html>

View File

@ -0,0 +1,137 @@
<!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">
<link rel="stylesheet" href="../../../css/tips.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">
<input class="layui-input" name="inputUser" id="inputUser" autocomplete="off" lay-verify="required" maxlength="30" 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">
<div class="layui-input-prefix">
<i class="layui-icon layui-icon-date"></i>
</div>
<input class="layui-input" id="inputDay" autocomplete="off" name="inputDay"
lay-verify="required" readonly style="cursor: pointer;">
</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="255" 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="layui-upload" style="padding: 0 39px;">
<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;width: auto;border: none;">
<p>附件证明<span class="required">*</span></p>
<div class="layui-upload-list uploader-list" style="overflow: auto;" id="uploader-list"></div>
<div id="test2" style="margin-left: 10px;">
<img src="../../../images/add.png">
</div>
<p style="color: red;">最多上传5个附件</p>
</blockquote>
</div>
<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/accessory/child/accessory_store_edit_form.js" charset="utf-8"></script>
<script src="../../../js/openIframe.js" charset="utf-8"></script>
<script src="../../../js/tips.js" charset="utf-8"></script>
</html>