nav_menu.vue 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <template>
  2. <view class="menu">
  3. <view class="menu_item">
  4. <popOver
  5. placement="bottom-end"
  6. :options="optionsList"
  7. key-name="text"
  8. ref="popoverRef"
  9. @select="selectItem"
  10. >
  11. <!-- <i class="icon-font icon-menu"></i> -->
  12. <view class="icon_menu">
  13. <image src="../static/more.png" class="img" v-if="!blacked"></image>
  14. <image src="../static/more_light.png" class="img" v-else></image>
  15. </view>
  16. </popOver>
  17. </view>
  18. </view>
  19. </template>
  20. <script setup>
  21. import { ref } from "vue";
  22. import popOver from "@/components/popover";
  23. import { useTabbarStore, useSystemStore } from "@/store";
  24. const useTabbar = useTabbarStore();
  25. const useSystem = useSystemStore();
  26. const props = defineProps({
  27. options: {
  28. type: Object,
  29. default: () => ({}),
  30. },
  31. page: {
  32. type: String,
  33. default: "",
  34. },
  35. blacked: Boolean,
  36. });
  37. const arr = [
  38. {
  39. icon: "icon-order",
  40. text: "订单",
  41. },
  42. {
  43. icon: "icon-Warehouse",
  44. text: "仓库",
  45. },
  46. {
  47. icon: "icon-parcel",
  48. text: "包裹",
  49. },
  50. {
  51. icon: "icon-Wallet",
  52. text: "钱包",
  53. },
  54. {
  55. icon: "icon-service",
  56. text: "在线客服",
  57. },
  58. ];
  59. const optionsList = ref(
  60. Object.keys(props.options).length ? [props.options, ...arr] : arr
  61. );
  62. const selectItem = (item) => {
  63. if (item.text == "主页") {
  64. uni.switchTab({ url: "/pages/index/index" });
  65. useTabbar.getPageCur("index");
  66. return;
  67. }
  68. switch (item.icon) {
  69. case "icon-order":
  70. if (props.page == "order") {
  71. } else {
  72. uni.switchTab({ url: "/pages/order/index" });
  73. useTabbar.getPageCur("order");
  74. }
  75. break;
  76. case "icon-Wallet":
  77. if (props.page == "wallet") {
  78. } else {
  79. uni.navigateTo({ url: "/pages/bank/wallet" });
  80. }
  81. break;
  82. case "icon-Warehouse":
  83. if (props.page == "warehouse") {
  84. } else {
  85. uni.navigateTo({ url: "/pages/dashboard/warehouse" });
  86. }
  87. break;
  88. case "icon-parcel":
  89. if (props.page == "parcel") {
  90. } else {
  91. uni.navigateTo({ url: "/pages/dashboard/parcel" });
  92. }
  93. break;
  94. case "icon-service":
  95. uni.navigateTo({ url: "/pages/setting/system" });
  96. break;
  97. default:
  98. break;
  99. }
  100. };
  101. </script>
  102. <style lang="less" scoped>
  103. .menu {
  104. &_item {
  105. .icon_menu {
  106. width: 50rpx;
  107. height: 50rpx;
  108. .img {
  109. width: inherit;
  110. height: inherit;
  111. }
  112. }
  113. }
  114. }
  115. </style>