fa-navbar.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <template>
  2. <view v-if="navbar.isshow">
  3. <u-navbar
  4. :is-back="isBack"
  5. :back-icon-color="navbar.backIconColor"
  6. :back-icon-name="iconName"
  7. back-text="返回"
  8. :back-text-style="navbar.backTextStyle"
  9. :title="isShow ? title : ''"
  10. :title-color="navbar.titleColor"
  11. :title-size="navbar.titleSize"
  12. :background="navbar.bgColor"
  13. :border-bottom="borderBottom"
  14. :title-width="400"
  15. z-index="10080"
  16. ></u-navbar>
  17. </view>
  18. </template>
  19. <script>
  20. export default {
  21. props: {
  22. title: {
  23. type: String,
  24. default: '标题'
  25. },
  26. borderBottom: {
  27. type: Boolean,
  28. default: true
  29. }
  30. },
  31. computed: {
  32. navbar() {
  33. let navbar = {};
  34. if (this.vuex_config.navbar) {
  35. navbar = this.vuex_config.navbar;
  36. // #ifdef MP-BAIDU
  37. navbar.backTextStyle.marginLeft = '40rpx';
  38. navbar.backTextStyle.marginBottom = '15rpx';
  39. // #endif
  40. }
  41. return navbar;
  42. },
  43. tabbar() {
  44. if (this.vuex_config.tabbar) {
  45. //#ifdef MP-TOUTIAO
  46. return false;
  47. //#endif
  48. return this.vuex_config.tabbar;
  49. } else {
  50. return {
  51. isshow: false,
  52. list: []
  53. };
  54. }
  55. },
  56. isBack() {
  57. // #ifdef MP-ALIPAY
  58. return false;
  59. // #endif
  60. // #ifdef MP-WEIXIN || H5 || APP-PLUS || MP-BAIDU || MP-TOUTIAO
  61. let status = true;
  62. this.tabbar.list.forEach(item => {
  63. let path = item.path.split('?').shift();
  64. if (path == this.pageUrl || path == '/' + this.pageUrl) {
  65. status = false;
  66. }
  67. });
  68. return status;
  69. // #endif
  70. },
  71. iconName(){
  72. // #ifdef MP-BAIDU
  73. return '';
  74. // #endif
  75. // #ifndef MP-BAIDU
  76. return 'nav-back';
  77. // #endif
  78. },
  79. isShow() {
  80. // #ifdef MP-ALIPAY
  81. return false;
  82. // #endif
  83. // #ifndef MP-ALIPAY
  84. return true;
  85. // #endif
  86. }
  87. },
  88. created() {
  89. // 获取引入了u-tabbar页面的路由地址,该地址没有路径前面的"/"
  90. let pages = getCurrentPages();
  91. // 页面栈中的最后一个即为项为当前页面,route属性为页面路径
  92. this.pageUrl = pages[pages.length - 1].route;
  93. this.pageNum = pages.length;
  94. },
  95. data() {
  96. return {
  97. pageUrl: '',
  98. pageNum: 0
  99. };
  100. },
  101. methods: {
  102. goBack() {
  103. console.log('doback')
  104. let pages = getCurrentPages();
  105. // 页面栈中的最后一个即为项为当前页面,route属性为页面路径
  106. this.pageUrl = pages[pages.length - 1].route;
  107. this.pageNum = pages.length;
  108. let status = false;
  109. this.tabbar.list.forEach(item => {
  110. let path = item.path.split('?').shift();
  111. if (path == this.pageUrl || path == '/' + this.pageUrl) {
  112. status = true;
  113. }
  114. });
  115. if (status) return;
  116. if (this.pageNum == 1) {
  117. //只有当前页面了
  118. // #ifndef APP-PLUS
  119. this.$Router.push('/pages/index/index');
  120. // #endif
  121. // #ifdef APP-PLUS
  122. this.$Router.pushTab('/pages/index/index');
  123. // #endif
  124. } else {
  125. this.$Router.back(1)
  126. }
  127. }
  128. }
  129. };
  130. </script>
  131. <style></style>