index.vue.vm 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <template>
  2. <div>
  3. <BasicTable @@register="registerTable">
  4. <template #toolbar>
  5. <a-button type="primary" @@click="handleCreate" :disabled="!hasPermission('@(@Model.ClassName):add')">新增@(@Model.BusName)</a-button>
  6. </template>
  7. @foreach (var column in Model.TableField){
  8. if(@column.EffectType == "Upload"){
  9. @:<template #@(@column.LowerColumnName)="{ text, record }">
  10. <TableImg
  11. v-if="record.@(@column.LowerColumnName)Attachment"
  12. :size="60"
  13. :simpleShow="true"
  14. :showBadge="false"
  15. :imgList="[downUrl + '/' + record.@(@column.LowerColumnName)Attachment.id + record.@(@column.LowerColumnName)Attachment.suffix]"
  16. />
  17. </template>
  18. }
  19. }
  20. <template #action="{ record }">
  21. <TableAction
  22. :actions="[
  23. {
  24. icon: 'clarity:note-edit-line',
  25. label: '编辑',
  26. onClick: handleEdit.bind(null, record),
  27. disabled: !hasPermission('@(@Model.ClassName):update'),
  28. },
  29. {
  30. icon: 'ant-design:delete-outlined',
  31. color: 'error',
  32. label: '删除',
  33. ifShow: hasPermission('@(@Model.ClassName):delete'),
  34. popConfirm: {
  35. title: '是否确认删除',
  36. confirm: handleDelete.bind(null, record),
  37. },
  38. },
  39. ]"
  40. />
  41. </template>
  42. </BasicTable>
  43. <@(@Model.ClassName)Modal @@register="registerModal" @@success="handleSuccess" />
  44. </div>
  45. </template>
  46. <script lang="ts">
  47. import { defineComponent } from 'vue';
  48. import { usePermission } from '/@@/hooks/web/usePermission';
  49. @if(Model.IsUpload){
  50. @:import { BasicTable, useTable, TableAction, TableImg } from '/@@/components/Table';
  51. }else{
  52. @:import { BasicTable, useTable, TableAction } from '/@@/components/Table';
  53. }
  54. import { useModal } from '/@@/components/Modal';
  55. import @(@Model.ClassName)Modal from './dataModal.vue';
  56. import { columns, searchFormSchema } from './data.data';
  57. import { useMessage } from '/@@/hooks/web/useMessage';
  58. import { get@(@Model.ClassName)PageList, delete@(@Model.ClassName) } from '/@@/api/main/@(@Model.ClassName)';
  59. export default defineComponent({
  60. @if(Model.IsUpload){
  61. @:components: { BasicTable, @(@Model.ClassName)Modal, TableAction, TableImg },
  62. }else{
  63. @:components:{ BasicTable, @(@Model.ClassName)Modal, TableAction },
  64. }
  65. setup() {
  66. const { hasPermission } = usePermission();
  67. const { createMessage } = useMessage();
  68. const [registerModal, { openModal }] = useModal();
  69. const [registerTable, { reload }] = useTable({
  70. title: '@(@Model.BusName)列表',
  71. api: get@(@Model.ClassName)PageList,
  72. pagination: true,
  73. rowKey: 'id',
  74. columns,
  75. formConfig: {
  76. labelWidth: 120,
  77. schemas: searchFormSchema,
  78. autoSubmitOnEnter: true,
  79. },
  80. useSearchForm: true,
  81. showTableSetting: true,
  82. bordered: true,
  83. canResize: true,
  84. actionColumn: {
  85. width: 150,
  86. title: '操作',
  87. dataIndex: 'action',
  88. slots: { customRender: 'action' },
  89. },
  90. });
  91. function handleCreate() {
  92. openModal(true, {
  93. isUpdate: false,
  94. });
  95. }
  96. function handleEdit(record: Recordable) {
  97. openModal(true, {
  98. record,
  99. isUpdate: true,
  100. });
  101. }
  102. async function handleDelete(record: Recordable) {
  103. await delete@(@Model.ClassName)(record);
  104. reload();
  105. createMessage.success('删除成功!');
  106. }
  107. function handleSuccess() {
  108. reload();
  109. }
  110. return {
  111. hasPermission,
  112. registerTable,
  113. registerModal,
  114. handleCreate,
  115. handleEdit,
  116. handleDelete,
  117. handleSuccess,
  118. @if(@Model.IsUpload){
  119. @:downUrl: import.meta.env.VITE_GLOB_DOWNLOAD_URL,
  120. }
  121. };
  122. },
  123. });
  124. </script>