| src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/invoiceEntry/components/Modal.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/invoiceEntry/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/procurementInvoiceLedger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/procurementInvoiceLedger/indexOld.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/salesManagement/invoiceLedger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/procurementManagement/invoiceEntry/components/ExpandTable.vue
@@ -6,6 +6,7 @@ :tableLoading="loading" :summaryMethod="summarizeChildrenTable" :isShowSummary="true" :isShowPagination="false" height="auto" > </PIMTable> @@ -111,6 +112,9 @@ const getList = async (id) => { await nextTick(); filters.salesLedgerId = id; // 设置ä¸ä¸ªå¾å¤§ç pageSize 以è·åæææ°æ® pagination.pageSize = 10000; pagination.currentPage = 1; getTableData(); }; // å表åè®¡æ¹æ³ src/views/procurementManagement/invoiceEntry/components/Modal.vue
@@ -96,22 +96,6 @@ /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="ä¸ä¼ éä»¶"> <FileUpload :showTip="false" accept="*" :autoUpload="true" :action="action" :headers="{ Authorization: 'Bearer ' + getToken(), }" :limit="10" @success="uploadSuccess" @remove="removeFile" /> </el-form-item> </el-col> </el-row> <el-form-item label="产åä¿¡æ¯ï¼"> </el-form-item> @@ -149,7 +133,7 @@ /> <el-table-column label="æ¬æ¬¡å¼ç¥¨æ°" prop="ticketsNum" width="180"> <template #default="scope"> <el-input-number :step="0.1" :min="0" style="width: 100%" <el-input-number :step="0.1" :min="0" :max="scope.row.tempFutureTickets || 0" style="width: 100%" :precision="2" v-model="scope.row.ticketsNum" @change="invoiceNumBlur(scope.row)" @@ -205,14 +189,12 @@ import { defineEmits } from 'vue'; import { useModal } from "@/hooks/useModal"; import useFormData from "@/hooks/useFormData"; import FileUpload from "@/components/Upload/FileUpload.vue"; import { getPurchaseNoById, getInfo, addOrUpdateRegistration, } from "@/api/procurementManagement/invoiceEntry.js"; import { getPurchaseById } from "@/api/procurementManagement/procurementLedger.js"; import { getToken } from "@/utils/auth"; import useUserStore from "@/store/modules/user"; import dayjs from "dayjs"; @@ -221,7 +203,6 @@ }); const userStore = useUserStore(); const action = import.meta.env.VITE_APP_BASE_API + "/file/upload"; const formRef = ref(); const { proxy } = getCurrentInstance(); const { form } = useFormData({ @@ -237,7 +218,6 @@ salesContractNoId: undefined, // å¼ç¥¨æ¥æ enterDate: dayjs().format("YYYY-MM-DD"), productData: [], // è¡¨æ ¼ tempFileIds: [], // æä»¶ }); const selectedContracts = ref([]); // åå¨éä¸çååæ°æ® @@ -398,10 +378,11 @@ result.data.productData.forEach(item => { allProductData.push({ ...item, id: contractId, // æç¡®è®¾ç½®ååID purchaseLedgerId: contractId, // æ·»å ååIDç¨äºçé purchaseLedgerNo: contract.purchaseContractNumber, // æ·»å éè´ååå· supplierName: contract.supplierName, // æ·»å ä¾åºååç§° projectName: contract.projectName // æ·»å 项ç®åç§° // ä¿çäº§åæ¬èº«çidï¼ä¸è¦ç }); }); } @@ -421,23 +402,29 @@ // è®¾ç½®äº§åæ°æ®ï¼å¹¶åå§åå¼ç¥¨æ°éåéé¢ allProductData.forEach(item => { // æ¬æ¬¡å¼ç¥¨æ°é»è®¤ä¸ºæ»æ°é item.ticketsNum = Number(item.quantity || 0); // æ¬æ¬¡å¼ç¥¨éé¢é»è®¤ä¸ºå«ç¨æ»ä»· item.ticketsAmount = Number(item.taxInclusiveTotalPrice || 0); // ä¿ååå§æªæ¥ç¥¨æ°åéé¢ï¼ç¨äºè®¡ç®ï¼ item.tempFutureTickets = Number(item.quantity || 0); item.tempFutureTicketsAmount = Number(item.taxInclusiveTotalPrice || 0); // æªæ¥ç¥¨æ°åéé¢åå§ä¸º0ï¼å ä¸ºå ¨é¨å¼ç¥¨ï¼ item.futureTickets = 0; item.futureTicketsAmount = 0; // ä¿åâåå§æªæ¥ç¥¨æ°/éé¢âï¼ç¨äºæ ¡éªä¸è®¡ç®ï¼ // ä¼å 使ç¨å端è¿åç futureTickets/futureTicketsAmountï¼æ²¡æååéå° quantity/taxInclusiveTotalPrice item.tempFutureTickets = Number( item.futureTickets !== undefined ? item.futureTickets : (item.quantity || 0) ); item.tempFutureTicketsAmount = Number( item.futureTicketsAmount !== undefined ? item.futureTicketsAmount : (item.taxInclusiveTotalPrice || 0) ); // æ°å¢æ¶ï¼æ¬æ¬¡å¼ç¥¨é»è®¤ä¸å¡«ï¼0ï¼ï¼é¿å 䏿å¼å°±æâæªæ¥ç¥¨æ°âæ£æ 0 item.ticketsNum = 0; item.ticketsAmount = 0; // 页é¢å±ç¤ºçâæªæ¥ç¥¨æ°/æªæ¥ç¥¨éé¢âé»è®¤å±ç¤ºåå§æªæ¥å¼ item.futureTickets = item.tempFutureTickets; item.futureTicketsAmount = item.tempFutureTicketsAmount; }); form.productData = allProductData; // 计ç®å票éé¢ï¼ææäº§åçå«ç¨æ»ä»·ä¹å // 计ç®å票éé¢ï¼ææäº§åçæ¬æ¬¡å¼ç¥¨éé¢ä¹åï¼æ°å¢é»è®¤ 0ï¼ const totalAmount = allProductData.reduce((sum, item) => { return sum + (Number(item.taxInclusiveTotalPrice) || 0); return sum + (Number(item.ticketsAmount) || 0); }, 0); form.invoiceAmount = totalAmount.toFixed(2); @@ -476,9 +463,8 @@ row.ticketsNum = 0; } if (Number(row.ticketsNum) > Number(row.tempFutureTickets)) { proxy.$modal.msgWarning("æ¬æ¬¡å¼ç¥¨æ°ä¸å¾å¤§äºæªå¼ç¥¨æ°"); row.ticketsNum = 0; return; proxy.$modal.msgWarning("æ¬æ¬¡å¼ç¥¨æ°ä¸è½å¤§äºæªæ¥ç¥¨æ°"); row.ticketsNum = Number(row.tempFutureTickets || 0); } // è®¡ç®æ¬æ¬¡æ¥ç¥¨éé¢ row.ticketsAmount = (row.ticketsNum * row.taxInclusiveUnitPrice).toFixed(2) @@ -497,12 +483,19 @@ // è®¡ç®æ¯å¦è¶ è¿æ¥ç¥¨æ»éé¢ if (row.ticketsAmount > row.tempFutureTicketsAmount) { proxy.$modal.msgWarning("æ¬æ¬¡æ¥ç¥¨éé¢ä¸å¾å¤§äºæªæ¥ç¥¨éé¢"); row.ticketsAmount = 0; row.ticketsAmount = Number(row.tempFutureTicketsAmount || 0); } // è®¡ç®æ¬æ¬¡æ¥ç¥¨æ° row.ticketsNum = Number( (row.ticketsAmount / row.taxInclusiveUnitPrice).toFixed(2) ); // æ£æ¥æ¬æ¬¡å¼ç¥¨æ°æ¯å¦å¤§äºæªæ¥ç¥¨æ° if (Number(row.ticketsNum) > Number(row.tempFutureTickets)) { proxy.$modal.msgWarning("æ¬æ¬¡å¼ç¥¨æ°ä¸è½å¤§äºæªæ¥ç¥¨æ°"); row.ticketsNum = Number(row.tempFutureTickets || 0); // éæ°è®¡ç®æ¬æ¬¡æ¥ç¥¨éé¢ row.ticketsAmount = (row.ticketsNum * row.taxInclusiveUnitPrice).toFixed(2); } // è®¡ç®æªæ¥ç¥¨æ° row.futureTickets = (row.tempFutureTickets - row.ticketsNum).toFixed(2) // è®¡ç®æªæ¥ç¥¨éé¢ @@ -539,15 +532,6 @@ await getTableData(type, selectedRows); }; const uploadSuccess = (response) => { form.tempFileIds.push(response.data.tempId); console.log(form); }; const removeFile = (file) => { const { tempId } = file.response.data; form.tempFileIds = form.tempFileIds.filter((item) => item !== tempId); }; const closeAndRefresh = () => { closeModal(); @@ -563,7 +547,7 @@ const batchData = selectedContracts.value.map(contract => { // çéåºå±äºå½åååçäº§åæ°æ® const contractProductData = form.productData.filter(item => item.id === contract.id item.purchaseLedgerId === contract.id ); // 为æ¯ä¸ªéè´ååå建ç¬ç«ç对象 @@ -575,7 +559,6 @@ enterDate: form.enterDate, issUerId: form.issUerId, // å½å ¥äººid issUer: form.issUer, // å½å ¥äºº tempFileIds: form.tempFileIds, // ååå®é ä¿¡æ¯ purchaseLedgerId: contract.id, // 使ç¨idä½ä¸ºå段åï¼å¼ä¸ºpurchaseLedgerId @@ -616,7 +599,6 @@ enterDate: form.enterDate, issUerId: form.issUerId, // å½å ¥äººid issUer: form.issUer, // å½å ¥äºº tempFileIds: form.tempFileIds, // ååå®é ä¿¡æ¯ purchaseLedgerId: singleContract.id, // 使ç¨idä½ä¸ºå段åï¼å¼ä¸ºpurchaseLedgerId src/views/procurementManagement/invoiceEntry/index.vue
@@ -68,9 +68,8 @@ </template> <template #operation="{ row }"> <el-button text link type="primary" size="small" @click="handleEdit('edit', row.id)" > ç¼è¾ @@ -168,14 +167,14 @@ return val ? parseFloat(val).toFixed(2) : 0; }, }, // { // fixed: "right", // label: "æä½", // dataType: "slot", // slot: "operation", // align: "center", // width: "200px", // }, { fixed: "right", label: "æä½", dataType: "slot", slot: "operation", align: "center", width: 100, }, ] ); src/views/procurementManagement/procurementInvoiceLedger/Form/EditForm.vue
ÎļþÒÑɾ³ý src/views/procurementManagement/procurementInvoiceLedger/Modal/EditModal.vue
@@ -2,7 +2,61 @@ <el-dialog :title="modalOptions.title" v-model="visible" @close="close"> <EditForm ref="editFormRef" /> <el-form :model="form"> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="éè´ååå·ï¼"> <el-tag size="large">{{ form.purchaseContractNumber }}</el-tag> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="éå®ååå·ï¼"> <el-text>{{ form.salesContractNo }}</el-text> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="å«ç¨åä»·(å )ï¼"> <el-text type="primary">{{ form.taxInclusiveUnitPrice }}</el-text> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="å建æ¶é´ï¼"> <el-text>{{ form.createdAt }}</el-text> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="å票å·ï¼"> <el-input disabled v-model="form.invoiceNumber" /> </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.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" :precision="2" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="æªæ¥ç¥¨æ°ï¼"> <el-text type="success">{{ form.futureTickets }}</el-text> </el-form-item> </el-col> </el-row> </el-form> <template #footer> <el-button type="primary" :loading="loading" @@ -16,9 +70,10 @@ <script setup> import { useModal } from "@/hooks/useModal"; import EditForm from "../Form/EditForm.vue"; import { updateRegistration } from "@/api/procurementManagement/procurementInvoiceLedger"; import useFormData from "@/hooks/useFormData"; import { updateRegistration, getProductRecordById } from "@/api/procurementManagement/procurementInvoiceLedger"; import { ElMessage } from "element-plus"; import { getCurrentInstance, ref, nextTick } from "vue"; defineOptions({ name: "æ¥ç¥¨å°è´¦ç¼è¾", @@ -26,7 +81,9 @@ const emits = defineEmits(["success"]); const saleLedgerProjectId = ref(""); const editFormRef = ref(); const temFutureTickets = ref(0); const { proxy } = getCurrentInstance(); const { id, visible, @@ -37,20 +94,94 @@ closeModal, } = useModal({ title: "æ¥ç¥¨å°è´¦" }); const { form, resetForm } = useFormData({ id: undefined, purchaseContractNumber: undefined, // éè´ååå· salesContractNo: undefined, // éå®ååå· createdAt: undefined, // å建æ¶é´ invoiceNumber: undefined, // åç¥¨å· ticketsNum: undefined, // æ¥ç¥¨æ° ticketsAmount: undefined, // æ¥ç¥¨éé¢ taxInclusiveUnitPrice: undefined, // å«ç¨åä»· futureTickets: undefined, // æªæ¥ç¥¨æ° }); const load = async (id, purchaseLedgerId, productModelId) => { const { code, data } = await getProductRecordById({ id: id, purchaseLedgerId: purchaseLedgerId, productModelId: productModelId, }); if (code === 200) { form.id = data.id; form.purchaseContractNumber = data.purchaseContractNumber; form.salesContractNo = data.salesContractNo; form.createdAt = data.createdAt; form.invoiceNumber = data.invoiceNumber; form.ticketsNum = data.ticketsNum; form.ticketsAmount = data.ticketsAmount.toFixed(2); form.taxInclusiveUnitPrice = data.taxInclusiveUnitPrice; form.futureTickets = data.futureTickets; temFutureTickets.value = data.futureTickets; } }; const inputTicketsNum = val => { // ç¡®ä¿å«ç¨åä»·åå¨ä¸ä¸ä¸ºé¶ if (!form.taxInclusiveUnitPrice || Number(form.taxInclusiveUnitPrice) === 0) { proxy.$modal.msgWarning("å«ç¨åä»·ä¸è½ä¸ºé¶ææªå®ä¹"); return; } if (Number(form.ticketsNum) > Number(temFutureTickets.value)) { proxy.$modal.msgWarning("å¼ç¥¨æ°ä¸å¾å¤§äºæªå¼ç¥¨æ°"); form.ticketsNum = temFutureTickets.value; } // ç¡®ä¿æææ°å¼é½è½¬æ¢ä¸ºæ°åç±»åè¿è¡è®¡ç® const ticketsAmount = Number(form.ticketsNum) * Number(form.taxInclusiveUnitPrice); const futureTickets = Number(temFutureTickets.value) - Number(form.ticketsNum); form.futureTickets = Number(futureTickets.toFixed(2)); form.ticketsAmount = Number(ticketsAmount.toFixed(2)); }; const inputTicketsAmount = val => { // ç¡®ä¿å«ç¨åä»·åå¨ä¸ä¸ä¸ºé¶ if (!form.taxInclusiveUnitPrice || Number(form.taxInclusiveUnitPrice) === 0) { proxy.$modal.msgWarning("å«ç¨åä»·ä¸è½ä¸ºé¶ææªå®ä¹"); return; } if (Number(val) > Number(form.futureTickets * form.taxInclusiveUnitPrice)) { proxy.$modal.msgWarning("æ¬æ¬¡æ¥ç¥¨éé¢ä¸å¾å¤§äºæ»éé¢"); form.ticketsAmount = ( form.futureTickets * form.taxInclusiveUnitPrice ).toFixed(2); const ticketsNum = Number(form.ticketsAmount) / Number(form.taxInclusiveUnitPrice); form.ticketsNum = Number(ticketsNum.toFixed(2)); return; } // ç¡®ä¿æææ°å¼é½è½¬æ¢ä¸ºæ°åç±»åè¿è¡è®¡ç® const ticketsNum = Number(val) / Number(form.taxInclusiveUnitPrice); form.ticketsNum = Number(ticketsNum.toFixed(2)); }; const open = async row => { openModal(row.id); saleLedgerProjectId.value = row.saleLedgerProjectId; await nextTick(); editFormRef.value.load(row.id, row.purchaseLedgerId, row.productModelId); load(row.id, row.purchaseLedgerId, row.productModelId); }; const close = () => { editFormRef.value.resetForm(); resetForm(); closeModal(); }; const sendForm = async () => { const form = editFormRef.value.form; form.saleLedgerProjectId = saleLedgerProjectId.value; const { code } = await updateRegistration(form); if (code === 200) { @@ -64,3 +195,5 @@ open, }); </script> <style lang="scss" scoped></style> src/views/procurementManagement/procurementInvoiceLedger/index.vue
@@ -58,36 +58,24 @@ @selection-change="handleSelectionChange" @pagination="changePage" > <template #commonFilesRef="{ row }"> <el-dropdown @command="(command) => handleCommand(command, row)"> <el-button link :icon="Files" type="danger"> éä»¶ </el-button> <template #dropdown> <el-dropdown-menu> <el-dropdown-item v-if="row.commonFiles.length !== 0" :icon="Download" command="download" > ä¸è½½ </el-dropdown-item> <el-dropdown-item :icon="Upload" command="upload"> ä¸ä¼ </el-dropdown-item> </el-dropdown-menu> </template> </el-dropdown> </template> <template #operation="{ row }"> <el-button type="primary" text link @click="downLoadFile(row)" > éä»¶ </el-button> <el-button type="primary" link @click="openEdit(row)" > ç¼è¾ </el-button> <el-button type="primary" text link @click="handleDelete(row)" > å é¤ @@ -95,7 +83,16 @@ </template> </PIMTable> </div> <UploadModal ref="modalRef" @uploadSuccess="uploadSuccess"></UploadModal> <FileListDialog ref="fileListRef" v-model="fileListDialogVisible" title="éä»¶å表" :showUploadButton="true" :showDeleteButton="true" :deleteMethod="handleDeleteFile" :uploadMethod="handleFileUpload" :rulesRegulationsManagementId="currentRowId" /> <EditModal ref="editmodalRef" @success="getTableData"></EditModal> </div> </template> @@ -104,31 +101,30 @@ import { ref, getCurrentInstance } from "vue"; import { usePaginationApi } from "@/hooks/usePaginationApi"; import { Files, Download, Search, Upload, EditPen, } from "@element-plus/icons-vue"; import { delRegistration, productRecordPage, productUploadFile, delCommonFile, } from "@/api/procurementManagement/procurementInvoiceLedger.js"; import request from "@/utils/request"; import { getToken } from "@/utils/auth"; import { onMounted } from "vue"; import { ElMessageBox } from "element-plus"; import UploadModal from "./Modal/UploadModal.vue"; import EditModal from "./Modal/EditModal.vue"; import FileListDialog from '@/components/Dialog/FileListDialog.vue'; import useUserStore from "@/store/modules/user.js"; import {delInvoiceLedgerByRegProductId} from "@/api/salesManagement/invoiceLedger.js"; const userStore = useUserStore(); defineOptions({ name: "æ¥ç¥¨å°è´¦", }); const modalRef = ref(); const editmodalRef = ref(); const fileListRef = ref(null); const fileListDialogVisible = ref(false); const currentRowId = ref(null); // å½åæ¥çéä»¶çè¡ID const { proxy } = getCurrentInstance(); const multipleVal = ref([]); @@ -219,17 +215,8 @@ width: 200, }, { label: "éä»¶", align: "center", prop: "commonFiles", dataType: "slot", fixed: "right", slot: "commonFilesRef", width: 120, }, { fixed: "right", width: 150, width: 200, label: "æä½", dataType: "slot", slot: "operation", @@ -281,48 +268,152 @@ }); }; const handleFiles = (fileList) => { fileList.forEach((e) => { proxy.$download.name(e.url); }); }; const changePage = ({ page, limit }) => { pagination.currentPage = page; pagination.pageSize = limit; onCurrentChange(page); }; const handleCommand = (command, row) => { switch (command) { case "download": handleFiles(row.commonFiles); break; case "upload": console.log(row.commonFiles); openUoload(row.ticketRegistrationId); break; const downLoadFile = row => { currentRowId.value = row.id; if (fileListRef.value) { fileListRef.value.open(row.commonFiles || []); } }; const openUoload = (id) => { modalRef.value.handleImport(id); // ä¸ä¼ éä»¶ï¼èªå®ä¹ä¸ä¼ æ¹æ³ï¼ const handleFileUpload = async () => { if (!currentRowId.value) { proxy.$modal.msgWarning("缺å°ç»è®°IDï¼æ æ³ä¿åéä»¶"); return; } return new Promise((resolve) => { // å建ä¸ä¸ªéèçæä»¶è¾å ¥å ç´ const input = document.createElement('input'); input.type = 'file'; input.style.display = 'none'; input.onchange = async (e) => { const file = e.target.files[0]; if (!file) { resolve(null); return; } try { // ä½¿ç¨ FormData ä¸ä¼ æä»¶ const formData = new FormData(); formData.append('file', file); formData.append('type', '4'); // type åæ°ï¼ç¨æ·æªæå®å ·ä½å¼ï¼å ä¼ ç©ºå符串 formData.append('id', currentRowId.value); // å½åè¡ç id const uploadRes = await request({ url: '/file/uploadByCommon', method: 'post', data: formData, headers: { 'Content-Type': 'multipart/form-data', Authorization: `Bearer ${getToken()}` } }); if (uploadRes.code === 200) { proxy.$modal.msgSuccess("éä»¶ä¸ä¼ æå"); // å·æ°å表è·åææ°æ°æ® await new Promise((resolveRefresh) => { // è°ç¨ API è·åææ°åè¡¨æ°æ® productRecordPage({ ...filters, current: pagination.currentPage, size: pagination.pageSize }).then(({ code, data }) => { if (code === 200) { // æ´æ°æ°æ®å表 dataList.value = data.records; pagination.total = data.total; // ä»å¤é¨æ°æ®è·å commonFiles const currentRow = dataList.value.find(row => row.id === currentRowId.value); if (currentRow && fileListRef.value) { // å·æ°éä»¶å表ï¼ä½¿ç¨ä»å¤é¨è·åçææ° commonFiles fileListRef.value.open(currentRow.commonFiles || []); } resolveRefresh(); } else { resolveRefresh(); } }).catch(() => { resolveRefresh(); }); }); resolve({ name: uploadRes.data?.originalName || file.name, url: uploadRes.data?.tempPath || uploadRes.data?.url, id: uploadRes.data?.id }); } else { proxy.$modal.msgError(uploadRes.msg || "æä»¶ä¸ä¼ 失败"); resolve(null); } } catch (error) { console.error("éä»¶ä¸ä¼ 失败:", error); proxy.$modal.msgError("éä»¶ä¸ä¼ 失败"); resolve(null); } finally { document.body.removeChild(input); } }; document.body.appendChild(input); input.click(); }); }; // å é¤éä»¶ const handleDeleteFile = async (file) => { try { await delCommonFile([file.id]); proxy.$modal.msgSuccess("å 餿å"); // å·æ°å表è·åææ°æ°æ® await new Promise((resolveRefresh) => { // è°ç¨ API è·åææ°åè¡¨æ°æ® productRecordPage({ ...filters, current: pagination.currentPage, size: pagination.pageSize }).then(({ code, data }) => { if (code === 200) { // æ´æ°æ°æ®å表 dataList.value = data.records; pagination.total = data.total; // ä»å¤é¨æ°æ®è·å commonFiles const currentRow = dataList.value.find(row => row.id === currentRowId.value); if (currentRow && fileListRef.value) { // å·æ°éä»¶å表ï¼ä½¿ç¨ä»å¤é¨è·åçææ° commonFiles fileListRef.value.open(currentRow.commonFiles || []); } resolveRefresh(); } else { resolveRefresh(); } }).catch(() => { resolveRefresh(); }); }); return true; } catch (error) { proxy.$modal.msgError("å é¤å¤±è´¥"); return false; } }; const openEdit = (row) => { editmodalRef.value.open(row); }; // ä¸ä¼ æåååä»ä¹ const uploadSuccess = async (data) => { const { code } = await productUploadFile({ ticketRegistrationId: data.id, tempFileIds: data.tempFileIds, }); if (code === 200) { proxy.$modal.msgSuccess("æäº¤æå"); getTableData(); } }; // å é¤ const handleDelete = (row) => { src/views/procurementManagement/procurementInvoiceLedger/indexOld.vue
ÎļþÒÑɾ³ý src/views/salesManagement/invoiceLedger/index.vue
@@ -73,8 +73,11 @@ </el-form-item> </el-col> <el-col :span="12"> <el-form-item :label="`å票éé¢(å )ï¼ ååæ»é¢(${form.taxInclusiveTotalPrice}å )`" prop="invoiceTotal"> <el-input-number :step="0.01" :min="0" :max="form.taxInclusiveTotalPrice" style="width: 100%" v-model="form.invoiceTotal" placeholder="请è¾å ¥" clearable :precision="2"/> <el-form-item :label="`å票éé¢(å )ï¼ `" prop="invoiceTotal"> <el-input-number :step="0.01" :min="0" :max="maxInvoiceAmount || form.taxInclusiveTotalPrice" style="width: 100%" v-model="form.invoiceTotal" placeholder="请è¾å ¥" clearable :precision="2"/> <div v-if="maxInvoiceAmount > 0" style="color: #909399; font-size: 12px; margin-top: 5px;"> å¯å¡«æå¤§éé¢ä¸ºï¼Â¥{{ maxInvoiceAmount.toFixed(2) }}å </div> </el-form-item> </el-col> </el-row> @@ -203,6 +206,7 @@ const { form: searchForm, resetForm } = useFormData(data.searchForm); const currentId = ref(""); const userStore = useUserStore(); const maxInvoiceAmount = ref(0); // å票éé¢æå¤§å¼ const upload = reactive({ // ä¸ä¼ çå°å url: import.meta.env.VITE_APP_BASE_API + "/invoiceLedger/uploadFile", @@ -269,6 +273,11 @@ if (!form.value.invoicePerson) { form.value.invoicePerson = userStore.nickName; } // 计ç®å票é颿大å¼ï¼noInvoiceAmount + invoiceAmount const noInvoiceAmount = parseFloat(res.data.noInvoiceAmount || 0); const invoiceAmount = parseFloat(res.data.invoiceAmount || 0); maxInvoiceAmount.value = noInvoiceAmount + invoiceAmount; }); dialogFormVisible.value = true; };