gui-speaker.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <template>
  2. <view
  3. class="gui-flex gui-row gui-nowrap gui-align-items-center">
  4. <view>
  5. <slot name="icon"></slot>
  6. </view>
  7. <view class="gui-flex1">
  8. <swiper
  9. :vertical="vertical"
  10. @change="change"
  11. autoplay="true"
  12. :circular="true"
  13. :interval="interval"
  14. :current="current"
  15. :style="{height:height+'rpx'}">
  16. <swiper-item
  17. v-for="(item, index) in items"
  18. :key="index">
  19. <navigator
  20. :url="item.url"
  21. :open-type="item.opentype">
  22. <text
  23. :style="{height:height+'rpx', lineHeight:height+'rpx'}"
  24. class="gui-block gui-ellipsis itemsIn"
  25. :class="itemClass">{{item.title}}</text>
  26. </navigator>
  27. </swiper-item>
  28. </swiper>
  29. </view>
  30. </view>
  31. </template>
  32. <script>
  33. export default{
  34. name : "gui-speaker",
  35. props : {
  36. items : {type:Array, default:function () {return [];}},
  37. current : {type:Number, default:0},
  38. vertical : {type:Boolean, default:false},
  39. interval : {type:Number, default:5000},
  40. itemClass : {type:Array, default:function(){
  41. return ['gui-text', 'gui-primary-text']
  42. }},
  43. height : {type:Number, default : 66}
  44. },
  45. data() {
  46. return {
  47. }
  48. },
  49. methods:{
  50. change:function (index) {
  51. this.$emit('change', index.detail.current);
  52. }
  53. },
  54. emits : ['change']
  55. }
  56. </script>
  57. <style scoped>
  58. .itemsIn{line-height:66rpx; height:66rpx; overflow:hidden;}
  59. </style>