user.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. import { login, logout, getInfo } from '@/api/user'
  2. import { getToken, setToken, removeToken, removeCrossToken, setCrossToken, removeTenant } from '@/utils/auth'
  3. import { tenantInfoQueryPage, tenantInfoInfo } from '@/views/organManager/api'
  4. import { resetRouter } from '@/router'
  5. import { setTheme } from '@/utils/setTheme'
  6. // import qs from 'qs'
  7. const state = {
  8. token: getToken(),
  9. name: '',
  10. avatar: '',
  11. positionName: '', // 职位
  12. organ: '',
  13. organName: '',
  14. phone: '',
  15. isSuperAdmin:false,
  16. roles:[],
  17. tenantId: null,
  18. baseTenantId: null,
  19. }
  20. let stateTenantId = null // 机构编号
  21. // organName
  22. const mutations = {
  23. SET_TOKEN: (state, token) => {
  24. state.token = token
  25. },
  26. SET_NAME: (state, name) => {
  27. state.name = name
  28. },
  29. SET_AVATAR: (state, avatar) => {
  30. state.avatar = avatar
  31. },
  32. SET_ORGAN: (state, organ) => {
  33. state.organ = organ
  34. },
  35. SET_ORGANNAME: (state, organName) => {
  36. state.organName = organName
  37. },
  38. SET_REFRESH_TOKEN: (state, refreshToken) => {
  39. state.refreshToken = refreshToken
  40. },
  41. SET_EXPIRES_IN: (state, expiresIn) => {
  42. state.expiresIn = expiresIn
  43. },
  44. SET_PHONE: (state, phone) => {
  45. state.phone = phone
  46. },
  47. SET_SUPERADMIN: (state, isSuperAdmin) => {
  48. state.isSuperAdmin = isSuperAdmin
  49. },
  50. SET_ROLES:(state,roles)=>{
  51. state.roles = roles
  52. },
  53. SET_TENANTID:(state,tenantId)=>{
  54. state.tenantId = tenantId
  55. },
  56. SET_POSITIONNAME:(state,positionName)=>{
  57. state.positionName = positionName
  58. },
  59. SET_BASETENANTID:(state,baseTenantId)=>{
  60. state.baseTenantId = baseTenantId
  61. },
  62. }
  63. async function tenantQueryPage(id) {
  64. try {
  65. let tenantId = id
  66. if(tenantId < 0) {
  67. const res = await tenantInfoQueryPage({ page: 1, rows: 1, payState: 1 })
  68. const tenantList = res.data?.rows || []
  69. tenantId = tenantList[0]?.id
  70. }
  71. stateTenantId = tenantId
  72. if(tenantId) {
  73. const info = await tenantInfoInfo({id: tenantId})
  74. const data = info.data
  75. stateTenantId = data.id
  76. sessionStorage.setItem('tenantConfig', JSON.stringify({
  77. themeColor: data.config.themeColor,
  78. theme: data.config.theme,
  79. tenantId: data.id,
  80. tenantName: data.name,
  81. tenantLogo: data.logo,
  82. tenantStatus: 'on' // 判断是否此状态,没有的话,刷新页面会重新请求页面
  83. }))
  84. }
  85. } catch(e) {}
  86. }
  87. const actions = {
  88. setUserName({commit}, userName) {
  89. commit('SET_NAME',userName)
  90. },
  91. setUserAvatar({commit}, userName) {
  92. commit('SET_AVATAR',userName)
  93. },
  94. // user login
  95. async login ({ commit }, userInfo) {
  96. const { username, password } = userInfo
  97. return await new Promise((resolve, reject) => {
  98. //qs.stringify({ username: username.trim(), password: password, clientId: 'app', clientSecret: 'app' })
  99. // { username: username.trim(), password: password }
  100. login({ username: username.trim(), password: password, clientId: 'system', clientSecret: 'system' }).then(response => {
  101. const { data } = response
  102. if (response.code == 200) {
  103. let token = data.authentication.token_type + ' ' + data.authentication.access_token;
  104. commit('SET_REFRESH_TOKEN', data.authentication.refresh_token)
  105. commit('SET_EXPIRES_IN', data.authentication.expires_in)
  106. commit('SET_TOKEN', token)
  107. setToken(token)
  108. setCrossToken(data.authentication.access_token)
  109. resolve()
  110. }
  111. }).catch(error => {
  112. reject(error)
  113. console.log('登录错误',error)
  114. })
  115. })
  116. },
  117. // get 获取用户信息
  118. async getInfo ({ commit, state }) {
  119. return await new Promise((resolve, reject) => {
  120. getInfo(state.token).then(async (response) => {
  121. if (response.code == 200) {
  122. const data = response
  123. if (!data.data) {
  124. reject('获取用户信息错误,请重新登录')
  125. }
  126. const username = data.data.realName || data.data.username;
  127. const avatar = data.data.avatar;
  128. const organ = data.data.organId;
  129. const organName = data.data.organName;
  130. const phone = data.data.phone
  131. const isSuperAdmin = data.data.isSuperAdmin
  132. const roles = data.data?.positions?.split(',')||[]
  133. const tenantId = data.data.tenantId
  134. const positionName = data.data.positionName
  135. sessionStorage.setItem('baseTenantId', tenantId)
  136. commit('SET_BASETENANTID', tenantId)
  137. let tenantConfig = sessionStorage.getItem('tenantConfig')
  138. tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {}
  139. if(tenantConfig.tenantStatus != 'on') {
  140. await tenantQueryPage(tenantId)
  141. // 会重置数据
  142. tenantConfig = sessionStorage.getItem('tenantConfig')
  143. tenantConfig = tenantConfig ? JSON.parse(tenantConfig) : {}
  144. }
  145. if(tenantId > 0) { // 判断是机构才会根据主题去设置
  146. const themeColor = tenantConfig.themeColor
  147. const theme = tenantConfig.theme
  148. setTheme({ theme, themeColor })
  149. }
  150. commit('SET_TENANTID', stateTenantId)
  151. commit('SET_NAME', username)
  152. commit('SET_AVATAR', avatar)
  153. commit('SET_ORGAN', organ)
  154. commit('SET_ORGANNAME', organName)
  155. commit('SET_PHONE', phone)
  156. commit('SET_SUPERADMIN',isSuperAdmin)
  157. commit('SET_ROLES',roles)
  158. commit('SET_POSITIONNAME',positionName)
  159. resolve(data)
  160. }
  161. }).catch(error => {
  162. reject('获取用户信息错误,请重新登录')
  163. })
  164. })
  165. },
  166. // 登出
  167. logout ({ commit }) {
  168. return new Promise((resolve, reject) => {
  169. logout().then(() => {
  170. commit('SET_TOKEN', '')
  171. removeToken()
  172. removeCrossToken()
  173. resetRouter()
  174. removeTenant() // 移除机构信息
  175. commit('SET_NAME', '')
  176. resolve()
  177. }).catch(error => {
  178. reject(error)
  179. })
  180. })
  181. },
  182. // remove token
  183. resetToken ({ commit }) {
  184. return new Promise(resolve => {
  185. commit('SET_TOKEN', '')
  186. removeToken()
  187. removeCrossToken()
  188. removeTenant() // 移除机构信息
  189. resolve()
  190. })
  191. }
  192. }
  193. export default {
  194. namespaced: true,
  195. state,
  196. mutations,
  197. actions
  198. }