From bfdfceb60b41a541d9d9087323079bc64c144209 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期四, 29 五月 2025 13:18:18 +0800 Subject: [PATCH] 客户/供应商修改 --- src/views/salesManagement/invoiceRegistration/index.vue | 196 +++++++++++++++---------------------------------- 1 files changed, 60 insertions(+), 136 deletions(-) diff --git a/src/views/salesManagement/invoiceRegistration/index.vue b/src/views/salesManagement/invoiceRegistration/index.vue index d20fe1d..df97bfc 100644 --- a/src/views/salesManagement/invoiceRegistration/index.vue +++ b/src/views/salesManagement/invoiceRegistration/index.vue @@ -14,9 +14,7 @@ <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 @click="handleOut">瀵煎嚭</el-button> - <el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button> + <el-button type="primary" @click="openForm">鏂板鐧昏</el-button> </div> </div> <div class="table_list"> @@ -43,10 +41,10 @@ <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" /> <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" /> <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" /> - <el-table-column label="鏈寮�绁ㄦ暟" prop="invoiceNum" /> - <el-table-column label="鏈寮�绁ㄩ噾棰�(鍏�)" prop="invoiceAmount" /> - <el-table-column label="鏈紑绁ㄦ暟(鍏�)" prop="noInvoiceNum" /> - <el-table-column label="鏈紑绁ㄩ噾棰�(鍏�)" prop="noInvoiceAmount" /> + <el-table-column label="寮�绁ㄦ暟" prop="invoiceNum" /> + <el-table-column label="寮�绁ㄩ噾棰�(鍏�)" prop="invoiceAmount" /> + <el-table-column label="鏈紑绁ㄦ暟" prop="noInvoiceNum" /> + <el-table-column label="鏈紑绁ㄩ噾棰�(鍏�)" prop="noInvoiceAmount"/> </el-table> </template> </el-table-column> @@ -57,23 +55,17 @@ <el-table-column label="涓氬姟鍛�" prop="salesman" show-overflow-tooltip/> <el-table-column label="椤圭洰鍚嶇О" prop="projectName" show-overflow-tooltip/> <el-table-column label="鍚堝悓閲戦(鍏�)" prop="contractAmount" show-overflow-tooltip/> - <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);">缂栬緫</el-button> - </template> - </el-table-column> + <el-table-column label="鏈紑绁ㄩ噾棰�(鍏�)" prop="noInvoiceAmountTotal" show-overflow-tooltip/> </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-dialog v-model="dialogFormVisible" :title="operationType === 'add' ? '鏂板寮�绁ㄧ櫥璁伴〉闈�' : '缂栬緫寮�绁ㄧ櫥璁伴〉闈�'" width="70%" @close="closeDia"> + <el-dialog v-model="dialogFormVisible" title="鏂板寮�绁ㄧ櫥璁伴〉闈�" width="85%" @close="closeDia"> <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef"> <el-row :gutter="30"> <el-col :span="12"> - <el-form-item label="閿�鍞悎鍚屽彿锛�" prop="salesLedgerId"> - <el-select v-model="form.salesLedgerId" placeholder="璇烽�夋嫨" clearable @change="ledgerChange" :disabled="operationType === 'edit'"> - <el-option v-for="item in ledgerList" :key="item.id" :label="item.salesContractNo" :value="item.id"/> - </el-select> + <el-form-item label="閿�鍞悎鍚屽彿锛�" prop="salesContractNo"> + <el-input v-model="form.salesContractNo" disabled></el-input> </el-form-item> </el-col> <el-col :span="12"> @@ -98,7 +90,7 @@ <el-form-item label="浜у搧淇℃伅锛�" prop="entryDate"> </el-form-item> </el-row> - <el-table :data="productData" border> + <el-table :data="productData" border show-summary :summary-method="summarizeChildrenTable"> <el-table-column align="center" label="搴忓彿" type="index" width="60" /> <el-table-column label="浜у搧澶х被" prop="productCategory" /> <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" /> @@ -108,29 +100,24 @@ <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" /> <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" /> <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" /> - <el-table-column label="鏈寮�绁ㄦ暟" prop="invoiceNum"> + <el-table-column label="鏈寮�绁ㄦ暟" prop="currentInvoiceNum"> <template #default="scope"> - <el-input :disabled="!scope.row.editFlag" v-model="scope.row.invoiceNum"></el-input> + <el-input type="number" :step="1" min="0" v-model="scope.row.currentInvoiceNum" @blur="invoiceNumBlur(scope.row)"></el-input> </template> </el-table-column> - <el-table-column label="鏈寮�绁ㄩ噾棰�(鍏�)" prop="invoiceAmount" > + <el-table-column label="鏈寮�绁ㄩ噾棰�(鍏�)" prop="currentInvoiceAmount" > <template #default="scope"> - <el-input :disabled="!scope.row.editFlag" v-model="scope.row.invoiceAmount"></el-input> + <el-input type="number" :step="0.01" min="0" v-model="scope.row.currentInvoiceAmount" disabled></el-input> </template> </el-table-column> - <el-table-column label="鏈紑绁ㄦ暟(鍏�)" prop="noInvoiceNum" > + <el-table-column label="鏈紑绁ㄦ暟" prop="noInvoiceNum" > <template #default="scope"> - <el-input :disabled="!scope.row.editFlag" v-model="scope.row.noInvoiceNum"></el-input> + <el-input type="number" min="0" disabled v-model="scope.row.noInvoiceNum"></el-input> </template> </el-table-column> <el-table-column label="鏈紑绁ㄩ噾棰�(鍏�)" prop="noInvoiceAmount" > <template #default="scope"> - <el-input :disabled="!scope.row.editFlag" v-model="scope.row.noInvoiceAmount"></el-input> - </template> - </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="openProductEdit('edit', scope.row);">缂栬緫</el-button> + <el-input type="number" min="0" disabled v-model="scope.row.noInvoiceAmount"></el-input> </template> </el-table-column> </el-table> @@ -152,16 +139,12 @@ import {ElMessageBox } from "element-plus"; // import {userListNoPage} from "@/api/system/user.js"; import { - ledgerListNoPage, getSalesLedgerWithProducts, + ledgerList, + productList, } from "@/api/salesManagement/salesLedger.js"; import { - invoiceRegistrationList, - invoiceRegistrationSaveOrUpdate, - invoiceRegistrationDel, - productList, - invoiceRegistrationDetail, - invoiceRegistrationExport + invoiceRegistrationSave, } from "@/api/salesManagement/invoiceRegistration.js"; const { proxy } = getCurrentInstance() const tableData = ref([]) @@ -173,7 +156,6 @@ size: 10, }) const total = ref(0) -const ledgerList = ref([]) // 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁 const operationType = ref('') const dialogFormVisible = ref(false) @@ -193,21 +175,6 @@ } }) const { searchForm, form, rules } = toRefs(data) -// 浜у搧琛ㄥ崟寮规鏁版嵁 -const productFormData = reactive({ - productForm: { - productCategory: '', - specificationModel: '', - unit: '', - quantity: '', - taxInclusiveUnitPrice: '', - taxRate: '', - taxInclusiveTotalPrice: '', - taxExclusiveTotalPrice: '', - invoiceType: '', - }, -}) -const { productForm } = toRefs(productFormData) // 鏌ヨ鍒楄〃 /** 鎼滅储鎸夐挳鎿嶄綔 */ @@ -222,18 +189,17 @@ } const getList = () => { tableLoading.value = true - invoiceRegistrationList({...searchForm.value, ...page}).then(res => { + ledgerList({...searchForm.value, ...page}).then(res => { tableLoading.value = false - tableData.value = res.data.records; - tableData.value.map(item => { - item.children = [] - }) - total.value = res.data.total + tableData.value = res.rows; + total.value = res.total + expandedRowKeys.value = [] }) } // 琛ㄦ牸閫夋嫨鏁版嵁 const handleSelectionChange = (selection) => { - selectedRows.value = selection + console.log('selection', selection) + selectedRows.value = selection.filter(item => item.salesContractNo !== undefined); } const expandedRowKeys = ref([]) // 灞曞紑琛� @@ -241,10 +207,11 @@ if (expandedRows.length > 0) { expandedRowKeys.value = [] try { - productList({invoiceRegistrationId: row.id}).then(res => { + productList({salesLedgerId: row.id, + type: 1 }).then(res => { const index = tableData.value.findIndex(item => item.id === row.id); if (index > -1) { - tableData.value[index].children = res.data; + tableData.value[index].children = res; } expandedRowKeys.value.push(row.id) }) @@ -302,35 +269,30 @@ return sums; } // 鎵撳紑寮规 -const openForm = (type, row) => { - operationType.value = type +const openForm = () => { + // 鍒ゆ柇鏄惁澶氶�� + if(selectedRows.value.length != 1) { + proxy.$modal.msgError("璇烽�夋嫨涓�鏉″悎鍚�") + return; + } form.value = {} productData.value = [] - // 鏌ヨ閿�鍞悎鍚� - ledgerListNoPage({}).then(res => { - ledgerList.value = res.data; - }) - if (type === 'edit') { - invoiceRegistrationDetail({id: row.id}).then(res => { - form.value = {...res.data} - form.value.productDtoList = res.data.productDtoList - productData.value = form.value.productDtoList + getSalesLedgerWithProducts({id: selectedRows.value[0].id}).then(res => { + form.value = {...res} + productData.value = form.value.productData.map(item => { + return item }) - } - // currentId.value = row.id; - // getSalesLedgerWithProducts({id: row.id}).then(res => { - // form.value = {...res} - // productData.value = form.value.productData - // }) - // } - dialogFormVisible.value = true + dialogFormVisible.value = true + console.log('productData.value ',productData.value ) + }) + } // 鎻愪氦琛ㄥ崟 const submitForm = () => { proxy.$refs["formRef"].validate(valid => { if (valid) { - form.value.productDtoList = productData; - invoiceRegistrationSaveOrUpdate(form.value).then(res => { + form.value.productData = proxy.HaveJson(productData.value) + invoiceRegistrationSave(form.value).then(res => { proxy.$modal.msgSuccess("鎻愪氦鎴愬姛") closeDia() getList() @@ -342,13 +304,6 @@ const closeDia = () => { proxy.resetForm("formRef") dialogFormVisible.value = false -} -// 鎵撳紑浜у搧寮规 -const openProductEdit = (type, row) => { - const index = productData.value.findIndex(item => item.id === row.id); - if (index > -1) { - productData.value[index].editFlag = !productData.value[index].editFlag - } } // 瀵煎嚭 const handleOut = () => { @@ -365,55 +320,24 @@ proxy.$modal.msg("宸插彇娑�") }) } -// 鍒犻櫎 -const handleDelete = () => { - let ids = [] - if (selectedRows.value.length > 0) { - ids = selectedRows.value.map(item => item.id); - } else { - proxy.$modal.msgWarning('璇烽�夋嫨鏁版嵁') - return + +//鏈寮�绁ㄥけ鐒︽搷浣� +const invoiceNumBlur = (row) => { + if(!row.currentInvoiceNum){ + row.currentInvoiceNum = 0 } - ElMessageBox.confirm( - '閫変腑鐨勫唴瀹瑰皢琚垹闄わ紝鏄惁纭鍒犻櫎锛�', - '瀵煎嚭', { - confirmButtonText: '纭', - cancelButtonText: '鍙栨秷', - type: 'warning', - } - ).then(() => { - invoiceRegistrationDel(ids).then(res => { - proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛") - getList() - }) - }).catch(() => { - proxy.$modal.msg("宸插彇娑�") - }) -} -// 閿�鍞彴璐︾瓫閫� -const ledgerChange = (val) => { - if(val){ - getSalesLedgerWithProducts({id: val}).then(res => { - form.value = { - salesLedgerId: res.id, - customerName: res.customerName, - salesman: res.salesman, - projectName: res.projectName, - productData: res.productData, - salesContractNo: res.salesContractNo, - customerId: res.customerId, - } - productData.value = form.value.productData.map(item => { - item.id = "" - item.editFlag = false - return item - }) - }) - }else { - proxy.resetForm("formRef") - productData.value = [] + if(row.currentInvoiceNum > row.noInvoiceNum){ + proxy.$modal.msgWarning('鏈寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟') + row.currentInvoiceNum = 0 } + // 璁$畻鏈寮�绁ㄩ噾棰� + row.currentInvoiceAmount = row.currentInvoiceNum * row.taxInclusiveUnitPrice + // 璁$畻鏈紑绁ㄦ暟 + row.noInvoiceNum = row.originalNoInvoiceNum - row.currentInvoiceNum + // 璁$畻鏈紑绁ㄩ噾棰� + row.noInvoiceAmount = row.noInvoiceNum * row.taxInclusiveUnitPrice } + getList() </script> -- Gitblit v1.9.3