From 77d3b9899c8fd9ccb027782a7d525ac4f059ab3f Mon Sep 17 00:00:00 2001 From: lihao Date: Mon, 12 Jan 2026 16:21:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/so/so/saleinvoice/card/index.js | 92 +++++++++++++++++++++-------- 1 file changed, 66 insertions(+), 26 deletions(-) diff --git a/src/so/so/saleinvoice/card/index.js b/src/so/so/saleinvoice/card/index.js index a74be5ea..01365098 100644 --- a/src/so/so/saleinvoice/card/index.js +++ b/src/so/so/saleinvoice/card/index.js @@ -1,7 +1,7 @@ /*YInZLc9/kvMC1mGq3o4LwAszAXwVlsNyvp/9X8WPLW8=*/ import React, { Component } from 'react'; -import { ajax, createPage, base, high } from 'nc-lightapp-front'; +import { ajax, createPage, base, high,toast } from 'nc-lightapp-front'; import backBtnClick from './btnClicks/back_BtnClick'; import checkAddLine from './btnClicks/checkAddline'; import checkDeleteLine from './btnClicks/checkDeleteLine'; @@ -161,10 +161,20 @@ class SaleInvoiceCard extends Component { } let formData = new FormData(); let dome = document.querySelector("#fileInfo"); - let olddate = this.props.cardTable.getAllData(this.tableId) + let olddate = this.props.cardTable.getAllData(this.tableId); formData.append('imgFile', dome.files[0]); - // headers['Content-Type'] = 'multipart/form-data' - formData.append('states', states); + formData.append('states', states);vsrctype + let srcids = []; + let vsrctype = []; + for(let i=0;i { console.log("成功") if (res.data.isSuccess == "Y") { - for(let row of res.data.data){ - let taxPrice=row.taxPrice; - let materialCode=row.materialCode; - + for(let row of res.data.data){ + let taxPrice = row.taxPrice; + let materialCode = row.materialCode; + let rowNumber = row.rowNumber; + let matchQuantity = parseFloat(row.matchQuantity) || 0; + let remaining = matchQuantity; + // 筛选匹配的行(物料编码+含税单价) + let matchedRows = []; for(let i=0;i0){ + matchedRows.push({ + index: i, + row: olddate.rows[i], + nnum: parseFloat(olddate.rows[i].values.nnum.value) || 0, + date: tsrow.ts // 日期字段,需按实际字段名调整 + }); + } + } + } + } + // 无匹配行 + if(matchedRows.length == 0){ + excessMaterials += "EXCEL第"+rowNumber+"行 物料编码【"+materialCode+"】(含税单价:"+taxPrice+"):需分配"+matchQuantity+",无匹配库存\n"; + continue; + } + // 按日期升序排序(早日期在前) + matchedRows.sort(function(a,b){ + return new Date(a.date) - new Date(b.date); + }); + // 分配数量 + let allocatedTotal = 0; + for(let j=0;j 0){ + excessMaterials += "EXCEL第"+rowNumber+"行 物料编码【"+materialCode+"】(含税单价:"+taxPrice+"):需分配"+matchQuantity+",实际分配"+allocatedTotal+",超出"+remaining+"\n"; } - // for (let bvo of olddate.rows) { - // //物料编码 - // let cmaterialvid = bvo.values.cmaterialvid.display; - // // 含税单价 - // let nqtorigtaxprice = bvo.values.nqtorigtaxprice.value; - // if(cmaterialvid == materialCode && parseFloat(taxPrice)==parseFloat(nqtorigtaxprice)){ - // this.props.cardTable.setValByKeyAndIndex("saleinvoice_b", 1, "vbdef18", { value: row.matchQuantity }) - // } - - // } } - + // 提示超出信息 + if(excessMaterials != ""){ + toast({ color: 'danger', content: "以下物料分配数量超出可用库存:\n"+excessMaterials });; + // alert(excessMaterials); + } } - // let id = this.props.getUrlParam(PRIMARY_KEY.id); - // this.onRefresh(); } }) // 置空,不然重复导入同名不会执行