| src/views/basicData/customerFile/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/paymentEntry/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/procurementManagement/paymentLedger/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/basicData/customerFile/index.vue
@@ -3,214 +3,213 @@ <div class="search_form"> <div> <span class="search_title">客户名称:</span> <el-input v-model="searchForm.customerName" <el-input v-model="searchForm.customerName" style="width: 240px;margin-right: 10px" placeholder="请输入" @change="handleQuery" clearable :prefix-icon="Search" /> :prefix-icon="Search" /> <span class="search_title">客户分类:</span> <el-select v-model="searchForm.customerType" <el-select v-model="searchForm.customerType" placeholder="请选择" style="width: 240px" clearable @change="handleQuery" > <el-option label="零售客户" value="零售客户" /> <el-option label="进销商客户" value="进销商客户" /> @change="handleQuery"> <el-option label="零售客户" value="零售客户" /> <el-option label="进销商客户" value="进销商客户" /> </el-select> <el-button type="primary" @click="handleQuery" style="margin-left: 10px" >搜索</el-button > <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 type="primary" @click="openForm('add')">新增客户</el-button> <el-button @click="handleOut">导出</el-button> <el-button type="info" plain icon="Upload" @click="handleImport" >导入</el-button > <el-button type="danger" plain @click="handleDelete">删除</el-button> <el-button type="info" plain icon="Upload" @click="handleImport">导入</el-button> <el-button type="danger" plain @click="handleDelete">删除</el-button> </div> </div> <div class="table_list"> <PIMTable rowKey="id" <PIMTable rowKey="id" :column="tableColumn" :tableData="tableData" :page="page" :isSelection="true" @selection-change="handleSelectionChange" :tableLoading="tableLoading" @pagination="pagination" ></PIMTable> @pagination="pagination"></PIMTable> </div> <el-dialog v-model="dialogFormVisible" <el-dialog v-model="dialogFormVisible" :title="operationType === 'add' ? '新增客户信息' : '编辑客户信息'" width="70%" @close="closeDia" > <el-form :model="form" @close="closeDia"> <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef" > ref="formRef"> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="客户名称:" prop="customerName"> <el-input v-model="form.customerName" <el-form-item label="客户名称:" prop="customerName"> <el-input v-model="form.customerName" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="纳税人识别号:" prop="taxpayerIdentificationNumber" > <el-input v-model="form.taxpayerIdentificationNumber" <el-form-item label="纳税人识别号:" prop="taxpayerIdentificationNumber"> <el-input v-model="form.taxpayerIdentificationNumber" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="公司地址:" prop="companyAddress"> <el-input v-model="form.companyAddress" <el-form-item label="公司地址:" prop="companyAddress"> <el-input v-model="form.companyAddress" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="公司电话:" prop="companyPhone"> <el-input v-model="form.companyPhone" <el-form-item label="公司电话:" prop="companyPhone"> <el-input v-model="form.companyPhone" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="银行基本户:" prop="basicBankAccount"> <el-input v-model="form.basicBankAccount" <el-form-item label="银行基本户:" prop="basicBankAccount"> <el-input v-model="form.basicBankAccount" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="银行账号:" prop="bankAccount"> <el-input v-model="form.bankAccount" <el-form-item label="银行账号:" prop="bankAccount"> <el-input v-model="form.bankAccount" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="开户行号:" prop="bankCode"> <el-input v-model="form.bankCode" <el-form-item label="开户行号:" prop="bankCode"> <el-input v-model="form.bankCode" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="客户分类:" prop="customerType"> <el-select v-model="form.customerType" placeholder="请选择" clearable> <el-option label="零售客户" value="零售客户" /> <el-option label="进销商客户" value="进销商客户" /> <el-form-item label="客户分类:" prop="customerType"> <el-select v-model="form.customerType" placeholder="请选择" clearable> <el-option label="零售客户" value="零售客户" /> <el-option label="进销商客户" value="进销商客户" /> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="30" v-for="(contact, index) in formYYs.contactList" :key="index"> <el-row :gutter="30" v-for="(contact, index) in formYYs.contactList" :key="index"> <el-col :span="12"> <el-form-item label="联系人:" prop="contactPerson"> <el-input v-model="contact.contactPerson" placeholder="请输入" clearable /> <el-form-item label="联系人:" prop="contactPerson"> <el-input v-model="contact.contactPerson" placeholder="请输入" clearable /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="联系电话:" prop="contactPhone"> <el-form-item label="联系电话:" prop="contactPhone"> <div style="display: flex; align-items: center;width: 100%;"> <el-input v-model="contact.contactPhone" placeholder="请输入" clearable /> <el-button @click="removeContact(index)" type="danger" circle style="margin-left: 5px;"> <el-icon><Close /></el-icon> <el-input v-model="contact.contactPhone" placeholder="请输入" clearable /> <el-button @click="removeContact(index)" type="danger" circle style="margin-left: 5px;"> <el-icon> <Close /> </el-icon> </el-button> </div> </el-form-item> </el-col> </el-row> <el-button @click="addNewContact" style="margin-bottom: 10px;">+ 新增联系人</el-button> <el-button @click="addNewContact" style="margin-bottom: 10px;">+ 新增联系人</el-button> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="维护人:" prop="maintainer"> <el-select v-model="form.maintainer" <el-form-item label="维护人:" prop="maintainer"> <el-select v-model="form.maintainer" placeholder="请选择" filterable default-first-option :reserve-keyword="false" clearable > <el-option v-for="item in userList" clearable> <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName" /> :value="item.nickName" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="维护时间:" prop="maintenanceTime"> <el-date-picker style="width: 100%" <el-form-item label="维护时间:" prop="maintenanceTime"> <el-date-picker style="width: 100%" v-model="form.maintenanceTime" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="date" placeholder="请选择" clearable /> clearable /> </el-form-item> </el-col> </el-row> </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="submitForm">确认</el-button> <el-button type="primary" @click="submitForm">确认</el-button> <el-button @click="closeDia">取消</el-button> </div> </template> </el-dialog> <!-- 用户导入对话框 --> <el-dialog :title="upload.title" <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body > <el-upload ref="uploadRef" append-to-body> <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" @@ -222,26 +221,23 @@ :on-error="upload.onError" :on-change="upload.onChange" :auto-upload="false" drag > drag> <el-icon class="el-icon--upload"><upload-filled /></el-icon> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> <template #tip> <div class="el-upload__tip text-center"> <span>仅允许导入xls、xlsx格式文件。</span> <el-link type="primary" <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate" >下载模板</el-link > @click="importTemplate">下载模板</el-link> </div> </template> </el-upload> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="submitFileForm">确 定</el-button> <el-button type="primary" @click="submitFileForm">确 定</el-button> <el-button @click="upload.open = false">取 消</el-button> </div> </template> @@ -294,7 +290,7 @@ { label: "联系电话", prop: "contactPhone", width:150 width: 150, }, { label: "银行基本户", @@ -309,7 +305,7 @@ { label: "开户行号", prop: "bankCode", width:220 width: 220, }, { label: "维护人", @@ -324,14 +320,14 @@ dataType: "action", label: "操作", align: "center", fixed: 'right', fixed: "right", operation: [ { name: "编辑", type: "text", clickFun: (row) => { clickFun: row => { openForm("edit", row); } }, }, ], }, @@ -350,13 +346,14 @@ // 用户信息表单弹框数据 const operationType = ref(""); const dialogFormVisible = ref(false); const formYYs = ref({ // 其他字段... const formYYs = ref({ // 其他字段... contactList: [ { contactPerson: "", contactPhone: "" } ] contactPhone: "", }, ], }); const data = reactive({ searchForm: { @@ -408,10 +405,14 @@ // 上传的地址 url: import.meta.env.VITE_APP_BASE_API + "/basic/customer/importData", // 文件上传前的回调 beforeUpload: (file) => { console.log('文件即将上传', file); beforeUpload: file => { console.log("文件即将上传", file); // 可以在此处做文件类型或大小校验 const isValid = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || file.name.endsWith('.xlsx') || file.name.endsWith('.xls'); const isValid = file.type === "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" || file.name.endsWith(".xlsx") || file.name.endsWith(".xls"); if (!isValid) { proxy.$modal.msgError("只能上传 Excel 文件"); } @@ -419,11 +420,11 @@ }, // 文件状态改变时的回调 onChange: (file, fileList) => { console.log('文件状态改变', file, fileList); console.log("文件状态改变", file, fileList); }, // 文件上传成功时的回调 onSuccess: (response, file, fileList) => { console.log('上传成功', response, file, fileList); console.log("上传成功", response, file, fileList); upload.isUploading = false; if(response.code === 200){ proxy.$modal.msgSuccess("文件上传成功"); @@ -438,24 +439,24 @@ }, // 文件上传失败时的回调 onError: (error, file, fileList) => { console.error('上传失败', error, file, fileList); console.error("上传失败", error, file, fileList); upload.isUploading = false; proxy.$modal.msgError("文件上传失败"); }, // 文件上传进度回调 onProgress: (event, file, fileList) => { console.log('上传中...', event.percent); } console.log("上传中...", event.percent); }, }); const { searchForm, form, rules } = toRefs(data); const addNewContact = () => { formYYs.value.contactList.push({ contactPerson: "", contactPhone: "" contactPhone: "", }); }; const removeContact = (index) => { const removeContact = index => { if (formYYs.value.contactList.length > 1) { formYYs.value.contactList.splice(index, 1); } @@ -466,21 +467,21 @@ page.current = 1; getList(); }; const pagination = (obj) => { const pagination = obj => { page.current = obj.page; page.size = obj.limit; getList(); }; const getList = () => { tableLoading.value = true; listCustomer({ ...searchForm.value, ...page }).then((res) => { listCustomer({ ...searchForm.value, ...page }).then(res => { tableLoading.value = false; tableData.value = res.records; page.total = res.total; }); }; // 表格选择数据 const handleSelectionChange = (selection) => { const handleSelectionChange = selection => { selectedRows.value = selection; }; /** 提交上传文件 */ @@ -505,30 +506,31 @@ formYYs.value.contactList = [ { contactPerson: "", contactPhone: "" } contactPhone: "", }, ]; form.value.maintenanceTime = getCurrentDate(); userListNoPage().then((res) => { userListNoPage().then(res => { userList.value = res.data; }); if (type === "edit") { getCustomer(row.id).then((res) => { getCustomer(row.id).then(res => { form.value = { ...res.data }; formYYs.value.contactList = res.data.contactPerson.split(",").map((item, index) => { formYYs.value.contactList = res.data.contactPerson .split(",") .map((item, index) => { return { contactPerson: item, contactPhone: res.data.contactPhone.split(",")[index] } contactPhone: res.data.contactPhone.split(",")[index], }; }); }); } dialogFormVisible.value = true; }; // 提交表单 const submitForm = () => { proxy.$refs["formRef"].validate((valid) => { proxy.$refs["formRef"].validate(valid => { if (valid) { if (operationType.value === "edit") { submitEdit(); @@ -543,9 +545,13 @@ if(formYYs.value.contactList.length < 1){ return proxy.$modal.msgWarning("请至少添加一个联系人"); } form.value.contactPerson = formYYs.value.contactList.map(item => item.contactPerson).join(","); form.value.contactPhone = formYYs.value.contactList.map(item => item.contactPhone).join(","); addCustomer(form.value).then((res) => { form.value.contactPerson = formYYs.value.contactList .map(item => item.contactPerson) .join(","); form.value.contactPhone = formYYs.value.contactList .map(item => item.contactPhone) .join(","); addCustomer(form.value).then(res => { proxy.$modal.msgSuccess("提交成功"); closeDia(); getList(); @@ -553,9 +559,13 @@ }; // 提交修改 const submitEdit = () => { form.value.contactPerson = formYYs.value.contactList.map(item => item.contactPerson).join(","); form.value.contactPhone = formYYs.value.contactList.map(item => item.contactPhone).join(","); updateCustomer(form.value).then((res) => { form.value.contactPerson = formYYs.value.contactList .map(item => item.contactPerson) .join(","); form.value.contactPhone = formYYs.value.contactList .map(item => item.contactPhone) .join(","); updateCustomer(form.value).then(res => { proxy.$modal.msgSuccess("提交成功"); closeDia(); getList(); @@ -585,12 +595,14 @@ let ids = []; if (selectedRows.value.length > 0) { // 检查是否有他人维护的数据 const unauthorizedData = selectedRows.value.filter(item => item.maintainer !== userStore.nickName); const unauthorizedData = selectedRows.value.filter( item => item.maintainer !== userStore.nickName ); if (unauthorizedData.length > 0) { proxy.$modal.msgWarning("不可删除他人维护的数据"); return; } ids = selectedRows.value.map((item) => item.id); ids = selectedRows.value.map(item => item.id); } else { proxy.$modal.msgWarning("请选择数据"); return; @@ -603,7 +615,7 @@ .then(() => { tableLoading.value = true; delCustomer(ids) .then((res) => { .then(res => { proxy.$modal.msgSuccess("删除成功"); getList(); }) src/views/procurementManagement/paymentEntry/index.vue
@@ -1,34 +1,35 @@ <template> <div class="app-container"> <div class="search_form"> <el-form :inline="true" :model="searchForm" style="width: 100%"> <el-form :inline="true" :model="searchForm" style="width: 100%"> <el-row justify="space-between"> <el-col :span="20"> <el-form-item label="供应商名称/合同号"> <el-input v-model="searchForm.supplierNameOrContractNo" <el-input v-model="searchForm.supplierNameOrContractNo" style="width: 240px" placeholder="输入供应商名称/合同号搜索" clearable prefix-icon="Search" @change="handleQuery" /> @change="handleQuery" /> </el-form-item> <el-form-item> <el-checkbox v-model="searchForm.status" <el-checkbox v-model="searchForm.status" label="不显示待付款为0" @change="handleQuery" /> @change="handleQuery" /> </el-form-item> <el-form-item> <el-button type="primary" @click="handleQuery"> 搜索 </el-button> <el-button type="primary" @click="handleQuery"> 搜索 </el-button> </el-form-item> </el-col> <el-col :span="4"> <el-form-item style="float: right; margin-right: unset"> <el-button @click="handleExport" style="margin-right: 10px">导出</el-button> <el-button type="primary" @click="openForm('add')"> <el-button @click="handleExport" style="margin-right: 10px">导出</el-button> <el-button type="primary" @click="openForm('add')"> 新增付款 </el-button> <!-- <el-button type="danger" plain @click="handleDelete">--> @@ -40,8 +41,7 @@ </el-form> </div> <div class="table_list"> <PIMTable rowKey="id" <PIMTable rowKey="id" :column="tableColumn" :tableData="tableData" :page="page" @@ -53,210 +53,196 @@ @expand-change="expandChange" :tableLoading="tableLoading" @pagination="pagination" :total="page.total" > :total="page.total"> <template #expand="{ row }"> <el-table :data="expandData" <el-table :data="expandData" border show-summary v-loading="childrenLoading" :summary-method="summarizeMainTable2" > <el-table-column align="center" :summary-method="summarizeMainTable2"> <el-table-column align="center" label="序号" type="index" width="60" /> <el-table-column label="付款日期" prop="paymentDate" /> <el-table-column label="付款金额" prop="currentPaymentAmount"> width="60" /> <el-table-column label="付款日期" prop="paymentDate" /> <el-table-column label="付款金额" prop="currentPaymentAmount"> <template #default="scope"> <el-input-number :step="0.01" :min="0" style="width: 100%" <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="scope.row.currentPaymentAmount" :disabled="!scope.row.editType" :precision="2" placeholder="请输入" clearable /> clearable /> </template> </el-table-column> <el-table-column label="付款方式" prop="paymentMethod"> <el-table-column label="付款方式" prop="paymentMethod"> <template #default="scope"> <el-select :disabled="!scope.row.editType" <el-select :disabled="!scope.row.editType" v-model="scope.row.paymentMethod" placeholder="请选择" clearable > <el-option label="电汇" value="电汇" /> <el-option label="承兑" value="承兑" /> clearable> <el-option label="电汇" value="电汇" /> <el-option label="承兑" value="承兑" /> </el-select> </template> </el-table-column> <el-table-column label="登记人" prop="registrant" /> <el-table-column label="登记日期" prop="registrationtDate" /> <el-table-column label="操作" width="150"> <el-table-column label="登记人" prop="registrant" /> <el-table-column label="登记日期" prop="registrationtDate" /> <el-table-column label="操作" width="150"> <template #default="scope"> <el-button link <el-button link type="primary" size="small" @click="changeEditType(scope.row)" v-if="!scope.row.editType" >编辑</el-button > <el-button link v-if="!scope.row.editType">编辑</el-button> <el-button link type="primary" size="small" @click="saveReceiptPayment(scope.row)" v-if="scope.row.editType" >保存</el-button > <el-button link v-if="scope.row.editType">保存</el-button> <el-button link type="primary" size="small" @click="handleDelete(scope.row)" >删除</el-button > @click="handleDelete(scope.row)">删除</el-button> </template> </el-table-column> </el-table> </template> </PIMTable> </div> <el-dialog v-model="dialogFormVisible" <el-dialog v-model="dialogFormVisible" :title="operationType === 'add' ? '新增付款登记' : '编辑付款登记'" width="60%" @close="closeDia" > <el-form :model="form" @close="closeDia"> <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef" > ref="formRef"> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="采购合同号:" prop="purchaseContractNumber"> <el-input v-model="form.purchaseContractNumber" <el-form-item label="采购合同号:" prop="purchaseContractNumber"> <el-input v-model="form.purchaseContractNumber" placeholder="自动填充" clearable disabled /> disabled /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="销售合同号:" prop="salesContractNo"> <el-input v-model="form.salesContractNo" <el-form-item label="销售合同号:" prop="salesContractNo"> <el-input v-model="form.salesContractNo" placeholder="自动填充" clearable disabled /> disabled /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="供应商名称:" prop="supplierName"> <el-input v-model="form.supplierName" <el-form-item label="供应商名称:" prop="supplierName"> <el-input v-model="form.supplierName" placeholder="自动填充" clearable disabled /> disabled /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="发票号:" prop="invoiceNumber"> <el-input v-model="form.invoiceNumber" <el-form-item label="发票号:" prop="invoiceNumber"> <el-input v-model="form.invoiceNumber" placeholder="自动填充" clearable disabled /> disabled /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="发票金额(元):" prop="invoiceAmount"> <el-input v-model="form.invoiceAmount" <el-form-item label="发票金额(元):" prop="invoiceAmount"> <el-input v-model="form.invoiceAmount" placeholder="自动填充" clearable disabled /> disabled /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="本次付款金额:" prop="currentPaymentAmount"> <el-input-number :step="0.01" :min="0" style="width: 100%" <el-form-item label="本次付款金额:" prop="currentPaymentAmount"> <el-input-number :step="0.01" :min="0" style="width: 100%" :precision="2" :max="form.unPaymentAmountTotal" v-model="form.currentPaymentAmount" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="付款方式:" prop="paymentMethod"> <el-select v-model="form.paymentMethod" <el-form-item label="付款方式:" prop="paymentMethod"> <el-select v-model="form.paymentMethod" placeholder="请选择" clearable > <el-option label="电汇" value="电汇" /> <el-option label="承兑" value="承兑" /> clearable> <el-option label="电汇" value="电汇" /> <el-option label="承兑" value="承兑" /> </el-select> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="付款日期:" prop="paymentDate"> <el-date-picker style="width: 100%" <el-form-item label="付款日期:" prop="paymentDate"> <el-date-picker style="width: 100%" v-model="form.paymentDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="date" placeholder="请选择" clearable /> clearable /> </el-form-item> </el-col> </el-row> <el-row :gutter="30"> <el-col :span="12"> <el-form-item label="登记人:" prop="registrant"> <el-input v-model="form.registrant" <el-form-item label="登记人:" prop="registrant"> <el-input v-model="form.registrant" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="登记日期:" prop="registrationtDate"> <el-input v-model="form.registrationtDate" <el-form-item label="登记日期:" prop="registrationtDate"> <el-input v-model="form.registrationtDate" placeholder="请输入" clearable /> clearable /> </el-form-item> </el-col> </el-row> </el-form> <template #footer> <div class="dialog-footer"> <el-button type="primary" @click="submitForm">确认</el-button> <el-button type="primary" @click="submitForm">确认</el-button> <el-button @click="closeDia">取消</el-button> </div> </template> @@ -265,7 +251,14 @@ </template> <script setup> import { ref, reactive, toRefs, getCurrentInstance, nextTick, onMounted } from "vue"; import { ref, reactive, toRefs, getCurrentInstance, nextTick, onMounted, } from "vue"; import { Search } from "@element-plus/icons-vue"; import { ElMessageBox } from "element-plus"; import useUserStore from "@/store/modules/user.js"; @@ -280,7 +273,7 @@ delPaymentRegistration, invoiceListPage, registrationListPageGetById, updatePaymentRegistration updatePaymentRegistration, } from "@/api/procurementManagement/procurementInvoiceLedger.js"; import useFormData from "@/hooks/useFormData"; @@ -302,16 +295,16 @@ { label: "供应商名称", prop: "supplierName", width:240 width: 240, }, { label: "付款状态", prop: "statusName", dataType: "tag", formatType: (params) => { if (params == '未完成付款') { formatType: params => { if (params == "未完成付款") { return "danger"; } else if (params == '已完成付款') { } else if (params == "已完成付款") { return "success"; } else { return null; @@ -321,26 +314,26 @@ { label: "发票号", prop: "invoiceNumber", width:200 width: 200, }, { label: "发票金额(元)", prop: "invoiceAmount", formatData: (params) => { formatData: params => { return params ? parseFloat(params).toFixed(2) : 0; }, }, { label: "已付款金额(元)", prop: "paymentAmountTotal", formatData: (params) => { formatData: params => { return params ? parseFloat(params).toFixed(2) : 0; }, }, { label: "待付款金额(元)", prop: "unPaymentAmountTotal", formatData: (params) => { formatData: params => { return params ? parseFloat(params).toFixed(2) : 0; }, }, @@ -402,13 +395,13 @@ const isShowSummarySon = ref(true); const expandedRowKeys = ref([]); const getStatusTagType = (statusName = '') => { const getStatusTagType = (statusName = "") => { const normalized = statusName.trim(); if (!normalized) return 'info'; return normalized === '未完成付款' ? 'danger' : 'success'; if (!normalized) return "info"; return normalized === "未完成付款" ? "danger" : "success"; }; // 子表合计方法 const summarizeMainTable1 = (param) => { const summarizeMainTable1 = param => { return proxy.summarizeTable( param, ["invoiceAmount", "paymentAmountTotal", "unPaymentAmountTotal"], @@ -419,7 +412,7 @@ ); }; // 子表合计方法 const summarizeMainTable2 = (param) => { const summarizeMainTable2 = param => { return proxy.summarizeTable(param, ["currentPaymentAmount"], { ticketsNum: { noDecimal: true }, // 不保留小数 futureTickets: { noDecimal: true }, // 不保留小数 @@ -431,23 +424,25 @@ page.current = 1; getList(); }; const pagination = (obj) => { const pagination = obj => { page.current = obj.page; page.size = obj.limit; getList(); }; const getList = () => { tableLoading.value = true; invoiceListPage({ ...searchForm, ...page }).then((res) => { invoiceListPage({ ...searchForm, ...page }).then(res => { tableLoading.value = false; tableData.value = res.records; page.total = res.total; if (expandedRowKeys.value.length > 0) { const arr = [] const index = tableData.value.findIndex(item => item.id === expandedRowKeys.value[0]); const arr = []; const index = tableData.value.findIndex( item => item.id === expandedRowKeys.value[0] ); if (index > -1) { arr.push(tableData.value[index]); expandChange(tableData.value[index], arr) expandChange(tableData.value[index], arr); } } }); @@ -459,9 +454,9 @@ expandedRowKeys.value = []; try { childrenLoading.value = true; registrationListPageGetById({ id: row.id }).then((res) => { registrationListPageGetById({ id: row.id }).then(res => { childrenLoading.value = false; const index = tableData.value.findIndex((item) => item.id === row.id); const index = tableData.value.findIndex(item => item.id === row.id); if (index > -1) { expandData.value = res; } @@ -471,30 +466,30 @@ childrenLoading.value = false; console.log(error); } }) }); } else { expandedRowKeys.value = []; } }; // 编辑修改状态 const changeEditType = (row) => { const changeEditType = row => { row.editType = !row.editType; }; // 保存回款记录 const saveReceiptPayment = (row) => { const saveReceiptPayment = row => { let updateData = { id: row.id, currentPaymentAmount: row.currentPaymentAmount, paymentMethod: row.paymentMethod, }; updatePaymentRegistration(updateData).then((res) => { updatePaymentRegistration(updateData).then(res => { row.editType = !row.editType; getList(); proxy.$modal.msgSuccess("提交成功"); }); }; // 表格选择数据 const handleSelectionChange = (selection) => { const handleSelectionChange = selection => { selectedRows.value = selection; }; // 打开弹框 @@ -520,7 +515,7 @@ }; // 提交表单 const submitForm = () => { proxy.$refs["formRef"].validate((valid) => { proxy.$refs["formRef"].validate(valid => { if (valid) { if (operationType.value === "edit") { submitEdit(); @@ -532,7 +527,7 @@ }; // 提交新增 const submitAdd = () => { paymentRegistrationAdd(form.value).then((res) => { paymentRegistrationAdd(form.value).then(res => { proxy.$modal.msgSuccess("提交成功"); closeDia(); getList(); @@ -540,7 +535,7 @@ }; // 提交修改 const submitEdit = () => { paymentRegistrationEdit(form.value).then((res) => { paymentRegistrationEdit(form.value).then(res => { proxy.$modal.msgSuccess("提交成功"); closeDia(); getList(); @@ -552,7 +547,7 @@ dialogFormVisible.value = false; }; // 删除 const handleDelete = (row) => { const handleDelete = row => { ElMessageBox.confirm("选中的内容将被删除,是否确认删除?", "删除提示", { confirmButtonText: "确认", cancelButtonText: "取消", @@ -561,7 +556,7 @@ .then(() => { tableLoading.value = true; delPaymentRegistration(row.id) .then((res) => { .then(res => { proxy.$modal.msgSuccess("删除成功"); getList(); }) @@ -590,7 +585,11 @@ type: "warning", }) .then(() => { proxy.download("/purchase/registration/exportOne", { ...searchForm, ...page }, "付款登记.xlsx"); proxy.download( "/purchase/registration/exportOne", { ...searchForm, ...page }, "付款登记.xlsx" ); }) .catch(() => { proxy.$modal.msg("已取消"); src/views/procurementManagement/paymentLedger/index.vue
@@ -3,25 +3,22 @@ <div class="search_form"> <div> <span class="search_title">供应商名称:</span> <el-input v-model="searchForm.supplierName" <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="输入供应商名称" @change="handleQuery" clearable :prefix-icon="Search" /> <el-button type="primary" @click="handleQuery" style="margin-left: 10px" >搜索</el-button > :prefix-icon="Search" /> <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button> </div> <div></div> </div> <el-row :gutter="20"> <el-col :span="14"> <div class="table_list"> <el-table ref="multipleTable" <el-table ref="multipleTable" border v-loading="tableLoading" :data="tableData" @@ -33,32 +30,24 @@ @row-click="rowClick" :show-summary="isShowSummary" :summary-method="summarizeMainTable" class="lims-table" > <el-table-column align="center" class="lims-table"> <el-table-column align="center" label="序号" type="index" width="60" /> <el-table-column label="供应商名称" prop="supplierName" /> <el-table-column label="发票金额(元)" width="60" /> <el-table-column label="供应商名称" prop="supplierName" /> <el-table-column label="发票金额(元)" prop="invoiceAmount" show-overflow-tooltip :formatter="formattedNumber" /> <el-table-column label="付款金额(元)" :formatter="formattedNumber" /> <el-table-column label="付款金额(元)" prop="paymentAmount" show-overflow-tooltip :formatter="formattedNumber" /> <el-table-column label="应付金额(元)" :formatter="formattedNumber" /> <el-table-column label="应付金额(元)" prop="payableAmount" show-overflow-tooltip > show-overflow-tooltip> <template #default="{ row, column }"> <el-text type="danger"> {{ formattedNumber(row, column, row.payableAmount) }} @@ -66,42 +55,41 @@ </template> </el-table-column> </el-table> <pagination v-show="total > 0" <pagination v-show="total > 0" @pagination="paginationSearch" :total="total" :layout="page.layout" :page="page.current" :limit="page.size" /> :limit="page.size" /> </div> </el-col> <el-col :span="10"> <div class="table_list"> <PIMTable rowKey="id" <PIMTable rowKey="id" :column="tableColumnSon" :tableData="originalTableDataSon" :isSelection="false" :page="sonPage" @pagination="pagination1" @selection-change="sonPaginationSearch" :tableLoading="tableLoadingSon" :isShowSummary="isShowSummarySon" :summaryMethod="summarizeMainTable1" height="calc(100vh - 18.5em)" > height="calc(100vh - 18.5em)"> <template #payableAmountSlot="{ row }"> <el-text type="danger"> {{ parseFloat(row.payableAmount).toFixed(2) }} </el-text> </template> </PIMTable> <pagination <!-- <pagination v-show="sonTotal > 0" :total="sonTotal" @pagination="sonPaginationSearch" :layout="page.layout" :page="sonPage.current" :limit="sonPage.size" /> /> --> </div> </el-col> </el-row> @@ -121,7 +109,7 @@ { label: "供应商名称", prop: "supplierName", width:240 width: 240, }, { label: "发票金额(元)", @@ -150,13 +138,14 @@ const sonPage = reactive({ current: 1, size: 100, total: 0, }); const total = ref(0); const sonTotal = ref(0); const isShowSummary = ref(true); const { searchForm } = toRefs(data); const currentSupplierId = ref(""); const rowClick = (row) => { const rowClick = row => { currentSupplierId.value = row.supplierId; getPaymenRecordtList(row.supplierId); }; @@ -171,7 +160,7 @@ label: "发票金额(元)", prop: "invoiceAmount", width: 200, formatData: (params) => { formatData: params => { return params ? parseFloat(params).toFixed(2) : 0; }, }, @@ -179,7 +168,7 @@ label: "付款金额(元)", prop: "currentPaymentAmount", width: 200, formatData: (params) => { formatData: params => { return params ? parseFloat(params).toFixed(2) : 0; }, }, @@ -198,9 +187,10 @@ const detailPageNum = ref(1); const detailPageSize = ref(10); const { proxy } = getCurrentInstance(); const currentId = ref(0); // 主表合计方法 const summarizeMainTable = (param) => { const summarizeMainTable = param => { return proxy.summarizeTable( param, ["invoiceAmount", "paymentAmount", "payableAmount"], @@ -211,7 +201,7 @@ ); }; // 子表合计方法 const summarizeMainTable1 = (param) => { const summarizeMainTable1 = param => { let summarizeTable = proxy.summarizeTable( param, ["invoiceAmount", "currentPaymentAmount"], @@ -235,10 +225,16 @@ page.current = 1; getList(); }; const paginationSearch = (obj) => { const paginationSearch = obj => { page.current = obj.page; page.size = obj.limit; getList(); }; const pagination1 = obj => { sonPage.current = obj.page; sonPage.size = obj.limit; getPaymenRecordtList(currentSupplierId.value); // getList(); }; const getList = () => { tableLoading.value = true; @@ -247,7 +243,7 @@ ...page, detailPageNum: detailPageNum.value, // 新增 detailPageSize: detailPageSize.value, // 新增 }).then((res) => { }).then(res => { let result = res.data; tableLoading.value = false; tableData.value = result.records || []; @@ -259,16 +255,16 @@ }); }; const getPaymenRecordtList = (supplierId) => { const getPaymenRecordtList = supplierId => { tableLoadingSon.value = true; paymentRecordList(supplierId) .then((res) => { .then(res => { tableLoadingSon.value = false; tableDataSon.value = res.data; handlePagination({ page: 1, limit: sonPage.size }); sonTotal.value = res.data.length; sonPage.total = res.data.length; }) .catch((e) => { .catch(e => { tableLoadingSon.value = false; }); }; @@ -282,7 +278,7 @@ originalTableDataSon.value = tableDataSon.value.slice(start, end); }; const sonPaginationSearch = (pagination) => { const sonPaginationSearch = pagination => { // 接收分页器参数 { page, limit } handlePagination(pagination); };