| src/components/PIMTable/PIMTable.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/collaborativeApproval/noticeManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/dispatchLog/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/issueManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/receiptManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/inventoryManagement/stockManagement/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/paymentLedger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/components/PIMTable/PIMTable.vue
@@ -204,6 +204,7 @@ </el-table-column> </el-table> <pagination v-if="isShowPage" :total="page.total" :layout="page.layout" :page="page.current" @@ -267,6 +268,10 @@ type: Boolean, default: false, }, isShowPage: { type: Boolean, default: true, }, isShowSummary: { type: Boolean, default: false, src/views/collaborativeApproval/noticeManagement/index.vue
@@ -705,6 +705,15 @@ border-left: 3px solid #409eff; } .card-remark span { flex: 1; min-width: 0; word-wrap: break-word; word-break: break-all; white-space: normal; line-height: 1.5; } .empty-state { text-align: center; padding: 60px 20px; src/views/index.vue
@@ -287,7 +287,7 @@ formatter: function (params) { // 动态生成提示信息,基于数据项的 name 属性 const description = params.name === '本月回款金额' ? '本月回款金额' : '应收款金额'; return `${description} ${formatNumber(params.value)}元 ${params.percent}%`; return `${description} ${formattedNumber(params.value)}元 ${params.percent}%`; }, position: 'right' }) @@ -365,6 +365,9 @@ businessInfo.value = {...res.data} }) } const formattedNumber = (row, column, cellValue) => { return parseFloat(cellValue).toFixed(2); }; // 合同金额 const analysisCustomer = () => { analysisCustomerContractAmounts().then((res) => { src/views/inventoryManagement/dispatchLog/index.vue
@@ -242,7 +242,7 @@ <div> <span class="label">客户名称:</span> <span class="value">{{ item.supplierName || '张爱有' }}</span> <span class="value">{{ item.supplierName }}</span> </div> </div> <div class="info-row"> @@ -444,7 +444,7 @@ page.current = 1 searchForm.value.supplierName = '' searchForm.value.customerName = '' searchForm.value.timeStr = '' searchForm.value.timeStr = getCurrentDate() // 重置为当前日期 selectedRows.value = [] searchForm.value.productCategory = '' getList() @@ -687,12 +687,12 @@ </div> <div> <span class="label">客户名称:</span> <span class="value">${item.supplierName || '张爱有'}</span> <span class="value">${item.supplierName}</span> </div> </div> <div class="info-row"> <span class="label">单号:</span> <span class="value">${item.code || ''}</span> <span class="value">${item.code}</span> </div> </div> src/views/inventoryManagement/issueManagement/index.vue
@@ -298,7 +298,7 @@ page.current = 1 searchForm.value.supplierName = '' searchForm.value.customerName = '' searchForm.value.timeStr = '' searchForm.value.timeStr = getCurrentDate() // 重置为当前日期 selectedRows.value = [] searchForm.value.productCategory = '' getList() src/views/inventoryManagement/receiptManagement/index.vue
@@ -1,59 +1,6 @@ <template> <div class="app-container"> <el-tabs v-model="activeTab" @tab-change="handleTabChange"> <!-- <el-tab-pane label="采购入库" name="production"> <div class="search_form"> <div> <span class="search_title ml10">入库日期:</span> <el-date-picker v-model="searchForm.timeStr" type="date" placeholder="请选择日期" value-format="YYYY-MM-DD" format="YYYY-MM-DD" clearable @change="handleQuery" /> <span class="search_title ml10">产品大类:</span> <el-input v-model="searchForm.productCategory" style="width: 240px" placeholder="请输入" clearable /> <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button> </div> <div> <el-button @click="handleOut">导出</el-button> <el-button type="danger" plain @click="handleDelete">删除</el-button> </div> </div> <div class="table_list"> <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange" :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%" :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)"> <el-table-column align="center" type="selection" width="55" /> <el-table-column align="center" label="序号" type="index" width="60" /> <el-table-column label="入库时间" prop="createTime" show-overflow-tooltip /> <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip /> <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip /> <el-table-column label="单位" prop="unit" width="70" show-overflow-tooltip /> <el-table-column label="入库数量" prop="inboundNum" width="100" show-overflow-tooltip /> <el-table-column label="单价(元)" prop="unitPrice" width="150"></el-table-column> <el-table-column label="总价(元)" prop="totalPrice" width="150"></el-table-column> <el-table-column fixed="right" label="操作" min-width="60" align="center"> <template #default="scope"> <el-button link type="primary" size="small" @click="openForm('edit', scope.row, 'production');">编辑</el-button> <el-button link type="success" size="small" @click="showQRCode(scope.row,1)">生成条形码</el-button> <el-button link type="success" size="small" @click="showERCode(scope.row,1)">生成二维码</el-button> </template> </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current" :limit="page.size" @pagination="paginationChange" /> </div> </el-tab-pane> --> <el-tab-pane label="采购入库" name="purchase"> <div class="search_form"> <div> @@ -405,7 +352,7 @@ // 切换 tab 时清空搜索条件 searchForm.value.supplierName = '' searchForm.value.customerName = '' searchForm.value.timeStr = '' searchForm.value.timeStr = getCurrentDate() // 重置为当前日期 searchForm.value.productCategory = '' getList() } src/views/inventoryManagement/stockManagement/index.vue
@@ -384,7 +384,7 @@ page.current = 1 // searchForm.value.supplierName = '' searchForm.value.customerName = '' searchForm.value.timeStr = '' searchForm.value.timeStr = getCurrentDate() // 重置为当前日期 selectedRows.value = [] searchForm.value.productCategory = '' getList() src/views/procurementManagement/paymentLedger/index.vue
@@ -86,6 +86,7 @@ :tableLoading="tableLoadingSon" :isShowSummary="isShowSummarySon" :summaryMethod="summarizeMainTable1" :isShowPage="false" height="calc(100vh - 18.5em)" > <template #payableAmountSlot="{ row }"> @@ -94,14 +95,14 @@ </el-text> </template> </PIMTable> <pagination v-show="sonTotal > 0" :total="sonTotal" @pagination="sonPaginationSearch" :layout="page.layout" :page="sonPage.current" :limit="sonPage.size" /> <!-- <pagination--> <!-- v-show="sonTotal > 0"--> <!-- :total="sonTotal"--> <!-- @pagination="sonPaginationSearch"--> <!-- :layout="page.layout"--> <!-- :page="sonPage.current"--> <!-- :limit="sonPage.size"--> <!-- />--> </div> </el-col> </el-row> @@ -245,8 +246,6 @@ paymentLedgerList({ ...searchForm.value, ...page, detailPageNum: detailPageNum.value, // 新增 detailPageSize: detailPageSize.value, // 新增 }).then((res) => { let result = res.data; tableLoading.value = false; src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue
@@ -23,7 +23,7 @@ </el-col> <el-col :span="12"> <el-form-item label="发票号:"> <el-input disabled v-model="form.invoiceNumber" /> <el-input v-model="form.invoiceNumber" /> </el-form-item> </el-col> <el-col :span="12"> @@ -53,7 +53,10 @@ defineOptions({ name: "来票台账表单", }); const temFutureTickets = ref(0) const temFutureTickets = ref(0) // 初始未来票数 const initialTicketsNum = ref(0) // 初始来票数 const initialTicketsAmount = ref(0) // 初始来票金额 const quantity = ref(0) // 总数量 const { form, resetForm } = useFormData({ id: undefined, purchaseContractNumber: undefined, // 采购合同号 @@ -63,6 +66,7 @@ ticketsNum: undefined, // 来票数 ticketsAmount: undefined, // 来票金额 taxInclusiveUnitPrice: undefined, // 含税单价 ticketRegistrationId: undefined, // 含税单价 }); const load = async (id) => { @@ -74,10 +78,15 @@ form.createdAt = data.createdAt; form.invoiceNumber = data.invoiceNumber; form.ticketsNum = data.ticketsNum; form.ticketsAmount = data.ticketsAmount.toFixed(2); form.ticketsAmount = data.ticketsAmount ? Number(data.ticketsAmount).toFixed(2) : 0; form.taxInclusiveUnitPrice = data.taxInclusiveUnitPrice; form.futureTickets = data.futureTickets; temFutureTickets.value = data.futureTickets; initialTicketsNum.value = data.ticketsNum || 0; initialTicketsAmount.value = data.ticketsAmount || 0; form.ticketRegistrationId = data.ticketRegistrationId; // 获取总数量,如果数据中有 quantity 字段则使用,否则使用来票数+未来票数 quantity.value = data.quantity || (Number(data.ticketsNum || 0) + Number(data.futureTickets || 0)); } }; @@ -87,15 +96,44 @@ proxy.$modal.msgWarning("含税单价不能为零或未定义"); return; } if (Number(form.ticketsNum) > Number(temFutureTickets.value)) { proxy.$modal.msgWarning("开票数不得大于未开票数"); form.ticketsNum = temFutureTickets.value const newTicketsNum = Number(form.ticketsNum) || 0; const currentTicketsNum = Number(initialTicketsNum.value) || 0; // 计算新增的来票数 const addedTicketsNum = newTicketsNum - currentTicketsNum; // 计算新的未来票数 = 初始未来票数 - 新增的来票数 const newFutureTickets = Number(temFutureTickets.value) - addedTicketsNum; // 验证:新的来票数 + 新的未来票数 ≤ quantity if (newTicketsNum + newFutureTickets > Number(quantity.value)) { proxy.$modal.msgWarning(`来票数+未来票数不能大于总数量(${quantity.value})`); // 限制来票数,使其满足:来票数 + 未来票数 ≤ quantity // 最大来票数 = quantity - 初始未来票数 + 初始来票数 const maxTicketsNum = Number(quantity.value) - Number(temFutureTickets.value) + Number(initialTicketsNum.value); form.ticketsNum = Math.max(0, Math.min(maxTicketsNum, newTicketsNum)); // 重新计算 const recalculatedAddedTicketsNum = Number(form.ticketsNum) - Number(initialTicketsNum.value); const recalculatedFutureTickets = Number(temFutureTickets.value) - recalculatedAddedTicketsNum; form.futureTickets = Number(recalculatedFutureTickets.toFixed(2)); const ticketsAmount = Number(form.ticketsNum) * Number(form.taxInclusiveUnitPrice); form.ticketsAmount = Number(ticketsAmount.toFixed(2)); return; } // 检查新增的来票数是否大于初始未来票数 if (addedTicketsNum > Number(temFutureTickets.value)) { proxy.$modal.msgWarning("新增开票数不得大于未开票数"); form.ticketsNum = Number(initialTicketsNum.value) + Number(temFutureTickets.value); } // 确保所有数值都转换为数字类型进行计算 const ticketsAmount = Number(form.ticketsNum) * Number(form.taxInclusiveUnitPrice); const futureTickets = Number(temFutureTickets.value) - Number(form.ticketsNum); form.futureTickets = Number(futureTickets.toFixed(2)); const finalTicketsNum = Number(form.ticketsNum) || 0; const finalAddedTicketsNum = finalTicketsNum - Number(initialTicketsNum.value); const finalFutureTickets = Number(temFutureTickets.value) - finalAddedTicketsNum; const ticketsAmount = finalTicketsNum * Number(form.taxInclusiveUnitPrice); form.futureTickets = Number(finalFutureTickets.toFixed(2)); form.ticketsAmount = Number(ticketsAmount.toFixed(2)); }; const inputTicketsAmount = (val) => { @@ -105,17 +143,47 @@ 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 newTicketsAmount = Number(val) || 0; // 计算新的来票数 const newTicketsNum = newTicketsAmount / Number(form.taxInclusiveUnitPrice); const currentTicketsNum = Number(initialTicketsNum.value) || 0; // 计算新增的来票数 const addedTicketsNum = newTicketsNum - currentTicketsNum; // 计算新的未来票数 = 初始未来票数 - 新增的来票数 const newFutureTickets = Number(temFutureTickets.value) - addedTicketsNum; // 验证:新的来票数 + 新的未来票数 ≤ quantity if (newTicketsNum + newFutureTickets > Number(quantity.value)) { proxy.$modal.msgWarning(`来票数+未来票数不能大于总数量(${quantity.value})`); // 限制来票数,使其满足:来票数 + 未来票数 ≤ quantity const maxTicketsNum = Number(quantity.value) - Number(temFutureTickets.value) + Number(initialTicketsNum.value); form.ticketsNum = Math.max(0, Math.min(maxTicketsNum, newTicketsNum)); form.ticketsAmount = Number((form.ticketsNum * Number(form.taxInclusiveUnitPrice)).toFixed(2)); const recalculatedAddedTicketsNum = Number(form.ticketsNum) - Number(initialTicketsNum.value); const recalculatedFutureTickets = Number(temFutureTickets.value) - recalculatedAddedTicketsNum; form.futureTickets = Number(recalculatedFutureTickets.toFixed(2)); return; } // 检查新增的来票金额是否大于初始未来票数对应的金额 const maxAddedAmount = Number(temFutureTickets.value * form.taxInclusiveUnitPrice); if (addedTicketsNum > 0 && addedTicketsNum * Number(form.taxInclusiveUnitPrice) > maxAddedAmount) { proxy.$modal.msgWarning("新增来票金额不得大于未开票金额"); form.ticketsAmount = Number((initialTicketsAmount.value + maxAddedAmount).toFixed(2)); form.ticketsNum = Number((currentTicketsNum + Number(temFutureTickets.value)).toFixed(2)); form.futureTickets = 0; return; } // 确保所有数值都转换为数字类型进行计算 const ticketsNum = Number(val) / Number(form.taxInclusiveUnitPrice); form.ticketsNum = Number(ticketsNum.toFixed(2)); const finalTicketsNum = Number(newTicketsNum.toFixed(2)); const finalAddedTicketsNum = finalTicketsNum - Number(initialTicketsNum.value); const finalFutureTickets = Number(temFutureTickets.value) - finalAddedTicketsNum; form.ticketsNum = finalTicketsNum; form.futureTickets = Number(finalFutureTickets.toFixed(2)); }; defineExpose({