user.js 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  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_OPEN_ROUTE', [])
  200. commit('SET_GUIDE_INFO', [])
  201. commit('permission/SET_ROUTES', [], { root: true }) // 清空路由,因为有权限管理
  202. localStorage.removeItem('wf-pf_admin-token')
  203. clearStorage()
  204. resetRouter()
  205. notification.end() // 取消监听通知
  206. resolve()
  207. })
  208. .catch(error => {
  209. reject(error)
  210. })
  211. })
  212. },
  213. // remove token
  214. resetToken({ commit }) {
  215. return new Promise(resolve => {
  216. commit('SET_TOKEN', '')
  217. commit('SET_ROLES', [])
  218. clearStorage()
  219. resolve()
  220. })
  221. },
  222. async getBaseInfo({ commit }, params) {
  223. if (process.env.VUE_APP_PACKAGE_ENV === 'ship') {
  224. findVesselSysVersion().toPromise().then(res => {
  225. let loginAddress = 'http://' + res.localHostAddress + ':81/'
  226. commit('SET_BASE_INFO', {
  227. fileUrl: loginAddress
  228. })
  229. })
  230. } else {
  231. }
  232. },
  233. setScheduleState({ commit }, params) {
  234. commit('SET_SCHEDULE_STATE', params)
  235. },
  236. async getTrainInfo({ commit }, params) {
  237. let guideData = await getNoviceGuideData().toPromise()
  238. commit('SET_GUIDE_INFO', guideData.data)
  239. },
  240. async getNewLogin({ commit }, params) {
  241. // let res = await getAccountLoginHistoryCount().toPromise()
  242. // commit('SET_TRAIN', res * 1 <= 0 ? 'new' : 'old')
  243. },
  244. async getUserInfo({ commit, dispatch }, { vesselBankFlag = 'B', compName = '' }) {
  245. const response = await getCurrentUserInfo().toPromise()
  246. const {
  247. staffName, deptId, deptName, deptNameEn, vessels = [],
  248. majorRole: { roleName = '', roleId = '', dutyId = '' },
  249. roles
  250. } = response
  251. const content = {
  252. ...response,
  253. showRoleName: roleName || roles[0].roleName,
  254. showRoleId: roleId || roles[0].roleId,
  255. showCompName: vesselBankFlag === 'V' ? vessels[0].vesselName : compName,
  256. avatar: 'img/user.png'
  257. }
  258. setStore({
  259. name: 'userInfo', content: content, type: 'session'
  260. })
  261. dispatch('common/setLocalVessels', vessels, { root: true })
  262. commit('SET_USER_INFO', content)
  263. localStorage.setItem('ws-pf_dutyId', dutyId || response.roles[0].dutyId)
  264. localStorage.setItem('ws-pf_roleName', roleName || roles[0].roleName)
  265. localStorage.setItem('ws-pf_staffName', staffName)
  266. localStorage.setItem('ws-pf_deptId', deptId)
  267. localStorage.setItem('ws-pf_deptName', deptName)
  268. localStorage.setItem('ws-pf_deptNameEn', deptNameEn)
  269. localStorage.setItem('ws-pf_vessels', JSON.stringify(vessels))
  270. localStorage.setItem('ws-pf_roleId', roleId || roles[0].roleId)
  271. },
  272. async toSetShow({ commit, dispatch }, { userId = '' }) {
  273. const data = await getStaffHomeShowList({
  274. staffId: userId
  275. }).toPromise()
  276. const showObject = groupBy(data, 'typeId')
  277. setStore({
  278. name: 'userSetting', content: showObject, type: 'session'
  279. })
  280. commit('SET_USERSETTING', showObject)
  281. },
  282. async changeVesslBank({ commit, dispatch, state }, showVal) {
  283. await updateShowInfo(showVal).toPromise()
  284. dispatch('toSetShow', { userId: localStorage.getItem('ws-pf_userId') })
  285. },
  286. setAdminId({ commit }, adminId) {
  287. commit('SET_ADMINID', adminId)
  288. },
  289. }
  290. export default {
  291. namespaced: true,
  292. state,
  293. mutations,
  294. actions,
  295. getters
  296. }