footTabs.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <template>
  2. <view class="hover_content">
  3. <view class="hover_menu flex">
  4. <view
  5. class="menu_icon"
  6. v-for="(menu, i) in menus"
  7. :key="i"
  8. @tap="click(i, menu.pagePath)"
  9. >
  10. <view
  11. class="iconBox"
  12. :class="{ hover: selectedIndex == i }"
  13. >
  14. <span class="iconfont" :class="menu.icon"></span>
  15. </view>
  16. </view>
  17. </view>
  18. </view>
  19. </template>
  20. <style scoped src="../../static/iconfont.css">
  21. </style>
  22. <style lang="scss" scoped>
  23. .hover_content {
  24. z-index: 999;
  25. width: 30%;
  26. padding: 1.5% 1%;
  27. border-radius: 100rpx;
  28. position: fixed;
  29. left: 50%;
  30. top: 90%;
  31. transform: translateX(-50%);
  32. box-shadow: rgba(100, 100, 111, 0.2) 0rpx 7rpx 29rpx 0rpx;
  33. background-color: #fff;
  34. .hover_menu {
  35. display: flex;
  36. justify-content: space-around;
  37. align-items: center;
  38. margin-top: 10rpx;
  39. .menu_icon {
  40. .iconBox {
  41. width: 60rpx;
  42. height: 60rpx;
  43. border-radius: 50%;
  44. &.hover {
  45. background: rgb(14, 92, 246);
  46. }
  47. display: flex;
  48. justify-content: center;
  49. align-items: center;
  50. .iconfont {
  51. &.hoverd {
  52. width: 60rpx;
  53. height: 60rpx;
  54. border-radius: 50%;
  55. color: rgb(187, 187, 187);
  56. }
  57. color: #fff;
  58. font-size: 40rpx;
  59. font-family: "iconfont" !important;
  60. -webkit-font-smoothing: antialiased;
  61. -moz-osx-font-smoothing: grayscale;
  62. }
  63. }
  64. }
  65. }
  66. }
  67. </style>
  68. <script>
  69. export default {
  70. data() {
  71. return {
  72. selectedIndex: getApp().globalData.selectedIndex,
  73. showselected: false,
  74. menus: [
  75. {
  76. pagePath: "pages/index/index",
  77. icon: "icon-zhuye",
  78. text: "首页",
  79. },
  80. {
  81. pagePath: "pages/selfCenter/index",
  82. icon: "icon-geren",
  83. text: "我的",
  84. },
  85. ],
  86. };
  87. },
  88. methods: {
  89. click(index, src) {
  90. var pages = getCurrentPages(); //获取加载的页面
  91. var currentPage = pages[pages.length - 1]; //获取当前页面的对象
  92. var url = currentPage.route; //当前页面url
  93. getApp().globalData.selectedIndex = index;
  94. let res_url = this.check(url);
  95. let res_src = this.check(src);
  96. // console.log(res_url,res_src);
  97. if (!(res_url && res_src) && !(res_url == false && res_src == false)) {
  98. // uni.redirectTo({
  99. // url: "/" + src,
  100. // });
  101. uni.navigateTo({
  102. url: "/" + src,
  103. });
  104. }
  105. },
  106. check(url) {
  107. let isTure = false;
  108. let arr = [
  109. "pages/index/index",
  110. "pages/park/park_deatil",
  111. "pages/appeal/index",
  112. "pages/appeal/myAppeal",
  113. "pages/appeal/putAppeal",
  114. "pages/appeal/appeal_detail",
  115. "pages/policy/index",
  116. "pages/policy/policy_deatil",
  117. "pages/park/index",
  118. "pages/park/map_search",
  119. "pages/activity/index",
  120. "pages/activity/activity_deatil",
  121. "pages/supply/index",
  122. "pages/supply/putSupply",
  123. "pages/supply/mySupply",
  124. "pages/supply/supply_detail",
  125. "pages/enterprise/index",
  126. "pages/enterprise/enterprise_detail",
  127. "pages/enterprise/product_detail",
  128. "pages/service/index",
  129. "pages/auth/index",
  130. "pages/notice/index",
  131. "pages/notice/notice_deatil",
  132. "pages/attract/index",
  133. "pages/attract/attract_deatil",
  134. ];
  135. for (let i = 0; i < arr.length; i++) {
  136. let e = arr[i];
  137. if (e == url) {
  138. isTure = true;
  139. return isTure;
  140. }
  141. }
  142. return isTure;
  143. },
  144. },
  145. };
  146. </script>