From 0c445ac6d2a20153e5eac390555ba88f950d76b0 Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期四, 14 八月 2025 17:16:16 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev_7004' into dev_7004 --- src/views/financialManagement/expenseManagement/index.vue | 279 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 279 insertions(+), 0 deletions(-) diff --git a/src/views/financialManagement/expenseManagement/index.vue b/src/views/financialManagement/expenseManagement/index.vue index e69de29..b1e9fb1 100644 --- a/src/views/financialManagement/expenseManagement/index.vue +++ b/src/views/financialManagement/expenseManagement/index.vue @@ -0,0 +1,279 @@ +<template> + <div class="app-container"> + <el-form :model="filters" :inline="true"> + <el-form-item label="鏀嚭鏃ユ湡:"> + <el-date-picker v-model="filters.entryDate" value-format="YYYY-MM-DD" format="YYYY-MM-DD" type="daterange" + placeholder="璇烽�夋嫨" clearable @change="changeDaterange" /> + </el-form-item> + <el-form-item label="浠樻鏂瑰紡:"> + <el-select + v-model="filters.expenseMethod" + placeholder="璇烽�夋嫨" + clearable + style="width: 200px;" + > + <el-option + v-for="item in checkout_payment" + :key="item.value" + :label="item.label" + :value="item.value" + /> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="getTableData">鎼滅储</el-button> + <el-button @click="resetFilters">閲嶇疆</el-button> + </el-form-item> + </el-form> + <div class="table_list"> + <div class="actions"> + <div></div> + <div> + <el-button type="primary" @click="add" icon="Plus"> 鏂板 </el-button> + <el-button @click="handleOut" icon="download">瀵煎嚭</el-button> + <el-button + type="danger" + icon="Delete" + :disabled="multipleList.length <= 0" + @click="deleteRow(multipleList.map((item) => item.id))" + > + 鎵归噺鍒犻櫎 + </el-button> + </div> + </div> + <PIMTable + rowKey="id" + isSelection + :column="columns" + :tableData="dataList" + :page="{ + current: pagination.currentPage, + size: pagination.pageSize, + total: pagination.total, + }" + @selection-change="handleSelectionChange" + @pagination="changePage" + > + <template #operation="{ row }"> + <el-button type="primary" text @click="edit(row.id)" icon="editPen"> + 缂栬緫 + </el-button> + <el-button + type="primary" + text + @click="openFilesFormDia(row)" + > + 闄勪欢 + </el-button> + </template> + </PIMTable> + </div> + <Modal ref="modalRef" @success="getTableData"></Modal> + <files-dia ref="filesDia"></files-dia> + </div> +</template> + +<script setup> +import { usePaginationApi } from "@/hooks/usePaginationApi"; +import { listPage, delAccountExpense } from "@/api/financialManagement/expenseManagement"; +import { onMounted, getCurrentInstance } from "vue"; +import Modal from "./Modal.vue"; +import { ElMessageBox, ElMessage } from "element-plus"; +import dayjs from "dayjs"; +import FilesDia from "../revenueManagement/filesDia.vue"; + +defineOptions({ + name: "鏀嚭绠$悊", +}); + +// 琛ㄦ牸澶氶�夋閫変腑椤� +const multipleList = ref([]); +const { proxy } = getCurrentInstance(); +const modalRef = ref(); +const { checkout_payment } = proxy.useDict("checkout_payment"); +const { expense_types } = proxy.useDict("expense_types"); +const filesDia = ref() + +const { + filters, + columns, + dataList, + pagination, + getTableData, + resetFilters, + onCurrentChange, +} = usePaginationApi( + listPage, + { + expenseMethod: undefined, + }, + [ + { + label: "鏀嚭鏃ユ湡", + align: "center", + prop: "expenseDate", + }, + { + label: "鏀嚭绫诲瀷", + align: "center", + prop: "expenseType", + dataType: "tag", + formatData: (params) => { + if (expense_types.value.find((m) => m.value == params)) { + return expense_types.value.find((m) => m.value == params).label; + } else { + return null + } + }, + }, + { + label: "渚涘簲鍟嗗悕绉�", + align: "center", + prop: "supplierName", + + }, + { + label: "鏀嚭閲戦", + align: "center", + prop: "expenseMoney", + + }, + { + label: "鏀嚭鎻忚堪", + align: "center", + prop: "expenseDescribed", + + }, + { + label: "浠樻鏂瑰紡", + align: "center", + prop: "expenseMethod", + dataType: "tag", + formatData: (params) => { + if (checkout_payment.value.find((m) => m.value == params)) { + return checkout_payment.value.find((m) => m.value == params).label; + } else { + return null + } + }, + }, + { + label: "鍙戠エ鍙风爜", + align: "center", + prop: "invoiceNumber", + + }, + { + label: "澶囨敞", + align: "center", + prop: "note", + + }, + { + label: "褰曞叆浜�", + align: "center", + prop: "inputUser", + }, + { + label: "褰曞叆鏃ユ湡", + align: "center", + prop: "inputTime", + + }, + { + fixed: "right", + label: "鎿嶄綔", + dataType: "slot", + slot: "operation", + align: "center", + width: "200px", + }, + ] +); + +// 澶氶�夊悗鍋氫粈涔� +const handleSelectionChange = (selectionList) => { + multipleList.value = selectionList; +}; + +const add = () => { + modalRef.value.openModal(); +}; +const edit = (id) => { + modalRef.value.loadForm(id); +}; +const changePage = ({ page, limit }) => { + pagination.currentPage = page; + pagination.pageSize = limit; + onCurrentChange(page); +}; +const deleteRow = (id) => { + ElMessageBox.confirm("姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(async () => { + const { code } = await delAccountExpense(id); + if (code == 200) { + ElMessage({ + type: "success", + message: "鍒犻櫎鎴愬姛", + }); + getTableData(); + } + }); +}; + +const changeDaterange = (value) => { + if (value) { + filters.entryDateStart = dayjs(value[0]).format("YYYY-MM-DD"); + filters.entryDateEnd = dayjs(value[1]).format("YYYY-MM-DD"); + } else { + filters.entryDateStart = undefined; + filters.entryDateEnd = undefined; + } + getTableData(); +}; + +const handleOut = () => { + ElMessageBox.confirm("閫変腑鐨勫唴瀹瑰皢琚鍑猴紝鏄惁纭瀵煎嚭锛�", "瀵煎嚭", { + confirmButtonText: "纭", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + proxy.download(`/account/accountExpense/export`, {}, "鏀嚭鍙拌处.xlsx"); + }) + .catch(() => { + proxy.$modal.msg("宸插彇娑�"); + }); +}; +// 鎵撳紑闄勪欢寮规 +const openFilesFormDia = (row) => { + nextTick(() => { + filesDia.value?.openDialog( row,'鏀嚭') + }) +}; + +onMounted(() => { + filters.entryDate = [ + dayjs().format("YYYY-MM-DD"), + dayjs().add(1, "day").format("YYYY-MM-DD"), + ] + filters.entryDateStart = dayjs().format("YYYY-MM-DD") + filters.entryDateEnd = dayjs().add(1, "day").format("YYYY-MM-DD") + getTableData(); +}); +</script> + +<style lang="scss" scoped> +.table_list { + margin-top: unset; +} +.actions { + display: flex; + justify-content: space-between; + margin-bottom: 10px; +} +</style> + -- Gitblit v1.9.3