<template> <div class="p-4"> <BasicTable @register="registerTable"> <template #action="{ record }"> <TableAction :actions="[ { label: '编辑', onClick: handleEdit.bind(null, record), auth: 'other', // 根据权限控制是否显示: 无权限,不显示 }, { label: '删除', icon: 'ic:outline-delete-outline', onClick: handleDelete.bind(null, record), auth: 'super', // 根据权限控制是否显示: 有权限,会显示 }, ]" :dropDownActions="[ { label: '启用', popConfirm: { title: '是否启用?', confirm: handleOpen.bind(null, record), }, ifShow: (_action) => { return record.status !== 'enable'; // 根据业务控制是否显示: 非enable状态的不显示启用按钮 }, }, { label: '禁用', popConfirm: { title: '是否禁用?', confirm: handleOpen.bind(null, record), }, ifShow: () => { return record.status === 'enable'; // 根据业务控制是否显示: enable状态的显示禁用按钮 }, }, { label: '同时控制', popConfirm: { title: '是否动态显示?', confirm: handleOpen.bind(null, record), }, auth: 'super', // 同时根据权限和业务控制是否显示 ifShow: () => { return true; }, }, ]" /> </template> </BasicTable> </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; import { BasicTable, useTable, BasicColumn, TableAction } from '/@/components/Table'; import { demoListApi } from '/@/api/demo/table'; const columns: BasicColumn[] = [ { title: '编号', dataIndex: 'no', width: 100, }, { title: '姓名', dataIndex: 'name', auth: 'test', // 根据权限控制是否显示: 无权限,不显示 }, { title: '状态', dataIndex: 'status', }, { title: '地址', dataIndex: 'address', auth: 'super', // 同时根据权限和业务控制是否显示 ifShow: (_column) => { return true; }, }, { title: '开始时间', dataIndex: 'beginTime', }, { title: '结束时间', dataIndex: 'endTime', width: 200, }, ]; export default defineComponent({ components: { BasicTable, TableAction }, setup() { const [registerTable] = useTable({ title: 'TableAction组件及固定列示例', api: demoListApi, columns: columns, bordered: true, actionColumn: { width: 250, title: 'Action', dataIndex: 'action', slots: { customRender: 'action' }, }, }); function handleEdit(record: Recordable) { console.log('点击了编辑', record); } function handleDelete(record: Recordable) { console.log('点击了删除', record); } function handleOpen(record: Recordable) { console.log('点击了启用', record); } return { registerTable, handleEdit, handleDelete, handleOpen, }; }, }); </script>