user.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import { getUserInfo, setWxAuthUserInfo, getThirdInfo, createAccount, changePhone } from '@/api/user.js';
  2. import store from '@/store';
  3. import config from '@/config';
  4. // 获取用户数据
  5. function getUserData() {
  6. return new Promise((resolve, reject) => {
  7. Promise.all([getUserInfo(), getThirdInfo()]).then(([userInfoRes, thirdInfores]) => {
  8. let userInfo = userInfoRes.data || {};
  9. let thirdInfo = thirdInfores.data || {};
  10. let cachedInfo = wx.getStorageSync('UserInfo');
  11. userInfo = { ...cachedInfo, ...userInfo, ...thirdInfo };
  12. userInfo.userName = userInfo.userName || '';
  13. // test 用户身份
  14. // userInfo.roles = ['tenant.admin', 'operator', 'owner'];
  15. // userInfo.phone = '';wxLogin
  16. // userInfo.nickName = '';
  17. // userInfo.userName = ''
  18. userInfo = addRolesInfoToUserInfo(userInfo);
  19. if (!userInfo.userName) {
  20. userInfo.defaultUserName = 'Hello';
  21. }
  22. // todo 模拟银泰配置 接口增加buildingLogo
  23. if (config.projectName === 'yintai') {
  24. userInfo.buildingLogo = `${config.h5StaticPath}/page-yintai/project-logo.png`;
  25. }
  26. // userInfo.companyId = 'c68dcccd57984277ab7736f2d257cd0c'
  27. store.commit('setUserInfo', userInfo);
  28. resolve(userInfo);
  29. }).catch((res) => {
  30. reject(res);
  31. })
  32. })
  33. }
  34. // 检查登录
  35. function checkLogin(needGetetUserInfo = true) {
  36. let token = store.state.user.token;
  37. if (!token) {
  38. return wxLogin(needGetetUserInfo);
  39. } else {
  40. return Promise.resolve();
  41. }
  42. }
  43. // 检查用户信息
  44. function checkHasUserInfo() {
  45. let userInfo = store.state.user.userInfo;
  46. if (userInfo && JSON.stringify(userInfo) !== '{}') {
  47. return Promise.resolve(userInfo);
  48. } else {
  49. return checkLogin(false).then(() => {
  50. return getUserData();
  51. })
  52. }
  53. }
  54. function setUserInfoByAuth() {
  55. return new Promise((resolve, reject) => {
  56. // if (ing) {
  57. // return;
  58. // }
  59. // ing = true;
  60. // let { userInfo = {} } = store.state.user;
  61. // // 如果已经保存过了
  62. // let nickName = userInfo.nickName;
  63. // if (nickName) {
  64. // ing = false;
  65. // resolve();
  66. // return;
  67. // }
  68. wx.getUserProfile({
  69. desc: '用于完善用户信息',
  70. success: res => {
  71. let detail = res;
  72. wx.login({
  73. success: loginRes => {
  74. // ing = false;
  75. // if (loginRes.code) {
  76. // let params = {
  77. // encryptedData: detail.encryptedData,
  78. // iv: detail.iv,
  79. // jsCode: loginRes.code
  80. // };
  81. // setWxAuthUserInfo(params).then(res => {
  82. // let userInfo = JSON.parse(detail.rawData);
  83. // let cachedInfo = wx.getStorageSync('UserInfo');
  84. // userInfo = {
  85. // ...cachedInfo,
  86. // ...userInfo,
  87. // headImgUrl: userInfo.avatarUrl
  88. // };
  89. // delete userInfo.avatarUrl;
  90. // store.commit('setUserInfo', {
  91. // ...userInfo
  92. // });
  93. // wx.setStorageSync('UserInfo', { ...userInfo });
  94. // resolve(res.data);
  95. // });
  96. // }
  97. },
  98. fail: res => {
  99. // ing = false;
  100. // reject(res);
  101. }
  102. });
  103. },
  104. fail: res => {
  105. // ing = false;
  106. // wx.showToast({
  107. // icon: 'none',
  108. // title: '授权用户公开信息后方可进入下一步操作'
  109. // });
  110. // reject();
  111. }
  112. });
  113. });
  114. }
  115. export {
  116. checkHasUserInfo,
  117. setUserInfoByAuth
  118. }