index.vue.vm 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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):edit'),
  28. },
  29. {
  30. icon: 'ant-design:delete-outlined',
  31. color: 'error',
  32. label: '删除',
  33. ifShow: hasPermission('@(@Model.ClassName):delete'),
  34. popConfirm: {
  35. title: '是否确认删除',
  36. placement: 'left',
  37. confirm: handleDelete.bind(null, record),
  38. },
  39. },
  40. ]"
  41. />
  42. </template>
  43. </BasicTable>
  44. <@(@Model.ClassName)Modal @@register="registerModal" @@success="handleSuccess" />
  45. </div>
  46. </template>
  47. <script lang="ts">
  48. import { defineComponent } from 'vue';
  49. import { usePermission } from '/@@/hooks/web/usePermission';
  50. @if(Model.IsUpload){
  51. @:import { BasicTable, useTable, TableAction, TableImg } from '/@@/components/Table';
  52. }else{
  53. @:import { BasicTable, useTable, TableAction } from '/@@/components/Table';
  54. }
  55. import { useModal } from '/@@/components/Modal';
  56. import @(@Model.ClassName)Modal from './dataModal.vue';
  57. import { columns, searchFormSchema } from './data.data';
  58. import { useMessage } from '/@@/hooks/web/useMessage';
  59. import { get@(@Model.ClassName)PageList, delete@(@Model.ClassName) } from '/@@/api/main/@(@Model.ClassName)';
  60. export default defineComponent({
  61. @if(Model.IsUpload){
  62. @:components: { BasicTable, @(@Model.ClassName)Modal, TableAction, TableImg },
  63. }else{
  64. @:components:{ BasicTable, @(@Model.ClassName)Modal, TableAction },
  65. }
  66. setup() {
  67. const { hasPermission } = usePermission();
  68. const { createMessage } = useMessage();
  69. const [registerModal, { openModal }] = useModal();
  70. const [registerTable, { reload }] = useTable({
  71. title: '@(@Model.BusName)列表',
  72. api: get@(@Model.ClassName)PageList,
  73. pagination: true,
  74. rowKey: 'id',
  75. columns,
  76. formConfig: {
  77. labelWidth: 120,
  78. schemas: searchFormSchema,
  79. autoSubmitOnEnter: true,
  80. },
  81. useSearchForm: true,
  82. showTableSetting: true,
  83. bordered: true,
  84. canResize: true,
  85. actionColumn: {
  86. width: 160,
  87. title: '操作',
  88. dataIndex: 'action',
  89. slots: { customRender: 'action' },
  90. },
  91. });
  92. function handleCreate() {
  93. openModal(true, {
  94. isUpdate: false,
  95. });
  96. }
  97. function handleEdit(record: Recordable) {
  98. openModal(true, {
  99. record,
  100. isUpdate: true,
  101. });
  102. }
  103. async function handleDelete(record: Recordable) {
  104. await delete@(@Model.ClassName)(record);
  105. reload();
  106. createMessage.success('删除成功!');
  107. }
  108. function handleSuccess() {
  109. reload();
  110. }
  111. return {
  112. hasPermission,
  113. registerTable,
  114. registerModal,
  115. handleCreate,
  116. handleEdit,
  117. handleDelete,
  118. handleSuccess,
  119. @if(@Model.IsUpload){
  120. @:downUrl: import.meta.env.VITE_GLOB_DOWNLOAD_URL,
  121. }
  122. };
  123. },
  124. });
  125. </script>