user.ts 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. import storage from '@/utils/storage'
  2. import constant from '@/utils/constant'
  3. import { login, logout, getInfo } from '@/api/login'
  4. import { getToken, setToken, removeToken } from '@/utils/auth'
  5. import { UserState, UserForm } from '@/types/store'
  6. import { Module } from 'vuex'
  7. const user: Module<UserState, UserState> = {
  8. state: {
  9. token: getToken(),
  10. name: storage.get(constant.name),
  11. avatar: storage.get(constant.avatar),
  12. roles: storage.get(constant.roles),
  13. permissions: storage.get(constant.permissions),
  14. userOrWorker: storage.get(constant.userOrWorker),
  15. nickName: storage.get(constant.nickName),
  16. userId: storage.get(constant.userId),
  17. messageCount: 0,
  18. wsManager: null,
  19. addressInfo: {
  20. name: '重庆市永川区',
  21. latitude: 29.333000000000002,
  22. longitude: 105.94909000000001,
  23. cityCode: {
  24. code: [500000, 500100, 500118],
  25. data: ['重庆市', '重庆市', '永川区'],
  26. index: [21, 0, 17],
  27. },
  28. },
  29. tempSelectedAddress: null
  30. },
  31. mutations: {
  32. SET_TOKEN: (state, token: string) => {
  33. state.token = token
  34. },
  35. SET_NAME: (state, name: string) => {
  36. state.name = name
  37. storage.set(constant.name, name)
  38. },
  39. SET_AVATAR: (state, avatar: string) => {
  40. state.avatar = avatar
  41. storage.set(constant.avatar, avatar)
  42. },
  43. SET_ROLES: (state, roles: Array<string>) => {
  44. state.roles = roles
  45. storage.set(constant.roles, roles)
  46. },
  47. SET_PERMISSIONS: (state, permissions: Array<string>) => {
  48. state.permissions = permissions
  49. storage.set(constant.permissions, permissions)
  50. },
  51. SET_USERORWORKER: (state, userOrWorker: Array<string>) => {
  52. state.userOrWorker = userOrWorker
  53. storage.set(constant.userOrWorker, userOrWorker)
  54. },
  55. SET_NICKNAME: (state, nickName: String) => {
  56. state.nickName = nickName
  57. storage.set(constant.nickName, nickName)
  58. },
  59. SET_USERID: (state, id: String) => {
  60. state.userId = id
  61. },
  62. SET_MESSAGECOUNT: (state, num: Number) => {
  63. console.log("TCL: num", num)
  64. state.messageCount = num
  65. },
  66. SET_MESSAGE: (state, ms: any) => {
  67. state.wsManager = ms
  68. },
  69. SET_ADDRESSINFO: (state, data: any) => {
  70. state.addressInfo = data
  71. },
  72. SET_TEMP_ADDRESS: (state, address) => {
  73. state.tempSelectedAddress = address
  74. },
  75. CLEAR_TEMP_ADDRESS: (state) => {
  76. state.tempSelectedAddress = null
  77. }
  78. },
  79. actions: {
  80. // 登录
  81. Login({ commit }, userInfo: UserForm) {
  82. const username = userInfo.username
  83. const password = userInfo.password
  84. const code = userInfo.code
  85. const uuid = userInfo.uuid
  86. const referrerType = userInfo.referrerType
  87. const referrerId = userInfo.referrerId
  88. const referrerQrCodeVersion = userInfo.referrerQrCodeVersion
  89. // 确保经纬度保留6位小数 - 直接使用字符串格式
  90. const latitude = typeof userInfo.latitude === 'number' ?
  91. userInfo.latitude.toFixed(6) :
  92. (userInfo.latitude?.toString() || "0.000000")
  93. const longitude = typeof userInfo.longitude === 'number' ?
  94. userInfo.longitude.toFixed(6) :
  95. (userInfo.longitude?.toString() || "0.000000")
  96. console.log('Store发送经纬度字符串格式:', latitude, longitude)
  97. return new Promise((resolve, reject) => {
  98. login(username, password, code, uuid, referrerType, referrerId, latitude, longitude,referrerQrCodeVersion).then((res: any) => {
  99. setToken(res.token)
  100. commit('SET_TOKEN', res.token)
  101. resolve(res)
  102. }).catch(error => {
  103. reject(error)
  104. })
  105. })
  106. },
  107. // 获取用户信息
  108. GetInfo({ commit, state }) {
  109. return new Promise((resolve, reject) => {
  110. getInfo().then((res: any) => {
  111. const user = res.user
  112. const avatar = (user == null || user.avatar == "" || user.avatar == null) ? "/static/serverImg/mine/user.png" : user.avatar
  113. const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
  114. if (res.roles && res.roles.length > 0) {
  115. commit('SET_ROLES', res.roles)
  116. commit('SET_PERMISSIONS', res.permissions)
  117. } else {
  118. commit('SET_ROLES', ['ROLE_DEFAULT'])
  119. }
  120. console.log(res.user.userOrWorker, '>>>>>>res.user.userOrWorker');
  121. if (res.user) commit('SET_USERORWORKER', res.user.userOrWorker)
  122. console.log(state.userOrWorker, '>>>>>>');
  123. commit('SET_NAME', username)
  124. commit('SET_AVATAR', avatar)
  125. commit('SET_NICKNAME', res.user.nickName)
  126. commit('SET_USERID', res.user.userId)
  127. uni.$u.connectSoket(res.user.userId);
  128. resolve(res)
  129. }).catch(error => {
  130. reject(error)
  131. })
  132. })
  133. },
  134. // 退出系统
  135. LogOut({ commit, state }) {
  136. return new Promise((resolve, reject) => {
  137. logout().then((res) => {
  138. commit('SET_TOKEN', '')
  139. commit('SET_ROLES', [])
  140. commit('SET_PERMISSIONS', [])
  141. removeToken()
  142. //清除soket
  143. uni.$u.closeSoket();
  144. uni.setStorageSync('userType', 1)
  145. // uni.setStorageSync('userId', null)
  146. uni.removeStorageSync('userId')
  147. storage.clean()
  148. resolve(res)
  149. }).catch(error => {
  150. reject(error)
  151. })
  152. })
  153. },
  154. handleMessageCount({ commit, state }, count) {
  155. commit('SET_MESSAGECOUNT', count);
  156. },
  157. handleSoket({ commit, state }, ms) {
  158. commit('SET_MESSAGE', ms);
  159. },
  160. handlerAddress({ commit, state }, address) {
  161. commit('SET_ADDRESSINFO', address);
  162. },
  163. // 退出系统
  164. ClearUserInfo({ commit, state }) {
  165. console.log('ClearUserInfo');
  166. return new Promise((resolve, reject) => {
  167. commit('SET_TOKEN', '')
  168. commit('SET_ROLES', [])
  169. commit('SET_PERMISSIONS', [])
  170. removeToken()
  171. uni.$u.closeSoket();
  172. uni.removeStorageSync('userId')
  173. storage.clean()
  174. })
  175. },
  176. // 设置临时地址
  177. SetTempAddress({ commit }, address) {
  178. commit('SET_TEMP_ADDRESS', address)
  179. },
  180. // 清空临时地址
  181. ClearTempAddress({ commit }) {
  182. commit('CLEAR_TEMP_ADDRESS')
  183. }
  184. }
  185. }
  186. export default user