news.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <template>
  2. <view class="list">
  3. <view class="item" v-for="(item, index) in list" :key="index" @click="detail(item.id)">
  4. <view class="time">
  5. <text>{{ item.createTime.substring(0, 11) }}</text>
  6. <text class="views">{{ item.views }}人看过</text>
  7. </view>
  8. <image :src="ip + item.pic"></image>
  9. <view class="title">【{{ item.title }}】</view>
  10. <view class="desc">{{ item.descs }}...</view>
  11. </view>
  12. <view class="loading" v-show="showLoadMore"><u-loading></u-loading></view>
  13. <u-empty class="noData" text="没有数据" :show="list.length == 0"></u-empty>
  14. </view>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. ip: this.$http.urls.ip,
  21. list: [],
  22. param: { pageNum: 1, orderByColumn: 'id', isAsc: 'desc' },
  23. showLoadMore: false
  24. };
  25. },
  26. onLoad() {
  27. this.getData();
  28. },
  29. methods: {
  30. //获取数据
  31. getData() {
  32. this.$http.request({
  33. url: this.$http.urls.news,
  34. data: this.param,
  35. loading: 'false',
  36. success: res => {
  37. this.showLoadMore = res.data.pages > this.param.pageNum ? true : false;
  38. res.data.rows.forEach(item => {
  39. this.list.push(item);
  40. });
  41. }
  42. });
  43. },
  44. //详情
  45. detail(id) {
  46. uni.navigateTo({
  47. url: 'details?id=' + id
  48. });
  49. },
  50. //刷新数据
  51. refresh() {
  52. this.param.pageNum = 1;
  53. this.list = [];
  54. this.getData();
  55. }
  56. },
  57. //下拉刷新
  58. onPullDownRefresh() {
  59. setTimeout(() => {
  60. uni.stopPullDownRefresh();
  61. this.refresh();
  62. }, 1000);
  63. },
  64. //上拉加载
  65. onReachBottom() {
  66. if (this.showLoadMore) {
  67. this.param.pageNum++;
  68. this.getData();
  69. }
  70. }
  71. };
  72. </script>
  73. <style lang="scss">
  74. .list {
  75. padding: 0px 10px 30px 10px;
  76. .item {
  77. background-color: white;
  78. margin-top: 15px;
  79. border-radius: 7px;
  80. padding: 15px;
  81. image {
  82. width: 100%;
  83. height: 170px !important;
  84. border-radius: 7px;
  85. }
  86. .time {
  87. color: #818184;
  88. padding-bottom: 12px;
  89. font-size: 13px;
  90. .views {
  91. padding-left: 20px;
  92. }
  93. }
  94. .title {
  95. padding-top: 8px;
  96. font-size: 16px;
  97. color: #252525;
  98. }
  99. .desc {
  100. padding-top: 8px;
  101. font-size: 13px;
  102. color: #827d7d;
  103. }
  104. }
  105. }
  106. </style>