problem.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <template>
  2. <view class="center">
  3. <view v-for="(item,index) in problemList" :key="index">
  4. <view class="title">{{item.title}}</view>
  5. <view class="content">{{item.content}}</view>
  6. <view class="reply">{{item.reply}}</view>
  7. </view>
  8. <view class="buttom" @click="nav('/pages/problem/problemAdd')">
  9. 新增问题
  10. </view>
  11. </view>
  12. </template>
  13. <script>
  14. import { getProblem } from '@/api/problem.js'
  15. export default {
  16. data(){
  17. return{
  18. page: 1,
  19. limit: 10,
  20. loadingType: 'more',
  21. problemList:[]
  22. }
  23. },
  24. onLoad() {
  25. this.loadData()
  26. },
  27. //下拉刷新
  28. onPullDownRefresh() {
  29. this.loadData('refresh');
  30. },
  31. //监听页面是否滚动到底部加载更多
  32. onReachBottom() {
  33. this.loadData();
  34. },
  35. methods: {
  36. async loadData(type = 'add', loading){
  37. let obj = this;
  38. if (type === 'add') {
  39. if (obj.loadingType === 'nomore') {
  40. return;
  41. }
  42. obj.loadingType = 'loading';
  43. } else {
  44. obj.loadingType = 'more';
  45. }
  46. if (type === 'refresh') {
  47. // 清空数组
  48. obj.courseList = [];
  49. obj.page = 1
  50. }
  51. //获取反馈列表
  52. getProblem({
  53. page: obj.page,
  54. limit: obj.limit
  55. }).then(e => {
  56. obj.problemList = obj.problemList.concat(e.data.data);
  57. console.log(obj.problemList);
  58. //判断是否还有下一页,有是more 没有是nomore
  59. if (obj.limit==e.data.length) {
  60. obj.page++
  61. obj.loadingType='more'
  62. } else{
  63. obj.loadingType='nomore'
  64. }
  65. if (type === 'refresh') {
  66. if (loading == 1) {
  67. uni.hideLoading();
  68. } else {
  69. uni.stopPullDownRefresh();
  70. }
  71. }
  72. })
  73. },
  74. nav(url) {
  75. uni.navigateTo({
  76. url: url
  77. })
  78. }
  79. }
  80. }
  81. </script>
  82. <style>
  83. </style>