87 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Vue
		
	
	
| <template>
 | ||
|   <div>
 | ||
|     <BasicTable @register="registerTable">
 | ||
|       <template #toolbar>
 | ||
|         <a-button type="primary" @click="handleCreate"> 新增 </a-button>
 | ||
|       </template>
 | ||
|       <template #bodyCell="{ column, record }">
 | ||
|         <template v-if="column.key === 'action'">
 | ||
|           <TableAction
 | ||
|             :actions="[
 | ||
|               {
 | ||
|                 icon: 'clarity:note-edit-line',
 | ||
|                 onClick: handleEdit.bind(null, record)
 | ||
|               },
 | ||
|               {
 | ||
|                 icon: 'ant-design:delete-outlined',
 | ||
|                 color: 'error',
 | ||
|                 popConfirm: {
 | ||
|                   title: '是否确认删除',
 | ||
|                   placement: 'left',
 | ||
|                   confirm: handleDelete.bind(null, record)
 | ||
|                 }
 | ||
|               }
 | ||
|             ]"
 | ||
|           />
 | ||
|         </template>
 | ||
|       </template>
 | ||
|     </BasicTable>
 | ||
|     <NoticeModal @register="registerModal" @success="reload()" />
 | ||
|   </div>
 | ||
| </template>
 | ||
| <script lang="ts" setup name="Notice">
 | ||
| import { BasicTable, useTable, TableAction } from '@/components/Table'
 | ||
| import { deleteNoticeApi, getNoticePageApi } from '@/api/system/notice'
 | ||
| import { useModal } from '@/components/Modal'
 | ||
| import NoticeModal from './NoticeModel.vue'
 | ||
| import { columns, searchFormSchema } from './notice.data'
 | ||
| import { useMessage } from '@/hooks/web/useMessage'
 | ||
| 
 | ||
| const { createConfirm, createMessage } = useMessage()
 | ||
| const [registerModal, { openModal }] = useModal()
 | ||
| const [registerTable, { reload }] = useTable({
 | ||
|   title: '公告列表',
 | ||
|   api: getNoticePageApi,
 | ||
|   columns,
 | ||
|   formConfig: {
 | ||
|     labelWidth: 120,
 | ||
|     schemas: searchFormSchema
 | ||
|   },
 | ||
|   useSearchForm: true,
 | ||
|   showTableSetting: true,
 | ||
|   showIndexColumn: false,
 | ||
|   actionColumn: {
 | ||
|     width: 120,
 | ||
|     title: '操作',
 | ||
|     dataIndex: 'action',
 | ||
|     fixed: 'right'
 | ||
|   }
 | ||
| })
 | ||
| 
 | ||
| function handleCreate() {
 | ||
|   openModal(true, {
 | ||
|     isUpdate: false
 | ||
|   })
 | ||
| }
 | ||
| 
 | ||
| function handleEdit(record: Recordable) {
 | ||
|   openModal(true, {
 | ||
|     record,
 | ||
|     isUpdate: true
 | ||
|   })
 | ||
| }
 | ||
| 
 | ||
| async function handleDelete(record: Recordable) {
 | ||
|   createConfirm({
 | ||
|     title: '删除',
 | ||
|     iconType: 'warning',
 | ||
|     content: '是否要删除数据?',
 | ||
|     async onOk() {
 | ||
|       await deleteNoticeApi(record.id)
 | ||
|       createMessage.success('删除成功')
 | ||
|       reload()
 | ||
|     }
 | ||
|   })
 | ||
| }
 | ||
| </script>
 |