layout-store.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import frameworkApi from '@/api/framework'
  2. import storage from '@/framework/utils/storage'
  3. import lStorage from '@/utils/localStorage'
  4. import axios from 'axios'
  5. import authutils from '../../utils/authutils'
  6. const KEY_MENU_SELECTED = 'menu_selected'
  7. const KEY_PROJECT_SELECTED = 'global_project_selected'
  8. const KEY_PAGE_BRANDCRUMB = 'page_brandcrumb'
  9. export default {
  10. namespaced: true,
  11. state: {
  12. sidebarClosed: false,
  13. sidebarSelected: '', // sidebar选中的选项
  14. userInfo: null, //{ username: 'admin' },
  15. permissions: { "system:role:delete": true, "system:role:create": true, "system:role:query": true, "system:role:setOpts": true },
  16. projectId: '',
  17. projects: [],
  18. breadcrumb: [],
  19. uploaderList: [], //当前上传文件列表
  20. secret: "", //项目密码
  21. userId: "", //用户id
  22. },
  23. getters: {
  24. sidebarClosed: state => state.sidebarClosed,
  25. secret: state => state.secret,
  26. userId: state => state.userId,
  27. sidebarSelected: state => {
  28. // if (!state.pageSidebarSelected) {
  29. // let menu = storage.get(KEY_MENU_SELECTED)
  30. // if (menu) {
  31. // state.pageSidebarSelected = menu
  32. // }
  33. // }
  34. // return state.pageSidebarSelected
  35. return state.sidebarSelected
  36. },
  37. userInfo: state => state.userInfo,
  38. permissions: state => state.permissions,
  39. projects: state => state.projects,
  40. uploaderList: state => state.uploaderList,
  41. projectId: state => {
  42. if (!state.projectId) {
  43. let pid = storage.get(KEY_PROJECT_SELECTED)
  44. if (pid) {
  45. state.projectId = pid
  46. }
  47. }
  48. return state.projectId
  49. },
  50. breadcrumb: state => {
  51. if (!state.breadcrumb) {
  52. let arr = storage.get(KEY_PAGE_BRANDCRUMB)
  53. if (arr) {
  54. state.breadcrumb = arr
  55. }
  56. }
  57. return state.breadcrumb
  58. }
  59. },
  60. mutations: {
  61. setSidebarClosed: (state, val) => (state.sidebarClosed = val),
  62. setSidebarSelected: (state, val) => {
  63. state.sidebarSelected = val
  64. storage.set(KEY_MENU_SELECTED, val)
  65. lStorage.set('screen_data', { path: val, data: {} })
  66. },
  67. setprojectId: (state, val) => {
  68. let cacheInfo = lStorage.get('cacheInfo') ? lStorage.get('cacheInfo') : {}
  69. state.projectId = val
  70. localStorage.setItem('projectId', val)
  71. if (cacheInfo[state.userInfo.userName]) {
  72. cacheInfo[state.userInfo.userName].projectId = val
  73. lStorage.set('cacheInfo', cacheInfo)
  74. } else {
  75. cacheInfo[state.userInfo.userName] = { projectId: val }
  76. lStorage.set('cacheInfo', cacheInfo)
  77. }
  78. storage.set(KEY_PROJECT_SELECTED, val)
  79. state.projects.map((item) => {
  80. if (item.id == val) {
  81. state.secret = item.pwd
  82. localStorage.setItem('secret', item.pwd)
  83. }
  84. })
  85. },
  86. setUploaderList: (state, val) => {
  87. state.uploaderList = val?val:[]
  88. }
  89. },
  90. actions: {
  91. loadUserInfo({ state }) {
  92. console.log(state)
  93. return new Promise((resolve, reject) => {
  94. frameworkApi.loadUserInfo().then(resp => {
  95. console.log(resp)
  96. if (resp.Result == 'success') {
  97. state.userInfo = { userName: resp.Username, userId: resp.UserId }
  98. state.userId = resp.UserId
  99. storage.set('user_name', resp.Username)
  100. storage.set('user_id', resp.UserId)
  101. state.permissions = {}
  102. if (resp.Permissions) {
  103. resp.Permissions.forEach(p => (state.permissions[p] = true))
  104. }
  105. state.projects = []
  106. if (resp.Projects) {
  107. if (resp.Projects[0] && resp.Projects[0].ProjId) {
  108. state.projectId = resp.Projects[0].ProjId
  109. state.secret = resp.Projects[0].Secret ? resp.Projects[0].Secret : ""
  110. }
  111. resp.Projects.forEach(proj =>
  112. state.projects.push({
  113. id: proj.ProjId,
  114. name: proj.ProjLocalName,
  115. pwd: proj.Secret ? proj.Secret : ""
  116. })
  117. )
  118. }
  119. } else {
  120. state.userInfo = null
  121. }
  122. resolve(resp)
  123. })
  124. })
  125. },
  126. setBreadcrumb: {
  127. root: true,
  128. handler({ state, commit }, val) {
  129. let label = val[0].label;
  130. if (label === "消息中心") {
  131. commit("setSidebarSelected", "message"); // 当进入消息中心页面的时候不选中导航栏
  132. }
  133. state.breadcrumb = []
  134. state.breadcrumb = val
  135. storage.set(KEY_PAGE_BRANDCRUMB, val)
  136. }
  137. }
  138. }
  139. }