taskList.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <template>
  2. <view class="content">
  3. <view class="handle-table">
  4. <view class="handle-table-list">
  5. <view class="item"
  6. v-for="item in items"
  7. :key="item.taskId"
  8. @click="showTaskDetail(item)">
  9. <view class="cont">
  10. <view class="tag" :class="[formatTaskTage(item.taskTypeId)]">
  11. <text>{{item.taskTypeId|formatTaskType}}</text>
  12. </view>
  13. <view class="name">{{item.taskTitle}}</view>
  14. </view>
  15. <view class="time">{{item.expectedEndTime|distanceTime}}</view>
  16. </view>
  17. <uni-load-more :status="moreStatus" ></uni-load-more>
  18. </view>
  19. </view>
  20. </view>
  21. </template>
  22. <script>
  23. import {distanceTime,deepClone} from '@/libs/index.js';
  24. import {taskType} from '@/libs/enum';
  25. import {getCheckTaskByPage} from '@/api/task'
  26. export default {
  27. filters:{
  28. distanceTime(val){
  29. return distanceTime(val)
  30. },
  31. formatTaskType(val){
  32. return taskType(val)
  33. }
  34. },
  35. data() {
  36. return {
  37. items:[],
  38. total:0,
  39. page:1,
  40. limit:20,
  41. moreStatus:"more"
  42. }
  43. },
  44. onLoad() {
  45. this.getList();
  46. },
  47. onReachBottom() {
  48. let page=this.page;
  49. let maxPgae=Math.ceil((this.total/this.limit));
  50. if(page>=maxPgae){
  51. this.moreStatus="no-more"
  52. return;
  53. }
  54. this.page++;
  55. this.getList()
  56. },
  57. methods: {
  58. getList(){
  59. let userInfo=uni.getStorageSync('accountInfo')
  60. if(userInfo){
  61. let executeAccountId=JSON.parse(userInfo).userId;
  62. getCheckTaskByPage({
  63. page:this.page,
  64. limit:this.limit,
  65. isWaiting:1,
  66. executeAccountId
  67. }).then((res)=>{
  68. if(res.total===0){
  69. this.moreStatus="no-more";
  70. return;
  71. }
  72. this.moreStatus="loading";
  73. this.total=res.total;
  74. let items=deepClone(this.items);
  75. this.items=items.concat(res.data);
  76. })
  77. }
  78. },
  79. formatTaskTage(val){
  80. let type="";
  81. switch(val){
  82. case 1 :
  83. type="warn";
  84. break;
  85. // case 2 :
  86. // type="success";
  87. // break;
  88. case 3 :
  89. type="purple";
  90. break;
  91. case 4 :
  92. type="danger";
  93. break;
  94. }
  95. return type;
  96. },
  97. showTaskDetail(item){
  98. let riskPointId=item.riskPointId;
  99. uni.navigateTo({
  100. url:'/views/task/detail/detail?id='+item.taskId+'&riskPointId='+riskPointId
  101. })
  102. }
  103. }
  104. }
  105. </script>
  106. <style lang="scss" scoped>
  107. .content{
  108. .handle-table{
  109. .item{
  110. background-color: #fff;
  111. }
  112. }
  113. padding-bottom: 100upx;
  114. }
  115. </style>