menus.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <template>
  2. <div id="menus">
  3. <!-- <el-menu :default-active="thisRouter()" class="el-menu-vertical-demo" :router="false" :default-openeds="defalutMenu" @select="to">-->
  4. <!-- <el-menu-item index="/"> <i class="el-icon-s-home"></i>首页 </el-menu-item>-->
  5. <!-- <el-submenu index="1">-->
  6. <!-- <template v-slot:title>-->
  7. <!-- <i class="el-icon-s-grid"></i>-->
  8. <!-- <span>账号设置</span>-->
  9. <!-- </template>-->
  10. <!-- <el-menu-item-group>-->
  11. <!-- <el-menu-item index="/userInfo/index">个人信息管理</el-menu-item>-->
  12. <!-- <el-menu-item index="/uppasswd/index">修改密码</el-menu-item>-->
  13. <!-- <el-menu-item index="/institutionInfo/index">金融机构信息管理</el-menu-item>-->
  14. <!-- </el-menu-item-group>-->
  15. <!-- </el-submenu>-->
  16. <!-- <el-submenu index="2">-->
  17. <!-- <template v-slot:title>-->
  18. <!-- <i class="el-icon-s-grid"></i>-->
  19. <!-- <span>企业需求</span>-->
  20. <!-- </template>-->
  21. <!-- <el-menu-item-group>-->
  22. <!-- <el-menu-item index="/businessneed/claim">债权需求</el-menu-item>-->
  23. <!-- <el-menu-item index="/businessneed/stock">股权需求</el-menu-item>-->
  24. <!-- </el-menu-item-group>-->
  25. <!-- </el-submenu>-->
  26. <!-- <el-submenu index="3">-->
  27. <!-- <template v-slot:title>-->
  28. <!-- <i class="el-icon-s-grid"></i>-->
  29. <!-- <span>授信管理</span>-->
  30. <!-- </template>-->
  31. <!-- <el-menu-item-group>-->
  32. <!-- <el-menu-item index="/follow/followindex">授信已关注债权需求</el-menu-item>-->
  33. <!-- <el-menu-item index="/follow/followstock">关注股权需求</el-menu-item>-->
  34. <!-- <el-menu-item index="/done/doneclaim">已授信的债权需求</el-menu-item>-->
  35. <!-- </el-menu-item-group>-->
  36. <!-- </el-submenu>-->
  37. <!-- <el-submenu index="4">-->
  38. <!-- <template v-slot:title>-->
  39. <!-- <i class="el-icon-s-grid"></i>-->
  40. <!-- <span>金融产品管理</span>-->
  41. <!-- </template>-->
  42. <!-- <el-menu-item-group>-->
  43. <!-- <el-menu-item index="/financeclaims/financeClaimIndex">债权产品管理</el-menu-item>-->
  44. <!-- <el-menu-item index="/financeclaims/manageMoneyIndex">理财产品管理</el-menu-item>-->
  45. <!-- <el-menu-item index="/financeclaims/applymmoneyIndex">申请理财产品管理</el-menu-item>-->
  46. <!-- <el-menu-item index="/financeclaims/insitionIndex">金融机构提交至审核</el-menu-item>-->
  47. <!-- </el-menu-item-group>-->
  48. <!-- </el-submenu>-->
  49. <!-- </el-menu>-->
  50. <el-tree style="height: 100%;"
  51. empty-text=""
  52. :data="getMenuList"
  53. @node-click="handleNodeClick"
  54. :highlight-current="true"
  55. default-expand-all
  56. >
  57. <span slot-scope="{ node, data }"
  58. style="font-size: 16px">
  59. <i :class="data.icon"></i>{{data.name}}
  60. </span>
  61. </el-tree>
  62. </div>
  63. </template>
  64. <script>
  65. import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
  66. const { mapActions: userMenu } = createNamespacedHelpers('userMenu');
  67. export default {
  68. name: 'menus',
  69. props: {},
  70. components: {},
  71. computed: {
  72. ...mapState(['user']),
  73. },
  74. data: () => ({
  75. // defalutMenu: ['1', '2', '3'],
  76. getMenuList: [],
  77. defalutPage: '',
  78. collapse: false,
  79. }),
  80. created() {
  81. },
  82. methods: {
  83. ...userMenu(['search']),
  84. async all(uid) {
  85. const result = await this.search({uid:uid});
  86. console.log(result.data,"打印")
  87. this.getMenuList = this.ownMenuList(result.data);
  88. },
  89. handleNodeClick(data) {
  90. console.log(data);
  91. if (data.children == undefined || data.children.length == 0) {
  92. this.$router.replace(data.url);
  93. }
  94. },
  95. ownMenuList(result){
  96. let dbMenuArr = result.allmenu;
  97. let roleMenu = result.viewmenu;
  98. let ownMenuList = [];
  99. dbMenuArr.forEach((item) => {
  100. if (roleMenu.indexOf(item._id) != -1) {
  101. ownMenuList.push(item);
  102. }
  103. });
  104. return this.putTree(ownMenuList);
  105. },
  106. putTree(arr,child='_id',father='fid',mostKey='0',childKey='children'){
  107. let map = {};
  108. let resultArr = [];
  109. arr.forEach((item) => {
  110. item[childKey] = [];
  111. map[item[child]] = item;
  112. });
  113. arr.forEach((item) => {
  114. if (item[father]){
  115. if (item[father] == mostKey) {
  116. resultArr.push(item);
  117. } else {
  118. let parent = map[item[father]];
  119. parent[childKey].push(item);
  120. }
  121. }
  122. });
  123. return resultArr;
  124. },
  125. },
  126. mounted() {
  127. console.log(this.user, "vuex保存user")
  128. this.all(this.user.uid)
  129. }
  130. };
  131. </script>
  132. <style lang="less" scoped>
  133. /deep/ .el-menu {
  134. border-right: none;
  135. }
  136. /deep/ .el-menu-item,
  137. .el-submenu__title {
  138. height: 45px;
  139. line-height: 45px;
  140. }
  141. /*/deep/ .el-tree-node.is-checked > .el-tree-node__content {*/
  142. /* background-color: rgb(255, 255, 255);*/
  143. /* color: rgb(64, 158, 255);*/
  144. /*}*/
  145. /deep/ .el-tree-node__content:hover {
  146. color: #e9021d;
  147. }
  148. /deep/ .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
  149. background-color: rgb(255, 255, 255);
  150. color: #e9021d;
  151. }
  152. </style>