user.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. // 用户数据模块
  2. import api from '@/common/request/index'
  3. import store from '@/store'
  4. import { setStorage, getStorage, removeStorage } from '@/util/index.js'
  5. import mpWx from '@/common/mpWX.js'
  6. import config from '@/config.js'
  7. import {
  8. USER_INFO,
  9. SET_TOKEN,
  10. OUT_LOGIN,
  11. SET_LOGINSTATE,
  12. USER_ADULTHOOD,
  13. SET_OPENID
  14. } from '../types.js'
  15. const state = {
  16. adultSet: getStorage('adultSet') || false,
  17. adulthoodStatus: false, // 18岁询问状态
  18. userInfo: getStorage('userInfo') ? getStorage('userInfo') : {}, // 用户信息
  19. openid: getStorage('openid') ? getStorage('openid') : '', // token
  20. sessionKey: '', // token
  21. token: getStorage('token') ? getStorage('token') : '', // token
  22. userList: getStorage('userList') ? getStorage('userList') : [],
  23. phoneStatus: false, // 请求获取手机号
  24. phone: '', // 请求获取手机号
  25. }
  26. const actions = {
  27. // 获取用户openId
  28. async getOpenId({
  29. state,
  30. commit
  31. }, {code}) {
  32. try{
  33. const obj = await api("app.getOpenId", {code: code})
  34. const { openid, sessionKey } = obj.data;
  35. console.log(openid)
  36. // 存储用户信息
  37. // if(userinfo){
  38. // commit(USER_INFO, userinfo);
  39. // }
  40. // 判断是否设计过年龄
  41. // if(!is18){
  42. // commit(USER_ADULTHOOD, true)
  43. // }
  44. // 储存openId
  45. commit(SET_OPENID, openid)
  46. // 设置token
  47. commit(SET_TOKEN, openid);
  48. // 储存sessionKey
  49. state.sessionKey = sessionKey
  50. if(obj.code == 200){
  51. // 登陆状态设为已经登陆
  52. store.commit('SET_LOGINSTATE',true);
  53. } else{
  54. }
  55. }catch(e){
  56. //TODO handle the exception
  57. }
  58. },
  59. // 关闭
  60. async closePhone({ state, commit }, phoneCode) {
  61. // 关闭手机号请求窗口
  62. state.phoneStatus = false
  63. },
  64. // 获取用户手机号
  65. async disPhone({ state, commit }, phoneCode) {
  66. // 获取code
  67. // const obj = await api("app.getPhone", {code: phoneCode})
  68. // return obj
  69. },
  70. // 判断是否成年
  71. async disAdulthood({
  72. state,
  73. commit
  74. }, info) {
  75. const adultType = info.detail;
  76. const pos = info.pos;
  77. const rawData = { city: pos.city, country: pos.country, province: pos.province, district: pos.district}
  78. if(adultType){
  79. try{
  80. const obj = await api("app.adultUpdate", {is18: true, ...rawData})
  81. console.log("success:","设置成年,请求成功")
  82. commit(USER_ADULTHOOD, false)
  83. }catch(e){
  84. console.log("error: ","设置成年,请求失败")
  85. //TODO handle the exception
  86. // uni.showModal({
  87. // title: '提示',
  88. // content: "设置成年,请求失败"
  89. // });
  90. }
  91. }else{
  92. console.log("未满18岁")
  93. // const obj = await api("app.adultUpdate", {is18: false, ...rawData})
  94. wx.exitMiniProgram({
  95. success(e) {
  96. console.log("退出")
  97. },
  98. fail(e) {
  99. console.log("退出失败")
  100. },
  101. })
  102. }
  103. },
  104. async cacheUserInfo({ state, commit, dispatch}, info){
  105. const userInfo = info.detail.userInfo;
  106. // 存储用户信息
  107. commit(USER_INFO, userInfo);
  108. // 弹出询问获取手机号
  109. if(config['getPhone'] && state.sessionKey){
  110. commit('USER_GETPHONE', true);
  111. }else {
  112. await dispatch('login', {openid: state.openid, phone: ''})
  113. return 2
  114. }
  115. },
  116. // 登陆
  117. async login({
  118. state,
  119. commit
  120. }, info) {
  121. const openid = info.openid;
  122. const phone = info.phone;
  123. const { nickName, gender, avatarUrl} = state.userInfo
  124. try{
  125. const res = await api("app.getOpenId", {
  126. "openid": openid,
  127. "phone": phone,
  128. "name": nickName
  129. })
  130. // 存储用户信息
  131. commit(USER_INFO, { ...state.userInfo, name: res.data.name});
  132. // 设置token
  133. commit(SET_TOKEN, openid);
  134. // 登陆状态设为已经登陆
  135. store.commit('SET_LOGINSTATE',true);
  136. // 存储用户信息
  137. // store.commit('SET_USERLIST',{mobile: form.mobile, token: token});
  138. // 获取客服电话
  139. // store.dispatch('getAdministratorTel')
  140. // 刷新地图
  141. // await store.dispatch('initMap')10.190.35.204
  142. return res.data
  143. }catch(e){
  144. console.log(e)
  145. //TODO handle the exception
  146. return e
  147. }
  148. },
  149. // 根据 token登录
  150. async loginRefresh({
  151. commit
  152. }, token ) {
  153. try{
  154. // const res = await api('h5.refreshToken', {token: token})
  155. // if(res.code == 1){
  156. // // 更新token
  157. // let token = res.data.token
  158. // commit(SET_TOKEN, token);
  159. // // 登陆状态设为已经登陆
  160. // store.commit('SET_LOGINSTATE',true);
  161. // return token
  162. // } else {
  163. // commit(OUT_LOGIN);
  164. // store.commit('SET_LOGINSTATE',false);
  165. // throw new Error(res.msg);
  166. // }
  167. }catch(e){
  168. //TODO handle the exception
  169. return e
  170. }
  171. },
  172. // 退出登陆
  173. loginOut({
  174. commit
  175. }) {
  176. commit(OUT_LOGIN);
  177. uni.$u.route({
  178. url: '/pages/view/public/login',
  179. type: 'redirectTo'
  180. })
  181. },
  182. }
  183. const mutations = {
  184. // 保存18岁成年状态
  185. [USER_ADULTHOOD](state, status) {
  186. state.adulthoodStatus = status
  187. state.adultSet = true
  188. // #ifdef MP-WEIXIN
  189. if(status){
  190. wx.hideTabBar()
  191. }else{
  192. wx.showTabBar()
  193. }
  194. // #endif
  195. setStorage('adultSet', true)
  196. },
  197. ['USER_GETPHONE'](state, status) {
  198. state.phoneStatus = status
  199. },
  200. // 保存用户信息
  201. [USER_INFO](state, userInfo) {
  202. state.userInfo = userInfo
  203. setStorage('userInfo', userInfo)
  204. },
  205. // 保存Token
  206. [SET_TOKEN](state, token) {
  207. state.token = token
  208. setStorage('token', token)
  209. },
  210. // 保存 sessionKey
  211. ["SET_SESSIONKEY"](state, sessionKey) {
  212. state.sessionKey = sessionKey
  213. setStorage('sessionKey', sessionKey)
  214. },
  215. // 保存openid
  216. [SET_OPENID](state, openid) {
  217. state.openid = openid
  218. setStorage('openid', openid)
  219. },
  220. // 保存手机号 和 token
  221. 'SET_USERLIST'(state, userObj) {
  222. const list = state.userList;
  223. // 之前没有存储过
  224. if(list.findIndex(obj => {return obj.mobile == userObj.mobile}) < 0){
  225. list.push(userObj)
  226. }
  227. state.userList = list;
  228. setStorage('userList', list)
  229. },
  230. // 退出登录
  231. [OUT_LOGIN](state, data) {
  232. removeStorage('token');
  233. removeStorage('userInfo');
  234. store.commit('SET_LOGINSTATE',false);
  235. store.commit('USER_INFO', {});
  236. store.commit('SET_TOKEN', '');
  237. },
  238. }
  239. const getters = {
  240. }
  241. export default {
  242. state,
  243. mutations,
  244. actions,
  245. getters
  246. }