layout.ts 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. // import {
  2. // getAllProject
  3. // } from "@/api/scan/request";
  4. import ScanController from "@/controller/old-adm/ScanController";
  5. import { userController } from "@/controller/userController";
  6. // import {
  7. // getUserInfo,getUserInfoByUserId
  8. // } from "@/api/system/persagy-sso-server";
  9. import tools from "@/utils/old-adm/scan/tools";
  10. // import storage from '@/framework/utils/storage'
  11. import storage from "@/utils/storageUtil";
  12. import lStorage from "@/utils/old-adm/localStorage";
  13. import store from "@/store";
  14. const KEY_MENU_SELECTED = "menu_selected";
  15. const KEY_PROJECT_SELECTED = "global_project_selected";
  16. const KEY_PAGE_BRANDCRUMB = "page_brandcrumb";
  17. export default {
  18. namespaced: true,
  19. state: {
  20. sidebarClosed: false,
  21. sidebarSelected: "", // sidebar选中的选项
  22. // userInfo: null, //{ username: 'admin' },
  23. userInfo: {
  24. userName: "yanruolan",
  25. userId: "06328a53c69a41bb8f5bb1a552c6e8d6",
  26. },
  27. permissions: {
  28. "system:role:delete": true,
  29. "system:role:create": true,
  30. "system:role:query": true,
  31. "system:role:setOpts": true,
  32. },
  33. menus: [], //系统菜单列表
  34. projectId: "",
  35. projectName: "",
  36. group_code: "",
  37. // projects: project["14"],
  38. projects: [],
  39. breadcrumb: [],
  40. uploaderList: [], //当前上传文件列表
  41. secret: "", //项目密码
  42. userId: "", //用户id
  43. // userId: "06328a53c69a41bb8f5bb1a552c6e8d6", //用户id
  44. rowEdit: false, //表格数据变化
  45. errorReport: [], //扫楼错误报告
  46. },
  47. getters: {
  48. sidebarClosed: (state) => state.sidebarClosed,
  49. secret: (state) => state.secret,
  50. userId: (state) => state.userId,
  51. sidebarSelected: (state) => {
  52. // if (!state.pageSidebarSelected) {
  53. // let menu = storage.get(KEY_MENU_SELECTED)
  54. // if (menu) {
  55. // state.pageSidebarSelected = menu
  56. // }
  57. // }
  58. // return state.pageSidebarSelected
  59. return state.sidebarSelected;
  60. },
  61. userInfo: (state) => state.userInfo,
  62. permissions: (state) => state.permissions,
  63. menus: (state) => state.menus,
  64. projects: (state) => state.projects,
  65. uploaderList: (state) => state.uploaderList,
  66. projectId: (state) => {
  67. if (!state.projectId) {
  68. let pid = storage.get(KEY_PROJECT_SELECTED);
  69. if (pid) {
  70. state.projectId = pid;
  71. } else if (state.projects && state.projects.length) {
  72. state.projectId = state.projects[0].id;
  73. }
  74. }
  75. return state.projectId;
  76. },
  77. projectName: (state) => state.projectName,
  78. group_code: (state) => state.group_code,
  79. breadcrumb: (state) => {
  80. if (!state.breadcrumb) {
  81. let arr = storage.get(KEY_PAGE_BRANDCRUMB);
  82. if (arr) {
  83. state.breadcrumb = arr;
  84. }
  85. }
  86. return state.breadcrumb;
  87. },
  88. },
  89. mutations: {
  90. setRowEdit: (state, val) => (state.rowEdit = val),
  91. setErrorReport: (state, val) => (state.errorReport = val),
  92. setSidebarClosed: (state, val) => (state.sidebarClosed = val),
  93. setUserInfo: (state, val) => (state.userInfo = val),
  94. setGroupCode: (state, val) => (state.group_code = val),
  95. setUserId: (state, val) => (state.userId = val),
  96. setSidebarSelected: (state, val) => {
  97. state.sidebarSelected = val;
  98. storage.set(KEY_MENU_SELECTED, val);
  99. lStorage.set("screen_data", {
  100. path: val,
  101. data: {},
  102. });
  103. },
  104. setProjects: (state, val) => (state.projects = val),
  105. setprojectId: (state, val) => {
  106. lStorage.remove("cacheInfo"); //待删除(删除用户浏览器无用缓存)
  107. let cacheInfo = lStorage.get("historyInfo")
  108. ? lStorage.get("historyInfo")
  109. : {};
  110. state.projectId = val;
  111. lStorage.set("projectId", val);
  112. if (cacheInfo[state.userInfo.userName]) {
  113. // cacheInfo[state.userInfo.userName].projectId = val
  114. cacheInfo[state.userInfo.userName] = [
  115. ...new Set([val, ...cacheInfo[state.userInfo.userName]]),
  116. ].slice(0, 3);
  117. lStorage.set("historyInfo", cacheInfo);
  118. } else {
  119. cacheInfo[state.userInfo.userName] = [val];
  120. lStorage.set("historyInfo", cacheInfo);
  121. }
  122. storage.set(KEY_PROJECT_SELECTED, val);
  123. state.projects.map((item) => {
  124. if (item.id == val) {
  125. state.secret = item.pwd;
  126. state.projectName = item.name;
  127. state.group_code = item.group_code;
  128. lStorage.set("group_code", item.group_code);
  129. lStorage.set("secret", item.pwd);
  130. }
  131. });
  132. },
  133. setMenus: (state, val) => (state.menus = val),
  134. setUploaderList: (state, val) => {
  135. state.uploaderList = val ? val : [];
  136. },
  137. },
  138. actions: {
  139. setRowEdit(contentx, value) {
  140. contentx.commit("setRowEdit", value);
  141. },
  142. setErrorReport(contentx, value) {
  143. contentx.commit("setErrorReport", value);
  144. },
  145. /**
  146. * @info 获取全部项目
  147. */
  148. getAllProject({ state }) {
  149. return new Promise((resolve, reject) => {
  150. ScanController.getAllProject(
  151. {
  152. pageNumber: 1,
  153. pageSize: 1000,
  154. },
  155. (res) => {
  156. if (res.result === "success" && res.content && res.content.length) {
  157. state.projects = [];
  158. // if (res.content[0] && res.content[0].id) {
  159. // state.projectId = res.content[0].id
  160. // state.projectName = res.content[0].localName || res.content[0].name || ""
  161. // state.secret = res.content[0].secret || ""
  162. // }
  163. res.content.forEach((proj) =>
  164. state.projects.push({
  165. id: proj.id,
  166. name: proj.localName || proj.name || "",
  167. pwd: proj.secret || "",
  168. group_code: proj.groupCode || "",
  169. })
  170. );
  171. resolve(res);
  172. } else {
  173. reject();
  174. }
  175. }
  176. );
  177. });
  178. },
  179. /**
  180. * 根据登录返回code获取用户信息和项目信息
  181. */
  182. loadUserInfo({ state }) {
  183. return new Promise(async (resolve, reject) => {
  184. /**
  185. * 改为调用运维平台的根据用户ID获取用户信息的接口
  186. * nh 2021.10.25
  187. */
  188. // let userId = store.state.ssoToken
  189. // ? store.state.ssoToken
  190. // : lStorage.get("ssoToken");
  191. let pd = lStorage.get("ssoPd");
  192. const user = new userController();
  193. var infoData = await user.getUserInfoById();
  194. if (infoData.result === "success") {
  195. const data: any = (infoData.content || [])[0] || {};
  196. state.userInfo = {
  197. userName: data.userName,
  198. userId: data.userId,
  199. };
  200. state.userId = data.userId;
  201. state.projects = []; //初始化项目列表
  202. storage.set("user_name", data.userName);
  203. storage.set("user_id", data.userId);
  204. // 获取系统菜单成功
  205. if (data.authorizations && data.authorizations.length) {
  206. var menuArr = tools.formatMenu(data.authorizations);
  207. state.menus = menuArr;
  208. } else {
  209. state.menus = [];
  210. }
  211. // 获取项目信息成功
  212. if (data.projects && data.projects.length) {
  213. // 设置项目列表
  214. data.projects.forEach((proj) =>
  215. state.projects.push({
  216. id: proj.projectId,
  217. name: proj.projectLocalName,
  218. pwd: proj.secret ? proj.secret : "",
  219. group_code: proj.groupCode,
  220. })
  221. );
  222. }
  223. resolve(infoData);
  224. } else {
  225. state.userInfo = {
  226. userName: "yanruolan",
  227. userId: "06328a53c69a41bb8f5bb1a552c6e8d6",
  228. };
  229. resolve(infoData);
  230. }
  231. return;
  232. });
  233. },
  234. setBreadcrumb: {
  235. root: true,
  236. handler({ state, commit }, val) {
  237. let label = val[0].label;
  238. if (label === "消息中心") {
  239. commit("setSidebarSelected", "message"); // 当进入消息中心页面的时候不选中导航栏
  240. }
  241. state.breadcrumb = [];
  242. state.breadcrumb = val;
  243. storage.set(KEY_PAGE_BRANDCRUMB, val);
  244. },
  245. },
  246. },
  247. };