| | |
| | | <el-form-item label="税率(%):" |
| | | prop="taxRate"> |
| | | <el-select v-model="productForm.taxRate" |
| | | placeholder="请选择" |
| | | placeholder="请选择或输入" |
| | | clearable |
| | | filterable |
| | | remote |
| | | :remote-method="handleTaxRateRemote" |
| | | @change="calculateFromTaxRate"> |
| | | <el-option label="1" |
| | | value="1" /> |
| | |
| | | value="6" /> |
| | | <el-option label="13" |
| | | value="13" /> |
| | | <el-option v-if="customTaxRate" |
| | | :label="customTaxRate" |
| | | :value="customTaxRate" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | const productFormVisible = ref(false); |
| | | const productOperationType = ref(""); |
| | | const currentId = ref(""); |
| | | const customTaxRate = ref(""); |
| | | const productFormData = reactive({ |
| | | productForm: { |
| | | productCategory: "", |
| | |
| | | |
| | | // 构建打印内容 |
| | | let printContent = ` |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <title>打印预览</title> |
| | | <style> |
| | | body { |
| | | margin: 0; |
| | | padding: 0; |
| | | font-family: "SimSun", serif; |
| | | background: white; |
| | | } |
| | | .print-page { |
| | | width: 200mm; |
| | | height: 75mm; |
| | | padding: 10mm; |
| | | padding-left: 20mm; |
| | | background: white; |
| | | box-sizing: border-box; |
| | | page-break-after: always; |
| | | page-break-inside: avoid; |
| | | } |
| | | .print-page:last-child { |
| | | page-break-after: avoid; |
| | | } |
| | | .delivery-note { |
| | | width: 100%; |
| | | height: 100%; |
| | | font-size: 12px; |
| | | line-height: 1.2; |
| | | display: flex; |
| | | flex-direction: column; |
| | | color: #000; |
| | | } |
| | | .header { |
| | | text-align: center; |
| | | margin-bottom: 8px; |
| | | } |
| | | .company-name { |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | margin-bottom: 4px; |
| | | } |
| | | .document-title { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | } |
| | | .info-section { |
| | | margin-bottom: 8px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | .info-row { |
| | | line-height: 20px; |
| | | } |
| | | .label { |
| | | font-weight: bold; |
| | | width: 60px; |
| | | font-size: 12px; |
| | | } |
| | | .value { |
| | | margin-right: 20px; |
| | | min-width: 80px; |
| | | font-size: 12px; |
| | | } |
| | | .table-section { |
| | | margin-bottom: 40px; |
| | | // flex: 0.6; |
| | | } |
| | | .product-table { |
| | | width: 100%; |
| | | border-collapse: collapse; |
| | | border: 1px solid #000; |
| | | } |
| | | .product-table th, .product-table td { |
| | | border: 1px solid #000; |
| | | padding: 6px; |
| | | text-align: center; |
| | | font-size: 12px; |
| | | line-height: 1.4; |
| | | } |
| | | .product-table th { |
| | | font-weight: bold; |
| | | } |
| | | .total-value { |
| | | font-weight: bold; |
| | | } |
| | | .footer-section { |
| | | margin-top: auto; |
| | | } |
| | | .footer-row { |
| | | display: flex; |
| | | margin-bottom: 3px; |
| | | line-height: 22px; |
| | | justify-content: space-between; |
| | | } |
| | | .footer-item { |
| | | display: flex; |
| | | margin-right: 20px; |
| | | } |
| | | .footer-item .label { |
| | | font-weight: bold; |
| | | width: 80px; |
| | | font-size: 12px; |
| | | } |
| | | .footer-item .value { |
| | | min-width: 80px; |
| | | font-size: 12px; |
| | | } |
| | | .address-item .address-value { |
| | | min-width: 200px; |
| | | } |
| | | @media print { |
| | | body { |
| | | margin: 0; |
| | | padding: 0; |
| | | } |
| | | .print-page { |
| | | margin: 0; |
| | | padding: 10mm; |
| | | /* padding-left: 20mm; */ |
| | | page-break-inside: avoid; |
| | | page-break-after: always; |
| | | } |
| | | .print-page:last-child { |
| | | page-break-after: avoid; |
| | | } |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | | `; |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <title>打印预览</title> |
| | | <style> |
| | | body { |
| | | margin: 0; |
| | | padding: 0; |
| | | font-family: "SimSun", serif; |
| | | background: white; |
| | | } |
| | | .print-page { |
| | | width: 200mm; |
| | | height: 75mm; |
| | | padding: 10mm; |
| | | padding-left: 20mm; |
| | | background: white; |
| | | box-sizing: border-box; |
| | | page-break-after: always; |
| | | page-break-inside: avoid; |
| | | } |
| | | .print-page:last-child { |
| | | page-break-after: avoid; |
| | | } |
| | | .delivery-note { |
| | | width: 100%; |
| | | height: 100%; |
| | | font-size: 12px; |
| | | line-height: 1.2; |
| | | display: flex; |
| | | flex-direction: column; |
| | | color: #000; |
| | | } |
| | | .header { |
| | | text-align: center; |
| | | margin-bottom: 8px; |
| | | } |
| | | .company-name { |
| | | font-size: 18px; |
| | | font-weight: bold; |
| | | margin-bottom: 4px; |
| | | } |
| | | .document-title { |
| | | font-size: 16px; |
| | | font-weight: bold; |
| | | } |
| | | .info-section { |
| | | margin-bottom: 8px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | } |
| | | .info-row { |
| | | line-height: 20px; |
| | | } |
| | | .label { |
| | | font-weight: bold; |
| | | width: 60px; |
| | | font-size: 12px; |
| | | } |
| | | .value { |
| | | margin-right: 20px; |
| | | min-width: 80px; |
| | | font-size: 12px; |
| | | } |
| | | .table-section { |
| | | margin-bottom: 40px; |
| | | // flex: 0.6; |
| | | } |
| | | .product-table { |
| | | width: 100%; |
| | | border-collapse: collapse; |
| | | border: 1px solid #000; |
| | | } |
| | | .product-table th, .product-table td { |
| | | border: 1px solid #000; |
| | | padding: 6px; |
| | | text-align: center; |
| | | font-size: 12px; |
| | | line-height: 1.4; |
| | | } |
| | | .product-table th { |
| | | font-weight: bold; |
| | | } |
| | | .total-value { |
| | | font-weight: bold; |
| | | } |
| | | .footer-section { |
| | | margin-top: auto; |
| | | } |
| | | .footer-row { |
| | | display: flex; |
| | | margin-bottom: 3px; |
| | | line-height: 22px; |
| | | justify-content: space-between; |
| | | } |
| | | .footer-item { |
| | | display: flex; |
| | | margin-right: 20px; |
| | | } |
| | | .footer-item .label { |
| | | font-weight: bold; |
| | | width: 80px; |
| | | font-size: 12px; |
| | | } |
| | | .footer-item .value { |
| | | min-width: 80px; |
| | | font-size: 12px; |
| | | } |
| | | .address-item .address-value { |
| | | min-width: 200px; |
| | | } |
| | | @media print { |
| | | body { |
| | | margin: 0; |
| | | padding: 0; |
| | | } |
| | | .print-page { |
| | | margin: 0; |
| | | padding: 10mm; |
| | | /* padding-left: 20mm; */ |
| | | page-break-inside: avoid; |
| | | page-break-after: always; |
| | | } |
| | | .print-page:last-child { |
| | | page-break-after: avoid; |
| | | } |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | | `; |
| | | |
| | | // 为每条数据生成打印页面 |
| | | printData.value.forEach((item, index) => { |
| | | printContent += ` |
| | | <div class="print-page"> |
| | | <div class="delivery-note"> |
| | | <div class="header"> |
| | | <div class="document-title">零售发货单</div> |
| | | </div> |
| | | |
| | | <div class="info-section"> |
| | | <div class="info-row"> |
| | | <div> |
| | | <span class="label">发货日期:</span> |
| | | <span class="value">${formatDate( |
| | | item.createTime |
| | | )}</span> |
| | | </div> |
| | | <div> |
| | | <span class="label">客户名称:</span> |
| | | <span class="value">${ |
| | | item.customerName |
| | | }</span> |
| | | </div> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">单号:</span> |
| | | <span class="value">${ |
| | | item.salesContractNo || |
| | | "" |
| | | }</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="table-section"> |
| | | <table class="product-table"> |
| | | <thead> |
| | | <tr> |
| | | <th>产品名称</th> |
| | | <th>规格型号</th> |
| | | <th>单位</th> |
| | | <th>单价</th> |
| | | <th>零售数量</th> |
| | | <th>零售金额</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | ${ |
| | | item.products && |
| | | item |
| | | .products |
| | | .length > |
| | | 0 |
| | | ? item.products |
| | | .map( |
| | | product => ` |
| | | <tr> |
| | | <td>${ |
| | | product.productCategory || |
| | | "" |
| | | }</td> |
| | | <td>${ |
| | | product.specificationModel || |
| | | "" |
| | | }</td> |
| | | <td>${ |
| | | product.unit || |
| | | "" |
| | | }</td> |
| | | <td>${ |
| | | product.taxInclusiveUnitPrice || |
| | | "0" |
| | | }</td> |
| | | <td>${ |
| | | product.quantity || |
| | | "0" |
| | | }</td> |
| | | <td>${ |
| | | product.taxInclusiveTotalPrice || |
| | | "0" |
| | | }</td> |
| | | </tr> |
| | | ` |
| | | ) |
| | | .join( |
| | | <div class="print-page"> |
| | | <div class="delivery-note"> |
| | | <div class="header"> |
| | | <div class="document-title">零售发货单</div> |
| | | </div> |
| | | |
| | | <div class="info-section"> |
| | | <div class="info-row"> |
| | | <div> |
| | | <span class="label">发货日期:</span> |
| | | <span class="value">${formatDate( |
| | | item.createTime |
| | | )}</span> |
| | | </div> |
| | | <div> |
| | | <span class="label">客户名称:</span> |
| | | <span class="value">${ |
| | | item.customerName |
| | | }</span> |
| | | </div> |
| | | </div> |
| | | <div class="info-row"> |
| | | <span class="label">单号:</span> |
| | | <span class="value">${ |
| | | item.salesContractNo || |
| | | "" |
| | | ) |
| | | : '<tr><td colspan="6" style="text-align: center; color: #999;">暂无产品数据</td></tr>' |
| | | } |
| | | </tbody> |
| | | <tfoot> |
| | | <tr> |
| | | <td class="label">合计</td> |
| | | <td class="total-value"></td> |
| | | <td class="total-value"></td> |
| | | <td class="total-value"></td> |
| | | <td class="total-value">${getTotalQuantityForPrint( |
| | | item.products |
| | | )}</td> |
| | | <td class="total-value">${getTotalAmountForPrint( |
| | | item.products |
| | | )}</td> |
| | | </tr> |
| | | </tfoot> |
| | | </table> |
| | | </div> |
| | | }</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="footer-section"> |
| | | <div class="footer-row"> |
| | | <div class="footer-item"> |
| | | <span class="label">收货电话:</span> |
| | | <span class="value"></span> |
| | | </div> |
| | | <div class="footer-item"> |
| | | <span class="label">收货人:</span> |
| | | <span class="value"></span> |
| | | </div> |
| | | <div class="footer-item address-item"> |
| | | <span class="label">收货地址:</span> |
| | | <span class="value address-value"></span> |
| | | </div> |
| | | </div> |
| | | <div class="footer-row"> |
| | | <div class="footer-item"> |
| | | <span class="label">操作员:</span> |
| | | <span class="value">${ |
| | | userStore.nickName || |
| | | "撕开前" |
| | | }</span> |
| | | </div> |
| | | <div class="footer-item"> |
| | | <span class="label">打印日期:</span> |
| | | <span class="value">${formatDateTime( |
| | | new Date() |
| | | )}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | `; |
| | | <div class="table-section"> |
| | | <table class="product-table"> |
| | | <thead> |
| | | <tr> |
| | | <th>产品名称</th> |
| | | <th>规格型号</th> |
| | | <th>单位</th> |
| | | <th>单价</th> |
| | | <th>零售数量</th> |
| | | <th>零售金额</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | ${ |
| | | item.products && |
| | | item |
| | | .products |
| | | .length > |
| | | 0 |
| | | ? item.products |
| | | .map( |
| | | product => ` |
| | | <tr> |
| | | <td>${ |
| | | product.productCategory || |
| | | "" |
| | | }</td> |
| | | <td>${ |
| | | product.specificationModel || |
| | | "" |
| | | }</td> |
| | | <td>${ |
| | | product.unit || |
| | | "" |
| | | }</td> |
| | | <td>${ |
| | | product.taxInclusiveUnitPrice || |
| | | "0" |
| | | }</td> |
| | | <td>${ |
| | | product.quantity || |
| | | "0" |
| | | }</td> |
| | | <td>${ |
| | | product.taxInclusiveTotalPrice || |
| | | "0" |
| | | }</td> |
| | | </tr> |
| | | ` |
| | | ) |
| | | .join( |
| | | "" |
| | | ) |
| | | : '<tr><td colspan="6" style="text-align: center; color: #999;">暂无产品数据</td></tr>' |
| | | } |
| | | </tbody> |
| | | <tfoot> |
| | | <tr> |
| | | <td class="label">合计</td> |
| | | <td class="total-value"></td> |
| | | <td class="total-value"></td> |
| | | <td class="total-value"></td> |
| | | <td class="total-value">${getTotalQuantityForPrint( |
| | | item.products |
| | | )}</td> |
| | | <td class="total-value">${getTotalAmountForPrint( |
| | | item.products |
| | | )}</td> |
| | | </tr> |
| | | </tfoot> |
| | | </table> |
| | | </div> |
| | | |
| | | <div class="footer-section"> |
| | | <div class="footer-row"> |
| | | <div class="footer-item"> |
| | | <span class="label">收货电话:</span> |
| | | <span class="value"></span> |
| | | </div> |
| | | <div class="footer-item"> |
| | | <span class="label">收货人:</span> |
| | | <span class="value"></span> |
| | | </div> |
| | | <div class="footer-item address-item"> |
| | | <span class="label">收货地址:</span> |
| | | <span class="value address-value"></span> |
| | | </div> |
| | | </div> |
| | | <div class="footer-row"> |
| | | <div class="footer-item"> |
| | | <span class="label">操作员:</span> |
| | | <span class="value">${ |
| | | userStore.nickName || |
| | | "撕开前" |
| | | }</span> |
| | | </div> |
| | | <div class="footer-item"> |
| | | <span class="label">打印日期:</span> |
| | | <span class="value">${formatDateTime( |
| | | new Date() |
| | | )}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | `; |
| | | }); |
| | | |
| | | printContent += ` |
| | | </body> |
| | | </html> |
| | | `; |
| | | </body> |
| | | </html> |
| | | `; |
| | | |
| | | // 写入内容到新窗口 |
| | | printWindow.document.write(printContent); |
| | |
| | | |
| | | // 构建打印内容 |
| | | let printContent = ` |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <title>成品对账单</title> |
| | | <style> |
| | | body { |
| | | margin: 0; |
| | | padding: 20px; |
| | | font-family: "SimSun", serif; |
| | | background: white; |
| | | } |
| | | .ledger-page { |
| | | width: 100%; |
| | | margin: 0 auto; |
| | | background: white; |
| | | page-break-after: always; |
| | | } |
| | | .ledger-page:last-child { |
| | | page-break-after: avoid; |
| | | } |
| | | .header { |
| | | text-align: center; |
| | | margin-bottom: 20px; |
| | | border-bottom: 2px solid #000; |
| | | padding-bottom: 10px; |
| | | } |
| | | .title { |
| | | font-size: 24px; |
| | | font-weight: bold; |
| | | margin-bottom: 10px; |
| | | } |
| | | .print-info { |
| | | text-align: right; |
| | | font-size: 12px; |
| | | margin-bottom: 10px; |
| | | } |
| | | .ledger-table { |
| | | width: 100%; |
| | | border-collapse: collapse; |
| | | font-size: 12px; |
| | | margin-bottom: 20px; |
| | | } |
| | | .ledger-table th, |
| | | .ledger-table td { |
| | | border: 1px solid #000; |
| | | padding: 8px; |
| | | text-align: center; |
| | | } |
| | | .ledger-table th { |
| | | background-color: #f0f0f0; |
| | | font-weight: bold; |
| | | } |
| | | .ledger-table td { |
| | | text-align: center; |
| | | } |
| | | .ledger-table td:nth-child(4), |
| | | .ledger-table td:nth-child(6) { |
| | | text-align: right; |
| | | } |
| | | .total-row { |
| | | font-weight: bold; |
| | | background-color: #f9f9f9; |
| | | } |
| | | .footer { |
| | | text-align: center; |
| | | font-size: 12px; |
| | | margin-top: 20px; |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | | <div class="ledger-page"> |
| | | <div class="header"> |
| | | <div class="title">成品对账单</div> |
| | | <div class="print-info">打印日期:${formatDateTime( |
| | | new Date() |
| | | )}</div> |
| | | </div> |
| | | <table class="ledger-table"> |
| | | <thead> |
| | | <tr> |
| | | <th>序号</th> |
| | | <th>产品名称</th> |
| | | <th>规格型号</th> |
| | | <th>单位</th> |
| | | <th>单价</th> |
| | | <th>零售数量</th> |
| | | <th>零售金额</th> |
| | | <th>发货日期</th> |
| | | <th>发货车牌号</th> |
| | | <th>客户名称</th> |
| | | <th>单号</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | `; |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="UTF-8"> |
| | | <title>成品对账单</title> |
| | | <style> |
| | | body { |
| | | margin: 0; |
| | | padding: 20px; |
| | | font-family: "SimSun", serif; |
| | | background: white; |
| | | } |
| | | .ledger-page { |
| | | width: 100%; |
| | | margin: 0 auto; |
| | | background: white; |
| | | page-break-after: always; |
| | | } |
| | | .ledger-page:last-child { |
| | | page-break-after: avoid; |
| | | } |
| | | .header { |
| | | text-align: center; |
| | | margin-bottom: 20px; |
| | | border-bottom: 2px solid #000; |
| | | padding-bottom: 10px; |
| | | } |
| | | .title { |
| | | font-size: 24px; |
| | | font-weight: bold; |
| | | margin-bottom: 10px; |
| | | } |
| | | .print-info { |
| | | text-align: right; |
| | | font-size: 12px; |
| | | margin-bottom: 10px; |
| | | } |
| | | .ledger-table { |
| | | width: 100%; |
| | | border-collapse: collapse; |
| | | font-size: 12px; |
| | | margin-bottom: 20px; |
| | | } |
| | | .ledger-table th, |
| | | .ledger-table td { |
| | | border: 1px solid #000; |
| | | padding: 8px; |
| | | text-align: center; |
| | | } |
| | | .ledger-table th { |
| | | background-color: #f0f0f0; |
| | | font-weight: bold; |
| | | } |
| | | .ledger-table td { |
| | | text-align: center; |
| | | } |
| | | .ledger-table td:nth-child(4), |
| | | .ledger-table td:nth-child(6) { |
| | | text-align: right; |
| | | } |
| | | .total-row { |
| | | font-weight: bold; |
| | | background-color: #f9f9f9; |
| | | } |
| | | .footer { |
| | | text-align: center; |
| | | font-size: 12px; |
| | | margin-top: 20px; |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | | <div class="ledger-page"> |
| | | <div class="header"> |
| | | <div class="title">成品对账单</div> |
| | | <div class="print-info">打印日期:${formatDateTime( |
| | | new Date() |
| | | )}</div> |
| | | </div> |
| | | <table class="ledger-table"> |
| | | <thead> |
| | | <tr> |
| | | <th>序号</th> |
| | | <th>产品名称</th> |
| | | <th>规格型号</th> |
| | | <th>单位</th> |
| | | <th>单价</th> |
| | | <th>零售数量</th> |
| | | <th>零售金额</th> |
| | | <th>发货日期</th> |
| | | <th>发货车牌号</th> |
| | | <th>客户名称</th> |
| | | <th>单号</th> |
| | | </tr> |
| | | </thead> |
| | | <tbody> |
| | | `; |
| | | |
| | | // 添加产品数据行 |
| | | products.forEach((product, index) => { |
| | | printContent += ` |
| | | <tr> |
| | | <td>${index + 1}</td> |
| | | <td>${product.productName || ""}</td> |
| | | <td>${product.specificationModel || ""}</td> |
| | | <td>${product.unit || ""}</td> |
| | | <td>${formatNumber(product.unitPrice)}</td> |
| | | <td>${product.quantity || 0}</td> |
| | | <td>${formatNumber(product.totalPrice)}</td> |
| | | <td>${formatDate(product.deliveryDate)}</td> |
| | | <td>${product.licensePlate || ""}</td> |
| | | <td>${product.customerName || ""}</td> |
| | | <td>${product.salesContractNo || ""}</td> |
| | | </tr> |
| | | `; |
| | | <tr> |
| | | <td>${index + 1}</td> |
| | | <td>${product.productName || ""}</td> |
| | | <td>${ |
| | | product.specificationModel || "" |
| | | }</td> |
| | | <td>${product.unit || ""}</td> |
| | | <td>${formatNumber( |
| | | product.unitPrice |
| | | )}</td> |
| | | <td>${product.quantity || 0}</td> |
| | | <td>${formatNumber( |
| | | product.totalPrice |
| | | )}</td> |
| | | <td>${formatDate( |
| | | product.deliveryDate |
| | | )}</td> |
| | | <td>${product.licensePlate || ""}</td> |
| | | <td>${product.customerName || ""}</td> |
| | | <td>${ |
| | | product.salesContractNo || "" |
| | | }</td> |
| | | </tr> |
| | | `; |
| | | }); |
| | | |
| | | // 计算合计 |
| | |
| | | ); |
| | | |
| | | printContent += ` |
| | | <tr class="total-row"> |
| | | <td colspan="5">合计</td> |
| | | <td>${totalQuantity}</td> |
| | | <td>${formatNumber(totalAmount)}</td> |
| | | <td colspan="4"></td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | <div class="footer"> |
| | | 共 ${products.length} 条记录 |
| | | </div> |
| | | </div> |
| | | </body> |
| | | </html> |
| | | `; |
| | | <tr class="total-row"> |
| | | <td colspan="5">合计</td> |
| | | <td>${totalQuantity}</td> |
| | | <td>${formatNumber( |
| | | totalAmount |
| | | )}</td> |
| | | <td colspan="4"></td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | <div class="footer"> |
| | | 共 ${products.length} 条记录 |
| | | </div> |
| | | </div> |
| | | </body> |
| | | </html> |
| | | `; |
| | | |
| | | // 写入内容到新窗口 |
| | | printWindow.document.write(printContent); |
| | |
| | | isCalculating.value = false; |
| | | }; |
| | | |
| | | // 处理税率远程搜索 |
| | | const handleTaxRateRemote = query => { |
| | | if (query) { |
| | | // 验证输入是否为数字且在0-100之间 |
| | | const num = parseFloat(query); |
| | | if (!isNaN(num) && num > 0 && num < 100) { |
| | | customTaxRate.value = query; |
| | | } else { |
| | | customTaxRate.value = ""; |
| | | } |
| | | } else { |
| | | customTaxRate.value = ""; |
| | | } |
| | | }; |
| | | // 根据税率变化计算不含税总价 |
| | | const calculateFromTaxRate = () => { |
| | | // 对私客户不需要税率计算 |