index.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <!-- 导航组 -->
  3. <view class="diy-navBar" :style="{ background: itemStyle.background, color: itemStyle.textColor }">
  4. <view class="data-list" :class="[`avg-sm-${itemStyle.rowsNum}`]">
  5. <view class="item-nav" v-for="(dataItem, index) in dataList" :key="index">
  6. <view class="nav-to" @click="onLink(dataItem.linkUrl)">
  7. <view class="item-image">
  8. <image class="image" mode="widthFix" :src="dataItem.imgUrl"></image>
  9. </view>
  10. <view class="item-text onelist-hidden">
  11. <view class="text">{{ dataItem.text }}</view>
  12. <view class="tip">{{ dataItem.tip }}</view>
  13. </view>
  14. </view>
  15. </view>
  16. </view>
  17. </view>
  18. </template>
  19. <script>
  20. import mixin from '../mixin'
  21. export default {
  22. name: "NavBar",
  23. /**
  24. * 组件的属性列表
  25. * 用于组件自定义设置
  26. */
  27. props: {
  28. itemIndex: String,
  29. itemStyle: Object,
  30. params: Object,
  31. dataList: Array
  32. },
  33. mixins: [mixin],
  34. /**
  35. * 组件的方法列表
  36. * 更新属性和数据的方法与更新页面数据的方法类似
  37. */
  38. methods: {
  39. onLink(linkObj) {
  40. this.$navTo(linkObj)
  41. }
  42. }
  43. }
  44. </script>
  45. <style lang="scss" scoped>
  46. .diy-navBar .data-list::after {
  47. clear: both;
  48. content: " ";
  49. display: table;
  50. }
  51. .item-nav {
  52. float: left;
  53. margin: 10rpx 0px 5rpx 0px;
  54. text-align: center;
  55. background: #ffffff;
  56. padding: 2rpx;
  57. color: #666666;
  58. .nav-to {
  59. border: 2rpx solid $fuint-theme;
  60. margin: 0rpx 2px 0px 2px;
  61. padding: 38rpx 10rpx 10rpx 10rpx;
  62. border-radius: 8rpx;
  63. background: #ffffff;
  64. height: 150rpx;
  65. }
  66. .item-text {
  67. text-align: left;
  68. padding-left: 20rpx;
  69. .text {
  70. font-size: 32rpx;
  71. }
  72. .tip {
  73. font-size: 22rpx;
  74. margin-top: 8rpx;
  75. color: #999;
  76. }
  77. }
  78. .item-image {
  79. margin-bottom: 4px;
  80. font-size: 0;
  81. margin-left: 30rpx;
  82. width: 88rpx;
  83. height: 88rpx;
  84. float: left;
  85. }
  86. .item-image .image {
  87. width: 80rpx;
  88. height: 80rpx;
  89. }
  90. }
  91. /* 分列布局 */
  92. .diy-navBar .avg-sm-3>.item-nav {
  93. width: 33.33333333%;
  94. }
  95. .diy-navBar .avg-sm-4>.item-nav {
  96. width: 25%;
  97. }
  98. .diy-navBar .avg-sm-2>.item-nav {
  99. width: 50%;
  100. }
  101. </style>