From 28a67a22bffae3ce3b2e52fa15a397cbe4922f0e Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期一, 14 七月 2025 11:47:32 +0800 Subject: [PATCH] 1.付款登记-添加明细展示,并且可以编辑和删除,付款流水数据展示要同步 --- src/views/qualityManagement/processInspection/components/formDia.vue | 2 src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue | 4 src/views/salesManagement/receiptPayment/index.vue | 14 +- src/views/system/dept/index.vue | 2 src/api/procurementManagement/procurementInvoiceLedger.js | 25 +++++ src/views/qualityManagement/finalInspection/components/formDia.vue | 2 src/views/procurementManagement/paymentEntry/index.vue | 227 +++++++++++++++++++++++++++++++-------------- src/views/salesManagement/salesLedger/index.vue | 2 src/views/salesManagement/invoiceRegistration/index.vue | 2 src/views/procurementManagement/procurementLedger/index.vue | 1 src/views/qualityManagement/nonconformingManagement/components/formDia.vue | 2 src/views/salesManagement/invoiceLedger/index.vue | 2 src/views/procurementManagement/invoiceEntry/indexOld.vue | 2 src/views/qualityManagement/rawMaterialInspection/components/formDia.vue | 2 src/views/procurementManagement/invoiceEntry/components/Modal.vue | 2 15 files changed, 206 insertions(+), 85 deletions(-) diff --git a/src/api/procurementManagement/procurementInvoiceLedger.js b/src/api/procurementManagement/procurementInvoiceLedger.js index 6b05f3f..76f8410 100644 --- a/src/api/procurementManagement/procurementInvoiceLedger.js +++ b/src/api/procurementManagement/procurementInvoiceLedger.js @@ -98,3 +98,28 @@ data: data, }); } + +// 鏌ヨ浠樻鐧昏瀛愬垪琛� +export function registrationListPageGetById(query) { + return request({ + url: "/purchase/registration/getById", + method: "get", + params: query, + }); +} +// 淇敼浠樻娴佹按 +export function updatePaymentRegistration(query) { + return request({ + url: "/purchase/registration/updatePaymentRegistration", + method: "put", + data: query, + }); +} +// 鍒犻櫎浠樻娴佹按 +export function delPaymentRegistration(query) { + return request({ + url: "/purchase/registration/delPaymentRegistration", + method: "delete", + data: query, + }); +} diff --git a/src/views/procurementManagement/invoiceEntry/components/Modal.vue b/src/views/procurementManagement/invoiceEntry/components/Modal.vue index 7161460..2914dc2 100644 --- a/src/views/procurementManagement/invoiceEntry/components/Modal.vue +++ b/src/views/procurementManagement/invoiceEntry/components/Modal.vue @@ -123,6 +123,7 @@ placeholder="璇疯緭鍏�" :min="0" :step="0.1" + :precision="2" clearable style="width: 100%" @change="invoiceNumBlur(row)" @@ -133,6 +134,7 @@ v-model="row.ticketsAmount" placeholder="璇疯緭鍏�" :min="0" + :precision="2" :step="0.1" clearable style="width: 100%" diff --git a/src/views/procurementManagement/invoiceEntry/indexOld.vue b/src/views/procurementManagement/invoiceEntry/indexOld.vue index a31c265..1b4c6b9 100644 --- a/src/views/procurementManagement/invoiceEntry/indexOld.vue +++ b/src/views/procurementManagement/invoiceEntry/indexOld.vue @@ -318,6 +318,7 @@ v-model="scope.row.ticketsNum" placeholder="璇烽�夋嫨" :min="0" + :precision="2" :step="0.1" clearable style="width: 100%" @@ -338,6 +339,7 @@ v-model="scope.row.ticketsAmount" placeholder="璇烽�夋嫨" :min="0" + :precision="2" :step="0.1" clearable style="width: 100%" diff --git a/src/views/procurementManagement/paymentEntry/index.vue b/src/views/procurementManagement/paymentEntry/index.vue index 56b143c..107ee30 100644 --- a/src/views/procurementManagement/paymentEntry/index.vue +++ b/src/views/procurementManagement/paymentEntry/index.vue @@ -37,28 +37,6 @@ </el-col> </el-row> </el-form> - <!-- <div> - <span class="search_title">渚涘簲鍟嗗悕绉�/鍚堝悓鍙凤細</span> - <el-input - v-model="searchForm.supplierNameOrContractNo" - style="width: 240px" - placeholder="杈撳叆渚涘簲鍟嗗悕绉�/鍚堝悓鍙锋悳绱�" - @change="handleQuery" - clearable - :prefix-icon="Search" - /> - <el-button - type="primary" - @click="handleQuery" - style="margin-left: 10px" - > - 鎼滅储 - </el-button> - </div> - <div> - <el-button type="primary" @click="openForm('add')">鏂板浠樻</el-button> - <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button> - </div> --> </div> <div class="table_list"> <PIMTable @@ -66,14 +44,90 @@ :column="tableColumn" :tableData="tableData" :page="page" + :expandRowKeys="expandedRowKeys" :isSelection="true" :isShowSummary="isShowSummarySon" :summaryMethod="summarizeMainTable1" @selection-change="handleSelectionChange" + @expand-change="expandChange" :tableLoading="tableLoading" @pagination="pagination" :total="page.total" - ></PIMTable> + > + <template #expand="{ row }"> + <el-table + :data="expandData" + border + show-summary + v-loading="childrenLoading" + :summary-method="summarizeMainTable2" + > + <el-table-column + align="center" + label="搴忓彿" + type="index" + width="60" + /> + <el-table-column label="浠樻鏃ユ湡" prop="paymentDate" /> + <el-table-column label="浠樻閲戦" prop="currentPaymentAmount"> + <template #default="scope"> + <el-input-number :step="0.01" :min="0" style="width: 100%" + v-model="scope.row.currentPaymentAmount" + :disabled="!scope.row.editType" + :precision="2" + placeholder="璇疯緭鍏�" + clearable + /> + </template> + </el-table-column> + <el-table-column label="浠樻鏂瑰紡" prop="paymentMethod"> + <template #default="scope"> + <el-select + :disabled="!scope.row.editType" + v-model="scope.row.paymentMethod" + placeholder="璇烽�夋嫨" + clearable + > + <el-option label="鐢垫眹" value="鐢垫眹" /> + <el-option label="鎵垮厬" value="鎵垮厬" /> + </el-select> + </template> + </el-table-column> + <el-table-column label="鐧昏浜�" prop="registrant" /> + <el-table-column label="鐧昏鏃ユ湡" prop="registrationtDate" /> + <el-table-column label="鎿嶄綔" width="150"> + <template #default="scope"> + <el-button + link + type="primary" + size="small" + @click="changeEditType(scope.row)" + v-if="!scope.row.editType" + :disabled="scope.row.registrant !== userStore.nickName" + >缂栬緫</el-button + > + <el-button + link + type="primary" + size="small" + @click="saveReceiptPayment(scope.row)" + v-if="scope.row.editType" + :disabled="scope.row.registrant !== userStore.nickName" + >淇濆瓨</el-button + > + <el-button + link + type="primary" + size="small" + @click="handleDelete(scope.row)" + :disabled="scope.row.registrant !== userStore.nickName" + >鍒犻櫎</el-button + > + </template> + </el-table-column> + </el-table> + </template> + </PIMTable> </div> <el-dialog v-model="dialogFormVisible" @@ -146,6 +200,7 @@ <el-col :span="12"> <el-form-item label="鏈浠樻閲戦锛�" prop="currentPaymentAmount"> <el-input-number :step="0.01" :min="0" style="width: 100%" + :precision="2" v-model="form.currentPaymentAmount" placeholder="璇疯緭鍏�" clearable @@ -225,11 +280,21 @@ paymentRegistrationEdit, getTicketNo, } from "@/api/procurementManagement/paymentEntry.js"; -import { invoiceListPage } from "@/api/procurementManagement/procurementInvoiceLedger.js"; +import { + delPaymentRegistration, + invoiceListPage, + registrationListPageGetById, + updatePaymentRegistration +} from "@/api/procurementManagement/procurementInvoiceLedger.js"; import useFormData from "@/hooks/useFormData"; const { proxy } = getCurrentInstance(); const tableColumn = ref([ + { + type: "expand", + dataType: "slot", + slot: "expand", + }, { label: "閲囪喘鍚堝悓鍙�", prop: "purchaseContractNumber", @@ -275,9 +340,10 @@ }, ]); const tableData = ref([]); +const expandData = ref([]); const selectedRows = ref([]); const tableLoading = ref(false); -const invoiceNumberList = ref([]); +const childrenLoading = ref(false); const userStore = useUserStore(); const page = reactive({ current: 1, @@ -324,6 +390,8 @@ const { form, rules } = toRefs(data); const { form: searchForm, resetForm } = useFormData(data.searchForm); const isShowSummarySon = ref(true); +const expandedRowKeys = ref([]); + // 瀛愯〃鍚堣鏂规硶 const summarizeMainTable1 = (param) => { @@ -335,6 +403,13 @@ futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� } ); +}; +// 瀛愯〃鍚堣鏂规硶 +const summarizeMainTable2 = (param) => { + return proxy.summarizeTable(param, ["currentPaymentAmount"], { + ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� + futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� + }); }; // 鏌ヨ鍒楄〃 /** 鎼滅储鎸夐挳鎿嶄綔 */ @@ -353,7 +428,56 @@ tableLoading.value = false; tableData.value = res.records; page.total = res.total; + if (expandedRowKeys.value.length > 0) { + const arr = [] + const index = tableData.value.findIndex(item => item.id === expandedRowKeys.value[0]); + if (index > -1) { + arr.push(tableData.value[index]); + expandChange(tableData.value[index], arr) + } + } }); +}; +// 灞曞紑琛� +const expandChange = (row, expandedRows) => { + if (expandedRows.length > 0) { + nextTick(() => { + expandedRowKeys.value = []; + try { + childrenLoading.value = true; + registrationListPageGetById({ id: row.id }).then((res) => { + childrenLoading.value = false; + const index = tableData.value.findIndex((item) => item.id === row.id); + if (index > -1) { + expandData.value = res; + } + expandedRowKeys.value.push(row.id); + }); + } catch (error) { + childrenLoading.value = false; + console.log(error); + } + }) + } else { + expandedRowKeys.value = []; + } +}; +// 缂栬緫淇敼鐘舵�� +const changeEditType = (row) => { + row.editType = !row.editType; +}; +// 淇濆瓨鍥炴璁板綍 +const saveReceiptPayment = (row) => { + let updateData = { + id: row.id, + currentPaymentAmount: row.currentPaymentAmount, + paymentMethod: row.paymentMethod, + }; + updatePaymentRegistration(updateData).then((res) => { + row.editType = !row.editType; + getList(); + proxy.$modal.msgSuccess("鎻愪氦鎴愬姛"); + }); }; // 琛ㄦ牸閫夋嫨鏁版嵁 const handleSelectionChange = (selection) => { @@ -365,6 +489,10 @@ proxy.$message.error("璇烽�夋嫨涓�鏉″彂绁ㄦ暟鎹�"); return; } + if (selectedRows.value[0].unPaymentAmountTotal == 0) { + proxy.$message.warning("鏃犻渶鍐嶄粯娆�"); + return; + } operationType.value = type; form.value = {}; form.value = { ...selectedRows.value[0] }; @@ -375,38 +503,6 @@ form.value.paymentDate = getCurrentDate(); form.value.registrant = userStore.name; dialogFormVisible.value = true; -}; -// 閫夋嫨鍙戠エ鍙蜂互鍚庣粰鍙戠エ閲戦璧嬪�� -const setInvoiceAmount = (value) => { - if (value) { - invoiceNumberList.value.forEach((item) => { - if (item.invoiceNumber === value) { - form.value.invoiceAmount = item.invoiceAmount; - form.value.ticketRegistrationId = item.id; - } - }); - } else { - form.value.invoiceAmount = ""; - } -}; -// 閫夋嫨閲囪喘鍚堝悓鍙疯祴鍊� -const setInfo = (value) => { - getTicketNo({ id: value }).then((res) => { - invoiceNumberList.value = res.data; - }); - if (value) { - byPurchaseId(value).then((res) => { - form.value.salesContractNo = res.data.salesContractNo; - form.value.supplierName = res.data.supplierName; - form.value.taxRate = res.data.taxRate; - form.value.supplierId = res.data.supplierId; - }); - } else { - form.value.salesContractNo = ""; - form.value.supplierName = ""; - form.value.taxRate = ""; - form.value.supplierId = ""; - } }; // 鎻愪氦琛ㄥ崟 const submitForm = () => { @@ -442,20 +538,7 @@ dialogFormVisible.value = false; }; // 鍒犻櫎 -const handleDelete = () => { - let ids = []; - if (selectedRows.value.length > 0) { - // 妫�鏌ユ槸鍚︽湁浠栦汉缁存姢鐨勬暟鎹� - const unauthorizedData = selectedRows.value.filter(item => item.issUer !== userStore.nickName); - if (unauthorizedData.length > 0) { - proxy.$modal.msgWarning("涓嶅彲鍒犻櫎浠栦汉缁存姢鐨勬暟鎹�"); - return; - } - ids = selectedRows.value.map((item) => item.id); - } else { - proxy.$modal.msgWarning("璇烽�夋嫨鏁版嵁"); - return; - } +const handleDelete = (row) => { ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�", "鍒犻櫎鎻愮ず", { confirmButtonText: "纭", cancelButtonText: "鍙栨秷", @@ -463,7 +546,7 @@ }) .then(() => { tableLoading.value = true; - paymentRegistrationDel(ids) + delPaymentRegistration(row.id) .then((res) => { proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛"); getList(); diff --git a/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue b/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue index ba4ae28..1beac51 100644 --- a/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue +++ b/src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue @@ -28,12 +28,12 @@ </el-col> <el-col :span="12"> <el-form-item label="鏉ョエ鏁帮細"> - <el-input-number :step="0.1" :min="0" style="width: 100%" v-model="form.ticketsNum" @change="inputTicketsNum" /> + <el-input-number :step="0.1" :min="0" style="width: 100%" v-model="form.ticketsNum" @change="inputTicketsNum" :precision="2"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="鏈鏉ョエ閲戦(鍏�)锛�"> - <el-input-number :step="0.1" :min="0" style="width: 100%" v-model="form.ticketsAmount" @change="inputTicketsAmount" /> + <el-input-number :step="0.1" :min="0" style="width: 100%" v-model="form.ticketsAmount" @change="inputTicketsAmount" :precision="2"/> </el-form-item> </el-col> <el-col :span="12"> diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue index 38c34f4..d498c29 100644 --- a/src/views/procurementManagement/procurementLedger/index.vue +++ b/src/views/procurementManagement/procurementLedger/index.vue @@ -463,6 +463,7 @@ <el-input-number :step="0.1" clearable + :precision="2" style="width: 100%" v-model="productForm.quantity" placeholder="璇疯緭鍏�" diff --git a/src/views/qualityManagement/finalInspection/components/formDia.vue b/src/views/qualityManagement/finalInspection/components/formDia.vue index ed26f89..3153374 100644 --- a/src/views/qualityManagement/finalInspection/components/formDia.vue +++ b/src/views/qualityManagement/finalInspection/components/formDia.vue @@ -36,7 +36,7 @@ </el-col> <el-col :span="12"> <el-form-item label="鏁伴噺锛�" prop="quantity"> - <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable/> + <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable :precision="2"/> </el-form-item> </el-col> </el-row> diff --git a/src/views/qualityManagement/nonconformingManagement/components/formDia.vue b/src/views/qualityManagement/nonconformingManagement/components/formDia.vue index 56107bf..b464762 100644 --- a/src/views/qualityManagement/nonconformingManagement/components/formDia.vue +++ b/src/views/qualityManagement/nonconformingManagement/components/formDia.vue @@ -55,7 +55,7 @@ </el-col> <el-col :span="12"> <el-form-item label="鏁伴噺锛�" prop="quantity"> - <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable/> + <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable :precision="2"/> </el-form-item> </el-col> </el-row> diff --git a/src/views/qualityManagement/processInspection/components/formDia.vue b/src/views/qualityManagement/processInspection/components/formDia.vue index 4caf40b..91d9701 100644 --- a/src/views/qualityManagement/processInspection/components/formDia.vue +++ b/src/views/qualityManagement/processInspection/components/formDia.vue @@ -43,7 +43,7 @@ </el-col> <el-col :span="12"> <el-form-item label="鏁伴噺锛�" prop="quantity"> - <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable/> + <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable :precision="2"/> </el-form-item> </el-col> </el-row> diff --git a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue index 25b5697..be15275 100644 --- a/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue +++ b/src/views/qualityManagement/rawMaterialInspection/components/formDia.vue @@ -54,7 +54,7 @@ </el-col> <el-col :span="12"> <el-form-item label="鏁伴噺锛�" prop="quantity"> - <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable/> + <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="璇疯緭鍏�" clearable :precision="2"/> </el-form-item> </el-col> </el-row> diff --git a/src/views/salesManagement/invoiceLedger/index.vue b/src/views/salesManagement/invoiceLedger/index.vue index a92d2ec..b5fb9f1 100644 --- a/src/views/salesManagement/invoiceLedger/index.vue +++ b/src/views/salesManagement/invoiceLedger/index.vue @@ -86,7 +86,7 @@ </el-col> <el-col :span="12"> <el-form-item label="鍙戠エ閲戦(鍏�)锛�" prop="invoiceTotal"> - <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.invoiceTotal" placeholder="璇疯緭鍏�" clearable /> + <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.invoiceTotal" placeholder="璇疯緭鍏�" clearable :precision="2"/> </el-form-item> </el-col> </el-row> diff --git a/src/views/salesManagement/invoiceRegistration/index.vue b/src/views/salesManagement/invoiceRegistration/index.vue index f5c293c..af57e44 100644 --- a/src/views/salesManagement/invoiceRegistration/index.vue +++ b/src/views/salesManagement/invoiceRegistration/index.vue @@ -319,6 +319,7 @@ <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> @@ -331,6 +332,7 @@ > <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> diff --git a/src/views/salesManagement/receiptPayment/index.vue b/src/views/salesManagement/receiptPayment/index.vue index 762865d..3521017 100644 --- a/src/views/salesManagement/receiptPayment/index.vue +++ b/src/views/salesManagement/receiptPayment/index.vue @@ -86,10 +86,13 @@ <el-table-column label="鍥炴鏃ユ湡" prop="receiptPaymentDate" /> <el-table-column label="鍥炴閲戦" prop="receiptPaymentAmount"> <template #default="scope"> - <el-input - v-model="scope.row.receiptPaymentAmount" - :disabled="!scope.row.editType" - ></el-input> + <el-input-number :step="0.01" :min="0" style="width: 100%" + v-model="scope.row.receiptPaymentAmount" + :disabled="!scope.row.editType" + :precision="2" + placeholder="璇疯緭鍏�" + clearable + /> </template> </el-table-column> <el-table-column label="鍥炴鏂瑰紡" prop="receiptPaymentType"> @@ -288,7 +291,8 @@ </el-col> <el-col :span="12"> <el-form-item label="鏈鍥炴閲戦锛�" prop="receiptPaymentAmount"> - <el-input-number :step="0.01" :min="0" style="width: 100%" + <el-input-number :step="0.01" :min="0" style="width: 100%" + :precision="2" v-model="form.receiptPaymentAmount" placeholder="璇疯緭鍏�" clearable diff --git a/src/views/salesManagement/salesLedger/index.vue b/src/views/salesManagement/salesLedger/index.vue index 55dcf14..bd0907f 100644 --- a/src/views/salesManagement/salesLedger/index.vue +++ b/src/views/salesManagement/salesLedger/index.vue @@ -250,12 +250,14 @@ <el-col :span="12"> <el-form-item label="鍚◣鍗曚环(鍏�)锛�" prop="taxInclusiveUnitPrice"> <el-input-number :step="0.01" :min="0" v-model="productForm.taxInclusiveUnitPrice" style="width: 100%" + :precision="2" placeholder="璇疯緭鍏�" clearable @change="calculateFromUnitPrice" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="鏁伴噺锛�" prop="quantity"> <el-input-number :step="0.1" :min="0" v-model="productForm.quantity" placeholder="璇疯緭鍏�" clearable + :precision="2" @change="calculateFromQuantity" style="width: 100%" /> </el-form-item> </el-col> diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index e5c888f..0a0532a 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -99,7 +99,7 @@ </el-col> <el-col :span="12"> <el-form-item label="鏄剧ず鎺掑簭" prop="orderNum"> - <el-input-number v-model="form.orderNum" controls-position="right" :min="0" /> + <el-input-number v-model="form.orderNum" controls-position="right" :min="0"/> </el-form-item> </el-col> <el-col :span="12"> -- Gitblit v1.9.3