gui-loadmore.vue 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <template>
  2. <view
  3. class="gui-load-more gui-flex gui-row gui-align-items-center gui-justify-content-center"
  4. @tap.stop.prevent="tapme">
  5. <view
  6. v-if="loadMoreStatus == 0">
  7. <text
  8. class="gui-block"
  9. :style="{
  10. height:loadMoreFontSize,
  11. }"></text>
  12. </view>
  13. <view
  14. class="gui-load-more-icon"
  15. ref="loadingiconforloadmore"
  16. v-if="loadMoreStatus == 1">
  17. <text
  18. :class="customClass"
  19. class="gui-icons gui-rotate360 gui-block"
  20. :style="{
  21. fontSize:loadMoreFontSize,
  22. }">&#xe9db;</text>
  23. </view>
  24. <text class="gui-block"
  25. :class="customClass"
  26. :style="{
  27. fontSize:loadMoreFontSize,
  28. }">{{loadMoreText[loadMoreStatus]}}</text>
  29. </view>
  30. </template>
  31. <script>
  32. // #ifdef APP-NVUE
  33. var animation = weex.requireModule('animation');
  34. // #endif
  35. export default{
  36. name : "gui-loadmore",
  37. props : {
  38. loadMoreText : {type:Array, default:function () {
  39. return ['','数据加载中', '已加载全部数据', '暂无数据'];
  40. }},
  41. customClass : {type:Array, default:function () {return ['gui-color-gray'];}},
  42. loadMoreFontSize : {type:String, default:'26rpx'},
  43. status : {type:Number, default:0},
  44. },
  45. data() {
  46. return {
  47. loadMoreStatus : 0,
  48. hidden : false
  49. }
  50. },
  51. created:function(){
  52. this.loadMoreStatus = this.status;
  53. if(this.status == 1){
  54. // #ifdef APP-NVUE
  55. setTimeout(()=>{
  56. this.rotate360();
  57. }, 200);
  58. // #endif
  59. }
  60. },
  61. methods:{
  62. loading : function(){
  63. this.loadMoreStatus = 1;
  64. // #ifdef APP-NVUE
  65. setTimeout(()=>{
  66. this.rotate360();
  67. }, 200);
  68. // #endif
  69. },
  70. stoploadmore : function(){
  71. this.loadMoreStatus = 0;
  72. },
  73. stopLoadmore : function(){
  74. this.loadMoreStatus = 0;
  75. },
  76. nomore : function(){
  77. this.loadMoreStatus = 2;
  78. },
  79. empty : function(){
  80. this.loadMoreStatus = 3;
  81. },
  82. hide : function(){
  83. this.hidden = true;
  84. },
  85. rotate360 : function(){
  86. var el = this.$refs.loadingiconforloadmore;
  87. animation.transition(el, {
  88. styles : {transform: 'rotate(7200deg)'},
  89. duration : 20000,
  90. timingFunction: 'linear',
  91. needLayout :false,
  92. delay: 0
  93. });
  94. },
  95. tapme : function(){
  96. if(this.loadMoreStatus == 0){
  97. this.$emit('tapme');
  98. }
  99. }
  100. },
  101. emits:['tapme']
  102. }
  103. </script>
  104. <style scoped>
  105. .gui-load-more{padding:25rpx;}
  106. .gui-load-more-text{line-height:35rpx;}
  107. .gui-load-more-icon{padding:0 12rpx; line-height:35rpx;}
  108. </style>