进销存升级
1.供应商往来查询接口调整
2.采购报表添加导出接口联调
3.采购管理来票登记附件上传修改
已修改3个文件
104 ■■■■ 文件已修改
src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/procurementInvoiceLedger/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/receiptPayment/index.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue
@@ -34,10 +34,14 @@
          <el-form-item label="来票数:">
            <el-input-number :step="0.1"
                             :min="0"
                             :max="maxTicketsNum"
                             style="width: 100%"
                             v-model="form.ticketsNum"
                             @change="inputTicketsNum"
                             :precision="2" />
            <div style="font-size: 12px; color: #909399; margin-top: 4px;">
              可填写数量:{{ maxTicketsNum }}
            </div>
          </el-form-item>
        </el-col>
        <el-col :span="12">
@@ -73,7 +77,7 @@
import useFormData from "@/hooks/useFormData";
import { updateRegistration, getProductRecordById } from "@/api/procurementManagement/procurementInvoiceLedger";
import { ElMessage } from "element-plus";
import { getCurrentInstance, ref, nextTick } from "vue";
import { getCurrentInstance, ref, nextTick, computed } from "vue";
defineOptions({
  name: "来票台账编辑",
@@ -82,7 +86,13 @@
const saleLedgerProjectId = ref("");
const temFutureTickets = ref(0);
const originalTicketsNum = ref(0); // 原始已来票数
const { proxy } = getCurrentInstance();
// 计算最大可填写数量 = 原始已来票数 + 未来票数
const maxTicketsNum = computed(() => {
  return Number(originalTicketsNum.value) + Number(temFutureTickets.value);
});
const {
  id,
@@ -123,6 +133,8 @@
    form.taxInclusiveUnitPrice = data.taxInclusiveUnitPrice;
    form.futureTickets = data.futureTickets;
    temFutureTickets.value = data.futureTickets;
    // 保存原始已来票数
    originalTicketsNum.value = data.ticketsNum || 0;
  }
};
@@ -132,16 +144,30 @@
    proxy.$modal.msgWarning("含税单价不能为零或未定义");
    return;
  }
  if (Number(form.ticketsNum) > Number(temFutureTickets.value)) {
    proxy.$modal.msgWarning("开票数不得大于未开票数");
    form.ticketsNum = temFutureTickets.value;
  // 检查来票数不能大于(原始已来票数 + 未来票数)
  const maxNum = maxTicketsNum.value;
  if (Number(form.ticketsNum) > maxNum) {
    proxy.$modal.msgWarning(`来票数不能大于${maxNum}(已来票数${originalTicketsNum.value} + 未来票数${temFutureTickets.value})`);
    form.ticketsNum = maxNum;
    return;
  }
  // 计算本次新增的来票数(当前来票数 - 原始已来票数)
  const newTicketsNum = Number(form.ticketsNum) - Number(originalTicketsNum.value);
  // 如果新增的来票数大于未来票数,则限制
  if (newTicketsNum > Number(temFutureTickets.value)) {
    proxy.$modal.msgWarning("本次新增来票数不得大于未来票数");
    form.ticketsNum = Number(originalTicketsNum.value) + Number(temFutureTickets.value);
    return;
  }
  // 确保所有数值都转换为数字类型进行计算
  const ticketsAmount =
    Number(form.ticketsNum) * Number(form.taxInclusiveUnitPrice);
  const futureTickets =
    Number(temFutureTickets.value) - Number(form.ticketsNum);
    Number(temFutureTickets.value) - newTicketsNum;
  form.futureTickets = Number(futureTickets.toFixed(2));
  form.ticketsAmount = Number(ticketsAmount.toFixed(2));
};
@@ -153,20 +179,33 @@
    return;
  }
  if (Number(val) > Number(form.futureTickets * form.taxInclusiveUnitPrice)) {
    proxy.$modal.msgWarning("本次来票金额不得大于总金额");
    form.ticketsAmount = (
      form.futureTickets * form.taxInclusiveUnitPrice
    ).toFixed(2);
    const ticketsNum =
      Number(form.ticketsAmount) / Number(form.taxInclusiveUnitPrice);
    form.ticketsNum = Number(ticketsNum.toFixed(2));
  // 计算最大可填写金额 = (原始已来票数 + 未来票数)* 含税单价
  const maxAmount = maxTicketsNum.value * Number(form.taxInclusiveUnitPrice);
  if (Number(val) > maxAmount) {
    proxy.$modal.msgWarning(`本次来票金额不得大于${maxAmount.toFixed(2)}元`);
    form.ticketsAmount = maxAmount.toFixed(2);
    form.ticketsNum = maxTicketsNum.value;
    return;
  }
  // 确保所有数值都转换为数字类型进行计算
  const ticketsNum = Number(val) / Number(form.taxInclusiveUnitPrice);
  // 检查来票数不能大于最大值
  if (ticketsNum > maxTicketsNum.value) {
    proxy.$modal.msgWarning(`来票数不能大于${maxTicketsNum.value}`);
    form.ticketsNum = maxTicketsNum.value;
    form.ticketsAmount = maxAmount.toFixed(2);
    return;
  }
  form.ticketsNum = Number(ticketsNum.toFixed(2));
  // 计算未来票数
  const newTicketsNum = form.ticketsNum - originalTicketsNum.value;
  const futureTickets = Number(temFutureTickets.value) - newTicketsNum;
  form.futureTickets = Number(futureTickets.toFixed(2));
};
const open = async row => {
src/views/procurementManagement/procurementInvoiceLedger/index.vue
@@ -62,16 +62,16 @@
          <el-button
            type="primary"
            link
            @click="downLoadFile(row)"
            @click="openEdit(row)"
          >
            附件
            编辑
          </el-button>
          <el-button
            type="primary"
            link
            @click="openEdit(row)"
            @click="downLoadFile(row)"
          >
            编辑
            附件
          </el-button>
          <el-button
            type="primary"
@@ -166,6 +166,11 @@
      width: 240,
    },
    {
      label: "产品大类",
      prop: "productCategory",
      width: 150,
    },
    {
      label: "规格型号",
      prop: "specificationModel",
      width: 150,
src/views/salesManagement/receiptPayment/index.vue
@@ -433,7 +433,8 @@
    specificationModel: row.specificationModel || "",
    pendingInvoiceTotal: Number(row.pendingInvoiceTotal || 0),
    taxRate: row.taxRate ?? "",
    receiptPaymentAmount: "",
    // 默认本次回款金额 = 待回款金额
    receiptPaymentAmount: Number(row.pendingInvoiceTotal || 0),
    receiptPaymentType: "",
    registrant: userStore.nickName,
    receiptPaymentDate: "",
@@ -518,6 +519,29 @@
// 保存回款记录
const saveReceiptPayment = (row) => {
  // 子表回款金额合计校验:所有回款记录金额之和不能大于父数据合同金额
  // 这里父数据“合同金额”按:已回款金额( invoiceTotal ) + 待回款金额( pendingInvoiceTotal ) 计算
  const findParentRowByChildId = (childId) => {
    return tableData.value.find((p) =>
      Array.isArray(p.children) && p.children.some((c) => c.id === childId)
    );
  };
  const parentRow = findParentRowByChildId(row.id);
  if (parentRow) {
    const contractAmount =
      Number(parentRow.invoiceTotal || 0) + Number(parentRow.pendingInvoiceTotal || 0);
    const sumReceipt = (parentRow.children || []).reduce((sum, item) => {
      const val = Number(item?.receiptPaymentAmount ?? 0);
      return sum + (Number.isFinite(val) ? val : 0);
    }, 0);
    if (sumReceipt > contractAmount) {
      proxy.$modal.msgError(
        `回款金额合计(${sumReceipt.toFixed(2)})不能大于合同金额(${contractAmount.toFixed(2)})`
      );
      return;
    }
  }
  let updateData = {
    id: row.id,
    receiptPaymentType: row.receiptPaymentType,