index.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <script setup lang="ts">
  2. import { ref } from "vue";
  3. import searchConfig from "./config/search.config";
  4. import contentConfig from "./config/content.config";
  5. import FinanceModal from "./components/finance-modal.vue";
  6. import { usePageSearch, type PageHooks, type PageEvents } from "/@/hooks/page";
  7. import { ModalTypes } from "./types";
  8. const pageName = "finance";
  9. const pageContentRef = ref<any>(null);
  10. const hooks: PageHooks = {
  11. pageSearchHook: () => usePageSearch(undefined, undefined, searchConfig)
  12. };
  13. const reload = () => pageContentRef.value.onSearch();
  14. const financeModalRef = ref<InstanceType<typeof FinanceModal>>(null);
  15. const events: PageEvents = {
  16. content: {
  17. update: data => financeModalRef.value.onDisplay(data, ModalTypes.update),
  18. preview: data => financeModalRef.value.onDisplay(data, ModalTypes.preview),
  19. create: () => financeModalRef.value.onDisplay(undefined, ModalTypes.create)
  20. }
  21. };
  22. </script>
  23. <template>
  24. <PageAuth :pageName="pageName">
  25. <PageContainer
  26. :hooks="hooks"
  27. :events="events"
  28. :search-config="searchConfig"
  29. :content-config="contentConfig"
  30. :get-content-ref="ref => (pageContentRef = ref)"
  31. />
  32. <FinanceModal ref="financeModalRef" @finance-save="() => reload()" />
  33. </PageAuth>
  34. </template>
  35. <style scoped lang="scss">
  36. :deep(.el-dropdown-menu__item i) {
  37. margin: 0;
  38. }
  39. </style>