gaoluyang
11 小时以前 170e43cd3509a33be7db74e5f3dbd7a71bd9ffd1
src/views/procurementManagement/procurementLedger/index.vue
@@ -21,10 +21,6 @@
            <el-input v-model="searchForm.salesContractNo" placeholder="请输入" clearable prefix-icon="Search"
                      @change="handleQuery" />
          </el-form-item>
          <el-form-item label="项目名称:">
            <el-input v-model="searchForm.projectName" placeholder="请输入" clearable prefix-icon="Search"
                      @change="handleQuery" />
          </el-form-item>
          <el-form-item label="录入日期:">
            <el-date-picker v-model="searchForm.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange"
                            placeholder="请选择" clearable @change="changeDaterange" />
@@ -107,14 +103,7 @@
        />
        <el-table-column
          label="供应商名称"
          width="240"
          prop="supplierName"
          show-overflow-tooltip
        />
        <el-table-column
          label="项目名称"
          prop="projectName"
          width="420"
          show-overflow-tooltip
        />
        <el-table-column
@@ -126,7 +115,6 @@
        <el-table-column
          label="合同金额(元)"
          prop="contractAmount"
           width="200"
          show-overflow-tooltip
          :formatter="formattedNumber"
        />
@@ -229,15 +217,6 @@
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="项目名称:" prop="projectName">
              <el-input
                v-model="form.projectName"
                placeholder="请输入"
                clearable
              />
            </el-form-item>
          </el-col>
        </el-row>
            <el-row :gutter="30">
               <el-col :span="12">
@@ -292,14 +271,6 @@
                placeholder="请选择"
                clearable
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="是否开票" prop="isInvoice">
              <el-select v-model="form.isInvoice" placeholder="请选择" clearable>
                <el-option label="是" value="1" />
                <el-option label="否" value="2" />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
@@ -604,11 +575,6 @@
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="项目名称:">
              <el-input v-model="scanForm.projectName" disabled />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="扫码时间:">
              <el-input v-model="scanForm.scanTime" disabled />
            </el-form-item>
@@ -727,7 +693,6 @@
    supplierName: "", // 供应商名称
    purchaseContractNumber: "", // 采购合同编号
    salesContractNo: "", // 销售合同编号
    projectName: "", // 项目名称
    entryDate: null, // 录入日期
    entryDateStart: undefined,
    entryDateEnd: undefined,
@@ -743,7 +708,6 @@
    supplierId: "",
    paymentMethod: "",
      executionDate: "",
    isInvoice: "",
  },
  rules: {
    purchaseContractNumber: [
@@ -753,7 +717,6 @@
    supplierId: [{ required: true, message: "请输入", trigger: "blur" }],
      entryDate: [{ required: true, message: "请选择", trigger: "change" }],
      executionDate: [{ required: true, message: "请选择", trigger: "change" }],
    isInvoice: [{ required: true, message: "请选择", trigger: "change" }],
  },
});
const {  form, rules } = toRefs(data);
@@ -1207,6 +1170,13 @@
  const day = String(today.getDate()).padStart(2, "0");
  return `${year}-${month}-${day}`;
}
// 税率可能为空:返回 number 或 null
const getTaxRateNumberOrNull = () => {
  const raw = productForm.value?.taxRate;
  if (raw === null || raw === undefined || raw === "") return null;
  const n = Number(raw);
  return Number.isFinite(n) ? n : null;
};
const mathNum = () => {
   // if (!productForm.value.taxRate) {
   //    proxy.$modal.msgWarning("请先选择税率");
@@ -1224,12 +1194,19 @@
      productForm.value.taxInclusiveUnitPrice,
      productForm.value.quantity
    );
    // 不含税总价计算
  // 不含税总价计算(税率可能为空)
  const taxRate = getTaxRateNumberOrNull();
  if (taxRate === null) {
    // 未填写税率时:按“含税/不含税一致”处理,避免出现 NaN
    productForm.value.taxExclusiveTotalPrice = productForm.value.taxInclusiveTotalPrice;
  } else {
    productForm.value.taxExclusiveTotalPrice =
      proxy.calculateTaxExclusiveTotalPrice(
        productForm.value.taxInclusiveTotalPrice,
        productForm.value.taxRate
        taxRate
      );
  }
  // if (productForm.value.taxRate) {
  //   // 不含税总价计算
  //   productForm.value.taxExclusiveTotalPrice =
@@ -1244,8 +1221,7 @@
   //    proxy.$modal.msgWarning("请先选择税率");
   //    return;
   // }
  const taxRate = productForm.value.taxRate?Number(productForm.value.taxRate):0;
  // if (!taxRate) return;
  const taxRate = getTaxRateNumberOrNull();
  if (field === 'taxInclusiveTotalPrice') {
    // 已知含税总价和数量,反算含税单价
    if (productForm.value.quantity) {
@@ -1257,13 +1233,21 @@
      productForm.value.quantity =
        (Number(productForm.value.taxInclusiveTotalPrice) / Number(productForm.value.taxInclusiveUnitPrice)).toFixed(2);
    }
    // 反算不含税总价
    productForm.value.taxExclusiveTotalPrice =
      (Number(productForm.value.taxInclusiveTotalPrice) / (1 + taxRate / 100)).toFixed(2);
    // 反算不含税总价(税率可能为空)
    if (taxRate === null) {
      productForm.value.taxExclusiveTotalPrice = productForm.value.taxInclusiveTotalPrice;
    } else {
      productForm.value.taxExclusiveTotalPrice =
        (Number(productForm.value.taxInclusiveTotalPrice) / (1 + taxRate / 100)).toFixed(2);
    }
  } else if (field === 'taxExclusiveTotalPrice') {
    // 反算含税总价
    productForm.value.taxInclusiveTotalPrice =
      (Number(productForm.value.taxExclusiveTotalPrice) * (1 + taxRate / 100)).toFixed(2);
    // 反算含税总价(税率可能为空)
    if (taxRate === null) {
      productForm.value.taxInclusiveTotalPrice = productForm.value.taxExclusiveTotalPrice;
    } else {
      productForm.value.taxInclusiveTotalPrice =
        (Number(productForm.value.taxExclusiveTotalPrice) * (1 + taxRate / 100)).toFixed(2);
    }
    // 已知数量,反算含税单价
    if (productForm.value.quantity) {
      productForm.value.taxInclusiveUnitPrice =