Browse Source

fix: 采购订单退货单合计金额及数量显示为负数,确保打印预览与Excel导出一致

xieyong 1 day ago
parent
commit
98ffba24b3

+ 11 - 6
src/views/purchasingManage/purchaseOrder/returnGoods/components/print-template-ht.vue

@@ -95,7 +95,7 @@
             </tr>
             <tr align="center">
               <td style="padding: 2px"> 合计 </td>
-              <td style="padding: 2px" colspan="2">{{ numberToChinese(getTotalValue(formData, 'totalPrice', 2)) }}</td>
+              <td style="padding: 2px" colspan="2">{{ numberToChinese(getTotalValue(formData, 'totalPrice', 2) ? '-' + getTotalValue(formData, 'totalPrice', 2) : '') }}</td>
               <td style="padding: 2px"> </td>
               <td style="padding: 2px">{{ getTotalValue(formData, 'totalCount', 2) ? '-' + getTotalValue(formData, 'totalCount', 2) : '' }} </td>
               <td style="padding: 2px"> </td>
@@ -295,7 +295,12 @@
         const list = this.formData.productList || [];
         const totalCount = this.getTotalValue(this.formData, 'totalCount', 2);
         const totalPrice = this.getTotalValue(this.formData, 'totalPrice', 2);
-        const totalChinese = this.numberToChinese(totalPrice);
+        // 退货单语义:productList 里数量/金额存的是正数,UI 渲染时硬拼负号。
+        // Excel 导出必须保持同样的负号,否则导出来跟打印预览不一致。
+        // 逻辑与模板中 `'?' + '-' + value` 完全一致:value 为 0/null/'' 时不显示。
+        const negVal = (v) => (v ? '-' + v : '');
+        // 中文大写需要按负数走 numberToChinese 里的 `负` 分支,所以把合计金额取负后再传入
+        const totalChinese = this.numberToChinese(-Number(totalPrice || 0));
 
         const border =
           'border-top:1px solid #000;border-right:1px solid #000;border-bottom:1px solid #000;border-left:1px solid #000;';
@@ -319,12 +324,12 @@
                 <td align="center" valign="middle" style="${td}">${item.productName || ''}</td>
                 <td align="center" valign="middle" style="${td}">${item.modelType || ''}</td>
                 <td align="center" valign="middle" style="${td}">${item.measuringUnit || ''}</td>
-                <td align="center" valign="middle" style="${td}">${item.totalCount ?? ''}</td>
+                <td align="center" valign="middle" style="${td}">${negVal(item.totalCount)}</td>
                 <td align="center" valign="middle" style="${td}">${item.singlePrice ?? ''}</td>
                 <td align="center" valign="middle" style="${td}">${
               item.taxRate ? item.taxRate + '%' : '0%'
             }</td>
-                <td align="center" valign="middle" style="${td}">${item.totalPrice ?? ''}</td>
+                <td align="center" valign="middle" style="${td}">${negVal(item.totalPrice)}</td>
                 <td align="center" valign="middle" style="${td}">${item.colorKey || ''}</td>
                 <td align="center" valign="middle" style="${td}">${item.remark || ''}</td>
               </tr>`
@@ -364,10 +369,10 @@
               <td align="center" valign="middle" style="${td};font-weight:bold;">合计</td>
               <td colspan="2" align="center" valign="middle" style="${td};font-weight:bold;">${totalChinese}</td>
               <td align="center" valign="middle" style="${td}"></td>
-              <td align="center" valign="middle" style="${td};font-weight:bold;">${totalCount}</td>
+              <td align="center" valign="middle" style="${td};font-weight:bold;">${negVal(totalCount)}</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;">${totalPrice}</td>
+              <td align="center" valign="middle" style="${td};font-weight:bold;">${negVal(totalPrice)}</td>
               <td align="center" valign="middle" style="${td}"></td>
               <td align="center" valign="middle" style="${td}"></td>
             </tr>