inheritor.vue 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <template>
  2. <!-- 文化传承 - -->
  3. <CommonListPage
  4. :title="'非遗传承人'"
  5. :prevPage="{ title: '保护传承' }"
  6. :dropDownNames="dropdownNames"
  7. :pageSize="8"
  8. :load="loadData"
  9. :loadDetail="loadDetail"
  10. detailsPage="/inheritor/intangible-detail"
  11. />
  12. </template>
  13. <script setup lang="ts">
  14. import { GetContentListParams } from '@/api/CommonContent';
  15. import InheritorContent from '@/api/inheritor/InheritorContent';
  16. import IndexContent from '@/api/introduction/IndexContent';
  17. import type { DropDownNames } from '@/components/content/CommonListPage.vue';
  18. import { onMounted, ref } from 'vue';
  19. import { useRoute } from 'vue-router';
  20. async function loadDetail(id: number, item: any) {
  21. item = await InheritorContent.getContentDetail(id);
  22. item.content = item.content || item.intro as string;
  23. item.addItems = [
  24. { name: '传承项目', text: item.ichName },
  25. { name: '级别', text: item.levelText },
  26. { name: '民族', text: item.nation },
  27. ];
  28. return item;
  29. }
  30. async function loadData(
  31. page: number,
  32. pageSize: number,
  33. selectedTag: number,
  34. searchText: string,
  35. dropDownValues: number[]
  36. ) {
  37. const res = await InheritorContent.getContentList(new GetContentListParams().setSelfValues({
  38. ichType: selectedTag == 0 ? undefined: selectedTag,
  39. level: dropDownValues[0] == 0 ? undefined: dropDownValues[0],
  40. region: dropDownValues[1] == 0 ? undefined: dropDownValues[1],
  41. keywords: searchText,
  42. }), page, pageSize);
  43. return {
  44. page: page,
  45. total: res.total,
  46. data: res.list.map((item, index) => {
  47. return {
  48. id: item.id,
  49. title: item.title,
  50. desc: item.desc,
  51. image: item.image,
  52. addItems: [
  53. { name: '传承项目', text: item.ichName },
  54. { name: '级别', text: item.levelText },
  55. { name: '民族', text: item.nation },
  56. ],
  57. };
  58. }),
  59. }
  60. }
  61. const dropdownNames = ref<DropDownNames[]>([]);
  62. const route = useRoute();
  63. onMounted(async () => {
  64. const levels = await IndexContent.getCategoryList(2);
  65. dropdownNames.value.push({
  66. options: [{
  67. id: 0,
  68. name: '全部'
  69. }].concat(levels.map((item) => ({
  70. id: item.id,
  71. name: item.title,
  72. }))),
  73. defaultSelectedValue: (route.query.level ? levels.find(p => p.title == route.query.level)?.id : undefined) ?? 0,
  74. });
  75. dropdownNames.value.push({
  76. options: [{
  77. id: 0,
  78. name: '全部'
  79. }].concat((await IndexContent.getCategoryList(1)).map((item) => ({
  80. id: item.id,
  81. name: item.title,
  82. }))),
  83. defaultSelectedValue: 0,
  84. });
  85. })
  86. </script>
  87. <style>
  88. </style>