gui-article-list.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <template>
  2. <!-- #ifndef APP-NVUE -->
  3. <view
  4. class="gui-article-list-item"
  5. :class="itemClass"
  6. hover-class="gui-tap"
  7. v-for="(item, index) in articles"
  8. :key="index"
  9. @tap="newstap(item.id)">
  10. <view>
  11. <text
  12. class="gui-article-list-title gui-block"
  13. :class="titleClass">{{item.title}}</text>
  14. </view>
  15. <view
  16. class="gui-article-list-img1"
  17. v-if="item.imgs.length == 1">
  18. <gui-image
  19. :src="item.imgs[0]"
  20. :width="460"
  21. :height="280"></gui-image>
  22. </view>
  23. <view
  24. class="gui-flex gui-row gui-nowrap gui-space-between"
  25. v-if="item.imgs.length == 2">
  26. <view
  27. class="gui-article-list-img2-in">
  28. <gui-image
  29. :src="item.imgs[0]"
  30. :width="335"
  31. :height="200"></gui-image>
  32. </view>
  33. <view
  34. class="gui-article-list-img2-in">
  35. <gui-image
  36. :src="item.imgs[1]"
  37. :width="335"
  38. :height="200"></gui-image>
  39. </view>
  40. </view>
  41. <view
  42. class="gui-flex gui-row gui-nowrap gui-space-between"
  43. v-if="item.imgs.length >= 3">
  44. <view class="gui-article-list-img3-in">
  45. <gui-image
  46. :src="item.imgs[0]"
  47. :width="220"
  48. :height="150"></gui-image>
  49. </view>
  50. <view
  51. class="gui-article-list-img3-in">
  52. <gui-image
  53. :src="item.imgs[1]"
  54. :width="220"
  55. :height="150"></gui-image>
  56. </view>
  57. <view
  58. class="gui-article-list-img3-in">
  59. <gui-image
  60. :src="item.imgs[2]"
  61. :width="220"
  62. :height="150"></gui-image>
  63. </view>
  64. </view>
  65. <view
  66. class="gui-article-list-footer gui-flex gui-row gui-space-between gui-align-items-center">
  67. <text
  68. class="gui-article-list-footer-items gui-ellipsis gui-color-gray gui-block gui-icons">&#xe69e; {{item.author}}</text>
  69. <text
  70. class="gui-article-list-footer-items gui-ellipsis gui-color-gray gui-block gui-icons gui-text-center">&#xe609; {{item.views}}</text>
  71. <text
  72. class="gui-article-list-footer-items gui-ellipsis gui-color-gray gui-block gui-icons gui-text-right">&#xe64c; {{item.createTime}}</text>
  73. </view>
  74. </view>
  75. <!-- #endif -->
  76. <!-- #ifdef APP-NVUE -->
  77. <cell
  78. v-for="(item, index) in articles"
  79. :key="index" >
  80. <view
  81. class="gui-article-list-item"
  82. :class="itemClass"
  83. hover-class="gui-tap"
  84. @tap="newstap(item.id)">
  85. <view>
  86. <text
  87. class="gui-article-list-title gui-block"
  88. :class="titleClass">{{item.title}}</text>
  89. </view>
  90. <view
  91. class="gui-article-list-img1"
  92. v-if="item.imgs.length == 1">
  93. <gui-image
  94. :src="item.imgs[0]"
  95. :width="460"
  96. :height="280"></gui-image>
  97. </view>
  98. <view
  99. class="gui-flex gui-row gui-nowrap gui-space-between"
  100. v-if="item.imgs.length == 2">
  101. <view
  102. class="gui-article-list-img2-in">
  103. <gui-image
  104. :src="item.imgs[0]"
  105. :width="335"
  106. :height="200"></gui-image>
  107. </view>
  108. <view
  109. class="gui-article-list-img2-in">
  110. <gui-image
  111. :src="item.imgs[1]"
  112. :width="335"
  113. :height="200"></gui-image>
  114. </view>
  115. </view>
  116. <view
  117. class="gui-flex gui-row gui-nowrap gui-space-between"
  118. v-if="item.imgs.length >= 3">
  119. <view class="gui-article-list-img3-in">
  120. <gui-image
  121. :src="item.imgs[0]"
  122. :width="220"
  123. :height="150"></gui-image>
  124. </view>
  125. <view
  126. class="gui-article-list-img3-in">
  127. <gui-image
  128. :src="item.imgs[1]"
  129. :width="220"
  130. :height="150"></gui-image>
  131. </view>
  132. <view
  133. class="gui-article-list-img3-in">
  134. <gui-image
  135. :src="item.imgs[2]"
  136. :width="220"
  137. :height="150"></gui-image>
  138. </view>
  139. </view>
  140. <view
  141. class="gui-article-list-footer gui-flex gui-row gui-space-between gui-align-items-center">
  142. <text
  143. class="gui-article-list-footer-items gui-ellipsis gui-color-gray gui-block gui-icons">&#xe69e; {{item.author}}</text>
  144. <text
  145. class="gui-article-list-footer-items gui-ellipsis gui-color-gray gui-block gui-icons gui-text-center">&#xe609; {{item.views}}</text>
  146. <text
  147. class="gui-article-list-footer-items gui-ellipsis gui-color-gray gui-block gui-icons gui-text-right">&#xe64c; {{item.createTime}}</text>
  148. </view>
  149. </view>
  150. </cell>
  151. <!-- #endif -->
  152. </template>
  153. <script>
  154. export default{
  155. name : "gui-article-list",
  156. props : {
  157. articles : { type : Array , default : function(){return [];}},
  158. itemClass : { type : Array, default : function(){
  159. return ['gui-bg-white', 'gui-dark-bg-level-3'];
  160. }},
  161. titleClass : { type : Array , default : function(){
  162. return ['gui-h6', 'gui-primary-text'];
  163. }}
  164. },
  165. methods : {
  166. newstap : function(id){
  167. this.$emit('newstap', id);
  168. }
  169. },
  170. emits : ['newstap']
  171. }
  172. </script>
  173. <style scoped>
  174. .gui-article-list{}
  175. .gui-article-list-item{margin-bottom:30rpx; padding:25rpx 30rpx;}
  176. .gui-article-list-title{overflow:hidden;}
  177. .gui-article-list-img1{margin-top:22rpx;}
  178. .gui-article-list-img2-in{width:335rpx; height:200rpx; margin-top:22rpx;}
  179. .gui-article-list-img3-in{width:220rpx; height:150rpx; margin-top:22rpx;}
  180. .gui-article-list-footer{margin-top:20rpx;}
  181. .gui-article-list-footer-items{width:220rpx; height:50rpx; line-height:50rpx; font-size:26rpx; overflow:hidden;}
  182. </style>