|
|
@@ -80,6 +80,7 @@
|
|
|
<td style="padding: 2px; width: 8%"> 税率</td>
|
|
|
<td style="padding: 2px; width: 8%"> 金额</td>
|
|
|
<td style="padding: 2px; width: 8%"> 颜色 </td>
|
|
|
+ <td v-if="showWarehouse" style="padding: 2px; width: 12%"> 仓库 </td>
|
|
|
<td style="padding: 2px; width: 10%"> 备注</td>
|
|
|
</tr>
|
|
|
|
|
|
@@ -99,6 +100,7 @@
|
|
|
<td style="padding: 2px"> {{ item.taxRate }}{{ item.taxRate !== undefined && item.taxRate !== null ? '%' : '' }}</td>
|
|
|
<td style="padding: 2px"> {{ item.totalPrice }}</td>
|
|
|
<td style="padding: 2px"> {{ item.colorKey }}</td>
|
|
|
+ <td v-if="showWarehouse" style="padding: 2px"> {{ item.warehouseName }}</td>
|
|
|
<!-- <td style="padding: 5px"> {{ item.modelKey }}</td> -->
|
|
|
<td style="padding: 2px"> {{ item.remark }}</td>
|
|
|
</tr>
|
|
|
@@ -113,6 +115,7 @@
|
|
|
<td style="padding: 2px"> </td>
|
|
|
<td style="padding: 2px">{{ getTotalValue(wrapperItem, 'totalPrice', 2) }}</td>
|
|
|
<td style="padding: 2px"> </td>
|
|
|
+ <td v-if="showWarehouse" style="padding: 2px"> </td>
|
|
|
<td style="padding: 2px"> </td>
|
|
|
<!-- <td style="padding: 2px"> </td> -->
|
|
|
<!-- <td style="padding: 2px"> </td> -->
|
|
|
@@ -195,6 +198,8 @@
|
|
|
checked: '',
|
|
|
QRvisible: false,
|
|
|
isPrintPrice: false,
|
|
|
+ // 是否在明细中显示「仓库」列(默认关闭,handlePrint 保持原样)
|
|
|
+ showWarehouse: false,
|
|
|
formData: {
|
|
|
contactName: '',
|
|
|
createTime: '',
|
|
|
@@ -208,7 +213,9 @@
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
- async open(id) {
|
|
|
+ // 第二个参数 showWarehouse 控制是否在明细中显示「仓库」列
|
|
|
+ async open(id, showWarehouse = false) {
|
|
|
+ this.showWarehouse = !!showWarehouse;
|
|
|
const list = await getSaleOrderDetails(id);
|
|
|
this.formData = await Promise.all(
|
|
|
list.map(async (wrapperItem) => {
|
|
|
@@ -351,12 +358,24 @@
|
|
|
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 colWidths = [45, 135, 45, 55, 65, 55, 75, 55, 75];
|
|
|
+ // 是否显示仓库列,并据此决定列数和列宽
|
|
|
+ const showWarehouse = !!this.showWarehouse;
|
|
|
+ const totalCols = showWarehouse ? 10 : 9;
|
|
|
+ const colWidths = showWarehouse
|
|
|
+ ? [45, 120, 45, 55, 60, 55, 75, 55, 90, 70]
|
|
|
+ : [45, 135, 45, 55, 65, 55, 75, 55, 75];
|
|
|
const colGroup = colWidths
|
|
|
.map((w) => `<col width="${w}" style="width:${w}pt;" />`)
|
|
|
.join('');
|
|
|
|
|
|
+ // 左右对称分列的 colspan(5/4 -> 5/5 等)
|
|
|
+ const halfLeft = Math.ceil(totalCols / 2);
|
|
|
+ const halfRight = totalCols - halfLeft;
|
|
|
+
|
|
|
const title = `${this.groupName || ''}销售订单`;
|
|
|
+ const warehouseTh = showWarehouse
|
|
|
+ ? `<td align="center" valign="middle" style="${th}">仓库</td>`
|
|
|
+ : '';
|
|
|
|
|
|
// 遍历多个单据生成多个表格
|
|
|
let tables = '';
|
|
|
@@ -367,8 +386,11 @@
|
|
|
const totalChinese = this.numberToChinese(totalPrice);
|
|
|
|
|
|
const rows = list
|
|
|
- .map(
|
|
|
- (item, index) => `
|
|
|
+ .map((item, index) => {
|
|
|
+ const warehouseTd = showWarehouse
|
|
|
+ ? `<td align="center" valign="middle" style="${td}">${item.warehouseName || ''}</td>`
|
|
|
+ : '';
|
|
|
+ return `
|
|
|
<tr height="24" style="height:24pt;">
|
|
|
<td align="center" valign="middle" style="${td}">${index + 1}</td>
|
|
|
<td align="center" valign="middle" style="${td}">${item.modelType || ''}</td>
|
|
|
@@ -376,33 +398,44 @@
|
|
|
<td align="center" valign="middle" style="${td}">${item.saleCount ?? ''}</td>
|
|
|
<td align="center" valign="middle" style="${td}">${item.singlePrice ?? ''}</td>
|
|
|
<td align="center" valign="middle" style="${td}">${
|
|
|
- item.taxRate ? item.taxRate + '%' : '0%'
|
|
|
- }</td>
|
|
|
+ item.taxRate ? item.taxRate + '%' : '0%'
|
|
|
+ }</td>
|
|
|
<td align="center" valign="middle" style="${td}">${item.totalPrice ?? ''}</td>
|
|
|
<td align="center" valign="middle" style="${td}">${item.colorKey || ''}</td>
|
|
|
+ ${warehouseTd}
|
|
|
<td align="center" valign="middle" style="${td}">${item.remark || ''}</td>
|
|
|
- </tr>`
|
|
|
- )
|
|
|
+ </tr>`;
|
|
|
+ })
|
|
|
.join('');
|
|
|
|
|
|
+ // 合计行多出的空单元格(仓库列对应位置)
|
|
|
+ const totalExtraEmpty = showWarehouse
|
|
|
+ ? `<td align="center" valign="middle" style="${td}"></td>`
|
|
|
+ : '';
|
|
|
+ // 制单人行:3+2+2+2=9,仓库列追加时变为 3+2+2+3=10
|
|
|
+ const signLeft = showWarehouse ? 3 : 3;
|
|
|
+ const signLeftMid = 2;
|
|
|
+ const signRightMid = 2;
|
|
|
+ const signRight = showWarehouse ? 3 : 2;
|
|
|
+
|
|
|
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="9" align="center" valign="middle" style="${border}padding:6px;text-align:center;font-family:'宋体';font-size:22pt;font-weight:bold;">${title}</td>
|
|
|
+ <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="5" align="left" valign="middle" style="${labelLeft}"></td>
|
|
|
- <td colspan="4" align="left" valign="middle" style="${labelLeft}">门店:${wrapperItem.salesDeptName || ''}</td>
|
|
|
+ <td colspan="${halfLeft}" align="left" valign="middle" style="${labelLeft}"></td>
|
|
|
+ <td colspan="${halfRight}" align="left" valign="middle" style="${labelLeft}">门店:${wrapperItem.salesDeptName || ''}</td>
|
|
|
</tr>
|
|
|
<tr height="26" style="height:26pt;">
|
|
|
- <td colspan="5" align="left" valign="middle" style="${labelLeft}">客户:${wrapperItem.partaName || ''}</td>
|
|
|
- <td colspan="4" align="left" valign="middle" style="${labelLeft}">单据日期:${wrapperItem.createTime ? wrapperItem.createTime.split(' ')[0] : ''}</td>
|
|
|
+ <td colspan="${halfLeft}" align="left" valign="middle" style="${labelLeft}">客户:${wrapperItem.partaName || ''}</td>
|
|
|
+ <td colspan="${halfRight}" align="left" valign="middle" style="${labelLeft}">单据日期:${wrapperItem.createTime ? wrapperItem.createTime.split(' ')[0] : ''}</td>
|
|
|
</tr>
|
|
|
<tr height="26" style="height:26pt;">
|
|
|
- <td colspan="5" align="left" valign="middle" style="${labelLeft}">项目名称:${wrapperItem.projectName || ''}</td>
|
|
|
- <td colspan="4" align="left" valign="middle" style="${labelLeft}">单据编号:${wrapperItem.orderNo || ''}</td>
|
|
|
+ <td colspan="${halfLeft}" align="left" valign="middle" style="${labelLeft}">项目名称:${wrapperItem.projectName || ''}</td>
|
|
|
+ <td colspan="${halfRight}" align="left" valign="middle" style="${labelLeft}">单据编号:${wrapperItem.orderNo || ''}</td>
|
|
|
</tr>
|
|
|
|
|
|
<tr height="28" style="height:28pt;">
|
|
|
@@ -414,6 +447,7 @@
|
|
|
<td align="center" valign="middle" style="${th}">税率</td>
|
|
|
<td align="center" valign="middle" style="${th}">金额</td>
|
|
|
<td align="center" valign="middle" style="${th}">颜色</td>
|
|
|
+ ${warehouseTh}
|
|
|
<td align="center" valign="middle" style="${th}">备注</td>
|
|
|
</tr>
|
|
|
${rows}
|
|
|
@@ -425,20 +459,21 @@
|
|
|
<td align="center" valign="middle" style="${td}"></td>
|
|
|
<td align="center" valign="middle" style="${td};font-weight:bold;">${totalPrice}</td>
|
|
|
<td align="center" valign="middle" style="${td}"></td>
|
|
|
+ ${totalExtraEmpty}
|
|
|
<td align="center" valign="middle" style="${td}"></td>
|
|
|
</tr>
|
|
|
<tr height="28" style="height:28pt;">
|
|
|
- <td colspan="3" align="left" valign="middle" style="${labelLeft}">业务员:${wrapperItem.salesmanName || ''}</td>
|
|
|
- <td colspan="2" align="left" valign="middle" style="${labelLeft}">制单人:${wrapperItem.createUserName || ''}</td>
|
|
|
- <td colspan="2" align="left" valign="middle" style="${labelLeft}">核对人:${wrapperItem.reviewerName || ''}</td>
|
|
|
- <td colspan="2" align="left" valign="middle" style="${labelLeft}">发货人:</td>
|
|
|
+ <td colspan="${signLeft}" align="left" valign="middle" style="${labelLeft}">业务员:${wrapperItem.salesmanName || ''}</td>
|
|
|
+ <td colspan="${signLeftMid}" align="left" valign="middle" style="${labelLeft}">制单人:${wrapperItem.createUserName || ''}</td>
|
|
|
+ <td colspan="${signRightMid}" align="left" valign="middle" style="${labelLeft}">核对人:${wrapperItem.reviewerName || ''}</td>
|
|
|
+ <td colspan="${signRight}" align="left" valign="middle" style="${labelLeft}">发货人:</td>
|
|
|
</tr>
|
|
|
<tr height="28" style="height:28pt;">
|
|
|
- <td colspan="5" align="left" valign="middle" style="${labelLeft}">地址:${wrapperItem.partbAddress || ''}</td>
|
|
|
- <td colspan="4" align="left" valign="middle" style="${labelLeft}">客户签字:</td>
|
|
|
+ <td colspan="${halfLeft}" align="left" valign="middle" style="${labelLeft}">地址:${wrapperItem.partbAddress || ''}</td>
|
|
|
+ <td colspan="${halfRight}" align="left" valign="middle" style="${labelLeft}">客户签字:</td>
|
|
|
</tr>
|
|
|
<tr height="28" style="height:28pt;">
|
|
|
- <td colspan="9" align="left" valign="middle" style="${labelLeft}">备注:${wrapperItem.remark || ''}</td>
|
|
|
+ <td colspan="${totalCols}" align="left" valign="middle" style="${labelLeft}">备注:${wrapperItem.remark || ''}</td>
|
|
|
</tr>
|
|
|
</table>
|
|
|
<br style="mso-special-character:line-break;page-break-before:always" />`;
|