| | |
| | | |
| | | //æ¤jsæä»¶æ¯ç¨æ¥èªå®ä¹æ©å±ä¸å¡ä»£ç ï¼å¯ä»¥æ©å±ä¸äºèªå®ä¹é¡µé¢æè
éæ°é
ç½®çæç代ç |
| | | |
| | | import { el } from "element-plus/es/locales.mjs"; |
| | | |
| | | let extension = { |
| | | components: { |
| | | //æ¥è¯¢ç颿©å±ç»ä»¶ |
| | |
| | | // } |
| | | // } |
| | | this.columns.forEach(column => { |
| | | if (column.field == 'materielCode') { |
| | | column.formatter = (row) => { |
| | | var str = ''; |
| | | var list = row.materielCode.split(','); |
| | | for (let index = 0; index < list.length; index++) { |
| | | str += list[index] + '<br>'; |
| | | } |
| | | return str = list[0] == "" ? "空箱" : str; |
| | | } |
| | | } |
| | | if (column.field == 'batchNo') { |
| | | column.formatter = (row) => { |
| | | var str = ''; |
| | | var list = row.batchNo.split(','); |
| | | for (let index = 0; index < list.length; index++) { |
| | | str += list[index] + '<br>'; |
| | | } |
| | | return str = list[0] == "" ? "æ " : str; |
| | | } |
| | | } |
| | | if (column.field == 'materielInfo') { |
| | | const today = new Date() |
| | | column.formatter = (row) => { |
| | | if (row.details.length > 0) { |
| | | const today = new Date(); |
| | | const closestDate = row.details |
| | | .map(x => { |
| | | const date = new Date(x.effectiveDate); |
| | | const diffInDays = Math.ceil(Math.abs((today - date) / (1000 * 60 * 60 * 24))); |
| | | return { date, diffInDays }; |
| | | }) |
| | | .reduce((closest, current) => (current.diffInDays < closest.diffInDays ? current : closest)) |
| | | .date; |
| | | // if (column.field == 'materielCode') { |
| | | // column.formatter = (row) => { |
| | | // var str = ''; |
| | | // var list = row.materielCode.split(','); |
| | | // for (let index = 0; index < list.length; index++) { |
| | | // str += list[index] + '<br>'; |
| | | // } |
| | | // return str = list[0] == "" ? "空箱" : str; |
| | | // } |
| | | // } |
| | | // if (column.field == 'batchNo') { |
| | | // column.formatter = (row) => { |
| | | // var str = ''; |
| | | // var list = row.batchNo.split(','); |
| | | // for (let index = 0; index < list.length; index++) { |
| | | // str += list[index] + '<br>'; |
| | | // } |
| | | // return str = list[0] == "" ? "æ " : str; |
| | | // } |
| | | // } |
| | | // if (column.field == 'materielInfo') { |
| | | // const today = new Date() |
| | | // column.formatter = (row) => { |
| | | // if (row.details.length > 0) { |
| | | // const today = new Date(); |
| | | // const closestDate = row.details |
| | | // .map(x => { |
| | | // const date = new Date(x.effectiveDate); |
| | | // const diffInDays = Math.ceil(Math.abs((today - date) / (1000 * 60 * 60 * 24))); |
| | | // return { date, diffInDays }; |
| | | // }) |
| | | // .reduce((closest, current) => (current.diffInDays < closest.diffInDays ? current : closest)) |
| | | // .date; |
| | | |
| | | const daysSinceClosest = Math.ceil(Math.abs((today - closestDate) / (1000 * 60 * 60 * 24))); |
| | | return '<span style="color: #F56C6C">' + daysSinceClosest + "天" + '</span>'; |
| | | } else { |
| | | return '<span style="color: #F56C6C">' + "æ ä¿è´¨æ" + '</span>'; |
| | | } |
| | | // const daysSinceClosest = Math.ceil(Math.abs((today - closestDate) / (1000 * 60 * 60 * 24))); |
| | | // return '<span style="color: #F56C6C">' + daysSinceClosest + "天" + '</span>'; |
| | | // } else { |
| | | // return '<span style="color: #F56C6C">' + "æ ä¿è´¨æ" + '</span>'; |
| | | // } |
| | | |
| | | } |
| | | } |
| | | // } |
| | | // } |
| | | if (column.field == 'sumStock') { |
| | | column.formatter = (row) => { |
| | | if (row.details.length > 0) { |
| | |
| | | |
| | | } |
| | | } |
| | | if (column.field === 'orderStatistics') { |
| | | column.formatter = (row) => { |
| | | // æ ¡éªdetailsæ¯å¦åå¨ä¸ææ°æ® |
| | | if (row.details && row.details.length > 0) { |
| | | // æ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 || ''; // è·ååä½ï¼æ å为空 |
| | | |
| | | // ç»ååç»é®ï¼å¯æ ¹æ®éè¦è°æ´æ¾ç¤ºæ ¼å¼ï¼ |
| | | 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(groupSumMap).map(([_, data]) => { |
| | | // å¤çå使¾ç¤ºï¼æåä½åå ç©ºæ ¼æ¾ç¤ºï¼æ å䏿¾ç¤º |
| | | const unitText = data.unit ? ` ${data.unit}` : ''; |
| | | |
| | | // ç»è£
æ¾ç¤ºææ¬ï¼å¯æ ¹æ®éæ±è°æ´å段æ¾ç¤ºé¡ºåºåæ ¼å¼ï¼ |
| | | 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: #716cf5ff; white-space: normal; word-break: break-all;">${displayContent}</div>`; |
| | | } else { |
| | | return '<span style="color: #F56C6C">空箱</span>'; |
| | | } |
| | | }; |
| | | } |
| | | if (column.field == 'stockOrderNo') { |
| | | column.formatter = (row) => { |
| | | // ææç»æ°æ®æ¶å¤ç |
| | | if (row.details && row.details.length > 0) { |
| | | // æåææé空çorderNOå¹¶å»é |
| | | const uniqueOrderNOs = [...new Set( |
| | | row.details.map(item => item.orderNo).filter(no => no) // è¿æ»¤ç©ºåæ®å· |
| | | )]; |
| | | |
| | | // æææåæ®å·åæ¢è¡æ¾ç¤ºï¼å¦åæ¾ç¤ºé»è®¤ææ¬ |
| | | if (uniqueOrderNOs.length > 0) { |
| | | return `<span style="color: #F56C6C">${uniqueOrderNOs.join('<br>')}</span>`; |
| | | } else { |
| | | return '<span style="color: #F56C6C">ææ åæ®</span>'; |
| | | } |
| | | } else { |
| | | // æ æç»æ°æ®æ¶æ¾ç¤ºé»è®¤ææ¬ |
| | | return '<span style="color: #F56C6C">ææ åæ®</span>'; |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | onInited() { |