From ece2dfeb926d728b10db38038e4d12e9e9851c24 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期五, 06 六月 2025 17:38:10 +0800 Subject: [PATCH] 分页修改 --- src/views/procurementManagement/procurementLedger/index.vue | 116 +++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 87 insertions(+), 29 deletions(-) diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue index 1352682..51110b0 100644 --- a/src/views/procurementManagement/procurementLedger/index.vue +++ b/src/views/procurementManagement/procurementLedger/index.vue @@ -73,7 +73,7 @@ </el-col> <el-col :span="12"> <el-form-item label="閿�鍞悎鍚屽彿锛�" prop="salesLedgerId"> - <el-select v-model="form.salesLedgerId" placeholder="璇烽�夋嫨" clearable> + <el-select v-model="form.salesLedgerId" placeholder="璇烽�夋嫨" clearable @change="salesLedgerChange"> <el-option v-for="item in salesContractList" :key="item.id" :label="item.salesContractNo" :value="item.id"/> </el-select> </el-form-item> @@ -127,12 +127,12 @@ <el-table-column align="center" label="搴忓彿" type="index" width="60" /> <el-table-column label="浜у搧澶х被" prop="productCategory" /> <el-table-column label="瑙勬牸鍨嬪彿" prop="specificationModel" /> - <el-table-column label="鍗曚綅" prop="unit" /> - <el-table-column label="鏁伴噺" prop="quantity" /> - <el-table-column label="绋庣巼(%)" prop="taxRate" /> - <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" :formatter="formattedNumber"/> - <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" :formatter="formattedNumber"/> - <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" :formatter="formattedNumber"/> + <el-table-column label="鍗曚綅" prop="unit" width="70" /> + <el-table-column label="鏁伴噺" prop="quantity" width="70" /> + <el-table-column label="绋庣巼(%)" prop="taxRate" width="70" /> + <el-table-column label="鍚◣鍗曚环(鍏�)" prop="taxInclusiveUnitPrice" :formatter="formattedNumber" width="150"/> + <el-table-column label="鍚◣鎬讳环(鍏�)" prop="taxInclusiveTotalPrice" :formatter="formattedNumber" width="150"/> + <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" prop="taxExclusiveTotalPrice" :formatter="formattedNumber" width="150"/> <el-table-column fixed="right" label="鎿嶄綔" min-width="60" align="center"> <template #default="scope"> <el-button link type="primary" size="small" @click="openProductForm('edit', scope.row, scope.$index);">缂栬緫</el-button> @@ -183,9 +183,9 @@ <el-form :model="productForm" label-width="140px" label-position="top" :rules="productRules" ref="productFormRef"> <el-row :gutter="30"> <el-col :span="24"> - <el-form-item label="浜у搧澶х被锛�" prop="productCategory"> + <el-form-item label="浜у搧澶х被锛�" prop="productId"> <el-tree-select - v-model="productForm.productCategory" + v-model="productForm.productId" placeholder="璇烽�夋嫨" clearable check-strictly @change="getModels" @@ -198,8 +198,8 @@ </el-row> <el-row :gutter="30"> <el-col :span="24"> - <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="specificationModel"> - <el-select v-model="productForm.specificationModel" placeholder="璇烽�夋嫨" clearable> + <el-form-item label="瑙勬牸鍨嬪彿锛�" prop="productModelId"> + <el-select v-model="productForm.productModelId" placeholder="璇烽�夋嫨" clearable @change="getProductModel"> <el-option v-for="item in modelOptions" :key="item.id" :label="item.model" :value="item.id"/> </el-select> </el-form-item> @@ -213,19 +213,19 @@ </el-col> <el-col :span="12"> <el-form-item label="鏁伴噺锛�" prop="quantity"> - <el-input v-model="productForm.quantity" placeholder="璇疯緭鍏�" clearable/> + <el-input v-model="productForm.quantity" placeholder="璇疯緭鍏�" clearable @change="mathNum"/> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="鍚◣鍗曚环(鍏�)锛�" prop="taxInclusiveUnitPrice"> - <el-input-number v-model="productForm.taxInclusiveUnitPrice" :precision="2" :step="0.1" clearable style="width: 100%"/> + <el-input-number v-model="productForm.taxInclusiveUnitPrice" :precision="2" :step="0.1" clearable style="width: 100%" @change="mathNum"/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="绋庣巼(%)锛�" prop="taxRate"> - <el-select v-model="productForm.taxRate" placeholder="璇烽�夋嫨" clearable> + <el-select v-model="productForm.taxRate" placeholder="璇烽�夋嫨" clearable @change="mathNum"> <el-option label="1" value="1"/> <el-option label="6" value="6"/> <el-option label="13" value="13"/> @@ -236,12 +236,12 @@ <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="鍚◣鎬讳环(鍏�)锛�" prop="taxInclusiveTotalPrice"> - <el-input-number v-model="productForm.taxInclusiveTotalPrice" :precision="2" :step="0.1" clearable style="width: 100%"/> + <el-input-number v-model="productForm.taxInclusiveTotalPrice" :precision="2" :step="0.1" clearable style="width: 100%" disabled/> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="涓嶅惈绋庢�讳环(鍏�)锛�" prop="taxExclusiveTotalPrice"> - <el-input-number v-model="productForm.taxExclusiveTotalPrice" :precision="2" :step="0.1" clearable style="width: 100%"/> + <el-input v-model="productForm.taxExclusiveTotalPrice" disabled/> </el-form-item> </el-col> </el-row> @@ -280,7 +280,7 @@ addOrEditPurchase, delPurchase, getSalesNo, - purchaseList, + purchaseListPage, productList, getPurchaseById, getOptions } from "@/api/procurementManagement/procurementLedger.js"; const { proxy } = getCurrentInstance() @@ -324,7 +324,6 @@ }, rules: { purchaseContractNumber: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], - salesLedgerId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], projectName: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], supplierId: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], } @@ -337,7 +336,9 @@ const currentId = ref('') const productFormData = reactive({ productForm: { + productId: '', productCategory: '', + productModelId: '', specificationModel: '', unit: '', quantity: '', @@ -348,8 +349,8 @@ invoiceType: '', }, productRules: { - productCategory: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], - specificationModel: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + productId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + productModelId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], unit: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], quantity: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], taxInclusiveUnitPrice: [{ required: true, message: "璇疯緭鍏�", trigger: "blur" }], @@ -376,16 +377,23 @@ page.current = 1 getList() } -const paginationChange = ({ current, limit }) => { - page.current = current; - page.size = limit; +// 瀛愯〃鍚堣鏂规硶 +const summarizeChildrenTable = (param) => { + return proxy.summarizeTable(param, ['taxInclusiveUnitPrice', 'taxInclusiveTotalPrice', 'taxExclusiveTotalPrice', 'ticketsNum', 'ticketsAmount', 'futureTickets', 'futureTicketsAmount'], { + ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� + futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁� + }); +}; +const paginationChange = (obj) => { + page.current = obj.page; + page.size = obj.limit; getList() } const getList = () => { tableLoading.value = true - purchaseList({...searchForm.value, ...page}).then(res => { + purchaseListPage({...searchForm.value, ...page}).then(res => { tableLoading.value = false - tableData.value = res.rows + tableData.value = res.records tableData.value.map(item => { item.children = [] }) @@ -411,7 +419,7 @@ productList({salesLedgerId: row.id, type: 2}).then(res => { const index = tableData.value.findIndex(item => item.id === row.id); if (index > -1) { - tableData.value[index].children = res.rows; + tableData.value[index].children = res; } expandedRowKeys.value.push(row.id) }) @@ -545,10 +553,35 @@ }) } const getModels =(value) => { + productForm.value.productCategory = findNodeById(productOptions.value, value) modelList({id: value}).then(res => { modelOptions.value = res }) } +const getProductModel =(value) => { + const index = modelOptions.value.findIndex(item => item.id === value); + if (index !== -1) { + productForm.value.specificationModel = modelOptions.value[index].model; + productForm.value.unit = modelOptions.value[index].unit; + } else { + productForm.value.specificationModel = null; + productForm.value.unit = null + } +} +const findNodeById = (nodes, productId) => { + for (let i = 0; i < nodes.length; i++) { + if (nodes[i].value === productId) { + return nodes[i].label; // 鎵惧埌鑺傜偣锛岃繑鍥炶鑺傜偣 + } + if (nodes[i].children && nodes[i].children.length > 0) { + const foundNode = findNodeById(nodes[i].children, productId); + if (foundNode) { + return foundNode.label; // 鍦ㄥ瓙鑺傜偣涓壘鍒帮紝杩斿洖璇ヨ妭鐐� + } + } + } + return null; // 娌℃湁鎵惧埌鑺傜偣锛岃繑鍥瀗ull +}; function convertIdToValue(data) { return data.map(item => { const { id, children, ...rest } = item; @@ -559,7 +592,7 @@ if (children && children.length > 0) { newItem.children = convertIdToValue(children); } - + return newItem; }); } @@ -572,6 +605,7 @@ } else { if (productOperationType.value === 'add') { productData.value.push({...productForm.value}) + console.log('productData.value---', productData.value) } else { productData.value[productOperationIndex.value] = {...productForm.value} } @@ -627,7 +661,7 @@ }).catch(() => { proxy.$modal.msg("宸插彇娑�") }) - + } } // 鍏抽棴浜у搧寮规 @@ -683,9 +717,33 @@ const day = String(today.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } +const mathNum = () => { + console.log('productForm.value',productForm.value) + if(!productForm.value.taxInclusiveUnitPrice){ + return + } + if(!productForm.value.quantity){ + return + } + // 鍚◣鎬讳环璁$畻 + productForm.value.taxInclusiveTotalPrice = proxy.calculateTaxIncludeTotalPrice(productForm.value.taxInclusiveUnitPrice, productForm.value.quantity) + if(productForm.value.taxRate){ + // 涓嶅惈绋庢�讳环璁$畻 + productForm.value.taxExclusiveTotalPrice = proxy.calculateTaxExclusiveTotalPrice(productForm.value.taxInclusiveTotalPrice, productForm.value.taxRate) + } +} +// 閿�鍞悎鍚岄�夋嫨鏀瑰彉鏂规硶 +const salesLedgerChange = (row) => { + console.log('row',row) + var index = salesContractList.value.findIndex(item => item.id == row); + console.log('index',index) + if(index > -1){ + form.value.projectName = salesContractList.value[index].projectName + } +} getList() </script> <style scoped lang="scss"> -</style> \ No newline at end of file +</style> -- Gitblit v1.9.3