<template> <div> <BasicTable @register="registerTable"> <template #tableTitle> <a-button type="primary" @click="handleCreate"> 新增角色 </a-button> </template> <template #action="{ record }"> <TableAction :actions="[ { icon: 'clarity:note-edit-line', onClick: handleEdit.bind(null, record), }, { icon: 'ant-design:delete-outlined', color: 'error', popConfirm: { title: '是否确认删除', confirm: handleDelete.bind(null, record), }, }, ]" /> </template> </BasicTable> <RoleDrawer @register="registerDrawer" @success="handleSuccess" /> </div> </template> <script lang="ts"> import { defineComponent } from 'vue'; import { BasicTable, useTable, TableAction } from '/@/components/Table'; import { getRoleListByPage } from '/@/api/demo/system'; import { useDrawer } from '/@/components/Drawer'; import RoleDrawer from './RoleDrawer.vue'; import { columns, searchFormSchema } from './role.data'; export default defineComponent({ name: 'system-demorole', components: { BasicTable, RoleDrawer, TableAction }, setup() { const [registerDrawer, { openDrawer }] = useDrawer(); const [registerTable, { reload }] = useTable({ title: '角色列表', api: getRoleListByPage, columns, formConfig: { labelWidth: 120, schemas: searchFormSchema, }, useSearchForm: true, showTableSetting: true, bordered: true, showIndexColumn: false, actionColumn: { width: 80, title: '操作', dataIndex: 'action', slots: { customRender: 'action' }, fixed: undefined, }, }); function handleCreate() { openDrawer(true, { isUpdate: false, }); } function handleEdit(record: Recordable) { openDrawer(true, { record, isUpdate: true, }); } function handleDelete(record: Recordable) { console.log(record); } function handleSuccess() { reload(); } return { registerTable, registerDrawer, handleCreate, handleEdit, handleDelete, handleSuccess, }; }, }); </script>