From 6c247e18d8f1ff975fc4b5ae8ffaf41e4a9a37e0 Mon Sep 17 00:00:00 2001 From: hayu <1604366271@qq.com> Date: Tue, 3 Feb 2026 18:18:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=86=E6=9E=B6=E5=90=88=E5=90=8C=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../child/framework_contract_edit_form.js | 117 +++++++++++++++--- 1 file changed, 101 insertions(+), 16 deletions(-) diff --git a/js/aq_basic/child/framework_contract_edit_form.js b/js/aq_basic/child/framework_contract_edit_form.js index 798918f..c547889 100644 --- a/js/aq_basic/child/framework_contract_edit_form.js +++ b/js/aq_basic/child/framework_contract_edit_form.js @@ -398,9 +398,80 @@ $(document).on("click", ".file-iteme .handle", function (event) { }); function saveData2() { + renderAllCjTables(); $('#formSubmit').trigger('click') } +function renderAllCjTables() { + // 如果已经在厂家信息tab,直接返回(表格已渲染) + let currentTab = $('.layui-tab-title .layui-this').attr('value'); + if (currentTab === '2') return; + + // 收集所有选中的厂家 + checkedSupplierList.splice(0, checkedSupplierList.length); + $('select[name="supplier"]').each(function (index, item) { + let id = $(this).find('option:checked').val(); + let name = $(this).find('option:checked').text(); + if (id && name) { + let obj = { id: id, name: name }; + checkedSupplierList.push(obj); + } + }); + + // 如果有选中的厂家,渲染表格到隐藏容器中 + if (checkedSupplierList.length > 0) { + let cent = ''; + $.each(checkedSupplierList, function (index, item) { + cent += '
' + + addCjTableData(item.id, 1) + '
'; + }); + + // 渲染到隐藏的临时容器中 + let $tempContainer = $('#layui-tab-content'); + if ($tempContainer.length === 0) { + $tempContainer = $(''); + $('body').append($tempContainer); + } + $tempContainer.html(cent); + + // 同步数据到cjDataArr + syncCjDataFromTemp(); + } +} + +function syncCjDataFromTemp() { + cjDataArr.splice(0, cjDataArr.length); + $('#layui-tab-content-temp .layui-tab-item').each(function() { + let cjId = $(this).attr('cjId'); + let obj = {}, list = []; + obj.cjId = cjId; + + $(this).find('.cjTable tbody tr').each(function() { + let id = $(this).attr('id'); + let dataId = $(this).attr('dataId'); + let num = $(this).find('input[name="num"]').val(); + let price = $(this).find('input[name="price"]').val(); + let remarks = $(this).find('input[name="remarks"]').val(); + + if (id) { + let obj2 = { + id: id, + dataId: dataId, + num: num || 0, + price: price || 0, + remarks: remarks || '' + }; + list.push(obj2); + } + }); + + if (list.length > 0) { + obj.list = list; + cjDataArr.push(obj); + } + }); +} + // 提交 function submitApply(data) { console.log(data.field); @@ -938,48 +1009,62 @@ function addCjTableData(cjId, isUse) { function setCjTableData() { let list = cjDataArr.filter(item => { return item.cjId === cjId; - }) + }); let list2 = cjDataArr2.filter(item => { return item.cjId === cjId; - }) + }); let html = ''; if (jjDataArr && jjDataArr.length > 0) { for (var i = 0; i < jjDataArr.length; i++) { var l = jjDataArr[i]; - if (list.length === 0 || isUse) { - l.num = 0, l.price = 0, l.remarks = '', l.dataId = '-1'; - } else { + + // 修复:优先从已有数据中获取,而不是重置 + let existingData = null; + + // 1. 先从cjDataArr中查找已有数据 + if (list.length > 0) { let dataList = list[0].list; if (dataList.length > 0) { $.each(dataList, function (index, item) { if (item.id === l.id) { - l.num = item.num, l.price = item.price, l.remarks = item.remarks, l.dataId = item.dataId ? item.dataId : '-1'; - return false; + existingData = item; + return false; // 找到数据就退出循环 } }); } } - let supDataId = null; - $('select[name="supplier"]').each(function(){ - if($(this).val() === cjId){ - supDataId = $(this).attr('dataId'); - } - }) - // 二次赋值 - if(list2.length > 0 && supDataId && supDataId!=='undefined'){ + + // 2. 如果cjDataArr中没有,再从cjDataArr2中查找(用于编辑时的数据) + if (!existingData && list2.length > 0) { let dataList = list2[0].list; if (dataList.length > 0) { $.each(dataList, function (index, item) { if (item.id === l.id) { - l.dataId = item.dataId ? item.dataId : '-1'; + existingData = item; return false; } }); } } + + // 3. 根据现有数据设置值 + if (existingData) { + l.num = existingData.num; + l.price = existingData.price; + l.remarks = existingData.remarks; + l.dataId = existingData.dataId ? existingData.dataId : '-1'; + } else if (list.length === 0 || isUse) { + // 4. 只有完全没数据时才使用默认值 + l.num = 0; + l.price = 0; + l.remarks = ''; + l.dataId = '-1'; + } + if (!l.dataId) { l.dataId = '-1'; } + html += ""; html += "" + (i + 1) + "";