From 2dbc9ddfdda116143642c424a978755afc6cdb58 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 20 五月 2025 17:51:21 +0800 Subject: [PATCH] 1.采购台账-开发联调 --- src/views/procurementManagement/procurementLedger/index.vue | 45 ++++++++++++++++++---- src/main.js | 3 + src/views/procurementManagement/invoiceEntry/index.vue | 52 +++++++++++++++++++++++++ src/utils/summarizeTable.js | 8 +++- 4 files changed, 96 insertions(+), 12 deletions(-) diff --git a/src/main.js b/src/main.js index 65ae164..aae294c 100644 --- a/src/main.js +++ b/src/main.js @@ -46,7 +46,7 @@ import PIMTable from "@/components/PIMTable/PIMTable.vue"; import { getToken } from "@/utils/auth"; -import { summarizeTable } from "@/utils/summarizeTable.js"; +import {calculateTaxExclusiveTotalPrice, summarizeTable} from "@/utils/summarizeTable.js"; const app = createApp(App) @@ -56,6 +56,7 @@ app.config.globalProperties.parseTime = parseTime app.config.globalProperties.resetForm = resetForm app.config.globalProperties.summarizeTable = summarizeTable +app.config.globalProperties.calculateTaxExclusiveTotalPrice = calculateTaxExclusiveTotalPrice app.config.globalProperties.handleTree = handleTree app.config.globalProperties.addDateRange = addDateRange app.config.globalProperties.selectDictLabel = selectDictLabel diff --git a/src/utils/summarizeTable.js b/src/utils/summarizeTable.js index 3b3a178..ae6e975 100644 --- a/src/utils/summarizeTable.js +++ b/src/utils/summarizeTable.js @@ -34,6 +34,10 @@ } }); return sums; -}; +} +const calculateTaxExclusiveTotalPrice = (taxInclusiveTotalPrice, taxRate) => { + const taxRateDecimal = taxRate / 100; + return (taxInclusiveTotalPrice / (1 + taxRateDecimal)).toFixed(2); +} // 瀵煎嚭鍑芥暟渚涘叾浠栨枃浠朵娇鐢� -export { summarizeTable }; \ No newline at end of file +export { summarizeTable, calculateTaxExclusiveTotalPrice }; \ No newline at end of file diff --git a/src/views/procurementManagement/invoiceEntry/index.vue b/src/views/procurementManagement/invoiceEntry/index.vue index c1254af..76290f7 100644 --- a/src/views/procurementManagement/invoiceEntry/index.vue +++ b/src/views/procurementManagement/invoiceEntry/index.vue @@ -93,6 +93,39 @@ </el-form-item> </el-col> </el-row> + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="鍙戠エ鍙凤細" prop="invoiceNumber"> + <el-input v-model="form.invoiceNumber" placeholder="璇疯緭鍏�" clearable/> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍙戠エ閲戦(鍏�)锛�" prop="invoiceAmount"> + <el-input type="number" :step="0.01" v-model="form.invoiceAmount" placeholder="璇疯緭鍏�" clearable/> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="30"> + <el-col :span="12"> + <el-form-item label="寮�绁ㄤ汉锛�" prop="issUer"> + <el-input v-model="form.issUer" placeholder="璇疯緭鍏�" clearable disabled/> + </el-form-item> + </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-form-item> + </el-col> + </el-row> <el-row> <el-form-item label="浜у搧淇℃伅锛�" prop="entryDate"> </el-form-item> @@ -110,7 +143,7 @@ <el-table-column label="涓嶅惈绋庢�讳环(鍏�)" 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%"/> + <el-input-number v-model="scope.row.ticketsNum" :precision="0" :step="1" clearable style="width: 100%" @blur="invoiceNumBlur(scope.row)"/> </template> </el-table-column> <el-table-column label="鏈鏉ョエ閲戦(鍏�)" prop="ticketsAmount" :formatter="formattedNumber"></el-table-column> @@ -348,6 +381,23 @@ proxy.$modal.msg("宸插彇娑�") }) } +//鏈寮�绁ㄥけ鐒︽搷浣� +const invoiceNumBlur = (row) => { + if(!row.ticketsNum){ + row.ticketsNum = 0 + } + if(row.ticketsNum > row.futureTickets){ + proxy.$modal.msgWarning('鏈寮�绁ㄦ暟涓嶅緱澶т簬鏈紑绁ㄦ暟') + row.ticketsNum = 0 + } + row.futureTickets = row.futureTickets - row.ticketsNum + // 璁$畻鏈寮�绁ㄩ噾棰� + row.ticketsAmount = row.ticketsNum * row.taxInclusiveUnitPrice + // 璁$畻鏈紑绁ㄦ暟 + row.futureTickets = row.futureTickets - row.ticketsNum + // 璁$畻鏈紑绁ㄩ噾棰� + row.futureTicketsAmount = row.futureTickets * row.taxInclusiveUnitPrice +} getList() </script> diff --git a/src/views/procurementManagement/procurementLedger/index.vue b/src/views/procurementManagement/procurementLedger/index.vue index 1352682..b9762c0 100644 --- a/src/views/procurementManagement/procurementLedger/index.vue +++ b/src/views/procurementManagement/procurementLedger/index.vue @@ -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> @@ -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%" @change="mathNum"/> </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> @@ -337,7 +337,9 @@ const currentId = ref('') const productFormData = reactive({ productForm: { + productId: '', productCategory: '', + productModelId: '', specificationModel: '', unit: '', quantity: '', @@ -348,8 +350,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" }], @@ -545,10 +547,33 @@ }) } 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; + } else { + productForm.value.specificationModel = 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; @@ -572,6 +597,7 @@ } else { if (productOperationType.value === 'add') { productData.value.push({...productForm.value}) + console.log('productData.value---', productData.value) } else { productData.value[productOperationIndex.value] = {...productForm.value} } @@ -683,6 +709,9 @@ const day = String(today.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } +const mathNum = (val) => { + productForm.value.taxExclusiveTotalPrice = proxy.calculateTaxExclusiveTotalPrice(val, productForm.value.taxRate) +} getList() </script> -- Gitblit v1.9.3