This commit is contained in:
BianLzhaoMin 2026-01-27 16:24:43 +08:00
parent cf419e231e
commit ae2b6ffa0c
2 changed files with 169 additions and 158 deletions

View File

@ -8,7 +8,7 @@ let editId = null; // 编辑的ID
let submitStatus = 1; let submitStatus = 1;
let proListData = []; // 存储工程列表数据 let proListData = []; // 存储工程列表数据
let = []; let = [];
getProList(); getProList();
function setParams(obj) { function setParams(obj) {
objParam = JSON.parse(obj); objParam = JSON.parse(obj);
@ -41,30 +41,34 @@ function setParams(obj) {
}); });
form.render(); form.render();
// 绑定工程下拉选change事件 - 关键在form.render()之前绑定 // 绑定工程下拉选事件Layui 事件)
form.on('select(projectId)', function(data) { form.on('select(projectId)', function (data) {
console.log("Layui select事件触发,值:", data.value); console.log("Layui select(projectId) 事件触发,值:", data.value);
var selectedOption = $(data.elem).find('option:selected'); var selectedOption = $(data.elem).find('option:selected');
var companyName = selectedOption.data('companyName') || ''; // 与 option 上的 data-company 保持一致
var companyName = selectedOption.data('company') || '';
// 如果data属性没有获取到尝试从proListData中查找 // 如果 data 属性没有获取到,尝试从 proListData 中查找
if (!companyName && data.value) { if (!companyName && data.value) {
var foundItem = proListData.find(function(item) { var foundItem = proListData.find(function (item) {
return item.id == data.value; return item.id == data.value;
}); });
if (foundItem) { if (foundItem) {
companyName = foundItem.companyName || ''; companyName = foundItem.companyName || foundItem.company || '';
} }
} }
console.log("获取到的公司名称:", companyName); console.log("获取到的公司名称:", companyName);
// 设置公司输入框的值 // 设置公司输入框的值
$('#companyName').val(companyName); // 设置隐藏字段 $('#company').val(companyName);
$('#companyName').val(companyName);
$('#remark').val(companyName); $('#remark').val(companyName);
// 更新表单数据 // 更新表单数据
if (form && typeof form.val === 'function') { if (form && typeof form.val === 'function') {
form.val('formInfo', { form.val('formInfo', {
company: companyName,
companyName: companyName companyName: companyName
}); });
} }
@ -76,7 +80,7 @@ function setParams(obj) {
} else { } else {
// 编辑模式下隐藏上传按钮 // 编辑模式下隐藏上传按钮
$('#test2').hide(); $('#test2').hide();
$('.layout p').each(function() { $('.layout p').each(function () {
if ($(this).text().includes('提示最多上传5个附件')) { if ($(this).text().includes('提示最多上传5个附件')) {
// $(this).text('提示:编辑模式下不可新增附件,可删除原有附件'); // $(this).text('提示:编辑模式下不可新增附件,可删除原有附件');
} }
@ -113,7 +117,7 @@ function disableBasicFields() {
$('.layui-upload').addClass('disabled-upload'); $('.layui-upload').addClass('disabled-upload');
// 隐藏必填标记 // 隐藏必填标记
$('.required').each(function() { $('.required').each(function () {
if ($(this).find('span').length === 0) { if ($(this).find('span').length === 0) {
$(this).append('<span style="color: #f56c6c;margin-left: 4px;">*</span>'); $(this).append('<span style="color: #f56c6c;margin-left: 4px;">*</span>');
} }
@ -152,8 +156,8 @@ function initUpload() {
uploadObj.config.elem.next()[0].value = ''; uploadObj.config.elem.next()[0].value = '';
let num = 0; let num = 0;
obj.preview(function (index, file, result) { obj.preview(function (index, file, result) {
num ++; num++;
if(num <= (5-length)){ if (num <= (5 - length)) {
$('#uploader-list').append( $('#uploader-list').append(
'<div id="" class="file-iteme">' + '<div id="" class="file-iteme">' +
'<div class="handle"><p>x</p></div>' + '<div class="handle"><p>x</p></div>' +
@ -211,6 +215,8 @@ function fillFormData(data) {
$('#phone').val(data.phone); $('#phone').val(data.phone);
$('#remark').val(data.remark); $('#remark').val(data.remark);
layui.form.render(); layui.form.render();
// 主动触发一次 change确保事件逻辑在回显时也执行
$('#projectId').trigger('change');
// 设置只读显示的文本(可选) // 设置只读显示的文本(可选)
if (isEditMode) { if (isEditMode) {
@ -230,7 +236,7 @@ function loadAttachments(fileList) {
if (fileList && fileList.length > 0) { if (fileList && fileList.length > 0) {
// 这里需要根据实际情况处理附件的显示 // 这里需要根据实际情况处理附件的显示
// 假设附件有预览地址 // 假设附件有预览地址
$.each(fileList, function(index, file) { $.each(fileList, function (index, file) {
let html = ''; let html = '';
// 这里简化处理,实际需要根据文件类型显示不同的图标 // 这里简化处理,实际需要根据文件类型显示不同的图标
$('#uploader-list').append( $('#uploader-list').append(
@ -301,7 +307,7 @@ function deleteAttachment(fileId, element) {
} }
// 编辑模式下的删除逻辑 // 编辑模式下的删除逻辑
layer.confirm('确定要删除这个附件吗?', function(index) { layer.confirm('确定要删除这个附件吗?', function (index) {
let url = dataUrl + 'backstage/backApply/deleteAttachment'; let url = dataUrl + 'backstage/backApply/deleteAttachment';
let params = { let params = {
encryptedData: JSON.stringify({ encryptedData: JSON.stringify({
@ -339,6 +345,8 @@ function getProList() {
setTimeout(() => { setTimeout(() => {
$('#projectId').val(objParam.projectId); $('#projectId').val(objParam.projectId);
layui.form.render(); layui.form.render();
// 主动触发一次 change确保事件逻辑在回显时也执行
$('#projectId').trigger('change');
}, 100); }, 100);
} }
} }
@ -357,7 +365,7 @@ function setSelectData(proList) {
let html = '<option value="">请选择工程</option>'; let html = '<option value="">请选择工程</option>';
$.each(proListData, function (index, item) { $.each(proListData, function (index, item) {
// 确保有companyName字段 // 确保有companyName字段
var companyName = item.companyName || ''; var companyName = item.companyName || '';
// 将公司名称存储在data-company属性中 // 将公司名称存储在data-company属性中
html += '<option value="' + item.id + '" data-company="' + companyName + '">' + html += '<option value="' + item.id + '" data-company="' + companyName + '">' +
@ -371,17 +379,19 @@ function setSelectData(proList) {
layui.form.render('select'); layui.form.render('select');
} }
// 同时绑定jQuery的change事件 // 同时绑定 jQuery change 事件,作为兜底
$('#projectId').off('change').on('change', function() { $('#projectId').off('change').on('change', function () {
console.log("setSelectProData中的change事件触发"); console.log("setSelectData 中的 change 事件触发,值:", $(this).val());
var selectedOption = $(this).find('option:selected'); var self = this;
var selectedOption = $(self).find('option:selected');
var companyName = selectedOption.data('company') || ''; var companyName = selectedOption.data('company') || '';
// 如果data属性没有获取到从proListData中查找 // 如果 data 属性没有获取到,从 proListData 中查找
if (!companyName && $(this).val()) { var value = $(self).val();
var foundItem = proListData.find(function(item) { if (!companyName && value) {
return item.id == $(this).val(); var foundItem = proListData.find(function (item) {
return item.id == value;
}); });
if (foundItem) { if (foundItem) {
companyName = foundItem.companyName || foundItem.company || ''; companyName = foundItem.companyName || foundItem.company || '';
@ -393,8 +403,9 @@ function setSelectData(proList) {
// 设置公司输入框的值 // 设置公司输入框的值
$('#company').val(companyName); $('#company').val(companyName);
$('#companyName').val(companyName); $('#companyName').val(companyName);
$('#remark').val(remark); $('#remark').val(companyName);
// 如果form对象存在更新表单数据
// 如果 form 对象存在,更新表单数据
if (window.form && typeof window.form.val === 'function') { if (window.form && typeof window.form.val === 'function') {
window.form.val('formInfo', { window.form.val('formInfo', {
company: companyName, company: companyName,
@ -407,10 +418,10 @@ function setSelectData(proList) {
// 设置文件类型 // 设置文件类型
function handleFileType(index, file, result) { function handleFileType(index, file, result) {
let html = '', img = ''; let html = '', img = '';
if(file.ext){ if (file.ext) {
file.ext = file.ext.toLowerCase(); file.ext = file.ext.toLowerCase();
} }
if(file.name){ if (file.name) {
file.name = file.name.toLowerCase(); file.name = file.name.toLowerCase();
} }
if (file.ext === 'doc' || file.ext === 'docx') { if (file.ext === 'doc' || file.ext === 'docx') {
@ -788,7 +799,7 @@ function goOnAddData() {
let id = $(this).attr('id'); let id = $(this).attr('id');
if (parseInt(id) === parseInt(item.id)) { if (parseInt(id) === parseInt(item.id)) {
let num = $(this).find('td').eq(6).find('input[name="num"]').val(), let num = $(this).find('td').eq(6).find('input[name="num"]').val(),
remark = $(this).find('td').eq(7).find('input[name="remark"]').val(); remark = $(this).find('td').eq(7).find('input[name="remark"]').val();
if (!item.num || parseInt(item.num) === 0) { if (!item.num || parseInt(item.num) === 0) {
item.num = num; item.num = num;
} }

View File

@ -62,144 +62,144 @@
</head> </head>
<body> <body>
<div id="main-box"> <div id="main-box">
<div id="basic-box"> <div id="basic-box">
<form class="layui-form layuimini-form" onclick="return false;"> <form class="layui-form layuimini-form" onclick="return false;">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label required" style="width: 100px !important;">退料工程</label> <label class="layui-form-label required" style="width: 100px !important;">退料工程</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<select name="projectId" id="projectId" lay-verify="required" lay-search <select name="projectId" id="projectId" lay-verify="required" lay-search
class="layui-select"> lay-filter="projectId" class="layui-select">
</select> </select>
</div> </div>
</div> </div>
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label required" style="width: 110px !important;">退料日期</label> <label class="layui-form-label required" style="width: 110px !important;">退料日期</label>
<div class="layui-input-inline layui-input-wrap"> <div class="layui-input-inline layui-input-wrap">
<div class="layui-input-prefix"> <div class="layui-input-prefix">
<i class="layui-icon layui-icon-date"></i> <i class="layui-icon layui-icon-date"></i>
</div>
<input class="layui-input" id="backTime" autocomplete="off" name="backTime"
lay-verify="required" readonly style="cursor: pointer;">
</div> </div>
<input class="layui-input" id="backTime" autocomplete="off" name="backTime"
lay-verify="required" readonly style="cursor: pointer;">
</div> </div>
</div> </div>
</div> <div class="layui-form-item">
<div class="layui-form-item"> <div class="layui-inline">
<div class="layui-inline"> <label class="layui-form-label required" style="width: 100px !important;">经办人</label>
<label class="layui-form-label required" style="width: 100px !important;">经办人</label> <div class="layui-input-inline">
<div class="layui-input-inline"> <input class="layui-input" name="manager" id="manager" autocomplete="off"
<input class="layui-input" name="manager" id="manager" autocomplete="off" lay-verify="required" maxlength="30" lay-affix="clear">
lay-verify="required" maxlength="30" lay-affix="clear"> </div>
</div>
<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="phone" id="phone" autocomplete="off" maxlength="11"
lay-verify="required" maxlength="30" lay-affix="clear" onblur="checkPhone(event)">
</div>
</div> </div>
</div> </div>
<div class="layui-inline"> <div class="layui-form-item">
<label class="layui-form-label required" style="width: 100px !important;">经办人电话</label> <label class="layui-form-label required" style="width: 100px !important;">备注</label>
<div class="layui-input-inline"> <div class="layui-input-inline" style="width: 764px;">
<input class="layui-input" name="phone" id="phone" autocomplete="off" maxlength="11"
lay-verify="required" maxlength="30" lay-affix="clear" onblur="checkPhone(event)">
</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" <textarea placeholder="请输入备注" lay-verify="required" id="remark" name="remark"
class="layui-textarea" maxLength="255" lay-affix="clear"></textarea> class="layui-textarea" maxLength="255" lay-affix="clear"></textarea>
</div>
</div>
<!-- 添加隐藏字段存储公司名称 -->
<input type="hidden" id="companyName" name="companyName">
<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>附件证明</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>
<div class="layout" style="flex-direction: column;margin-left: 2px;">
<p style="color: red;">提示最多上传5个附件</p>
<p style="color: red;">支持格式:jpg、png、jpeg</p>
<p style="color: red;">doc、docx、pdf、xlsx、xls</p>
</div>
</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>
<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> </div>
</form> </div>
<!-- 添加隐藏字段存储公司名称 -->
<input type="hidden" id="companyName" name="companyName">
<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>附件证明</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>
<div class="layout" style="flex-direction: column;margin-left: 2px;">
<p style="color: red;">提示最多上传5个附件</p>
<p style="color: red;">支持格式:jpg、png、jpeg</p>
<p style="color: red;">doc、docx、pdf、xlsx、xls</p>
</div>
</blockquote>
</div> </div>
</fieldset> <div class="title layout">
<div class="table-box" table-responsive style="display: none;" id="table-box"> <span style="font-weight:700;text-decoration:none;color:#409EFF;"></span>
<table id="baseTable" class="classTable table-hover"> <p>退料明细</p>
<thead> </div>
<tr> <!-- 无数据时-展示 -->
<th style="width: 5%" class="center"> <div id="no_data_title" class="layout">
<input id="allCheck" onclick="selectAll(this.checked)" type="checkbox"> <img src="../../../images/no_data_icon.png" alt="无数据">
</th> <p style="font-size: 16px;font-weight: bold;">您还没选择退料安全工器具类型</p>
<th style="width: 5%" class="center">序号</th> <p style="color: #999999;">需要添加类型后才能执行退料清点操作</p>
<th style="width: 8%" class="center">类型</th> <p style="color: #999999;">清点完成后,物品自动处于"待检验"状态,请尽快完成检验是否合格,进行入库或报废</p>
<th style="width: 8%" class="center">名称</th> <button class="layui-btn layui-bg-blue" onclick="chooseFitType()">选择类型</button>
<th style="width: 8%" class="center">规格型号</th> </div>
<th style="width: 8%" class="center">单位</th> <fieldset class="table-search-fieldset" id="search-info" style="display: none;">
<th style="width: 10%" class="center"><span style="color: red;">*</span> 本次退回</th> <legend>搜索信息</legend>
<th style="width: 14%" class="center">备注</th> <div style="margin: 10px 10px 10px 10px">
</tr> <form class="layui-form layui-form-pane" action="#" onsubmit="return false;">
</thead> <div class="layui-form-item">
<tbody></tbody> <div class="layui-inline">
</table> <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: 8%" class="center">类型</th>
<th style="width: 8%" class="center">名称</th>
<th style="width: 8%" class="center">规格型号</th>
<th style="width: 8%" class="center">单位</th>
<th style="width: 10%" class="center"><span style="color: red;">*</span> 本次退回</th>
<th style="width: 14%" class="center">备注</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
<div class="btn-box">
<button class="layui-btn layui-bg-blue save" onclick="saveData2(1)">确定完成</button>
<button class="layui-btn layui-bg-green temp-save" onclick="saveData2(0)">暂存</button>
<button class="layui-btn layui-btn-primary cancel" onclick="closePage()">返回</button>
</div> </div>
</div> </div>
<div class="btn-box">
<button class="layui-btn layui-bg-blue save" onclick="saveData2(1)">确定完成</button>
<button class="layui-btn layui-bg-green temp-save" onclick="saveData2(0)">暂存</button>
<button class="layui-btn layui-btn-primary cancel" onclick="closePage()">返回</button>
</div>
</div>
</body> </body>
<script src="../../../lib/jquery-3.4.1/jquery-3.7.1.min.js" charset="utf-8"></script> <script src="../../../lib/jquery-3.4.1/jquery-3.7.1.min.js" charset="utf-8"></script>
<script src="../../../js/public.js" charset="utf-8"></script> <script src="../../../js/public.js" charset="utf-8"></script>
@ -207,4 +207,4 @@
<script src="../../../js/aq_back_material/child/add_back_material.js" charset="utf-8"></script> <script src="../../../js/aq_back_material/child/add_back_material.js" charset="utf-8"></script>
<script src="../../../js/openIframe.js" charset="utf-8"></script> <script src="../../../js/openIframe.js" charset="utf-8"></script>
</html> </html>