index2.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. import { log } from '@/utils/base.js'
  2. import { get, post } from '@/utils/request.js'
  3. import storage from "@/utils/storage.js"
  4. import modules from './modules/index.js'
  5. import Vue from 'vue'
  6. import Vuex from 'vuex'
  7. import { getOpenid, login,loginByWxCode } from "@/common/api.js"
  8. const key = "cems_"
  9. const KEYS = {
  10. AUTH_TOKEN: `${key}token`,
  11. USER_NAME: `${key}username`,
  12. USER_TYPE: `${key}usertype`,
  13. ORG_ID: `${key}orgid`,
  14. DOC_TITLE: `${key}doctitle`,
  15. OPEN_ID: `${key}openid`,
  16. }
  17. const time = 1000 * 60 * 60 * 24 * 3; //有效期3天
  18. Vue.use(Vuex)
  19. const store = new Vuex.Store({
  20. state: {
  21. token: null,
  22. userInfo: {
  23. name: "",
  24. orgId: "",
  25. userType: "",
  26. },
  27. openid: "",
  28. docTitle: "",
  29. tabbarlist: [],
  30. overNum: 0,
  31. needWxLogin:true
  32. },
  33. getters: {
  34. hasLogin(s) {
  35. return s.token != null
  36. }
  37. },
  38. mutations: {
  39. login(state, user) {
  40. state.token = user.auth;
  41. state.userInfo.name = user.authName;
  42. state.userInfo.userType - user.userType;
  43. state.userInfo.orgId = user.enterpriseId;
  44. state.docTitle = user.loginMsg;
  45. storage.put(KEYS.AUTH_TOKEN, state.token, time)
  46. storage.put(KEYS.USER_NAME, state.userInfo.name, time)
  47. storage.put(KEYS.USER_TYPE, state.userInfo.userType, time)
  48. storage.put(KEYS.ORG_ID, state.userInfo.orgId, time)
  49. storage.put(KEYS.DOC_TITLE, state.docTitle, time)
  50. },
  51. logout(state) {
  52. state.openid = null
  53. state.token = null
  54. storage.remove(KEYS.OPEN_ID)
  55. storage.remove(KEYS.AUTH_TOKEN)
  56. storage.remove(KEYS.USER_NAME)
  57. storage.remove(KEYS.USER_TYPE)
  58. storage.remove(KEYS.ORG_ID)
  59. },
  60. setOpenid(state, openid) {
  61. state.openid = openid
  62. storage.put(KEYS.OPEN_ID, state.openid, time);
  63. },
  64. setToken(state, token) {
  65. state.token = token
  66. storage.put(KEYS.AUTH_TOKEN, state.token, time)
  67. },
  68. init(state) {
  69. state.token = storage.get(KEYS.AUTH_TOKEN)
  70. state.userInfo.name = storage.get(KEYS.USER_NAME)
  71. state.userInfo.userType = storage.get(KEYS.USER_TYPE)
  72. state.userInfo.orgId = storage.get(KEYS.ORG_ID)
  73. state.openid = storage.get(KEYS.OPEN_ID)
  74. state.docTitle = storage.get(KEYS.DOC_TITLE)
  75. },
  76. setOverNum(state, num) {
  77. state.overNum = num;
  78. }
  79. },
  80. actions: {
  81. getUserOpenId: async function({ commit, state }) {
  82. return await new Promise((resolve, reject) => {
  83. // #ifdef H5
  84. resolve("");
  85. // #endif
  86. // #ifndef H5
  87. if (state.openid) {
  88. resolve(state.openid)
  89. } else {
  90. resolve("12343")
  91. // uni.login({
  92. // success: (data) => {
  93. // log(`CODE=======>${data.code}`);
  94. // //resolve("12343")
  95. // getOpenid(data.code).then((res) => {
  96. // log(`openid====>`, res)
  97. // if (res.openid) {
  98. // commit("setOpenid", res
  99. // .openid)
  100. // resolve(res.openid);
  101. // }
  102. // }).catch(err => {
  103. // throw new Error(err);
  104. // })
  105. // },
  106. // fail: (err) => {
  107. // console.log(
  108. // 'uni.login 接口调用失败,将无法正常使用开放接口等服务',
  109. // err)
  110. // reject(err)
  111. // }
  112. // })
  113. }
  114. // #endif
  115. })
  116. },
  117. login2: async function({ commit, dispatch, state }, data) {
  118. return await new Promise((resolve, reject) => {
  119. if (state.openid) {
  120. dispatch("getTokenByOpenid").then((res) => {
  121. resolve(res)
  122. })
  123. } else {
  124. dispatch("getUserOpenId").then((openid) => {
  125. data.openid = openid;
  126. log(`LOGIN_DATA=======>${JSON.stringify(data)}`)
  127. login(data)
  128. .then((res) => {
  129. if (res.code == 0) {
  130. commit("login", res.restluLis);
  131. resolve(res);
  132. } else {
  133. reject(res);
  134. }
  135. }).catch(err => {
  136. reject(err);
  137. })
  138. })
  139. }
  140. });
  141. },
  142. getTokenByOpenid: async function({ commit, state }) {
  143. return await new Promise((resolve, reject) => {
  144. if (state.openid) {
  145. //todo 通过openid 获取 token
  146. log(`通过openid取token====>${state.openid}`);
  147. /* post("", { openid: state.openid }).then((res) => {
  148. log(`OPENID_TOKEN_DATA=======>${JSON.stringify(res)}`)
  149. if(res){
  150. resolve(res);
  151. commit("setToken", res.token);
  152. }else{
  153. reject(res);
  154. }
  155. }) */
  156. resolve(state.openid);
  157. } else {
  158. log("getTokenByOpenid===>state.openid 为空")
  159. reject();
  160. }
  161. });
  162. },
  163. getTokenByWxCode:async function({ commit, state }){
  164. return await new Promise((resolve,reject)=>{
  165. uni.login({
  166. success: (data) => {
  167. log(`CODE=======>${data.code}`);
  168. //resolve("12343")
  169. loginByWxCode({wxcode:data.code}).then((res) => {
  170. log(`result====>`, res)
  171. if (res.code ==0) {
  172. commit("login", res.restluLis);
  173. commit("setOpenid", res.restluLis.wxLoginInfo.openid)
  174. resolve(res);
  175. }
  176. }).catch(err => {
  177. throw new Error(err);
  178. })
  179. },
  180. fail: (err) => {
  181. console.log(
  182. 'uni.login 接口调用失败,将无法正常使用开放接口等服务',
  183. err)
  184. reject(err)
  185. }
  186. })
  187. })
  188. },
  189. getWxCode: async function({ commit, state }){
  190. return await new Promise((resolve,reject)=>{
  191. // #ifdef H5
  192. resolve("");
  193. // #endif
  194. // #ifndef H5
  195. uni.login({
  196. success: (data) => {
  197. log(`CODE=======>${data.code}`);
  198. resolve(data.code)
  199. },
  200. fail: (err) => {
  201. console.log(
  202. 'uni.login 接口调用失败,将无法正常使用开放接口等服务',
  203. err)
  204. reject(err)
  205. }
  206. })
  207. // #endif
  208. })
  209. },
  210. login:async function({ commit, dispatch, state }, data){
  211. return await new Promise((resolve,reject)=>{
  212. dispatch("getWxCode").then((code) => {
  213. if(code){
  214. data.wxcode = code;
  215. }
  216. login(data)
  217. .then((res) => {
  218. if (res.code == 0) {
  219. commit("login", res.restluLis);
  220. resolve(res);
  221. } else {
  222. reject(res);
  223. }
  224. }).catch(err => {
  225. reject(err);
  226. })
  227. })
  228. })
  229. }
  230. },
  231. modules: { ...modules }
  232. })
  233. export default store;