张诺
2025-07-25 50b6007b336a65b7deb6c77c9fdc608865067608
src/views/salesOutbound/components/formDia.vue
@@ -53,7 +53,7 @@
        <el-row>
          <el-col :span="12">
            <el-form-item label="库存数量" prop="inventoryQuantity">
              <el-input v-model="form.inventoryQuantity" placeholder="请输入销售数量" maxlength="30" type="number" :disabled="operationType === 'view'"/>
              <el-input v-model="form.inventoryQuantity" placeholder="请输入销售数量" maxlength="30" type="number" :disabled="true"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -81,39 +81,44 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="运费" prop="freight">
              <el-input v-model="form.freight" placeholder="请输入销售总价(含税)" maxlength="30" type="number" :disabled="operationType === 'view'"/>
            <el-form-item label="采购运费" prop="purchasingFreight" @change="mathProfit">
              <el-input v-model="form.purchasingFreight" placeholder="请输入" maxlength="30" type="number" :disabled="operationType === 'view'"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
               <el-col :span="12">
                  <el-form-item label="销售运费" prop="salesFreight" @change="mathProfit">
                     <el-input v-model="form.salesFreight" placeholder="请输入" maxlength="30" type="number" :disabled="operationType === 'view'"/>
                  </el-form-item>
               </el-col>
          <el-col :span="12">
            <el-form-item label="购销煤税率(%)" prop="taxCoal">
              <el-input v-model="form.taxCoal" placeholder="请输入销售总价(含税)" maxlength="30" type="number" :disabled="operationType === 'view'"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="运输税率(%)" prop="taxTrans">
              <el-input v-model="form.taxTrans" placeholder="请输入销售总价(含税)" maxlength="30" type="number" :disabled="operationType === 'view'"/>
              <el-input v-model="form.taxCoal" placeholder="请输入" maxlength="30" type="number" :disabled="operationType === 'view'"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
               <el-col :span="12">
                  <el-form-item label="运输税率(%)" prop="taxTrans">
                     <el-input v-model="form.taxTrans" placeholder="请输入" maxlength="30" type="number" :disabled="operationType === 'view'"/>
                  </el-form-item>
               </el-col>
          <el-col :span="12">
            <el-form-item label="毛利润" prop="grossProfit">
              <el-input v-model="form.grossProfit" placeholder="毛利润" maxlength="30" type="number" :disabled="operationType === 'view'"/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="净利润" prop="netProfit">
              <el-input v-model="form.netProfit" placeholder="净利润" maxlength="30" type="number" :disabled="operationType === 'view'"/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
               <el-col :span="12">
                  <el-form-item label="净利润" prop="netProfit">
                     <el-input v-model="form.netProfit" placeholder="净利润" maxlength="30" type="number" :disabled="operationType === 'view'"/>
                  </el-form-item>
               </el-col>
          <el-col :span="12">
            <el-form-item label="添加至待补库" prop="isPendingRestock">
              <el-select v-model="form.isPendingRestock" placeholder="">
            <el-form-item label="添加至待补库" prop="isAdd">
              <el-select v-model="form.isAdd" placeholder="请选择是否需要待补库" :disabled="operationType === 'view'">
                <el-option label="是" :value="true" />
                <el-option label="否" :value="false" />
              </el-select>
@@ -152,14 +157,15 @@
    saleQuantity: '',
    salePrice: '',
    totalAmount: '',
    freight: '',
    purchasingFreight: '',
    taxCoal: '',
    taxTrans: '',
    grossProfit: '',
    netProfit: '',
    inventoryQuantity: '',
    priceIncludingTax: '',
    isPendingRestock: false
      salesFreight: '',
    isAdd: false
  },
  rules: {
    saleDate: [{ required: true, message: "请选择日期", trigger: "change" },],
@@ -169,14 +175,14 @@
      saleQuantity: [{ required: true, message: "请输入", trigger: "blur" },],
      salePrice: [{ required: true, message: "请输入", trigger: "blur" },],
      totalAmount: [{ required: true, message: "请输入", trigger: "blur" },],
      freight: [{ required: true, message: "请输入", trigger: "blur" },],
      purchasingFreight: [{ required: false, message: "请输入", trigger: "blur" },],
      taxCoal: [{ required: true, message: "请输入", trigger: "blur" },],
      taxTrans: [{ required: true, message: "请输入", trigger: "blur" },],
      grossProfit: [{ required: true, message: "请输入", trigger: "blur" },],
      netProfit: [{ required: true, message: "请输入", trigger: "blur" },],
      inventoryQuantity: [{ required: true, message: "请输入", trigger: "blur" },],
      priceIncludingTax: [{ required: true, message: "请输入", trigger: "blur" },],
    isPendingRestock: [{ required: true, message: "请选择是否添加至待补库", trigger: "change" },],
    isAdd: [{ required: true, message: "请选择是否添加至待补库", trigger: "change" },],
  }
})
@@ -184,6 +190,11 @@
// 打开弹框
const openDialog = async (type, row) => {
  if(type === 'add'){
    form.value = {}
  }else{
    form.value = {...row}
  }
  operationType.value = type
  dialogVisitable.value = true
  form.value.saleDate = proxy.getCurrentDate()
@@ -197,13 +208,17 @@
    value: item.id,
    label: item.customerName,
  }));
  let res = await userStore.getInfo()
  form.value.registrantId = res.user.userId
  form.value.taxCoal = 13
  form.value.taxTrans = 9
  form.value.freight = 20
  form.value.purchasingFreight = 20
  form.value.salesFreight = 0
  form.value.isAdd = false
  if (type !== 'add') {
    form.value = {...row}
    form.value = {...row,
    }
  }
}
// 复制煤种相关信息
@@ -227,7 +242,8 @@
  const purchaseTons = form.value.inventoryQuantity;     // 库存数量
  const saleTons = form.value.saleQuantity;          // 销售数量
  const purchasePricePerTon = form.value.priceIncludingTax; // 含税单价
  const transportPricePerTon = form.value.freight; // 运费
  const transportPricePerTon = form.value.purchasingFreight; // 采购运费
  const salesFreight = form.value.salesFreight; // 销售运费
  const salePricePerTon = form.value.salePrice;   // 销售单价(元/吨)
  const coalTaxRate = form.value.taxCoal / 100;      // 购销煤税率(13%)
  const transportTaxRate = form.value.taxTrans / 100; // 运输税率(9%)
@@ -242,13 +258,15 @@
  const D = C * transportTaxRate * purchaseTons;     // 运费进项税额
  const E = salePricePerTon / (1 + coalTaxRate);     // 销售不含税单价
  const F = E * coalTaxRate * saleTons;              // 销项税额
  const R = salesFreight / (1 + transportTaxRate);       // 销售煤运费不含税单价
  const S = R * transportTaxRate * saleTons;              // 销售煤运费进项税额
// 毛利润 = 销售收入 - 成本成本(购煤+运费)的成本部分
  const G = E * saleTons - A * saleTons - C * saleTons;
  const G = E * saleTons - A * saleTons - C * saleTons - R * saleTons;
  form.value.grossProfit = G.toFixed(2);
// 应缴纳增值税 = 销项税 - 可抵扣进项税(按销售量比例计算)
  const H = F - (A * coalTaxRate * saleTons) - (C * transportTaxRate * saleTons);
  const H = F - (A * coalTaxRate * saleTons) - (C * transportTaxRate * saleTons) - (R * transportTaxRate * saleTons);
// 增值税附加税
  const K = H * surchargeRate;