gaoluyang
2026-05-23 e1e0907fb7e538e559d984e1021f3c7db645a678
src/views/salesManagement/salesLedger/index.vue
@@ -158,6 +158,8 @@
              </el-table-column>
              <el-table-column label="数量"
                               prop="quantity" />
              <el-table-column label="每件数量"
                               prop="singleQuantity" />
              <el-table-column label="待发货数量"
                               prop="noQuantity" />
              <el-table-column label="税率(%)"
@@ -243,7 +245,7 @@
            <el-button link
                       type="primary"
                       @click="openForm('edit', scope.row)"
                       :disabled="!scope.row.isEdit || scope.row.hasProductionRecord || !canEditLedger(scope.row)">编辑
                       :disabled="!canEditLedger(scope.row)">编辑
            </el-button>
            <el-button link
                       type="primary"
@@ -448,6 +450,8 @@
                           prop="unit" />
          <el-table-column label="数量"
                           prop="quantity" />
          <el-table-column label="每件数量"
                           prop="singleQuantity" />
          <el-table-column label="税率(%)"
                           prop="taxRate" />
          <el-table-column label="含税单价(元)"
@@ -678,6 +682,21 @@
                               clearable
                               :precision="2"
                               @change="calculateFromQuantity"
                               style="width: 100%" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="每件数量:"
                          prop="singleQuantity">
              <el-input-number :step="1"
                               :min="1"
                               v-model="productForm.singleQuantity"
                               placeholder="请输入"
                               clearable
                               :precision="0"
                               @change="calculateFromSingleQuantity"
                               style="width: 100%" />
            </el-form-item>
          </el-col>
@@ -1095,7 +1114,6 @@
      maintenanceTime: "",
      productData: [],
      executionDate: "",
      hasProductionRecord: false,
    },
    rules: {
      salesman: [{ required: true, message: "请选择", trigger: "change" }],
@@ -1118,6 +1136,7 @@
      specificationModel: "",
      unit: "",
      quantity: "",
      singleQuantity: 1,
      taxInclusiveUnitPrice: "",
      taxRate: "",
      taxInclusiveTotalPrice: "",
@@ -2450,6 +2469,7 @@
    const totalPrice = parseFloat(productForm.value.taxInclusiveTotalPrice);
    const quantity = parseFloat(productForm.value.quantity);
    const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
    if (!totalPrice || !quantity || quantity <= 0) {
      return;
@@ -2457,8 +2477,8 @@
    isCalculating.value = true;
    // 计算含税单价 = 含税总价 / 数量
    productForm.value.taxInclusiveUnitPrice = (totalPrice / quantity).toFixed(2);
    // 计算含税单价 = 含税总价 / (数量 * 每件数量)
    productForm.value.taxInclusiveUnitPrice = (totalPrice / (quantity * singleQuantity)).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {
@@ -2485,6 +2505,7 @@
    );
    const quantity = parseFloat(productForm.value.quantity);
    const taxRate = parseFloat(productForm.value.taxRate);
    const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
    if (!exclusiveTotalPrice || !quantity || quantity <= 0 || !taxRate) {
      return;
@@ -2497,9 +2518,9 @@
    const inclusiveTotalPrice = exclusiveTotalPrice / (1 - taxRateDecimal);
    productForm.value.taxInclusiveTotalPrice = inclusiveTotalPrice.toFixed(2);
    // 计算含税单价 = 含税总价 / 数量
    // 计算含税单价 = 含税总价 / (数量 * 每件数量)
    productForm.value.taxInclusiveUnitPrice = (
      inclusiveTotalPrice / quantity
      inclusiveTotalPrice / (quantity * singleQuantity)
    ).toFixed(2);
    isCalculating.value = false;
@@ -2515,6 +2536,7 @@
    const quantity = parseFloat(productForm.value.quantity);
    const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
    const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
    if (!quantity || quantity <= 0 || !unitPrice) {
      return;
@@ -2522,8 +2544,8 @@
    isCalculating.value = true;
    // 计算含税总价
    productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
    // 计算含税总价 = 单价 * 数量 * 每件数量
    productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity * singleQuantity).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {
@@ -2547,6 +2569,7 @@
    const quantity = parseFloat(productForm.value.quantity);
    const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
    const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
    if (!quantity || quantity <= 0 || !unitPrice) {
      return;
@@ -2554,8 +2577,41 @@
    isCalculating.value = true;
    // 计算含税总价
    productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity).toFixed(2);
    // 计算含税总价 = 单价 * 数量 * 每件数量
    productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity * singleQuantity).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {
      productForm.value.taxExclusiveTotalPrice =
        proxy.calculateTaxExclusiveTotalPrice(
          productForm.value.taxInclusiveTotalPrice,
          productForm.value.taxRate
        );
    }
    isCalculating.value = false;
  };
  // 根据每件数量变化计算总价
  const calculateFromSingleQuantity = () => {
    if (!productForm.value.taxRate) {
      proxy.$modal.msgWarning("请先选择税率");
      return;
    }
    if (isCalculating.value) return;
    const quantity = parseFloat(productForm.value.quantity);
    const unitPrice = parseFloat(productForm.value.taxInclusiveUnitPrice);
    const singleQuantity = parseInt(productForm.value.singleQuantity) || 1;
    if (!quantity || quantity <= 0 || !unitPrice) {
      return;
    }
    isCalculating.value = true;
    // 计算含税总价 = 单价 * 数量 * 每件数量
    productForm.value.taxInclusiveTotalPrice = (unitPrice * quantity * singleQuantity).toFixed(2);
    // 如果有税率,计算不含税总价
    if (productForm.value.taxRate) {