menus.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <template>
  2. <div>
  3. <div class="menubox">
  4. <div class="menu">
  5. <span class="menu-item" :class="itemId == '0' ? 'item' : ''" @click="btn({ code: '0' })">首页</span>
  6. <span class="menu-item" :class="item.code == itemId ? 'item' : ''" v-for="(item, index) in items" :key="index" @click="btn(item)" v-show="item.state == '0'">{{item.name}}</span>
  7. </div>
  8. </div>
  9. <div class="xian"></div>
  10. </div>
  11. </template>
  12. <script>
  13. import { createNamespacedHelpers } from 'vuex'
  14. const { mapState, mapActions } = createNamespacedHelpers('menu')
  15. export default {
  16. components: {},
  17. data () {
  18. return {
  19. itemId: localStorage.getItem('itemId') || '0'
  20. }
  21. },
  22. methods: {
  23. ...mapActions(['getmenu']),
  24. btn (e) {
  25. this.itemId = e.code
  26. // eslint-disable-next-line eqeqeq
  27. if (e.code == '0') {
  28. this.$router.push('/www/')
  29. localStorage.setItem('itemId', e.code)
  30. return
  31. }
  32. // eslint-disable-next-line eqeqeq
  33. if (e.type == '1') {
  34. window.open(e.uri)
  35. return
  36. }
  37. // localStorage.setItem('itemId', e.code)
  38. // eslint-disable-next-line eqeqeq
  39. if (e.type == '0') {
  40. this.$router.push(
  41. { path: `/www/list/${e.code}` },
  42. onComplete => {},
  43. onAbort => {}
  44. )
  45. }
  46. // eslint-disable-next-line eqeqeq
  47. if (e.type == '2') {
  48. const routeData = this.$router.resolve({
  49. path: `/www/page/${e.pages}`,
  50. query: { code: e.code }
  51. })
  52. window.open(routeData.href)
  53. }
  54. }
  55. },
  56. mounted () {
  57. this.getmenu()
  58. },
  59. computed: {
  60. ...mapState(['items'])
  61. },
  62. watch: {
  63. itemId (val) {
  64. localStorage.setItem('itemId', val)
  65. },
  66. $route (to, from) {
  67. const code = to.query.code
  68. const id = to.params.id
  69. if (code) {
  70. localStorage.setItem('itemId', code)
  71. } else if (id) {
  72. localStorage.setItem('itemId', id)
  73. } else {
  74. localStorage.setItem('itemId', '0')
  75. }
  76. this.itemId = localStorage.getItem('itemId') || '0'
  77. }
  78. }
  79. }
  80. </script>
  81. <style lang="less" scoped>
  82. .menubox {
  83. width: 100%;
  84. background: #c9161d;
  85. .menu {
  86. width: 70%;
  87. margin: 2px auto;
  88. display: flex;
  89. .menu-item {
  90. display: block;
  91. width: 10%;
  92. line-height: 3em;
  93. color: #fff;
  94. cursor: pointer;
  95. text-align: center;
  96. }
  97. .item {
  98. background: #fff;
  99. color: #c9161d;
  100. }
  101. }
  102. }
  103. .xian {
  104. width: 100%;
  105. height: 2px;
  106. background: #8b0005;
  107. margin-top: 3px;
  108. }
  109. </style>