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/invoiceEntry/index.vue | 153 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 101 insertions(+), 52 deletions(-) diff --git a/src/views/procurementManagement/invoiceEntry/index.vue b/src/views/procurementManagement/invoiceEntry/index.vue index 62aba8c..73a5cbe 100644 --- a/src/views/procurementManagement/invoiceEntry/index.vue +++ b/src/views/procurementManagement/invoiceEntry/index.vue @@ -43,11 +43,11 @@ <el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" show-overflow-tooltip /> <el-table-column label="椤圭洰鍚嶇О" prop="projectName" show-overflow-tooltip /> <el-table-column label="鍚堝悓閲戦(鍏�)" prop="contractAmount" show-overflow-tooltip :formatter="formattedNumber" /> - <el-table-column fixed="right" label="鎿嶄綔" min-width="60" align="center"> + <!-- <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> --> </el-table> <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper" :page="page.current" :limit="page.size" @pagination="paginationChange" /> @@ -99,8 +99,7 @@ </el-col> <el-col :span="12"> <el-form-item label="寮�绁ㄦ棩鏈燂細" prop="issueDate"> - <el-date-picker disabled style="width: 100%" v-model="form.issueDate" value-format="YYYY-MM-DD" - format="YYYY-MM-DD" type="date" placeholder="璇烽�夋嫨" clearable /> + <el-date-picker disabled style="width: 100%" v-model="form.issueDate" type="date" clearable /> </el-form-item> </el-col> </el-row> @@ -108,26 +107,30 @@ <el-form-item label="浜у搧淇℃伅锛�" prop="entryDate"> </el-form-item> </el-row> - <el-table :data="productData" border @selection-change="productSelected" show-summary - :summary-method="summarizeChildrenTable"> + <el-table :data="productData" border @selection-change="productSelected" show-summary style="width: 100%" :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" /> - <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="80" /> + <el-table-column label="鍚◣鍗曚环(鍏�)" width="150" prop="taxInclusiveUnitPrice" :formatter="formattedNumber" /> + <el-table-column label="鍚◣鎬讳环(鍏�)" width="150" prop="taxInclusiveTotalPrice" :formatter="formattedNumber" /> + <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" width="150" prop="taxExclusiveTotalPrice" :formatter="formattedNumber" /> <el-table-column label="鏈鏉ョエ鏁�" prop="ticketsNum" width="170"> <template #default="scope"> - <el-input-number v-model="scope.row.ticketsNum" :precision="0" :step="1" clearable style="width: 100%" - @blur="invoiceNumBlur(scope.row)" /> + <el-input-number v-model="scope.row.ticketsNum" placeholder="璇烽�夋嫨" :min="0" :step="0.1" clearable style="width: 100%" + @change="invoiceNumBlur(scope.row)" /> </template> </el-table-column> - <el-table-column label="鏈鏉ョエ閲戦(鍏�)" prop="ticketsAmount" :formatter="formattedNumber"></el-table-column> + <el-table-column label="鏈鏉ョエ閲戦(鍏�)" prop="ticketsAmount" :min="0" :step="0.1" :formatter="formattedNumber" @change="invoiceAmountBlur" width="170"> + <template #default="scope"> + <el-input-number v-model="scope.row.ticketsAmount" placeholder="璇烽�夋嫨" :min="0" :step="0.1" clearable style="width: 100%" + @change="invoiceAmountBlur(scope.row)" /> + </template> + </el-table-column> <el-table-column label="鏈潵绁ㄦ暟" prop="futureTickets" - :formatter="(row) => row.futureTickets == null || row.futureTickets === '' ? row.quantity : row.futureTickets"> + : ="(row) => row.futureTickets == null || row.futureTickets === '' ? row.quantity : row.futureTickets"> </el-table-column> <el-table-column label="鏈潵绁ㄩ噾棰�(鍏�)" prop="futureTicketsAmount" :formatter="(row) => (row.futureTicketsAmount !== undefined && row.futureTicketsAmount !== null && row.futureTicketsAmount !== '' ? row.futureTicketsAmount : row.taxExclusiveTotalPrice)"> @@ -169,7 +172,7 @@ import { addOrUpdateRegistration, delRegistration, - gePurchaseList, + gePurchaseListPage, getInfo, getProduct, getPurchaseNoById, @@ -184,13 +187,18 @@ purchaseContractNumber: '', }, form: { + issueDate:"",// 寮�绁ㄦ棩鏈� purchaseLedgerId: '', purchaseLedgerNo: '', issUerId: '', // 寮�绁ㄤ汉id issUer: '' ,// 寮�绁ㄤ汉濮撳悕 + invoiceNumber:"", // 鍙戠エ鍙� + invoiceAmount:"", // 鍙戠エ閲戦 }, rules: { - purchaseLedgerId: [{ required: true, message: "璇烽�夋嫨", trigger: "change" }], + invoiceNumber: [{ required: true, message: '璇疯緭鍏ュ彂绁ㄥ彿' , trigger: 'blur' },{type:"string"}], + invoiceAmount: [{ required: true, message: '璇疯緭鍏ュ彂绁ㄩ噾棰�' , trigger: 'blur'}], + } }) const { searchForm, form, rules } = toRefs(data) @@ -205,16 +213,16 @@ page.current = 1 getList() } -const paginationChange = ({ current, limit }) => { - page.current = current; - page.size = limit; +const paginationChange = (obj) => { + page.current = obj.page; + page.size = obj.limit; getList() } const getList = () => { tableLoading.value = true - gePurchaseList({ ...searchForm.value, ...page }).then(res => { + gePurchaseListPage({ ...searchForm.value, ...page }).then(res => { tableLoading.value = false - tableData.value = res.rows + tableData.value = res.records; tableData.value.map(item => { item.children = [] }) @@ -229,7 +237,7 @@ }; // 琛ㄦ牸閫夋嫨鏁版嵁 const handleSelectionChange = (selection) => { - selectedRows.value = selection + selectedRows.value = selection.filter(item => item.purchaseContractNumber !== undefined); } const productSelected = (selectedRows) => { productSelectedRows.value = selectedRows @@ -240,10 +248,10 @@ if (expandedRows.length > 0) { expandedRowKeys.value = [] try { - productList({ salesLedgerId: row.purchaseLedgerId, type: 2 }).then(res => { + 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) }) @@ -279,12 +287,14 @@ // 鎵撳紑寮规 const openForm = (type, row) => { + invoiceNumBlur(row) operationType.value = type form.value = {} productData.value = [] fileList.value = [] form.value.issUerId = userStore.id form.value.issUer = userStore.name + form.value.issueDate = getNowFormatDate() userListNoPage().then(res => { userList.value = res.data }) @@ -292,11 +302,12 @@ if (type === 'add' && row && row.id) { form.value.purchaseLedgerId = row.id getPurchaseNoById({ id: row.id }).then(res => { - purchaseLedgerList.value = res, - form.value.purchaseLedgerNo = res.purchaseContractNumber; - form.value.invoiceAmount = res.invoiceAmount; - form.value.invoiceNumber = res.invoiceNumber; - setInfo(res.id) + let result = res.data + purchaseLedgerList.value = result, + form.value.purchaseLedgerNo = result.purchaseContractNumber; + form.value.invoiceAmount = result.invoiceAmount; + form.value.invoiceNumber = result.invoiceNumber; + setInfo(result.id) }) } else { getProduct().then(res => { @@ -320,10 +331,11 @@ // 閫夋嫨閲囪喘鍚堝悓鍙疯祴鍊� const setInfo = (value) => { getInfo({ id: value }).then(res => { - form.value.salesContractNo = res.salesContractNo - form.value.projectName = res.projectName - productData.value = res.productData - form.value.supplierName = res.supplierName + let result = res.data + form.value.salesContractNo = result.salesContractNo + form.value.projectName = result.projectName + productData.value = result.productData + form.value.supplierName = result.supplierName }) } // 鎻愪氦琛ㄥ崟 @@ -343,13 +355,6 @@ const closeDia = () => { proxy.resetForm("formRef") dialogFormVisible.value = false -} -// 濉啓鏁版嵁 -const openProductEdit = (row) => { - const index = productData.value.findIndex(item => item.id === row.id); - if (index > -1) { - productData.value[index].editFlag = !productData.value[index].editFlag - } } // 瀵煎嚭 const handleOut = () => { @@ -391,24 +396,68 @@ proxy.$modal.msg("宸插彇娑�") }) } -//鏈寮�绁ㄥけ鐒︽搷浣� +//鏈鏉ョエ鏁板け鐒︽搷浣� const invoiceNumBlur = (row) => { - if (!row.ticketsNum) { - row.ticketsNum = 0 + if (!row.ticketsNum || row.ticketsNum === '') { + row.ticketsNum = 0 } - if (Number(row.ticketsNum) > Number(row.futureTickets)) { + if (Number(row.ticketsNum) > Number(row.tempFutureTickets)) { proxy.$modal.msgWarning('鏈寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟') row.ticketsNum = 0 return } - // 璁$畻鏈寮�绁ㄩ噾棰� + // 璁$畻鏈鏉ョエ閲戦 row.ticketsAmount = row.ticketsNum * row.taxInclusiveUnitPrice - // 璁$畻鏈紑绁ㄦ暟 - row.futureTickets = row.futureTickets - row.ticketsNum - // 璁$畻鏈紑绁ㄩ噾棰� - row.futureTicketsAmount = row.futureTickets * row.taxInclusiveUnitPrice + // 璁$畻鏈潵绁ㄦ暟 + row.futureTickets = row.tempFutureTickets - row.ticketsNum + // 璁$畻鏈潵绁ㄩ噾棰� + row.futureTicketsAmount = row.tempFutureTicketsAmount - row.ticketsAmount + calculateinvoiceAmount() } +// 鏈鏉ョエ閲戦澶辩劍鎿嶄綔 +const invoiceAmountBlur = (row) => { + if(!row.ticketsAmount){ + row.ticketsAmount = 0 + } + // 璁$畻鏄惁瓒呰繃鏉ョエ鎬婚噾棰� + if(row.ticketsAmount > row.tempFutureTicketsAmount){ + proxy.$modal.msgWarning('鏈鏉ョエ閲戦涓嶅緱澶т簬鏈潵绁ㄩ噾棰�') + row.ticketsAmount = 0 + } + // 璁$畻鏈鏉ョエ鏁� + row.ticketsNum = (row.ticketsAmount / row.taxInclusiveUnitPrice).toFixed(2) + // 璁$畻鏈潵绁ㄦ暟 + row.futureTickets = row.tempFutureTickets - row.ticketsNum + // 璁$畻鏈潵绁ㄩ噾棰� + row.futureTicketsAmount = row.tempFutureTicketsAmount - row.ticketsAmount + calculateinvoiceAmount() +} + +// 鑾峰彇褰撳墠鏃ユ湡鍑芥暟 +function getNowFormatDate() { + let date = new Date(), + year = date.getFullYear(), //鑾峰彇瀹屾暣鐨勫勾浠�(4浣�) + month = date.getMonth() + 1, //鑾峰彇褰撳墠鏈堜唤(0-11,0浠h〃1鏈�) + strDate = date.getDate() // 鑾峰彇褰撳墠鏃�(1-31) + if (month < 10) month = `0${month}` // 濡傛灉鏈堜唤鏄釜浣嶆暟锛屽湪鍓嶉潰琛�0 + if (strDate < 10) strDate = `0${strDate}` // 濡傛灉鏃ユ槸涓綅鏁帮紝鍦ㄥ墠闈㈣ˉ0 + return `${year}-${month}-${strDate}` +} + + +function calculateinvoiceAmount() { + console.log('productData',productData.value) + var invoiceAmountTotal = 0 + productData.value.forEach(item => { + if(item.ticketsAmount){ + invoiceAmountTotal += item.ticketsAmount + } + }) + form.value.invoiceAmount = invoiceAmountTotal.toFixed(2) + +} + getList() </script> -<style scoped lang="scss"></style> \ No newline at end of file +<style scoped lang="scss"></style> -- Gitblit v1.9.3