surveyHistory.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <script setup>
  2. import { onMounted, ref } from "vue";
  3. import { apiPublicBannerList, apiPublicBannerMark, bannerHistoryList } from "@/api/report";
  4. import { useRouter } from "vue-router";
  5. const router = useRouter();
  6. const bannerDataList = ref([]);
  7. // banner 获取列表
  8. const getBannerlist = async () => {
  9. const res = await apiPublicBannerList();
  10. if (res.code == 200) {
  11. bannerDataList.value = res.data;
  12. }
  13. };
  14. // banner 点击事件
  15. async function bannerSwiperHandler(item) {
  16. let source = sessionStorage.getItem("platformSource");
  17. const res = await apiPublicBannerMark({
  18. first_source: source == "xcx" ? 2 : 3, //一级来源 1小程序移动 2小程序pc 3研报官网
  19. second_source: 1, //二级来源 1首页 2研报详情页
  20. id: item.id,
  21. });
  22. if (res.code == 200) {
  23. router.push({
  24. path: "/report/disseminatePage",
  25. query: {
  26. imgBg: item.jump_url_pc,
  27. enable: item.enable,
  28. id: item.id,
  29. title: item.remark
  30. },
  31. });
  32. }
  33. }
  34. const finished = ref(false);
  35. const loading = ref(false);
  36. const page = ref(1);
  37. const limit = ref(10);
  38. const bannerHistoryDataList = ref([]);
  39. // 获取已结束的调研
  40. async function getSurveyHistoryList() {
  41. loading.value = true;
  42. const res = await bannerHistoryList({
  43. page: page.value,
  44. limit: limit.value,
  45. });
  46. loading.value = false;
  47. if (res.code === 200) {
  48. let arr = res.data.list || [];
  49. bannerHistoryDataList.value = [...bannerHistoryDataList.value, ...arr];
  50. if (res.data.paging.is_end) {
  51. finished.value = true;
  52. }
  53. }
  54. }
  55. //加载更多
  56. const onLoad = () => {
  57. if (loading.value) return;
  58. page.value++;
  59. getSurveyHistoryList();
  60. };
  61. onMounted(() => {
  62. getBannerlist();
  63. getSurveyHistoryList();
  64. document.title = "调研列表";
  65. });
  66. </script>
  67. <template>
  68. <div class="container survey-history-content">
  69. <div class="state-content">进行中</div>
  70. <div class="activity-content" v-for="item in bannerDataList" :key="item.id" @click="bannerSwiperHandler(item)">
  71. <img :src="item.image_url_pc" />
  72. </div>
  73. <div class="state-content" style="margin-top: 20px">已结束</div>
  74. <div class="notice-list" v-infinite-scroll="onLoad" :infinite-scroll-disabled="finished">
  75. <div class="activity-content" v-for="item in bannerHistoryDataList" :key="item.id" @click="bannerSwiperHandler(item)">
  76. <img :src="item.image_url_pc" />
  77. </div>
  78. </div>
  79. </div>
  80. </template>
  81. <style lang="scss" scoped>
  82. .survey-history-content {
  83. padding: 30px 35px;
  84. .state-content {
  85. position: relative;
  86. font-size: 16px;
  87. font-weight: 500;
  88. padding-left: 8px;
  89. &::after {
  90. content: "";
  91. position: absolute;
  92. top: 1px;
  93. left: 0;
  94. width: 3px;
  95. height: 18px;
  96. background-color: #e3b377;
  97. }
  98. }
  99. .activity-content {
  100. margin-top: 20px;
  101. width: 100%;
  102. cursor: pointer;
  103. img {
  104. width: 100%;
  105. height: auto;
  106. }
  107. }
  108. }
  109. </style>