index.vue.vm 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <script lang="ts" setup>
  2. import ${simpleClassName}Modal from './${simpleClassName}Modal.vue'
  3. import { columns, searchFormSchema } from './${classNameVar}.data'
  4. import { useI18n } from '@/hooks/web/useI18n'
  5. import { useMessage } from '@/hooks/web/useMessage'
  6. import { useModal } from '@/components/Modal'
  7. import { IconEnum } from '@/enums/appEnum'
  8. import { BasicTable, useTable, TableAction } from '@/components/Table'
  9. import { delete${simpleClassName}, export${simpleClassName}, get${simpleClassName}Page } from '@/api/${table.moduleName}/${classNameVar}'
  10. defineOptions({ name: '${table.className}' })
  11. const { t } = useI18n()
  12. const { createConfirm, createMessage } = useMessage()
  13. const [registerModal, { openModal }] = useModal()
  14. const [registerTable, { getForm, reload }] = useTable({
  15. title: '${table.classComment}列表',
  16. api: get${simpleClassName}Page,
  17. columns,
  18. formConfig: { labelWidth: 120, schemas: searchFormSchema },
  19. useSearchForm: true,
  20. showTableSetting: true,
  21. actionColumn: {
  22. width: 140,
  23. title: t('common.action'),
  24. dataIndex: 'action',
  25. fixed: 'right',
  26. },
  27. })
  28. function handleCreate() {
  29. openModal(true, { isUpdate: false })
  30. }
  31. function handleEdit(record: Recordable) {
  32. openModal(true, { record, isUpdate: true })
  33. }
  34. async function handleExport() {
  35. createConfirm({
  36. title: t('common.exportTitle'),
  37. iconType: 'warning',
  38. content: t('common.exportMessage'),
  39. async onOk() {
  40. await export${simpleClassName}(getForm().getFieldsValue())
  41. createMessage.success(t('common.exportSuccessText'))
  42. },
  43. })
  44. }
  45. async function handleDelete(record: Recordable) {
  46. await delete${simpleClassName}(record.id)
  47. createMessage.success(t('common.delSuccessText'))
  48. reload()
  49. }
  50. </script>
  51. <template>
  52. <div>
  53. <BasicTable @register="registerTable">
  54. <template #toolbar>
  55. <a-button type="primary" v-auth="['${permissionPrefix}:create']" :preIcon="IconEnum.ADD" @click="handleCreate">
  56. {{ t('action.create') }}
  57. </a-button>
  58. <a-button type="warning" v-auth="['${permissionPrefix}:export']" :preIcon="IconEnum.EXPORT" @click="handleExport">
  59. {{ t('action.export') }}
  60. </a-button>
  61. </template>
  62. <template #bodyCell="{ column, record }">
  63. <template v-if="column.key === 'action'">
  64. <TableAction
  65. :actions="[
  66. { icon: IconEnum.EDIT, label: t('action.edit'), auth: '${permissionPrefix}:update', onClick: handleEdit.bind(null, record) },
  67. {
  68. icon: IconEnum.DELETE,
  69. danger: true,
  70. label: t('action.delete'),
  71. auth: '${permissionPrefix}:delete',
  72. popConfirm: {
  73. title: t('common.delMessage'),
  74. placement: 'left',
  75. confirm: handleDelete.bind(null, record),
  76. },
  77. },
  78. ]"
  79. />
  80. </template>
  81. </template>
  82. </BasicTable>
  83. <${simpleClassName}Modal @register="registerModal" @success="reload()" />
  84. </div>
  85. </template>