layout-store.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import frameworkApi from '@/api/framework'
  2. import storage from '@/framework/utils/storage'
  3. import axios from 'axios'
  4. import authutils from '../../utils/authutils'
  5. const KEY_MENU_SELECTED = 'menu_selected'
  6. const KEY_PROJECT_SELECTED = 'global_project_selected'
  7. const KEY_PAGE_BRANDCRUMB = 'page_brandcrumb'
  8. export default {
  9. namespaced: true,
  10. state: {
  11. sidebarClosed: false,
  12. sidebarSelected: '', // sidebar选中的选项
  13. userInfo: null, //{ username: 'admin' },
  14. permissions: { "system:role:delete": true, "system:role:create": true, "system:role:query": true, "system:role:setOpts": true },
  15. projectId: '',
  16. projects: [],
  17. breadcrumb: [],
  18. secret: "", //密码
  19. userId: "test", //用户id
  20. },
  21. getters: {
  22. sidebarClosed: state => state.sidebarClosed,
  23. secret: state => state.secret,
  24. userId: state => state.userId,
  25. sidebarSelected: state => {
  26. // if (!state.pageSidebarSelected) {
  27. // let menu = storage.get(KEY_MENU_SELECTED)
  28. // if (menu) {
  29. // state.pageSidebarSelected = menu
  30. // }
  31. // }
  32. // return state.pageSidebarSelected
  33. return state.sidebarSelected
  34. },
  35. userInfo: state => state.userInfo,
  36. permissions: state => state.permissions,
  37. projects: state => state.projects,
  38. projectId: state => {
  39. if (!state.projectId) {
  40. let pid = storage.get(KEY_PROJECT_SELECTED)
  41. if (pid) {
  42. state.projectId = pid
  43. }
  44. }
  45. return state.projectId
  46. },
  47. breadcrumb: state => {
  48. if (!state.breadcrumb) {
  49. let arr = storage.get(KEY_PAGE_BRANDCRUMB)
  50. if (arr) {
  51. state.breadcrumb = arr
  52. }
  53. }
  54. return state.breadcrumb
  55. }
  56. },
  57. mutations: {
  58. setSidebarClosed: (state, val) => (state.sidebarClosed = val),
  59. setSidebarSelected: (state, val) => {
  60. state.sidebarSelected = val
  61. storage.set(KEY_MENU_SELECTED, val)
  62. },
  63. setprojectId: (state, val) => {
  64. state.projectId = val
  65. localStorage.setItem('projectId', val)
  66. storage.set(KEY_PROJECT_SELECTED, val)
  67. state.projects.map((item) =>{
  68. if(item.id == val) {
  69. state.secret = item.pwd
  70. }
  71. })
  72. }
  73. },
  74. actions: {
  75. loadUserInfo({ state }) {
  76. console.log(state)
  77. return new Promise((resolve, reject) => {
  78. frameworkApi.loadUserInfo().then(resp => {
  79. console.log(resp)
  80. if (resp.result == 'success') {
  81. state.userInfo = { username: resp.username }
  82. state.permissions = {}
  83. if (resp.permissions) {
  84. resp.permissions.forEach(p => (state.permissions[p] = true))
  85. }
  86. state.projects = []
  87. if (resp.projects) {
  88. if(resp.projects[0] && resp.projects[0].projId) {
  89. state.projectId = resp.projects[0].projId
  90. state.secret = resp.projects[0].secret?resp.projects[0].secret:""
  91. }
  92. resp.projects.forEach(proj =>
  93. state.projects.push({
  94. id: proj.projId,
  95. name: proj.projLocalName,
  96. pwd: proj.secret?proj.secret:""
  97. })
  98. )
  99. }
  100. } else {
  101. state.userInfo = null
  102. }
  103. resolve(resp)
  104. })
  105. })
  106. },
  107. setBreadcrumb: {
  108. root: true,
  109. handler({ state }, val) {
  110. state.breadcrumb = []
  111. state.breadcrumb = val
  112. storage.set(KEY_PAGE_BRANDCRUMB, val)
  113. }
  114. }
  115. }
  116. }