| src/api/procurementManagement/paymentLedger.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/api/salesManagement/indicatorStats.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/paymentLedger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/salesManagement/receiptPaymentLedger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/procurementManagement/paymentLedger.js
@@ -27,3 +27,12 @@ params, }); } /** 新增付款 */ export function savePayment(data) { return request({ url: "/purchase/report/savePayment", method: "post", data, }); } src/api/salesManagement/indicatorStats.js
@@ -36,3 +36,12 @@ params: query, }); } // 新增回款 export function saveReceiptPayment(data) { return request({ url: "/metricStatistics/saveReceiptPayment", method: "post", data, }); } src/views/procurementManagement/paymentLedger/index.vue
@@ -86,10 +86,46 @@ {{ parseFloat(row.payableAmount).toFixed(2) }} </el-text> </template> <template #paymentActionSlot="{ row }"> <el-button link type="primary" @click="openPaymentDialog(row)"> 新增付款 </el-button> </template> </PIMTable> </div> </el-col> </el-row> <el-dialog v-model="paymentDialogVisible" title="新增付款" width="35%" @close="closePaymentDialog"> <el-form :model="paymentForm" label-width="100px" :rules="paymentRules" ref="paymentFormRef"> <el-form-item label="采购合同号:"> {{ currentPaymentRow.purchaseContractNumber || '--' }} </el-form-item> <el-form-item label="付款日期:" prop="paymentDate"> <el-date-picker style="width:100%" v-model="paymentForm.paymentDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="date" placeholder="请选择付款日期" clearable /> </el-form-item> <el-form-item label="付款金额:" prop="paymentAmount"> <el-input-number style="width:100%" v-model="paymentForm.paymentAmount" :precision="2" :min="0.01" :max="Math.max(0, (Number(currentPaymentRow.payableAmount)||0) - (Number(currentPaymentRow.paymentAmount)||0))" placeholder="请输入付款金额" controls-position="right" /> <div style="color:#e6a23c;font-size:12px;margin-top:4px"> 当前可付款余额:{{ Math.max(0, (Number(currentPaymentRow.payableAmount)||0) - (Number(currentPaymentRow.paymentAmount)||0)).toFixed(2) }} 元 </div> </el-form-item> <el-form-item label="付款方式:" prop="paymentMethod"> <el-select v-model="paymentForm.paymentMethod" placeholder="请选择付款方式" style="width:100%" clearable> <el-option label="银行转账" value="银行转账" /> <el-option label="现金" value="现金" /> <el-option label="支票" value="支票" /> <el-option label="微信/支付宝" value="微信/支付宝" /> <el-option label="其他" value="其他" /> </el-select> </el-form-item> <el-form-item label="备注:" prop="remark"> <el-input v-model="paymentForm.remark" type="textarea" :rows="3" placeholder="请输入备注信息" clearable /> </el-form-item> </el-form> <template #footer> <el-button type="primary" @click="submitPaymentForm">确认</el-button> <el-button @click="closePaymentDialog">取消</el-button> </template> </el-dialog> </div> </template> @@ -99,6 +135,7 @@ import { paymentLedgerList, paymentRecordList, savePayment, } from "@/api/procurementManagement/paymentLedger.js"; import Pagination from "../../../components/PIMTable/Pagination.vue"; @@ -171,6 +208,14 @@ prop: "payableAmount", slot: "payableAmountSlot", }, { label: "操作", dataType: "slot", slot: "paymentActionSlot", width: 100, fixed: "right", align: "center", }, ]); const tableDataSon = ref([]); const originalTableDataSon = ref([]); @@ -178,6 +223,58 @@ const isShowSummarySon = ref(true); const { proxy } = getCurrentInstance(); const paymentDialogVisible = ref(false); const currentPaymentRow = ref({}); const paymentFormRef = ref(null); const paymentForm = reactive({ paymentDate: "", paymentAmount: undefined, paymentMethod: "", remark: "", }); const validatePaymentAmount = (_, value, callback) => { if (!value) return callback(new Error("请输入付款金额")); const remaining = Math.max(0, (Number(currentPaymentRow.value.payableAmount) || 0) - (Number(currentPaymentRow.value.paymentAmount) || 0)); if (value > remaining) return callback(new Error(`付款金额不能超过可付款余额 ${remaining.toFixed(2)} 元`)); callback(); }; const paymentRules = { paymentDate: [{ required: true, message: "请选择付款日期", trigger: "change" }], paymentAmount: [{ required: true, validator: validatePaymentAmount, trigger: "blur" }], paymentMethod: [{ required: true, message: "请选择付款方式", trigger: "change" }], }; const openPaymentDialog = row => { currentPaymentRow.value = row; paymentForm.paymentDate = ""; paymentForm.paymentAmount = undefined; paymentForm.paymentMethod = ""; paymentForm.remark = ""; paymentDialogVisible.value = true; }; const closePaymentDialog = () => { paymentFormRef.value?.resetFields(); paymentDialogVisible.value = false; }; const submitPaymentForm = () => { paymentFormRef.value?.validate(valid => { if (valid) { savePayment({ supplierId: currentSupplierId.value, purchaseContractNumber: currentPaymentRow.value.purchaseContractNumber, paymentDate: paymentForm.paymentDate, paymentAmount: paymentForm.paymentAmount, paymentMethod: paymentForm.paymentMethod, remark: paymentForm.remark, }).then(res => { proxy.$modal.msgSuccess("新增付款成功"); closePaymentDialog(); getPaymenRecordtList(currentSupplierId.value); getList(); }); } }); }; // 主表合计方法 const summarizeMainTable = param => { return proxy.summarizeTable( src/views/salesManagement/receiptPaymentLedger/index.vue
@@ -116,6 +116,13 @@ </el-text> </template> </el-table-column> <el-table-column label="操作" fixed="right" align="center" width="100"> <template #default="{ row }"> <el-button link type="primary" @click="openReceiptDialog(row)"> 新增回款 </el-button> </template> </el-table-column> </el-table> <pagination v-show="recordTotal > 0" :total="recordTotal" @@ -126,6 +133,37 @@ </div> </el-col> </el-row> <el-dialog v-model="receiptDialogVisible" title="新增回款" width="35%" @close="closeReceiptDialog"> <el-form :model="receiptForm" label-width="100px" :rules="receiptRules" ref="receiptFormRef"> <el-form-item label="销售合同号:"> {{ currentRow.salesContractNo || '--' }} </el-form-item> <el-form-item label="回款日期:" prop="paymentDate"> <el-date-picker style="width:100%" v-model="receiptForm.paymentDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="date" placeholder="请选择回款日期" clearable /> </el-form-item> <el-form-item label="回款金额:" prop="paymentAmount"> <el-input-number style="width:100%" v-model="receiptForm.paymentAmount" :precision="2" :min="0.01" :max="Math.max(0, (Number(currentRow.receiptableAmount)||0) - (Number(currentRow.receiptPaymentAmount)||0))" placeholder="请输入回款金额" controls-position="right" /> <div style="color:#e6a23c;font-size:12px;margin-top:4px"> 当前可回款余额:{{ formattedNumber(null, null, Math.max(0, (Number(currentRow.receiptableAmount)||0) - (Number(currentRow.receiptPaymentAmount)||0))) }} 元 </div> </el-form-item> <el-form-item label="回款方式:" prop="paymentMethod"> <el-select v-model="receiptForm.paymentMethod" placeholder="请选择回款方式" style="width:100%" clearable> <el-option label="银行转账" value="银行转账" /> <el-option label="现金" value="现金" /> <el-option label="支票" value="支票" /> <el-option label="微信/支付宝" value="微信/支付宝" /> <el-option label="其他" value="其他" /> </el-select> </el-form-item> <el-form-item label="备注:" prop="remark"> <el-input v-model="receiptForm.remark" type="textarea" :rows="3" placeholder="请输入备注信息" clearable /> </el-form-item> </el-form> <template #footer> <el-button type="primary" @click="submitReceiptForm">确认</el-button> <el-button @click="closeReceiptDialog">取消</el-button> </template> </el-dialog> </div> </template> @@ -134,6 +172,7 @@ import { customewTransactions, customewTransactionsDetails, saveReceiptPayment, } from "@/api/salesManagement/indicatorStats.js"; import Pagination from "../../../components/PIMTable/Pagination.vue"; const { proxy } = getCurrentInstance(); @@ -159,6 +198,58 @@ const customerId = ref(""); const { searchForm } = toRefs(data); const originReceiptRecord = ref([]); const receiptDialogVisible = ref(false); const currentRow = ref({}); const receiptFormRef = ref(null); const receiptForm = reactive({ paymentDate: "", paymentAmount: undefined, paymentMethod: "", remark: "", }); const validatePaymentAmount = (_, value, callback) => { if (!value) return callback(new Error("请输入回款金额")); const remaining = Math.max(0, (Number(currentRow.value.receiptableAmount) || 0) - (Number(currentRow.value.receiptPaymentAmount) || 0)); if (value > remaining) return callback(new Error(`回款金额不能超过可回款余额 ${remaining.toFixed(2)} 元`)); callback(); }; const receiptRules = { paymentDate: [{ required: true, message: "请选择回款日期", trigger: "change" }], paymentAmount: [{ required: true, validator: validatePaymentAmount, trigger: "blur" }], paymentMethod: [{ required: true, message: "请选择回款方式", trigger: "change" }], }; const openReceiptDialog = row => { currentRow.value = row; receiptForm.paymentDate = ""; receiptForm.paymentAmount = undefined; receiptForm.paymentMethod = ""; receiptForm.remark = ""; receiptDialogVisible.value = true; }; const closeReceiptDialog = () => { receiptFormRef.value?.resetFields(); receiptDialogVisible.value = false; }; const submitReceiptForm = () => { receiptFormRef.value?.validate(valid => { if (valid) { saveReceiptPayment({ customerId: customerId.value, salesContractNo: currentRow.value.salesContractNo, paymentDate: receiptForm.paymentDate, paymentAmount: receiptForm.paymentAmount, paymentMethod: receiptForm.paymentMethod, remark: receiptForm.remark, }).then(res => { proxy.$modal.msgSuccess("新增回款成功"); closeReceiptDialog(); receiptPaymentList(customerId.value); getList(); }); } }); }; // 查询列表 /** 搜索按钮操作 */ const handleQuery = () => {