index.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. import Vue from 'vue'
  2. import Vuex from 'vuex'
  3. import { setCookie, getCookie, formatDate, dgTree } from '@/utils/util.js'
  4. import { stDev, stProd, proPath } from '@/config/config.js'
  5. import axios from '@/config/axios.js'
  6. import index from './index/index.js'
  7. import system from './system/index.js'
  8. // import { ctx } from '@/config/config.js';
  9. Vue.use(Vuex)
  10. const state = {
  11. // ctx: process.env.NODE_ENV === 'production' ? ('/' + ctx) : '',
  12. // 请求地址
  13. ajaxCtx: '',
  14. // 图片基础路径
  15. imgBaseUrl: '',
  16. // 文件基础路径
  17. fileBaseUrl: '',
  18. // 上传文件路径
  19. fileUploadUrl: '',
  20. // 下载文件路径
  21. fileDownloadUrl: '',
  22. // ====================================
  23. // 面包屑
  24. breadcrumb: [
  25. {
  26. menuId: 1,
  27. meta: {
  28. title: '首页'
  29. }
  30. }
  31. ],
  32. // 登录日期,用于操作时的提交日期 单位毫秒
  33. loginTime: new Date().getTime(),
  34. // 路由表
  35. routes: [],
  36. // 用户信息 有就不用再取菜单
  37. userInfo: null,
  38. loginInfo: null,
  39. // 表格数据
  40. tableParams: {
  41. form: {
  42. // // 筛选条件
  43. // params: {
  44. // },
  45. // // 排序
  46. // sort: {
  47. // },
  48. orgCode: '',
  49. orgName: '',
  50. pageNum: 1,
  51. pageSize: 20
  52. },
  53. // 返回分页数据
  54. page: {
  55. total: 0
  56. }
  57. //选中数据
  58. },
  59. saleSteelToggleIds: [1, 2, 3],
  60. // 所有权限信息
  61. allPrivilege: [],
  62. // 拥有权限信息
  63. ownPrivilege: [],
  64. token: '',
  65. ticketRes: ''
  66. }
  67. const getters = {
  68. ctx() {
  69. if (process.env.NODE_ENV === 'development') {
  70. return window.location.origin + '/views/'
  71. } else {
  72. return window.location.origin + '/views/'
  73. }
  74. },
  75. API() {
  76. if (process.env.NODE_ENV === 'development') {
  77. return stDev
  78. } else {
  79. return stProd
  80. }
  81. },
  82. // 平台数据权限项目路径名
  83. proPath() {
  84. return proPath
  85. }
  86. }
  87. const mutations = {
  88. //更新用户选中数据钢材报表
  89. updateSaleSteelToggleIds(state, saleSteelToggleIdsMap) {
  90. if (saleSteelToggleIdsMap.isClear == 1) {
  91. state.saleSteelToggleIds = []
  92. } else {
  93. if (saleSteelToggleIdsMap.saleSteelToggleIds.length > 0) {
  94. state.saleSteelToggleIds = saleSteelToggleIdsMap.saleSteelToggleIds
  95. }
  96. }
  97. },
  98. // // 更新路由表
  99. addRouters(state, routes) {
  100. state.routes = routes
  101. },
  102. // 更新权限信息
  103. refreshAllPrivilege(state, allPrivilege) {
  104. state.allPrivilege = allPrivilege
  105. },
  106. // 更新权限信息
  107. refreshOwnPrivilege(state, ownPrivilege) {
  108. state.ownPrivilege = ownPrivilege
  109. },
  110. // 用户详情
  111. userInfo(state, userInfo) {
  112. state.userInfo = userInfo
  113. },
  114. loginInfo(state, loginInfo) {
  115. state.loginInfo = loginInfo
  116. },
  117. // 更新
  118. pageSize(state, pageSize) {
  119. state.table.page.pageSize = pageSize
  120. state.table.form.pageSize = pageSize
  121. },
  122. pageIndex(state, pageIndex) {
  123. state.table.form.pageIndex = pageIndex
  124. },
  125. total(state, total) {
  126. state.table.page.total = total
  127. },
  128. breadcrumb(state, breadcrumb) {
  129. state.breadcrumb = breadcrumb
  130. },
  131. setToken(state, options) {
  132. state.token = options.token
  133. }
  134. }
  135. const actions = {
  136. //获取用户选中
  137. // 取用户信息
  138. getUserInfo({ commit, state }) {
  139. let res = axios.get(proPath + 'v1/sysusers/user/token')
  140. res.then(res => {
  141. // 放入东西
  142. commit('userInfo', res.data)
  143. })
  144. return res
  145. },
  146. // 取用户信息
  147. getLoginInfo({ commit, state }) {
  148. let res = axios.post(proPath + 'auth/remoteauthentication/token')
  149. res.then(res => {
  150. // 放入东西
  151. commit('loginInfo', res.data)
  152. })
  153. return res
  154. },
  155. getAllMenuUrl({ commit, state }, obj) {
  156. let firstOne = window.top.localStorage.getItem('companys')
  157. ? JSON.parse(window.top.localStorage.getItem('companys'))[0].id
  158. : ''
  159. let companyId = window.top.localStorage.getItem('companyId')
  160. ? window.top.localStorage.getItem('companyId')
  161. : firstOne
  162. let res =
  163. obj && obj.companyId
  164. ? axios.get(
  165. proPath + 'v1/sysmenus/findFunctionMenus?companyId=' + obj.companyId
  166. )
  167. : axios.get(
  168. proPath + 'v1/sysmenus/findFunctionMenus?companyId=' + companyId
  169. )
  170. res.then(res => {
  171. // window.top.localStorage.setItem('allPrivilege', res.data ? JSON.stringify(res.data.list) : '');
  172. // 放入东西
  173. commit('refreshAllPrivilege', res.data ? res.data.list : [])
  174. })
  175. return res
  176. },
  177. getOwnMenuUrl({ commit, state }, obj) {
  178. obj = JSON.parse(JSON.stringify(obj))
  179. let firstOne = window.top.localStorage.getItem('companys')
  180. ? JSON.parse(window.top.localStorage.getItem('companys'))[0].id
  181. : ''
  182. let companyId = window.top.localStorage.getItem('companyId')
  183. ? window.top.localStorage.getItem('companyId')
  184. : firstOne
  185. let res =
  186. obj && obj.companyId
  187. ? axios.get(
  188. proPath +
  189. 'v1/sysmenus/findFunctionMenusByUserId?companyId=' +
  190. obj.companyId
  191. )
  192. : axios.get(
  193. proPath +
  194. 'v1/sysmenus/findFunctionMenusByUserId?companyId=' +
  195. obj.companyId
  196. )
  197. // let res = (obj && obj.userId && obj.menuId) ? axios.get(proPath + 'v1/sysmenus/findFuncByUAndM?userId=' + obj.userId + '&menuId=' + obj.menuId) : axios.get(proPath + 'v1/sysmenus/findFuncByUAndM?userId=' + obj.userId + '&menuId=' + obj.menuId);
  198. res.then(res => {
  199. window.top.localStorage.setItem('ownPrivilege', JSON.stringify(res.data))
  200. // 放入东西
  201. commit('refreshOwnPrivilege', res.data)
  202. })
  203. return res
  204. },
  205. // 取菜单权限信息
  206. generateRoutes({ commit, state }, obj) {
  207. let companyId = window.top.localStorage.getItem('companyId')
  208. ? window.top.localStorage.getItem('companyId')
  209. : JSON.parse(window.top.localStorage.getItem('companys'))[0].id
  210. // let asyncRouterMap = [{ path: '*', redirect: '/404', hidden: true }];
  211. let asyncRouterMap = []
  212. let res =
  213. obj && obj.companyId && obj.appId
  214. ? axios.get(
  215. proPath +
  216. 'v1/sysmenus/findMenusByUserId?companyId=' +
  217. obj.companyId +
  218. '&appId=' +
  219. obj.appId
  220. )
  221. : axios.get(
  222. proPath +
  223. 'v1/sysmenus/findMenusByUserId?companyId=' +
  224. companyId +
  225. '&appId=' +
  226. obj.userInfo.appId
  227. )
  228. res.then(res => {
  229. // 处理路由
  230. if (res.code === '0') {
  231. asyncRouterMap = asyncRouterMap.concat(res.data, asyncRouterMap)
  232. let menuLeave = getCookie('menuLeave')
  233. if (menuLeave) {
  234. let temp = []
  235. for (let i = 0; i < asyncRouterMap.length; i++) {
  236. if (asyncRouterMap[i].menuLabel.indexOf(menuLeave) > -1) {
  237. temp.push(asyncRouterMap[i])
  238. }
  239. }
  240. asyncRouterMap = JSON.parse(JSON.stringify(temp))
  241. }
  242. dgTree(asyncRouterMap, 'children', item => {
  243. item.name = item.menuLabel
  244. item.url = item.menuUrl
  245. })
  246. } else {
  247. // 查询失败
  248. // asyncRouterMap = ;
  249. }
  250. // 更新state
  251. commit('addRouters', asyncRouterMap)
  252. })
  253. return res
  254. },
  255. // 退出/注销
  256. loginOut({ commit, state }) {
  257. // 清除cookie数据
  258. let res = axios.get(proPath + 'logout')
  259. res.then(res => {
  260. setCookie('userInfo', '', -1, '/')
  261. setCookie('userLogin', '', -1, '/')
  262. setCookie('accessToken', '', -1, '/')
  263. setCookie('refreshToken', '', -1, '/')
  264. setCookie('workDate', '', -1)
  265. setCookie('appId', '', -1, '/')
  266. setCookie('ticket', '', -1, '/')
  267. })
  268. return res
  269. },
  270. // 获取apollo用户列表
  271. apolloUser({ commit, state }) {
  272. let res = axios.get(proPath + 'user')
  273. res.then(res => {
  274. // 处理路由
  275. commit('addUser', res)
  276. })
  277. },
  278. // 获取部门列表
  279. apolloOrg({ commit, state }) {
  280. let res = axios.get(proPath + 'organizations')
  281. res.then(res => {
  282. // 处理路由
  283. commit('addOrg', res)
  284. })
  285. },
  286. ticketPush({ commit, state }) {
  287. let res = axios.get(proPath + 'organizations')
  288. res.then(res => {
  289. // 处理路由
  290. commit('ticketRes', res)
  291. })
  292. }
  293. }
  294. export default new Vuex.Store({
  295. state,
  296. modules: {
  297. index: index,
  298. system: system
  299. },
  300. actions,
  301. getters,
  302. mutations
  303. })