index.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <scroll-view refresher-enabled :refresher-triggered="isRefreshing" @refresherrefresh="onCustomRefresh"
  3. class="scroll-view-class" @scrolltolower="scrolltolower" scroll-y>
  4. <view class="list-page">
  5. <view v-for="(item, index) in data" :key="index">
  6. <ListItem :data="item" v-if="userType === 2"/>
  7. <UserItem :data="item" v-else/>
  8. </view>
  9. <!-- <up-loadmore :line="true" status="nomore"></up-loadmore> -->
  10. <up-loadmore style="margin-top: 40rpx;" :status="loadmoreInfo.status"
  11. :loadmoreText="loadmoreInfo.loadingText" :loadingText="loadmoreInfo.loadmoreText"
  12. :nomoreText="loadmoreInfo.nomoreText" @loadmore="handleLoadmore" />
  13. </view>
  14. </scroll-view>
  15. </template>
  16. <script setup>
  17. import ListItem from './listItem.vue';
  18. import UserItem from './userItem.vue';
  19. import { ref, defineExpose, defineProps, defineEmits } from 'vue';
  20. const props = defineProps({
  21. data: {
  22. type: Array,
  23. default: [],
  24. },
  25. type: {
  26. type: String,
  27. default: 'ordinary', // ordinary: 普通 ranking: 排行
  28. }
  29. });
  30. const emit = defineEmits(['refresh']);
  31. const userType = uni.getStorageSync('userType') //读取本地存储
  32. const isRefreshing = ref(false)
  33. const loadmoreInfo = ref({
  34. status: 'loadmore',
  35. loadingText: '努力加载中...',
  36. loadmoreText: '点击加载更多~',
  37. nomoreText: '已经到底啦~'
  38. })
  39. const scrolltolower = () => {
  40. console.log('底部');
  41. emit('refresh','bottom');
  42. };
  43. const onCustomRefresh = () => {
  44. console.log('下拉刷新');
  45. isRefreshing.value = true;
  46. emit('refresh','top');
  47. };
  48. //上拉刷新
  49. const handleRefreshing = (status) => {
  50. isRefreshing.value = status;
  51. }
  52. //下拉刷新
  53. const handleBottom = (value) => {
  54. loadmoreInfo.value.status = value?'loading':'nomore';
  55. }
  56. defineExpose({
  57. handleRefreshing,
  58. handleBottom
  59. });
  60. </script>
  61. <style lang="scss" scoped>
  62. .list-page {
  63. background: rgba(245, 245, 245, 1);
  64. padding: 12px;
  65. // height: 100%;
  66. // overflow-y: auto;
  67. .item {
  68. height: 120px;
  69. border-radius: 10px;
  70. background: rgba(255, 255, 255, 1);
  71. padding: 12px;
  72. }
  73. }
  74. .scroll-view-class {
  75. height: 100%;
  76. }
  77. </style>