<template>
<div>
<!--表格-->
<BasicTable @register="registerTable" :rowSelection="rowSelection" :searchInfo="searchInfo">
<!--插槽:table标题-->
<template #tableTitle>
<a-button type="primary" preIcon="ant-design:plus-outlined" @click="handleCreate"> 新增</a-button>
<a-dropdown v-if="selectedRowKeys.length > 0">
<template #overlay>
<a-menu>
<a-menu-item key="1" @click="batchHandleDelete">
<Icon icon="ant-design:delete-outlined"></Icon>
删除
</a-menu-item>
</a-menu>
</template>
<a-button
>批量操作
<Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown>
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" />
</template>
</BasicTable>
<!-- 表单区域 -->
<JeecgOrderCustomerModal @register="registerModal" @success="handleSuccess"></JeecgOrderCustomerModal>
</div>
</template>
<script lang="ts" setup>
//ts语法
import type { ComputedRef } from 'vue';
import { ref, computed, unref, watch, inject } from 'vue';
import { BasicTable, TableAction } from '/@/components/Table';
import JeecgOrderCustomerModal from './components/JeecgOrderCustomerModal.vue';
import { useListPage } from '/@/hooks/system/useListPage';
import { useModal } from '/@/components/Modal';
import { customColumns } from './erplist.data';
import { customList, deleteCustomer, deleteBatchCustomer } from './erplist.api';
import { isEmpty } from '/@/utils/is';
import { useMessage } from '/@/hooks/web/useMessage';
//接收主表id
const orderId = inject<ComputedRef<string>>(
'orderId',
computed(() => '')
);
//提示弹窗
const $message = useMessage();
//弹窗model
const [registerModal, { openModal }] = useModal();
const searchInfo = {};
// 列表页面公共参数、方法
const { prefixCls, tableContext } = useListPage({
tableProps: {
api: getCustomList,
tableSetting:{
cacheKey:'customer'
},
columns: customColumns,
canResize: false,
useSearchForm: false,
actionColumn: {
width: 180,
},
pagination: {
current: 1,
pageSize: 5,
pageSizeOptions: ['5', '10', '20'],
},
},
});
//注册table数据
const [registerTable, { reload, setSelectedRowKeys }, { rowSelection, selectedRowKeys }] = tableContext;
watch(orderId, () => {
searchInfo['orderId'] = unref(orderId);
reload();
// 主表id变化时,清空子表的选中状态
setSelectedRowKeys([]);
});
async function getCustomList(params) {
let { orderId } = params;
// 主表Id为空时,不查询子表数据,直接返回空数组
if (orderId == null || isEmpty(orderId)) {
return [];
}
return await customList(params);
}
/**
* 新增事件
*/
function handleCreate() {
console.log('orderId=====》', orderId);
if (isEmpty(unref(orderId))) {
$message.createMessage.warning('请选择一个订单信息');
return;
}
openModal(true, {
isUpdate: false,
showFooter: true,
});
}
/**
* 编辑事件
*/
async function handleEdit(record: Recordable) {
openModal(true, {
record,
isUpdate: true,
showFooter: true,
});
}
/**
* 删除事件
*/
async function handleDelete(record) {
await deleteCustomer({ id: record.id }, reload);
}
/**
* 批量删除事件
*/
async function batchHandleDelete() {
await deleteBatchCustomer({ ids: selectedRowKeys.value }, () => {
selectedRowKeys.value = [];
reload();
});
}
/**
* 成功回调
*/
function handleSuccess() {
reload();
}
/**
* 操作栏
*/
function getTableAction(record) {
return [
{
label: '编辑',
onClick: handleEdit.bind(null, record),
},
{
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
},
},
];
}
</script>
<style scoped></style>