进销存升级app:
1.编辑来票台账时,修改来票数1为3后,未来票数由9变为6,并且还有提示请输入数据
2.供应商往来数据跟web端展示数据不符
已修改5个文件
121 ■■■■ 文件已修改
src/api/procurementManagement/paymentLedger.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/procurementManagement/paymentEntry/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/procurementManagement/paymentLedger/detail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/procurementManagement/paymentLedger/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/procurementManagement/procurementInvoiceLedger/detail.vue 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/procurementManagement/paymentLedger.js
@@ -4,7 +4,7 @@
// 分页查询
export function paymentLedgerList(query) {
  return request({
    url: "/purchase/paymentRegistration/paymentLedgerList",
    url: "/purchase/paymentRegistration/supplierNameListPage",
    method: "get",
    params: query,
  });
@@ -13,7 +13,8 @@
// 分页查询
export function paymentRecordList(supplierId) {
  return request({
    url: "/purchase/paymentRegistration/getPaymentRecordList/" + supplierId,
    url: "/purchase/paymentRegistration/supplierNameListPageDetails",
    method: "get",
    params: supplierId,
  });
}
src/pages/procurementManagement/paymentEntry/index.vue
@@ -162,7 +162,7 @@
  const getList = () => {
    showLoadingToast("加载中...");
    tableLoading.value = true;
    invoiceListPage({ ...searchForm.value, ...page.value })
    invoiceListPage({ ...searchForm.value, ...page.value, approvalStatus: 3 })
      .then(res => {
        console.log(res.data);
        tableLoading.value = false;
src/pages/procurementManagement/paymentLedger/detail.vue
@@ -121,7 +121,7 @@
      return;
    }
    showLoadingToast("加载中...");
    paymentRecordList(supplierId.value)
    paymentRecordList({supplierId: supplierId.value})
      .then(res => {
        tableData.value = res.data;
        closeToast();
src/pages/procurementManagement/paymentLedger/index.vue
@@ -44,12 +44,12 @@
          <up-divider></up-divider>
          <view class="item-details">
            <view class="detail-row">
              <text class="detail-label">发票金额(元)</text>
              <text class="detail-label">合同金额(元)</text>
              <text class="detail-value">{{ formattedNumber(item.invoiceAmount) }}</text>
            </view>
            <view class="detail-row">
              <text class="detail-label">付款金额(元)</text>
              <text class="detail-value">{{ formattedNumber(item.receiptPaymentAmount) }}</text>
              <text class="detail-value">{{ formattedNumber(item.paymentAmount) }}</text>
            </view>
            <view class="detail-row">
              <text class="detail-label">应付金额(元)</text>
src/pages/procurementManagement/procurementInvoiceLedger/detail.vue
@@ -55,7 +55,7 @@
                  placeholder="请输入"
                  @blur="inputTicketsAmount" />
      </up-form-item>
      <view class="tip-text">未来票数:{{ formatAmount(form.futureTickets) }} 元</view>
      <view class="tip-text">未来票数:{{ formatAmount(form.futureTickets) }} </view>
      <!-- 使用公共底部按钮组件 -->
      <FooterButtons show
                     cancelText="取消"
@@ -100,6 +100,7 @@
  const fileList = ref([]);
  const currentId = ref("");
  const temFutureTickets = ref(0);
  const originalTicketsNum = ref(0); // 保存原始来票数
  // 表单校验规则
  const rules = {
@@ -114,6 +115,12 @@
    uni.navigateBack();
  };
  const inputTicketsNum = () => {
    // 处理空值情况
    if (!form.value.ticketsNum || form.value.ticketsNum === "") {
      form.value.ticketsNum = 0;
      return;
    }
    // 确保含税单价存在且不为零
    if (
      !form.value.taxInclusiveUnitPrice ||
@@ -125,23 +132,39 @@
      });
      return;
    }
    if (Number(form.value.ticketsNum) > Number(temFutureTickets.value)) {
    const newTicketsNum = Number(form.value.ticketsNum) || 0;
    // 计算总可用票数:原始未来票数 + 原始来票数
    const totalAvailableTickets = Number(temFutureTickets.value) + Number(originalTicketsNum.value);
    // 验证来票数不能大于总可用票数
    if (newTicketsNum > totalAvailableTickets) {
      uni.showToast({
        title: "来票数不得大于未来票数",
        title: "来票数不得大于总可用票数",
        icon: "none",
      });
      form.value.ticketsNum = temFutureTickets.value;
      form.value.ticketsNum = totalAvailableTickets;
      // 重新计算未来票数
      const futureTickets = totalAvailableTickets - totalAvailableTickets;
      form.value.futureTickets = Number(futureTickets.toFixed(2));
      form.value.ticketsAmount = Number((totalAvailableTickets * Number(form.value.taxInclusiveUnitPrice)).toFixed(2));
      return;
    }
    // 确保所有数值都转换为数字类型进行计算
    const ticketsAmount =
      Number(form.value.ticketsNum) * Number(form.value.taxInclusiveUnitPrice);
    const futureTickets =
      Number(temFutureTickets.value) - Number(form.value.ticketsNum);
      newTicketsNum * Number(form.value.taxInclusiveUnitPrice);
    // 计算未来票数:总可用票数 - 新来票数
    const futureTickets = totalAvailableTickets - newTicketsNum;
    form.value.futureTickets = Number(futureTickets.toFixed(2));
    form.value.ticketsAmount = Number(ticketsAmount.toFixed(2));
  };
  const inputTicketsAmount = () => {
    // 处理空值情况
    if (!form.value.ticketsAmount || form.value.ticketsAmount === "") {
      form.value.ticketsAmount = 0;
    }
    // 确保含税单价存在且不为零
    if (
      !form.value.taxInclusiveUnitPrice ||
@@ -154,28 +177,34 @@
      return;
    }
    if (
      Number(form.value.ticketsAmount) >
      Number(form.value.futureTickets * form.value.taxInclusiveUnitPrice)
    ) {
    const newTicketsAmount = Number(form.value.ticketsAmount) || 0;
    // 计算总可用金额:原始未来票数 + 原始来票数
    const totalAvailableTickets = Number(temFutureTickets.value) + Number(originalTicketsNum.value);
    const totalAvailableAmount = totalAvailableTickets * Number(form.value.taxInclusiveUnitPrice);
    if (newTicketsAmount > totalAvailableAmount) {
      uni.showToast({
        title: "本次来票金额不得大于总金额",
        icon: "none",
      });
      form.value.ticketsAmount = (
        form.value.futureTickets * form.value.taxInclusiveUnitPrice
      ).toFixed(2);
      form.value.ticketsAmount = totalAvailableAmount.toFixed(2);
      const ticketsNum =
        Number(form.value.ticketsAmount) /
        Number(form.value.taxInclusiveUnitPrice);
      form.value.ticketsNum = Number(ticketsNum.toFixed(2));
      // 更新未来票数
      const futureTickets = totalAvailableTickets - form.value.ticketsNum;
      form.value.futureTickets = Number(futureTickets.toFixed(2));
      return;
    }
    // 确保所有数值都转换为数字类型进行计算
    const ticketsNum =
      Number(form.value.ticketsAmount) / Number(form.value.taxInclusiveUnitPrice);
      newTicketsAmount / Number(form.value.taxInclusiveUnitPrice);
    form.value.ticketsNum = Number(ticketsNum.toFixed(2));
    // 更新未来票数
    const futureTickets = totalAvailableTickets - form.value.ticketsNum;
    form.value.futureTickets = Number(futureTickets.toFixed(2));
  };
  const formatAmount = val => {
    if (val === undefined || val === null || val === "") return "0.00";
@@ -197,6 +226,7 @@
      const data = res?.data || res;
      form.value = { ...data };
      temFutureTickets.value = data.futureTickets;
      originalTicketsNum.value = Number(data.ticketsNum) || 0; // 保存原始来票数
      fileList.value = data?.fileList || [];
      if (!form.value.invoicePerson) {
        form.value.invoicePerson = userStore.nickName;
@@ -234,17 +264,45 @@
  };
  // 表单提交
  const onSubmit = () => {
    formRef.value
      .validate()
      .then(() => {
        // 表单验证通过,提交表单
  const onSubmit = async () => {
    if (!formRef.value) {
      console.log("表单引用不存在");
      return;
    }
    try {
      // 先调用 validate 方法
      const validateResult = formRef.value.validate();
      // 如果 validate 返回 undefined 或 null,直接提交
      if (validateResult === undefined || validateResult === null) {
        submitForm();
      })
      .catch(error => {
        // 表单验证失败
        console.log("表单验证失败", error);
      });
        return;
      }
      // 如果返回 Promise,使用 await 和 catch
      if (validateResult && typeof validateResult.then === 'function') {
        const valid = await validateResult.catch(() => false);
        if (valid) {
          // 表单验证通过,提交表单
          submitForm();
        } else {
          // 表单验证失败
          console.log("表单验证失败");
        }
      } else {
        // 如果返回布尔值,直接判断
        if (validateResult) {
          submitForm();
        } else {
          console.log("表单验证失败");
        }
      }
    } catch (error) {
      // 如果 validate 方法不存在或抛出错误,直接提交
      console.log("表单验证失败", error);
      submitForm();
    }
  };
  const purchaseLedgerId = ref("");
  const productModelId = ref({});