permission.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import {
  2. defineStore
  3. } from 'pinia';
  4. import config from '@/config'
  5. import storage from '@/utils/storage'
  6. import constant from '@/utils/constant'
  7. import {
  8. tabMenu,
  9. workMenuList
  10. } from '@/api/system.js'
  11. const baseUrl = config.baseUrl
  12. const usePermissionStore = defineStore('permission', {
  13. state: () => ({
  14. permissions_menu: storage.get(constant.permissions_menu),
  15. permissions_btn: storage.get(constant.permissions_btn)
  16. }),
  17. actions: {
  18. // 获取用户权限信息
  19. GetPermis() {
  20. return new Promise(async (resolve, reject) => {
  21. let sysIds = await getSystemMenus()
  22. if (sysIds.length > 0) {
  23. workMenuList({
  24. sysId: sysIds //平台端获取固定系统ID
  25. }).then(res => {
  26. console.log('菜单', res)
  27. resolve(res)
  28. }).catch(error => {
  29. reject(error)
  30. })
  31. } else {
  32. reject('没有权限')
  33. }
  34. })
  35. }
  36. }
  37. });
  38. //获取顶部系统
  39. function getSystemMenus() {
  40. return new Promise((resolve, reject) => {
  41. tabMenu({}).then(res => {
  42. console.log('res', res)
  43. let arr = [];
  44. //pc固定的四个系统id,如有改动,对应调整
  45. // let menuIds = [371447078143236, 374535658992901, 374535711753477, 374535878972677];
  46. //pc固定的四个系统标识,如有改动,对应调整
  47. let menuCodes = ['xy_system', 'xy_quality', 'xy_data', 'xy_merc_be', 'xy_merc_mini'];
  48. if (res && res.length) {
  49. res.forEach(i => {
  50. if (menuCodes.find(j => j == i.code)) {
  51. arr.push(i.id)
  52. }
  53. })
  54. }
  55. resolve(arr)
  56. }).catch(err => {
  57. reject(err)
  58. })
  59. })
  60. }
  61. function assembleRouter(allRouterMenu) {
  62. // 收集每一项的下标
  63. const idMapping = allRouterMenu.reduce((acc, el, i) => {
  64. acc[el.id] = i;
  65. return acc;
  66. }, {});
  67. let menu = [];
  68. let btn = [];
  69. allRouterMenu.forEach(el => {
  70. // 判断根节点
  71. if (el.paterId === null || el.paterId === 0) {
  72. menu.push(el)
  73. return;
  74. }
  75. // 用映射表找到父元素
  76. const parentEl = allRouterMenu[idMapping[el.paterId]];
  77. // 把当前元素添加到父元素的`children`数组中
  78. if (parentEl && el.type !== 3) { //非按钮,组成路由树结构
  79. parentEl.children = [...(parentEl.children || []), el];
  80. } else {
  81. btn.push(el.code)
  82. }
  83. });
  84. return {
  85. menu: menu,
  86. btn: btn
  87. }
  88. }
  89. export default usePermissionStore