| | |
| | | v-model="dialogFormVisible" |
| | | draggable |
| | | :title="operationType === 'add' ? '新增付款登记' : '编辑付款登记'" |
| | | width="60%" |
| | | width="90%" |
| | | @close="closeDia" |
| | | > |
| | | <el-alert |
| | | v-if="selectedRows.length > 1" |
| | | :title="`已选择 ${selectedRows.length} 条合同(供应商:${selectedRows[0]?.supplierName})`" |
| | | type="info" |
| | | :closable="false" |
| | | style="margin-bottom: 15px;" |
| | | /> |
| | | <el-table |
| | | :data="form.paymentList" |
| | | border |
| | | style="margin-top: 20px;" |
| | | > |
| | | <el-table-column label="采购合同号" prop="purchaseContractNumber" width="200" /> |
| | | <el-table-column label="供应商名称" prop="supplierName" width="200" /> |
| | | <el-table-column label="发票号" prop="invoiceNumber" width="180" /> |
| | | <el-table-column label="发票金额(元)" prop="invoiceAmount" width="150" /> |
| | | <el-table-column label="待付款金额(元)" prop="unPaymentAmountTotal" width="150" /> |
| | | <el-table-column label="本次付款金额(元)" width="180"> |
| | | <template #default="scope"> |
| | | <el-input-number |
| | | :step="0.01" |
| | | :min="0" |
| | | :max="scope.row.unPaymentAmountTotal" |
| | | style="width: 100%" |
| | | :precision="3" |
| | | v-model="scope.row.currentPaymentAmount" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="付款方式" width="150"> |
| | | <template #default="scope"> |
| | | <el-select |
| | | v-model="scope.row.paymentMethod" |
| | | placeholder="请选择" |
| | | clearable |
| | | style="width: 100%" |
| | | > |
| | | <el-option label="电汇" value="电汇" /> |
| | | <el-option label="承兑" value="承兑" /> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="付款日期" width="180"> |
| | | <template #default="scope"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="scope.row.paymentDate" |
| | | value-format="YYYY-MM-DD" |
| | | format="YYYY-MM-DD" |
| | | type="date" |
| | | placeholder="请选择" |
| | | clearable |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-form |
| | | :model="form" |
| | | label-width="140px" |
| | |
| | | > |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="采购合同号:" prop="purchaseContractNumber"> |
| | | <el-form-item label="登记人:" prop="registrant"> |
| | | <el-input |
| | | v-model="form.purchaseContractNumber" |
| | | placeholder="自动填充" |
| | | clearable |
| | | disabled |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售合同号:" prop="salesContractNo"> |
| | | <el-input |
| | | v-model="form.salesContractNo" |
| | | placeholder="自动填充" |
| | | clearable |
| | | disabled |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="供应商名称:" prop="supplierName"> |
| | | <el-input |
| | | v-model="form.supplierName" |
| | | placeholder="自动填充" |
| | | clearable |
| | | disabled |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="发票号:" prop="invoiceNumber"> |
| | | <el-input |
| | | v-model="form.invoiceNumber" |
| | | placeholder="自动填充" |
| | | clearable |
| | | disabled |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="发票金额(元):" prop="invoiceAmount"> |
| | | <el-input |
| | | v-model="form.invoiceAmount" |
| | | placeholder="自动填充" |
| | | clearable |
| | | disabled |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="本次付款金额:" prop="currentPaymentAmount"> |
| | | <el-input-number :step="0.01" :min="0" style="width: 100%" |
| | | :precision="3" |
| | | v-model="form.currentPaymentAmount" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="付款方式:" prop="paymentMethod"> |
| | | <el-select |
| | | v-model="form.paymentMethod" |
| | | placeholder="请选择" |
| | | clearable |
| | | > |
| | | <el-option label="电汇" value="电汇" /> |
| | | <el-option label="承兑" value="承兑" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="付款日期:" prop="paymentDate"> |
| | | <el-date-picker |
| | | style="width: 100%" |
| | | v-model="form.paymentDate" |
| | | value-format="YYYY-MM-DD" |
| | | format="YYYY-MM-DD" |
| | | type="date" |
| | | placeholder="请选择" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="登记人:" prop="registrant"> |
| | | <el-input |
| | | v-model="form.registrant" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="登记日期:" prop="registrationtDate"> |
| | | <el-input |
| | | v-model="form.registrationtDate" |
| | | v-model="form.registrant" |
| | | placeholder="请输入" |
| | | clearable |
| | | /> |
| | |
| | | const data = reactive({ |
| | | searchForm: { |
| | | supplierNameOrContractNo: "", |
| | | status: false, |
| | | status: true, |
| | | }, |
| | | form: { |
| | | purchaseContractNumber: "", |
| | | purchaseLedgerId: "", |
| | | salesContractNo: "", |
| | | supplierName: "", |
| | | invoiceNumber: "", |
| | | invoiceAmount: "", |
| | | taxRate: "", |
| | | currentPaymentAmount: "", |
| | | paymentMethod: "", |
| | | registrant: "", |
| | | registrantId: "", |
| | | paymentDate: "", |
| | | registrationtDate: "", |
| | | paymentList: [], |
| | | }, |
| | | rules: { |
| | | purchaseLedgerId: [ |
| | | { required: true, message: "请选择", trigger: "change" }, |
| | | ], |
| | | currentPaymentAmount: [ |
| | | { required: true, message: "请输入", trigger: "blur" }, |
| | | ], |
| | | paymentMethod: [{ required: true, message: "请选择", trigger: "change" }], |
| | | invoiceNumber: [ |
| | | { required: true, message: "请选择采购合同号", trigger: "change" }, |
| | | ], |
| | | registrant: [{ required: true, message: "请选择", trigger: "change" }], |
| | | }, |
| | | }); |
| | | const { form, rules } = toRefs(data); |
| | |
| | | }; |
| | | // 打开弹框 |
| | | const openForm = (type, row) => { |
| | | if (selectedRows.value.length !== 1) { |
| | | proxy.$message.error("请选择一条发票数据"); |
| | | if (selectedRows.value.length < 1) { |
| | | proxy.$message.error("请至少选择一条发票数据"); |
| | | return; |
| | | } |
| | | if (selectedRows.value[0].unPaymentAmountTotal == 0) { |
| | | proxy.$message.warning("无需再付款"); |
| | | return; |
| | | } |
| | | const firstRow = selectedRows.value[0]; |
| | | const isSameSupplier = selectedRows.value.every(row => row.supplierName === firstRow.supplierName); |
| | | if (!isSameSupplier) { |
| | | proxy.$message.error("请选择相同供应商名称的合同"); |
| | | return; |
| | | } |
| | | const hasZeroAmount = selectedRows.value.some(row => row.unPaymentAmountTotal == 0); |
| | | if (hasZeroAmount) { |
| | | proxy.$message.warning("所选数据中存在无需再付款的记录"); |
| | | return; |
| | | } |
| | | operationType.value = type; |
| | | form.value = {}; |
| | | form.value = { ...selectedRows.value[0] }; |
| | | form.value.ticketRegistrationId = selectedRows.value[0].id; |
| | | form.value.id = null; |
| | | // 查询采购合同号 |
| | | form.value.registrationtDate = getCurrentDate(); |
| | | form.value.paymentDate = getCurrentDate(); |
| | | form.value.registrant = userStore.name; |
| | | form.value.paymentList = selectedRows.value.map(row => ({ |
| | | ticketRegistrationId: row.id, |
| | | purchaseLedgerId: row.purchaseLedgerId, |
| | | purchaseContractNumber: row.purchaseContractNumber, |
| | | supplierName: row.supplierName, |
| | | invoiceNumber: row.invoiceNumber, |
| | | invoiceAmount: row.invoiceAmount, |
| | | unPaymentAmountTotal: row.unPaymentAmountTotal, |
| | | currentPaymentAmount: row.unPaymentAmountTotal, |
| | | paymentMethod: "", |
| | | paymentDate: new Date().toISOString().split('T')[0], |
| | | })); |
| | | dialogFormVisible.value = true; |
| | | }; |
| | | // 提交表单 |
| | | const submitForm = () => { |
| | | proxy.$refs["formRef"].validate((valid) => { |
| | | if (valid) { |
| | | if (operationType.value === "edit") { |
| | | submitEdit(); |
| | | } else { |
| | | submitAdd(); |
| | | const submitList = form.value.paymentList.map(item => ({ |
| | | purchaseLedgerId: item.purchaseLedgerId, |
| | | ticketRegistrationId: item.ticketRegistrationId, |
| | | purchaseContractNumber: item.purchaseContractNumber, |
| | | supplierName: item.supplierName, |
| | | invoiceNumber: item.invoiceNumber, |
| | | invoiceAmount: item.invoiceAmount, |
| | | unPaymentAmountTotal: item.unPaymentAmountTotal, |
| | | currentPaymentAmount: item.currentPaymentAmount, |
| | | paymentMethod: item.paymentMethod, |
| | | paymentDate: item.paymentDate, |
| | | registrant: form.value.registrant, |
| | | })); |
| | | |
| | | const invalidItems = submitList.filter(item => |
| | | !item.currentPaymentAmount || |
| | | !item.paymentMethod || |
| | | !item.paymentDate |
| | | ); |
| | | |
| | | if (invalidItems.length > 0) { |
| | | proxy.$message.error("请完善每条合同的付款信息"); |
| | | return; |
| | | } |
| | | |
| | | paymentRegistrationAdd(submitList).then((res) => { |
| | | proxy.$modal.msgSuccess("提交成功"); |
| | | closeDia(); |
| | | getList(); |
| | | }); |
| | | } |
| | | }); |
| | | }; |
| | | // 提交新增 |
| | | const submitAdd = () => { |
| | | paymentRegistrationAdd(form.value).then((res) => { |
| | | proxy.$modal.msgSuccess("提交成功"); |
| | | closeDia(); |
| | | getList(); |
| | | }); |
| | | }; |
| | | // 提交修改 |
| | | const submitEdit = () => { |
| | | paymentRegistrationEdit(form.value).then((res) => { |
| | | proxy.$modal.msgSuccess("提交成功"); |
| | | closeDia(); |
| | | getList(); |
| | | }); |
| | | }; |
| | | // 关闭弹框 |