Ver Fonte

feat: 入库管理打印

liujt há 3 semanas atrás
pai
commit
3b984dd716

+ 38 - 27
src/views/warehouseManagement/stockManagement/components/printStockEnterHt.vue

@@ -7,7 +7,6 @@
     @close="close"
   >
     <div id="printSectionHt">
-      <!-- 24cm*14cm -->
       <div
         v-for="(rowItem, idx) in formData"
         :key="rowItem.id || idx"
@@ -15,6 +14,7 @@
           font-family: SimSun, serif;
           padding: 20px;
           width: 24cm;
+          min-height: 14cm;
           margin: 0 auto;
           box-sizing: border-box;
           page-break-after: always;
@@ -25,17 +25,17 @@
           <h2 style="margin: 0; font-size: 24px; font-weight: bold;">{{ groupName }}入库单</h2>
         </div>
         
-        <!-- 供应商信息 -->
+        <!-- 供应商/客户信息 -->
         <div style="margin-bottom: 20px; width: 100%;">
           <div style="width: 100%; display: flex;">
             <div style="width: 40%;">
-              <strong>供应商名称:</strong>{{ rowItem.extraInfo?.supplierName || '' }}
+              供应商名称:{{ rowItem.extInfo?.supplierName || '' }}
             </div>
             <div style="width: 30%;">
-              <strong>日期:</strong>{{ rowItem.storageTime || '' }}
+              日期:{{ rowItem.storageTime || '' }}
             </div>
             <div style="width: 30%;">
-              <strong>编号:</strong>{{ rowItem.bizNo || '' }}
+              编号:{{ rowItem.bizNo || '' }}
             </div>
           </div>
         </div>
@@ -54,7 +54,7 @@
             <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: 25%;">型号规格</th>
-              <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 15%;">客户</th>
+              <th v-if="rowItem.bizType == 6" style="border: 1px solid #000; padding: 4px; text-align: center; width: 15%;">客户</th>
               <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 10%;">颜色</th>
               <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 10%;">单位</th>
               <th style="border: 1px solid #000; padding: 4px; text-align: center; width: 10%;">入库数量</th>
@@ -65,7 +65,7 @@
             <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.categoryModel || '' }}{{ row.categoryModel && row?.specification ? '/' : '' }}{{ row?.specification || '' }}</td>
-              <td style="border: 1px solid #000; padding: 4px; text-align: center;">{{ row?.clientName || '' }}</td>
+              <td v-if="rowItem.bizType == 6" style="border: 1px solid #000; padding: 4px; text-align: center;">{{ row?.clientName || '' }}</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>
@@ -75,6 +75,7 @@
             <!-- 合计行 -->
             <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;">{{ getTotalAmount(rowItem) }}</td>
@@ -125,8 +126,7 @@
       return {
         QRvisible: false,
         formData: [],
-        warehouseMap: {},
-        supplierMap: {}
+        warehouseMap: {}
       };
     },
 
@@ -145,27 +145,22 @@
       async init(ids, rows) {
         console.log('ids~~', ids, rows);
         // 批量获取每个入库单的详情
-        // const promises = ids.map((id) => storageApi.getInboundDetailsByIds({ids: [id]}));
-        // const results = await Promise.all(promises);
-        const res = await storageApi.getInboundDetailsByIds(ids)
+        const res = await storageApi.getInboundDetailsByIds(ids);
         this.formData = res;
 
         // 构建仓库映射
         this.warehouseMap = {};
-        this.supplierMap = {};
         rows.forEach((row) => {
           this.warehouseMap[row.id] = row.warehouseName || '';
-          this.supplierMap[row.id] = row.supplierName || '';
         });
 
-        console.log('formData', this.formData, this.warehouseMap, this.supplierMap);
+        console.log('formData', this.formData, this.warehouseMap);
         this.QRvisible = true;
       },
 
       close() {
         this.formData = [];
         this.warehouseMap = {};
-        this.supplierMap = {};
         this.QRvisible = false;
       },
       
@@ -201,18 +196,27 @@
         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 colWidths = [55, 250, 90, 70, 90, 100];
-        const colGroup = colWidths
-          .map((w) => `<col width="${w}" style="width:${w}pt;" />`)
-          .join('');
 
         // 遍历多个单据生成多个表格
         let tables = '';
-        this.formData.forEach((rowItem, wi) => {
+        this.formData.forEach((rowItem) => {
           const list = rowItem.outInDetailList || [];
           const totalAmount = this.getTotalAmount(rowItem);
           const warehouseName = this.warehouseMap[rowItem.id] || '';
-          const supplierName = this.supplierMap[rowItem.id] || '';
+          const isBizType6 = rowItem.bizType == 6;
+          const supplierValue = rowItem.extInfo?.supplierName || '';
+
+          const totalCols = isBizType6 ? 7 : 6;
+          const colWidths = isBizType6
+            ? [55, 250, 120, 90, 70, 90, 100]
+            : [55, 250, 90, 70, 90, 100];
+          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(
@@ -220,6 +224,7 @@
               <tr height="24" style="height:24pt;">
                 <td align="center" valign="middle" style="${td}">${index + 1}</td>
                 <td align="center" valign="middle" style="${td}">${item.categoryModel || ''}${item.categoryModel && item.specification ? '/' : ''}${item.specification || ''}</td>
+                ${isBizType6 ? `<td align="center" valign="middle" style="${td}">${item.clientName || ''}</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>
@@ -228,22 +233,27 @@
             )
             .join('');
 
+          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="6" 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="3" align="left" valign="middle" style="${labelLeft}">供应商名称:${rowItem.extraInfo?.supplierName || ''}</td>
+              <td colspan="${isBizType6 ? 3 : 3}" align="left" valign="middle" style="${labelLeft}">供应商名称:${supplierValue}</td>
               <td align="left" valign="middle" style="${labelLeft}">日期:${rowItem.storageTime || ''}</td>
-              <td colspan="2" align="left" valign="middle" style="${labelLeft}">编号:${rowItem.bizNo || ''}</td>
+              <td colspan="${isBizType6 ? 3 : 2}" 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>
+              ${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>
@@ -252,6 +262,7 @@
             ${rows}
             <tr height="26" style="height:26pt;">
               <td colspan="2" 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>
@@ -261,7 +272,7 @@
               <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="3" align="left" valign="middle" style="${labelLeft}">经手人:${rowItem.fromUser || ''}</td>
+              <td colspan="${isBizType6 ? 4 : 3}" align="left" valign="middle" style="${labelLeft}">经手人:${rowItem.fromUser || ''}</td>
             </tr>
           </table>
           <br style="mso-special-character:line-break;page-break-before:always" />`;
@@ -289,7 +300,7 @@
         </head>
         <body>${tables}</body></html>`;
 
-        const blob = new Blob(['' + html], {
+        const blob = new Blob(['\uFEFF' + html], {
           type: 'application/vnd.ms-excel;charset=utf-8'
         });
         const firstBizNo = this.formData[0]?.bizNo || '';