| | |
| | | column.formatter = (row) => { |
| | | // æ ¡éªdetailsæ¯å¦åå¨ä¸ææ°æ® |
| | | if (row.details && row.details.length > 0) { |
| | | // æmaterielCodeåç»ç»è®¡stockQuantityæ»åï¼å¹¶è®°å½åä½ï¼å第ä¸ä¸ªé空åä½ï¼ |
| | | const materielSumMap = row.details.reduce((acc, item) => { |
| | | const materielCode = item.materielCode || 'æªç¥ç©æ'; |
| | | // æbarcode + supplyCode + BatchNo ç»å维度åç»ç»è®¡stockQuantityæ»åï¼å¹¶è®°å½åä½ï¼å第ä¸ä¸ªé空åä½ï¼ |
| | | const groupSumMap = row.details.reduce((acc, item) => { |
| | | // è·ååç»å
³é®å段ï¼ä¸ºç©ºæ¶èµäºé»è®¤å¼ |
| | | const supplyCode = item.supplyCode || 'æªç¥ä¾åºåç¼ç '; |
| | | const batchNo = item.batchNo || 'æªç¥æ¹æ¬¡å·'; |
| | | const materielCode = item.materielCode || 'æªç¥ç©æ'; // ä¿çåæç©æç¼ç |
| | | const quantity = Number(item.stockQuantity) || 0; |
| | | const unit = item.unit || ''; // è·ååä½ï¼æ å为空 |
| | | |
| | | // ç´¯å æ°é |
| | | acc[materielCode] = { |
| | | total: (acc[materielCode]?.total || 0) + quantity, |
| | | unit: acc[materielCode]?.unit || unit // ä¿ç第ä¸ä¸ªé空åä½ |
| | | // ç»ååç»é®ï¼å¯æ ¹æ®éè¦è°æ´æ¾ç¤ºæ ¼å¼ï¼ |
| | | const groupKey = `${supplyCode}|${batchNo}|${materielCode}`; |
| | | |
| | | // ç´¯å æ°éï¼ä¿ç第ä¸ä¸ªé空åä½ |
| | | acc[groupKey] = { |
| | | total: (acc[groupKey]?.total || 0) + quantity, |
| | | unit: acc[groupKey]?.unit || unit, |
| | | supplyCode, |
| | | batchNo, |
| | | materielCode |
| | | }; |
| | | return acc; |
| | | }, {}); |
| | | |
| | | // æ¯ä¸ªç©æé¡¹çæç¬ç«divï¼è·¨è¡æ¾ç¤ºï¼å
å«åä½ï¼ |
| | | const displayItems = Object.entries(materielSumMap).map(([code, data]) => { |
| | | // æ¯ä¸ªåç»é¡¹çæç¬ç«divï¼è·¨è¡æ¾ç¤ºï¼å
嫿æåç»ç»´åº¦ååä½ï¼ |
| | | const displayItems = Object.entries(groupSumMap).map(([_, data]) => { |
| | | // å¤çå使¾ç¤ºï¼æåä½åå ç©ºæ ¼æ¾ç¤ºï¼æ å䏿¾ç¤º |
| | | const unitText = data.unit ? ` ${data.unit}` : ''; |
| | | return `<div style="line-height: 1.5; white-space: normal;">${code}ï¼${data.total}${unitText}</div>`; |
| | | |
| | | // ç»è£
æ¾ç¤ºææ¬ï¼å¯æ ¹æ®éæ±è°æ´å段æ¾ç¤ºé¡ºåºåæ ¼å¼ï¼ |
| | | return `<div style="line-height: 1.5; white-space: normal; margin-bottom: 4px;"> |
| | | ä¾åºåç¼ç ï¼${data.supplyCode} | æ¹æ¬¡å·ï¼${data.batchNo} | ç©æç¼ç ï¼${data.materielCode}ï¼${data.total}${unitText} |
| | | </div>`; |
| | | }); |
| | | |
| | | const displayContent = displayItems.join(''); |
| | | return `<div style="color: #F56C6C; white-space: normal; word-break: break-all;">${displayContent}</div>`; |
| | | return `<div style="color: #716cf5ff; white-space: normal; word-break: break-all;">${displayContent}</div>`; |
| | | } else { |
| | | return '<span style="color: #F56C6C">空箱</span>'; |
| | | } |