zhangwencui
2 天以前 23930765ba52a235c49944cdc210f0196a7853df
Merge branch 'dev_New' of http://114.132.189.42:9002/r/product-inventory-management into dev_New
已修改2个文件
93 ■■■■ 文件已修改
src/views/procurementManagement/procurementInvoiceLedger/index.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/invoiceRegistration/index.vue 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/procurementManagement/procurementInvoiceLedger/index.vue
@@ -237,21 +237,32 @@
  }
);
// 主表合计方法
const summarizeMainTable = (param) => {
  return proxy.summarizeTable(
  const sums = proxy.summarizeTable(
    param,
    [
      "taxInclusiveTotalPrice",
      "ticketsAmount",
      "unTicketsPrice",
      "invoiceAmount",
    ],
    ["ticketsAmount", "unTicketsPrice", "invoiceAmount"],
    {
      ticketsNum: { noDecimal: true }, // 不保留小数
      futureTickets: { noDecimal: true }, // 不保留小数
      ticketsNum: { noDecimal: true },
      futureTickets: { noDecimal: true },
    }
  );
  const keySet = new Set();
  let taxInclusiveSum = 0;
  (param.data || []).forEach((row) => {
    const key = `${row.purchaseContractNumber ?? ""}\n${row.salesContractNo ?? ""}\n${row.productCategory ?? ""}\n${row.specificationModel ?? ""}`;
    if (keySet.has(key)) return;
    keySet.add(key);
    const val = Number(row.taxInclusiveTotalPrice);
    if (!isNaN(val)) taxInclusiveSum += val;
  });
  const taxInclusiveIndex = (param.columns || []).findIndex(
    (c) => c.property === "taxInclusiveTotalPrice"
  );
  if (taxInclusiveIndex !== -1) {
    sums[taxInclusiveIndex] = taxInclusiveSum.toFixed(2);
  }
  return sums;
};
const handleSelectionChange = (val) => {
src/views/salesManagement/invoiceRegistration/index.vue
@@ -30,7 +30,12 @@
            <div class="flex justify-between">
                <div></div>
                <div>
                    <el-button type="primary" @click="openForm" style="margin-bottom: 8px">
                    <el-button
                        type="primary"
                        @click="openForm"
                        style="margin-bottom: 8px"
                        :disabled="!canInvoice"
                    >
                        开票登记
                    </el-button>
                </div>
@@ -296,10 +301,14 @@
                    />
                    <el-table-column label="本次开票数" prop="currentInvoiceNum" width="180">
                        <template #default="scope">
                            <el-input-number :step="0.1" :min="0" style="width: 100%"
                                                             :precision="2"
                                                             v-model="scope.row.currentInvoiceNum"
                                                             @change="invoiceNumBlur(scope.row)"
                            <el-input-number
                                :step="0.1"
                                :min="0"
                                style="width: 100%"
                                :precision="2"
                                v-model="scope.row.currentInvoiceNum"
                                @change="invoiceNumBlur(scope.row)"
                                :disabled="isProductInvoiceDisabled(scope.row)"
                            ></el-input-number>
                        </template>
                    </el-table-column>
@@ -309,10 +318,14 @@
                        width="180"
                    >
                        <template #default="scope">
                            <el-input-number :step="0.01" :min="0" style="width: 100%"
                                                             :precision="2"
                                                             v-model="scope.row.currentInvoiceAmount"
                                                             @change="invoiceAmountBlur(scope.row)"
                            <el-input-number
                                :step="0.01"
                                :min="0"
                                style="width: 100%"
                                :precision="2"
                                v-model="scope.row.currentInvoiceAmount"
                                @change="invoiceAmountBlur(scope.row)"
                                :disabled="isProductInvoiceDisabled(scope.row)"
                            ></el-input-number>
                        </template>
                    </el-table-column>
@@ -375,7 +388,7 @@
<script setup>
import pagination from "@/components/PIMTable/Pagination.vue";
import FormDialog from '@/components/Dialog/FormDialog.vue';
import { onMounted, ref } from "vue";
import { onMounted, ref, computed } from "vue";
import { Search } from "@element-plus/icons-vue";
import { ElMessageBox } from "element-plus";
// import {userListNoPage} from "@/api/system/user.js";
@@ -450,6 +463,27 @@
const formattedInputNumber = (value) => {
    return value ? parseFloat(value).toFixed(2) : 0;
};
// 判断是否可以开票(基于选中的台账数据)
const canInvoice = computed(() => {
    if (selectedRows.value.length === 0) {
        return false;
    }
    // 检查所有选中的台账,只要有一个未开票金额大于0,就可以开票
    return selectedRows.value.some(row => {
        const noInvoiceAmount = parseFloat(row.noInvoiceAmountTotal || 0);
        return noInvoiceAmount > 0;
    });
});
// 判断单个产品是否可以开票
const isProductInvoiceDisabled = (row) => {
    // 检查未开票金额和未开票数,如果都为0或小于等于0,则禁用
    // 优先使用 tempnoInvoiceAmount 和 tempNoInvoiceNum(初始值),如果没有则使用 noInvoiceAmount 和 originalNoInvoiceNum
    const noInvoiceAmount = parseFloat(row.tempnoInvoiceAmount || row.noInvoiceAmount || 0);
    const noInvoiceNum = parseFloat(row.tempNoInvoiceNum || row.originalNoInvoiceNum || row.noInvoiceNum || 0);
    return noInvoiceAmount <= 0 || noInvoiceNum <= 0;
};
// 查询列表
@@ -579,6 +613,14 @@
        
        productData.value = allProductData;
        
        // 对于不能开票的产品,将开票数和开票金额设置为0
        productData.value.forEach(item => {
            if (isProductInvoiceDisabled(item)) {
                item.currentInvoiceNum = 0;
                item.currentInvoiceAmount = 0;
            }
        });
        dialogFormVisible.value = true;
        console.log("productData.value ", productData.value);
    });