user.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  1. import { fastLogin, logout, login,complogin, getRoule, getCurrentUserInfo, companyInfo, isLandBased, getAccountLoginHistoryCount, updateShowInfo }
  2. from '@/model/indexRx'
  3. import { getNoviceGuideData, findVesselSysVersion, getStaffHomeShowList } from '@/model/indexRx'
  4. import {
  5. getTenantInfoByUser,
  6. } from '@/model/signIn/index'
  7. import { setToken, getCompanyId, clearStorage } from '../../utils/auth'
  8. import { resetRouter, asyncRoutes } from '../../router'
  9. import notification from '../../notification'
  10. import { Message } from 'element-ui';
  11. import Cookies from 'js-cookie'
  12. import {
  13. setStore,
  14. } from '@/utils/store'
  15. import { groupBy } from 'lodash'
  16. const state = {
  17. token: '',
  18. name: '',
  19. avatar: '',
  20. openRoute:[],
  21. companyId: getCompanyId(),
  22. introduction: '',
  23. roles: [],
  24. tabActiveName: '', // 用于存放采购管理模块的tab
  25. baseInfo: {},
  26. scheduleState: true,
  27. guideInfo: {},
  28. isTrainDialog: '',
  29. userInfo: '',
  30. userSetting: '',
  31. adminId: Cookies.get('adminId') || ''
  32. }
  33. const getters = {
  34. // ...
  35. getUserSetting: (state, getters) => {
  36. return getters.userSetting
  37. }
  38. }
  39. const mutations = {
  40. // 设置基础信息
  41. SET_BASE_INFO: (state, baseInfo) => {
  42. state.baseInfo = { ...baseInfo } // , fileUrl: '/pb'
  43. },
  44. // 新手指引信息
  45. SET_GUIDE_INFO: (state, guideInfo) => {
  46. state.guideInfo = { ...guideInfo }
  47. },
  48. SET_TOKEN: (state, token) => {
  49. state.token = token
  50. },
  51. SET_INTRODUCTION: (state, introduction) => {
  52. state.introduction = introduction
  53. },
  54. SET_NAME: (state, name) => {
  55. state.name = name
  56. },
  57. SET_AVATAR: (state, avatar) => {
  58. state.avatar = avatar
  59. },
  60. SET_ROLES: (state, roles) => {
  61. state.roles = roles
  62. },
  63. SET_OPEN_ROUTE: (state, openRoute) => {
  64. console.log(state, openRoute)
  65. state.openRoute = openRoute
  66. },
  67. SET_COMPANY: (state, companyId) => {
  68. state.companyId = companyId
  69. },
  70. // SET_TRAIN: (state, isTrainDialog) => {
  71. // state.isTrainDialog = isTrainDialog
  72. // },
  73. SET_TABNAME: (state, tabActiveName) => {
  74. state.tabActiveName = tabActiveName
  75. },
  76. SET_SCHEDULE_STATE: (state, params) => {
  77. state.scheduleState = params
  78. },
  79. SET_USER_INFO: (state, params) => {
  80. state.userInfo = params
  81. },
  82. SET_USERSETTING: (state, params) => {
  83. state.userSetting = params
  84. },
  85. SET_ADMINID: (state, adminId) => {
  86. state.adminId = adminId
  87. Cookies.set('adminId', adminId)
  88. }
  89. }
  90. const actions = {
  91. async login({ commit, dispatch }, userInfo) {
  92. const { username, password, domainName, companyName,status } = userInfo
  93. localStorage.setItem('ws-pf_pass',password)
  94. const data = await login({
  95. username: username.trim(),
  96. password: password,
  97. domainName: domainName,
  98. companyName: companyName
  99. }).toPromise()
  100. const { compId,
  101. tenantId,
  102. vesselId,
  103. vesselBankFlag,
  104. clientFag,
  105. userId
  106. } = data
  107. // {TYPE='' MESSAGE} [第一次,失效].indexOf(type){type,msg,到期时间}
  108. // EventBus.$emit('success', '登录成功')
  109. localStorage.setItem('ws-pf_compId', compId)
  110. localStorage.setItem('ws-pf_userId', userId)
  111. localStorage.setItem('ws-pf_tenantId', tenantId)
  112. localStorage.setItem('ws-pf_vesselId', vesselId) // 仅适用于一条船
  113. localStorage.setItem('ws-pf_vesselBankFlag', vesselBankFlag) // 当前登录人是船端还是岸端的人员
  114. localStorage.setItem('ws-pf_clientFag', clientFag)
  115. notification.setSessionId(userId) // 设置通知唯一标识
  116. notification.start() // 开始监听通知
  117. // 查询当前租户服务类型
  118. await isLandBased().toPromise().then(response => {
  119. localStorage.setItem('ws-pf_serviceTypeFlag', response)
  120. })
  121. const { organizationMonetaryKey,
  122. compName,
  123. compDomainName,
  124. organizationMonetaryValue
  125. } = await companyInfo({ compId: compId }).toPromise()
  126. localStorage.setItem('ws-pf_organMonetaryKey', organizationMonetaryKey)
  127. localStorage.setItem('ws-pf_compName', compName)
  128. localStorage.setItem('ws-pf_compDomainName', compDomainName)
  129. localStorage.setItem('ws-pf_organMonetaryValue', organizationMonetaryValue)
  130. dispatch('getUserInfo', { vesselBankFlag, compName })
  131. dispatch('toSetShow', userId)
  132. setToken('Admin-Token')
  133. return data
  134. },
  135. // async complogin({ commit, dispatch }, userInfo) {
  136. // },
  137. async fastLogin({ dispatch }, userInfo) {
  138. const { mobilePhone, veriCode } = userInfo
  139. const data = await fastLogin({
  140. mobilePhone: mobilePhone,
  141. veriCode: veriCode
  142. }).toPromise()
  143. const {
  144. compId,
  145. userId,
  146. tenantId,
  147. vesselId,
  148. vesselBankFlag
  149. } = data
  150. localStorage.setItem('ws-pf_compId', compId)
  151. localStorage.setItem('ws-pf_userId', userId)
  152. localStorage.setItem('ws-pf_tenantId', tenantId)
  153. localStorage.setItem('ws-pf_vesselId', vesselId) // 仅适用于一条船
  154. localStorage.setItem('ws-pf_vesselBankFlag', vesselBankFlag) // 当前登录人是船端还是岸端的人员
  155. notification.setSessionId(userId) // 设置通知唯一标识
  156. notification.start() // 开始监听通知
  157. // 查询当前租户服务类型
  158. isLandBased().toPromise().then(response => {
  159. localStorage.setItem('ws-pf_serviceTypeFlag', response)
  160. })
  161. const {
  162. organizationMonetaryKey,
  163. compName,
  164. organizationMonetaryValue
  165. } = await companyInfo({ compId: compId }).toPromise()
  166. localStorage.setItem('ws-pf_organMonetaryKey', organizationMonetaryKey)
  167. localStorage.setItem('ws-pf_compName', compName)
  168. localStorage.setItem(
  169. 'ws-pf_organMonetaryValue',
  170. organizationMonetaryValue
  171. )
  172. dispatch('getUserInfo', { vesselBankFlag, compName })
  173. dispatch('toSetShow', userId)
  174. setToken('Admin-Token')
  175. return data
  176. },
  177. // get user info
  178. getRoule({ commit, state }) {
  179. return new Promise(async (resolve, reject) => {
  180. try {
  181. const data = await getRoule(state.roles)
  182. data.forEach(route => { asyncRoutes.push(route) })
  183. commit('SET_ROUTES', asyncRoutes)
  184. resolve(asyncRoutes)
  185. } catch (error) {
  186. reject(error)
  187. }
  188. })
  189. },
  190. // user logout
  191. logout({ commit, state }) {
  192. return new Promise((resolve, reject) => {
  193. logout(state.token).toPromise()
  194. .then(() => {
  195. commit('SET_TOKEN', '')
  196. commit('SET_COMPANY', '')
  197. // commit('SET_TRAIN', '')
  198. commit('SET_ROLES', [])
  199. commit('SET_GUIDE_INFO', [])
  200. commit('permission/SET_ROUTES', [], { root: true }) // 清空路由,因为有权限管理
  201. localStorage.removeItem('wf-pf_admin-token')
  202. clearStorage()
  203. resetRouter()
  204. notification.end() // 取消监听通知
  205. resolve()
  206. })
  207. .catch(error => {
  208. reject(error)
  209. })
  210. })
  211. },
  212. // remove token
  213. resetToken({ commit }) {
  214. return new Promise(resolve => {
  215. commit('SET_TOKEN', '')
  216. commit('SET_ROLES', [])
  217. clearStorage()
  218. resolve()
  219. })
  220. },
  221. async getBaseInfo({ commit }, params) {
  222. if (process.env.VUE_APP_PACKAGE_ENV === 'ship') {
  223. findVesselSysVersion().toPromise().then(res => {
  224. let loginAddress = 'http://' + res.localHostAddress + ':81/'
  225. commit('SET_BASE_INFO', {
  226. fileUrl: loginAddress
  227. })
  228. })
  229. } else {
  230. }
  231. },
  232. setScheduleState({ commit }, params) {
  233. commit('SET_SCHEDULE_STATE', params)
  234. },
  235. async getTrainInfo({ commit }, params) {
  236. let guideData = await getNoviceGuideData().toPromise()
  237. commit('SET_GUIDE_INFO', guideData.data)
  238. },
  239. async getNewLogin({ commit }, params) {
  240. // let res = await getAccountLoginHistoryCount().toPromise()
  241. // commit('SET_TRAIN', res * 1 <= 0 ? 'new' : 'old')
  242. },
  243. async getUserInfo({ commit, dispatch }, { vesselBankFlag = 'B', compName = '' }) {
  244. const response = await getCurrentUserInfo().toPromise()
  245. const {
  246. staffName, deptId, deptName, deptNameEn, vessels = [],
  247. majorRole: { roleName = '', roleId = '', dutyId = '' },
  248. roles
  249. } = response
  250. const content = {
  251. ...response,
  252. showRoleName: roleName || roles[0].roleName,
  253. showRoleId: roleId || roles[0].roleId,
  254. showCompName: vesselBankFlag === 'V' ? vessels[0].vesselName : compName,
  255. avatar: 'img/user.png'
  256. }
  257. setStore({
  258. name: 'userInfo', content: content, type: 'session'
  259. })
  260. dispatch('common/setLocalVessels', vessels, { root: true })
  261. commit('SET_USER_INFO', content)
  262. localStorage.setItem('ws-pf_dutyId', dutyId || response.roles[0].dutyId)
  263. localStorage.setItem('ws-pf_roleName', roleName || roles[0].roleName)
  264. localStorage.setItem('ws-pf_staffName', staffName)
  265. localStorage.setItem('ws-pf_deptId', deptId)
  266. localStorage.setItem('ws-pf_deptName', deptName)
  267. localStorage.setItem('ws-pf_deptNameEn', deptNameEn)
  268. localStorage.setItem('ws-pf_vessels', JSON.stringify(vessels))
  269. localStorage.setItem('ws-pf_roleId', roleId || roles[0].roleId)
  270. },
  271. async toSetShow({ commit, dispatch }, { userId = '' }) {
  272. const data = await getStaffHomeShowList({
  273. staffId: userId
  274. }).toPromise()
  275. const showObject = groupBy(data, 'typeId')
  276. setStore({
  277. name: 'userSetting', content: showObject, type: 'session'
  278. })
  279. commit('SET_USERSETTING', showObject)
  280. },
  281. async changeVesslBank({ commit, dispatch, state }, showVal) {
  282. await updateShowInfo(showVal).toPromise()
  283. dispatch('toSetShow', { userId: localStorage.getItem('ws-pf_userId') })
  284. },
  285. setAdminId({ commit }, adminId) {
  286. commit('SET_ADMINID', adminId)
  287. },
  288. }
  289. export default {
  290. namespaced: true,
  291. state,
  292. mutations,
  293. actions,
  294. getters
  295. }