| | |
| | | <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"> |
| | |
| | | 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: "来票台账编辑", |
| | |
| | | |
| | | 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, |
| | |
| | | form.taxInclusiveUnitPrice = data.taxInclusiveUnitPrice; |
| | | form.futureTickets = data.futureTickets; |
| | | temFutureTickets.value = data.futureTickets; |
| | | // 保存原始已来票数 |
| | | originalTicketsNum.value = data.ticketsNum || 0; |
| | | } |
| | | }; |
| | | |
| | |
| | | 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)); |
| | | }; |
| | |
| | | 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 => { |