PageTitle.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <!--begin::Page title-->
  3. <div class="d-flex">
  4. <div
  5. v-if="showBackBtn"
  6. class="d-flex h-100 justify-content-center align-items-center pe-4"
  7. style="cursor: pointer"
  8. @click="router.go(-1)"
  9. >
  10. <span class="svg-icon svg-icon-2tx" v-tooltip title="返回" data-bs-trigger="hover" data-bs-placement="bottom">
  11. <inline-svg :src="getAssetPath('media/icons/duotune/general/gen058.svg')" />
  12. </span>
  13. </div>
  14. <div
  15. v-if="pageTitleDisplay"
  16. :class="`page-title d-flex flex-${pageTitleDirection} justify-content-center flex-wrap me-3`"
  17. >
  18. <template v-if="pageTitle">
  19. <!--begin::Title-->
  20. <h1 class="page-heading d-flex text-dark fw-bold fs-3 flex-column justify-content-center my-0">
  21. {{ pageTitle }}
  22. </h1>
  23. <!--end::Title-->
  24. <span
  25. v-if="pageTitleDirection === 'row' && pageTitleBreadcrumbDisplay"
  26. class="h-20px border-gray-200 border-start mx-3"
  27. ></span>
  28. <!--begin::Breadcrumb-->
  29. <ul
  30. v-if="breadcrumbs && pageTitleBreadcrumbDisplay"
  31. class="breadcrumb breadcrumb-separatorless fw-semibold fs-7 my-0 pt-1"
  32. >
  33. <!--begin::Item-->
  34. <!-- <li class="breadcrumb-item text-muted">
  35. <router-link to="/" class="text-muted text-hover-primary">Home</router-link>
  36. </li> -->
  37. <!--end::Item-->
  38. <template v-for="(item, i) in breadcrumbs" :key="i">
  39. <!--begin::Item-->
  40. <li v-if="i != 0" class="breadcrumb-item">
  41. <span class="bullet bg-gray-400 w-5px h-2px"></span>
  42. </li>
  43. <!--end::Item-->
  44. <!--begin::Item-->
  45. <li class="breadcrumb-item text-muted">{{ item }}</li>
  46. <!--end::Item-->
  47. </template>
  48. </ul>
  49. <!--end::Breadcrumb-->
  50. </template>
  51. </div>
  52. <div v-else class="align-items-stretch"></div>
  53. </div>
  54. <!--end::Page title-->
  55. </template>
  56. <script lang="ts" setup>
  57. import { computed } from "vue"
  58. import { getAssetPath } from "@/core/helpers/assets"
  59. import { pageTitleDisplay, pageTitleBreadcrumbDisplay, pageTitleDirection } from "@/core/helpers/config"
  60. import { useRoute, useRouter } from "vue-router"
  61. const route = useRoute()
  62. const router = useRouter()
  63. const showBackBtn = computed(() => {
  64. return route.query.back && Number(route.query.back) != 0
  65. })
  66. const pageTitle = computed(() => {
  67. return route.meta.pageTitle
  68. })
  69. const breadcrumbs = computed(() => {
  70. return route.meta.breadcrumbs
  71. })
  72. </script>