EmptyToRecord.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <script setup lang="ts">
  2. import type { PropType } from 'vue';
  3. import SimplePageContentLoader from '../content/SimplePageContentLoader.vue';
  4. import type { ILoaderCommon } from '@/composeables/LoaderCommon';
  5. const emit = defineEmits([ 'edit' ]);
  6. defineProps({
  7. loader: {
  8. type: Object as PropType<ILoaderCommon<any>>,
  9. default: undefined
  10. },
  11. title: {
  12. type: String,
  13. default: '非遗项目'
  14. },
  15. buttonText: {
  16. type: String,
  17. default: '去补充'
  18. },
  19. emptyText: {
  20. type: String,
  21. default: ''
  22. },
  23. showEdited: {
  24. type: Boolean,
  25. default: true
  26. },
  27. showAdd: {
  28. type: Boolean,
  29. default: true
  30. }
  31. })
  32. </script>
  33. <template>
  34. <SimplePageContentLoader :loader="loader">
  35. <a-result
  36. v-if="!loader?.content.value"
  37. status="404"
  38. :title="`${title}信息`"
  39. :subTitle="emptyText || `暂无${title}信息,快去补充`"
  40. >
  41. <template #extra>
  42. <a-button v-if="showAdd" type="primary" @click="emit('edit')">{{ buttonText }}</a-button>
  43. </template>
  44. </a-result>
  45. <div v-else>
  46. <a-alert
  47. v-if="showEdited"
  48. :message="`点击这里可以修改 ${title} 信息`"
  49. type="info"
  50. show-icon
  51. @click="emit('edit')"
  52. >
  53. <template #action>
  54. <a-space>
  55. <a-button size="small" type="primary" @click="emit('edit')">去修改</a-button>
  56. </a-space>
  57. </template>
  58. </a-alert>
  59. <slot></slot>
  60. </div>
  61. </SimplePageContentLoader>
  62. </template>