|
|
@@ -22,13 +22,13 @@
|
|
|
>
|
|
|
<!-- 入库单标题 -->
|
|
|
<div style="text-align: center; margin-bottom: 20px;">
|
|
|
- <h2 style="margin: 0; font-size: 24px; font-weight: bold;">{{ groupName }}入库单</h2>
|
|
|
+ <h2 style="margin: 0; font-size: 24px; font-weight: bold;">{{ rowItem.bizType == 1 ? "产成品入库单" : groupName + "入库单" }}</h2>
|
|
|
</div>
|
|
|
|
|
|
<!-- 供应商/客户信息 -->
|
|
|
<div style="margin-bottom: 20px; width: 100%;">
|
|
|
<div style="width: 100%; display: flex;">
|
|
|
- <div style="width: 40%;">
|
|
|
+ <div v-if="rowItem.bizType != 1" style="width: 40%;">
|
|
|
供应商名称:{{ rowItem.supplierNames || '' }}
|
|
|
</div>
|
|
|
<div style="width: 30%;">
|
|
|
@@ -41,7 +41,59 @@
|
|
|
</div>
|
|
|
|
|
|
<!-- 入库物品表格 -->
|
|
|
+ <table
|
|
|
+ v-if="rowItem.bizType == 1"
|
|
|
+ border="1"
|
|
|
+ cellspacing="0"
|
|
|
+ style="
|
|
|
+ width: 100%;
|
|
|
+ border-collapse: collapse;
|
|
|
+ font-size: 14px;
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 5%;">编号</th>
|
|
|
+ <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 19%;">名称</th>
|
|
|
+ <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 19%;">型号规格</th>
|
|
|
+ <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 8%;">颜色</th>
|
|
|
+ <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 8%;">计量单位</th>
|
|
|
+ <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 8%;">实收数量</th>
|
|
|
+ <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 9%;">计量单位2</th>
|
|
|
+ <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 9%;">实收数量2</th>
|
|
|
+ <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 10%;">批次号</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr v-for="(row, index) in rowItem.outInDetailList" :key="index">
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ index + 1 }}</td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ row?.categoryName || '' }}</td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{row.categoryModel || '' }}{{ row.categoryModel && row?.specification ? '/' : '' }}{{ row?.specification || '' }}</td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ row?.colorKey || '' }}</td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ row?.measureUnit || '' }}</td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ row?.measureQuantity || '' }}</td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ row?.packingUnit || '' }}</td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ row?.packingQuantity || '' }}</td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ row?.batchNo || '' }}</td>
|
|
|
+
|
|
|
+ </tr>
|
|
|
+
|
|
|
+ <!-- 合计行 -->
|
|
|
+ <tr>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;" colspan="2">合计:</td>
|
|
|
+ <td v-if="rowItem.bizType == 6" style="border: 1px solid #000; padding: 4px; text-align: center;"></td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;"></td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;"></td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;"></td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ getTotalAmount(rowItem) }}</td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;"></td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;"></td>
|
|
|
+ <td style="border: 1px solid #000; padding: 4px; text-align: center;"></td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
<table
|
|
|
+ v-else
|
|
|
border="1"
|
|
|
cellspacing="0"
|
|
|
style="
|
|
|
@@ -94,7 +146,15 @@
|
|
|
</table>
|
|
|
|
|
|
<!-- 签字区域 -->
|
|
|
- <div style="margin-top: 20px; display: flex; width: 100%;">
|
|
|
+ <div v-if="rowItem.bizType == 1" style="margin-top: 20px; display: flex; width: 100%;">
|
|
|
+ <div style="width: 25%;">
|
|
|
+ <strong>制单人:</strong>{{ rowItem.extInfo?.createUserName || '' }}
|
|
|
+ </div>
|
|
|
+ <div style="width: 25%;">
|
|
|
+ <strong>审核人:</strong>{{ rowItem.verifyName || '' }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-else style="margin-top: 20px; display: flex; width: 100%;">
|
|
|
<div style="width: 25%;">
|
|
|
<strong>主管:</strong>{{ rowItem.verifyName || '' }}
|
|
|
</div>
|
|
|
@@ -217,31 +277,91 @@
|
|
|
const td = `${cellBase}font-family:'宋体';font-size:11pt;`;
|
|
|
const labelLeft = `${border}padding:4px;mso-number-format:"\\@";vertical-align:middle;text-align:left;mso-horizontal-align:left;font-family:'宋体';font-size:11pt;`;
|
|
|
|
|
|
- const title = `${this.groupName || ''}入库单`;
|
|
|
-
|
|
|
+ const baseTitle = `${this.groupName || ''}入库单`;
|
|
|
// 遍历多个单据生成多个表格
|
|
|
let tables = '';
|
|
|
this.formData.forEach((rowItem) => {
|
|
|
const list = rowItem.outInDetailList || [];
|
|
|
const totalAmount = this.getTotalAmount(rowItem);
|
|
|
const warehouseName = this.getUniqueWarehouses(rowItem);
|
|
|
+ const isBizType1 = rowItem.bizType == 1;
|
|
|
const isBizType6 = rowItem.bizType == 6;
|
|
|
const supplierValue = rowItem.supplierNames || '';
|
|
|
+ const title = isBizType1 ? '产成品入库单' : `${this.groupName || ''}入库单`;
|
|
|
|
|
|
- const totalCols = isBizType6 ? 10 : 9;
|
|
|
- const colWidths = isBizType6
|
|
|
- ? [55, 80, 100, 100, 70, 70, 70, 80, 70, 80]
|
|
|
- : [55, 100, 130, 70, 70, 70, 80, 70, 80];
|
|
|
- const colGroup = colWidths
|
|
|
- .map((w) => `<col width="${w}" style="width:${w}pt;" />`)
|
|
|
- .join('');
|
|
|
+ if (isBizType1) {
|
|
|
+ // === bizType == 1:9列,实收数量/实收数量2 ===
|
|
|
+ const totalCols = 9;
|
|
|
+ const colWidths = [55, 100, 100, 70, 70, 70, 70, 70, 70];
|
|
|
+ const colGroup = colWidths.map((w) => `<col width="${w}" style="width:${w}pt;" />`).join('');
|
|
|
|
|
|
- const customerTh = isBizType6
|
|
|
- ? `<td align="center" valign="middle" style="${th}">客户</td>`
|
|
|
- : '';
|
|
|
+ const rows = list.map(
|
|
|
+ (item, index) => `
|
|
|
+ <tr height="24" style="height:24pt;">
|
|
|
+ <td align="center" valign="middle" style="${td}">${index + 1}</td>
|
|
|
+ <td align="left" valign="middle" style="${labelLeft}">${item.categoryName || ''}</td>
|
|
|
+ <td align="center" valign="middle" style="${td}">${item.categoryModel || ''}${item.categoryModel && item.specification ? '/' : ''}${item.specification || ''}</td>
|
|
|
+ <td align="center" valign="middle" style="${td}">${item.colorKey || ''}</td>
|
|
|
+ <td align="center" valign="middle" style="${td}">${item.measureUnit || ''}</td>
|
|
|
+ <td align="center" valign="middle" style="${td}">${item.measureQuantity || ''}</td>
|
|
|
+ <td align="center" valign="middle" style="${td}">${item.packingUnit || ''}</td>
|
|
|
+ <td align="center" valign="middle" style="${td}">${item.packingQuantity || ''}</td>
|
|
|
+ <td align="center" valign="middle" style="${td}">${item.batchNo || ''}</td>
|
|
|
+ </tr>`
|
|
|
+ ).join('');
|
|
|
|
|
|
- const rows = list
|
|
|
- .map(
|
|
|
+ tables += `
|
|
|
+ <table border="1" cellspacing="0" cellpadding="0" align="center"
|
|
|
+ style="border-collapse:collapse;border:1px solid #000;mso-border-alt:solid #000 0.5pt;font-family:'宋体';font-size:11pt;text-align:center;">
|
|
|
+ <colgroup>${colGroup}</colgroup>
|
|
|
+ <tr height="40" style="height:40pt;">
|
|
|
+ <td colspan="${totalCols}" align="center" valign="middle" style="${border}padding:6px;text-align:center;font-family:'宋体';font-size:22pt;font-weight:bold;">${title}</td>
|
|
|
+ </tr>
|
|
|
+ <tr height="26" style="height:26pt;">
|
|
|
+ <td colspan="4" align="left" valign="middle" style="${labelLeft}">日期:${rowItem.storageTime || ''}</td>
|
|
|
+ <td colspan="5" align="left" valign="middle" style="${labelLeft}">编号:${rowItem.bizNo || ''}</td>
|
|
|
+ </tr>
|
|
|
+ <tr height="28" style="height:28pt;">
|
|
|
+ <td align="center" valign="middle" style="${th}">编号</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">名称</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">型号规格</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">颜色</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">计量单位</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">实收数量</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">计量单位2</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">实收数量2</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">批次号</td>
|
|
|
+ </tr>
|
|
|
+ ${rows}
|
|
|
+ <tr height="26" style="height:26pt;">
|
|
|
+ <td colspan="2" align="center" valign="middle" style="${td};font-weight:bold;">合计:</td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ <td align="center" valign="middle" style="${td};font-weight:bold;">${totalAmount}</td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ </tr>
|
|
|
+ <tr height="28" style="height:28pt;">
|
|
|
+ <td colspan="4" align="left" valign="middle" style="${labelLeft}">制单人:${rowItem.extInfo?.createUserName || ''}</td>
|
|
|
+ <td colspan="5" align="left" valign="middle" style="${labelLeft}">审核人:${rowItem.verifyName || ''}</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ <br style="mso-special-character:line-break;page-break-before:always" />`;
|
|
|
+ } else {
|
|
|
+ // === bizType != 1:9-10列,含客户列(bizType6) ===
|
|
|
+ const totalCols = isBizType6 ? 10 : 9;
|
|
|
+ const colWidths = isBizType6
|
|
|
+ ? [55, 80, 100, 100, 70, 70, 70, 80, 70, 80]
|
|
|
+ : [55, 100, 130, 70, 70, 70, 80, 70, 80];
|
|
|
+ const colGroup = colWidths.map((w) => `<col width="${w}" style="width:${w}pt;" />`).join('');
|
|
|
+
|
|
|
+ const customerTh = isBizType6
|
|
|
+ ? `<td align="center" valign="middle" style="${th}">客户</td>`
|
|
|
+ : '';
|
|
|
+
|
|
|
+ const rows = list.map(
|
|
|
(item, index) => `
|
|
|
<tr height="24" style="height:24pt;">
|
|
|
<td align="center" valign="middle" style="${td}">${index + 1}</td>
|
|
|
@@ -255,57 +375,56 @@
|
|
|
<td align="center" valign="middle" style="${td}"></td>
|
|
|
<td align="center" valign="middle" style="${td}"></td>
|
|
|
</tr>`
|
|
|
- )
|
|
|
- .join('');
|
|
|
+ ).join('');
|
|
|
|
|
|
- const customerEmpty = isBizType6
|
|
|
- ? '<td align="center" valign="middle" style="${td}"></td>'
|
|
|
- : '';
|
|
|
+ const customerEmpty = isBizType6
|
|
|
+ ? `<td align="center" valign="middle" style="${td}"></td>`
|
|
|
+ : '';
|
|
|
|
|
|
- tables += `
|
|
|
- <table border="1" cellspacing="0" cellpadding="0" align="center"
|
|
|
- style="border-collapse:collapse;border:1px solid #000;mso-border-alt:solid #000 0.5pt;font-family:'宋体';font-size:11pt;text-align:center;">
|
|
|
- <colgroup>${colGroup}</colgroup>
|
|
|
- <tr height="40" style="height:40pt;">
|
|
|
- <td colspan="${totalCols}" align="center" valign="middle" style="${border}padding:6px;text-align:center;font-family:'宋体';font-size:22pt;font-weight:bold;">${title}</td>
|
|
|
- </tr>
|
|
|
- <tr height="26" style="height:26pt;">
|
|
|
- <td colspan="${isBizType6 ? 4 : 4}" align="left" valign="middle" style="${labelLeft}">供应商名称:${supplierValue}</td>
|
|
|
- <td align="left" valign="middle" style="${labelLeft}">日期:${rowItem.storageTime || ''}</td>
|
|
|
- <td colspan="${isBizType6 ? 5 : 4}" align="left" valign="middle" style="${labelLeft}">编号:${rowItem.bizNo || ''}</td>
|
|
|
- </tr>
|
|
|
-
|
|
|
- <tr height="28" style="height:28pt;">
|
|
|
- <td align="center" valign="middle" style="${th}">编号</td>
|
|
|
- <td align="center" valign="middle" style="${th}">物料名称</td>
|
|
|
- <td align="center" valign="middle" style="${th}">型号规格</td>
|
|
|
- ${customerTh}
|
|
|
- <td align="center" valign="middle" style="${th}">颜色</td>
|
|
|
- <td align="center" valign="middle" style="${th}">单位</td>
|
|
|
- <td align="center" valign="middle" style="${th}">入库数量</td>
|
|
|
- <td align="center" valign="middle" style="${th}">批次号</td>
|
|
|
- <td align="center" valign="middle" style="${th}">单价</td>
|
|
|
- <td align="center" valign="middle" style="${th}">金额</td>
|
|
|
- </tr>
|
|
|
- ${rows}
|
|
|
- <tr height="26" style="height:26pt;">
|
|
|
- <td colspan="3" align="center" valign="middle" style="${td};font-weight:bold;">合计:</td>
|
|
|
- ${customerEmpty}
|
|
|
- <td align="center" valign="middle" style="${td}"></td>
|
|
|
- <td align="center" valign="middle" style="${td}"></td>
|
|
|
- <td align="center" valign="middle" style="${td};font-weight:bold;">${totalAmount}</td>
|
|
|
- <td align="center" valign="middle" style="${td}"></td>
|
|
|
- <td align="center" valign="middle" style="${td}"></td>
|
|
|
- <td align="center" valign="middle" style="${td}"></td>
|
|
|
- </tr>
|
|
|
- <tr height="28" style="height:28pt;">
|
|
|
- <td align="left" valign="middle" style="${labelLeft}">主管:${rowItem.verifyName || ''}</td>
|
|
|
- <td align="left" valign="middle" style="${labelLeft}">仓库:${warehouseName}</td>
|
|
|
- <td align="left" valign="middle" style="${labelLeft}">记账:${rowItem.extInfo?.createUserName || ''}</td>
|
|
|
- <td colspan="${isBizType6 ? 7 : 6}" align="left" valign="middle" style="${labelLeft}">经手人:${rowItem.fromUser || ''}</td>
|
|
|
- </tr>
|
|
|
- </table>
|
|
|
- <br style="mso-special-character:line-break;page-break-before:always" />`;
|
|
|
+ tables += `
|
|
|
+ <table border="1" cellspacing="0" cellpadding="0" align="center"
|
|
|
+ style="border-collapse:collapse;border:1px solid #000;mso-border-alt:solid #000 0.5pt;font-family:'宋体';font-size:11pt;text-align:center;">
|
|
|
+ <colgroup>${colGroup}</colgroup>
|
|
|
+ <tr height="40" style="height:40pt;">
|
|
|
+ <td colspan="${totalCols}" align="center" valign="middle" style="${border}padding:6px;text-align:center;font-family:'宋体';font-size:22pt;font-weight:bold;">${title}</td>
|
|
|
+ </tr>
|
|
|
+ <tr height="26" style="height:26pt;">
|
|
|
+ <td colspan="${isBizType6 ? 4 : 4}" align="left" valign="middle" style="${labelLeft}">供应商名称:${supplierValue}</td>
|
|
|
+ <td align="left" valign="middle" style="${labelLeft}">日期:${rowItem.storageTime || ''}</td>
|
|
|
+ <td colspan="${isBizType6 ? 5 : 4}" align="left" valign="middle" style="${labelLeft}">编号:${rowItem.bizNo || ''}</td>
|
|
|
+ </tr>
|
|
|
+ <tr height="28" style="height:28pt;">
|
|
|
+ <td align="center" valign="middle" style="${th}">编号</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">物料名称</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">型号规格</td>
|
|
|
+ ${customerTh}
|
|
|
+ <td align="center" valign="middle" style="${th}">颜色</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">单位</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">入库数量</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">批次号</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">单价</td>
|
|
|
+ <td align="center" valign="middle" style="${th}">金额</td>
|
|
|
+ </tr>
|
|
|
+ ${rows}
|
|
|
+ <tr height="26" style="height:26pt;">
|
|
|
+ <td colspan="3" align="center" valign="middle" style="${td};font-weight:bold;">合计:</td>
|
|
|
+ ${customerEmpty}
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ <td align="center" valign="middle" style="${td};font-weight:bold;">${totalAmount}</td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ <td align="center" valign="middle" style="${td}"></td>
|
|
|
+ </tr>
|
|
|
+ <tr height="28" style="height:28pt;">
|
|
|
+ <td align="left" valign="middle" style="${labelLeft}">主管:${rowItem.verifyName || ''}</td>
|
|
|
+ <td align="left" valign="middle" style="${labelLeft}">仓库:${warehouseName}</td>
|
|
|
+ <td align="left" valign="middle" style="${labelLeft}">记账:${rowItem.extInfo?.createUserName || ''}</td>
|
|
|
+ <td colspan="${isBizType6 ? 7 : 6}" align="left" valign="middle" style="${labelLeft}">经手人:${rowItem.fromUser || ''}</td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ <br style="mso-special-character:line-break;page-break-before:always" />`;
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
const html = `<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
|
|
|
@@ -318,7 +437,7 @@
|
|
|
</style>
|
|
|
<!--[if gte mso 9]><xml>
|
|
|
<x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
|
|
|
- <x:Name>${title}</x:Name>
|
|
|
+ <x:Name>${baseTitle}</x:Name>
|
|
|
<x:WorksheetOptions>
|
|
|
<x:DefaultRowHeight>260</x:DefaultRowHeight>
|
|
|
<x:Print><x:ValidPrinterInfo/><x:HorizontalResolution>600</x:HorizontalResolution><x:VerticalResolution>600</x:VerticalResolution></x:Print>
|
|
|
@@ -335,7 +454,7 @@
|
|
|
});
|
|
|
const firstBizNo = this.formData[0]?.bizNo || '';
|
|
|
const suffix = this.formData.length > 1 ? `等${this.formData.length}条` : firstBizNo;
|
|
|
- saveAs(blob, `${title}_${suffix}.xls`);
|
|
|
+ saveAs(blob, `${baseTitle}_${suffix}.xls`);
|
|
|
}
|
|
|
}
|
|
|
};
|