<template>
|
<div class="app-container">
|
<div class="search_form">
|
<el-form :model="filters" :inline="true">
|
<el-form-item label="采购合同号:">
|
<el-input
|
v-model="filters.purchaseContractNumber"
|
placeholder="请输入"
|
clearable
|
prefix-icon="Search"
|
@change="getTableData"
|
/>
|
</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>
|
<div class="table_list">
|
<div class="actions">
|
<div></div>
|
<div>
|
<el-button type="primary" @click="handleAdd('add')">
|
新增登记
|
</el-button>
|
<el-button @click="handleOut">导出</el-button>
|
<el-button type="danger" plain @click="handleDelete">删除</el-button>
|
</div>
|
</div>
|
<PIMTable
|
rowKey="id"
|
:column="columns"
|
:tableData="dataList"
|
:tableLoading="loading"
|
:isSelection="true"
|
:page="{
|
current: pagination.currentPage,
|
size: pagination.pageSize,
|
total: pagination.total,
|
}"
|
:expand-row-keys="expandRowKeys"
|
@expand-change="expandChange"
|
@selection-change="handleSelectionChange"
|
>
|
<template #expand="{ row }">
|
<ExpandTable ref="expandTableRef" />
|
</template>
|
<template #operation="{ row }">
|
<el-button
|
text
|
type="primary"
|
size="small"
|
@click="handleEdit('edit', row.id)"
|
>
|
编辑
|
</el-button>
|
</template>
|
</PIMTable>
|
</div>
|
<Modal ref="modalRef"></Modal>
|
</div>
|
</template>
|
|
<script setup>
|
import { usePaginationApi } from "@/hooks/usePaginationApi";
|
import { gePurchaseListPage } from "@/api/procurementManagement/invoiceEntry.js";
|
import { nextTick, onMounted, getCurrentInstance } from "vue";
|
import ExpandTable from "./components/ExpandTable.vue";
|
import Modal from "./components/Modal.vue";
|
|
defineOptions({
|
name: "来票登记",
|
});
|
|
const { proxy } = getCurrentInstance();
|
const expandRowKeys = ref([]);
|
const expandTableRef = ref();
|
const modalRef = ref();
|
const selectedRows = ref([]);
|
|
const {
|
loading,
|
filters,
|
columns,
|
dataList,
|
pagination,
|
getTableData,
|
resetFilters,
|
} = usePaginationApi(
|
gePurchaseListPage,
|
{
|
purchaseContractNumber: undefined,
|
},
|
[
|
{
|
type: "expand",
|
dataType: "slot",
|
slot: "expand",
|
},
|
{
|
label: "销售合同号",
|
prop: "salesContractNo",
|
},
|
{
|
label: "供应商名称",
|
prop: "supplierName",
|
},
|
{
|
label: "项目名称",
|
prop: "projectName",
|
},
|
{
|
label: "合同金额(元)",
|
prop: "contractAmount",
|
formatData: (val) => {
|
return parseFloat(val).toFixed(2) ?? 0;
|
},
|
},
|
{
|
label: "已开票金额(元)",
|
prop: "receiptPaymentAmount",
|
formatData: (val) => {
|
return parseFloat(val).toFixed(2) ?? 0;
|
},
|
},
|
{
|
label: "待开票金额(元)",
|
prop: "unReceiptPaymentAmount",
|
formatData: (val) => {
|
return parseFloat(val).toFixed(2) ?? 0;
|
},
|
},
|
// {
|
// fixed: "right",
|
// label: "操作",
|
// dataType: "slot",
|
// slot: "operation",
|
// align: "center",
|
// width: "200px",
|
// },
|
]
|
);
|
|
const handleSelectionChange = (selection) => {
|
selectedRows.value = selection.filter(
|
(item) => item.purchaseContractNumber !== undefined
|
);
|
};
|
|
const handleAdd = (type) => {
|
if (selectedRows.value.length !== 1) {
|
proxy.$modal.msgWarning("请先选中一条数据");
|
return;
|
}
|
modalRef.value.open(type, selectedRows.value[0].id);
|
};
|
|
const handleEdit = (type, id) => {
|
modalRef.value.open(type, id);
|
};
|
|
const handleOut = () => {};
|
const handleDelete = () => {};
|
|
const expandChange = async (row, expandedRows) => {
|
await nextTick();
|
expandTableRef.value.getList(row.id);
|
};
|
|
onMounted(() => {
|
getTableData();
|
});
|
</script>
|
|
<style lang="scss" scoped>
|
.table_list {
|
margin-top: unset;
|
}
|
.actions {
|
display: flex;
|
justify-content: space-between;
|
margin-bottom: 10px;
|
}
|
</style>
|