user.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. import config from '@/config'
  2. import storage from '@/utils/storage'
  3. import constant from '@/utils/constant'
  4. import { getweChatLogin, logout, getInfo,login } from '@/api/login'
  5. import { getToken, setToken, removeToken } from '@/utils/auth'
  6. import { toast, showConfirm, tansParams } from '@/utils/common'
  7. const baseUrl = config.baseUrl
  8. const Clientid = config.Clientid
  9. const user = {
  10. state: {
  11. token: getToken(),
  12. name: storage.get(constant.name),
  13. phonenumber: storage.get(constant.phonenumber),
  14. deptId: storage.get(constant.deptId),
  15. schoolId: storage.get(constant.schoolId),
  16. schoolName: storage.get(constant.schoolName),
  17. openId: storage.get(constant.openId),
  18. deptName: storage.get(constant.deptName),
  19. avatar: storage.get(constant.avatar),
  20. roles: storage.get(constant.roles),
  21. userroles: storage.get(constant.userroles),
  22. choseroles: storage.get(constant.choseroles),
  23. permissions: storage.get(constant.permissions),
  24. userId:storage.get(constant.userId),
  25. tenantId:storage.get(constant.tenantId),
  26. student:storage.get(constant.student),
  27. teacherClass:storage.get(constant.teacherClass),
  28. shareflag: false,
  29. shaflag:false,
  30. sharetit: '',
  31. sharedesc: '',
  32. sharelink: '',
  33. shareimg: '',
  34. refreshflag:storage.get(constant.refreshflag),
  35. scorknow:storage.get(constant.scorknow),
  36. autologin:storage.get(constant.autologin),
  37. },
  38. mutations: {
  39. share:(state, provider)=>{
  40. state.shareflag = provider[0].shareflag;
  41. state.shaflag = provider[0].shaflag;
  42. state.sharetit = provider[0].sharetit;
  43. state.sharedesc = provider[0].sharedesc;
  44. state.sharelink = provider[0].sharelink;
  45. state.shareimg = provider[0].shareimg;
  46. },
  47. SET_TOKEN: (state, token) => {
  48. state.token = token
  49. },
  50. SET_NAME: (state, name) => {
  51. state.name = name
  52. storage.set(constant.name, name)
  53. },
  54. SET_PHONENUMBER: (state, phonenumber) => {
  55. state.phonenumber = phonenumber
  56. storage.set(constant.phonenumber, phonenumber)
  57. },
  58. SET_DEPTID: (state, deptId) => {
  59. state.deptId = deptId
  60. storage.set(constant.deptId, deptId)
  61. },
  62. SET_OPENID: (state, openId) => {
  63. state.openId = openId
  64. storage.set(constant.openId, openId)
  65. },
  66. SET_SCHOOLID: (state, schoolId) => {
  67. state.schoolId = schoolId
  68. storage.set(constant.schoolId, schoolId)
  69. },
  70. SET_SCHOOLNAME: (state, schoolName) => {
  71. state.schoolName = schoolName
  72. storage.set(constant.schoolName, schoolName)
  73. },
  74. SET_DEPNAME: (state, deptName) => {
  75. state.deptName = deptName
  76. storage.set(constant.deptName, deptName)
  77. },
  78. SET_AVATAR: (state, avatar) => {
  79. state.avatar = avatar
  80. storage.set(constant.avatar, avatar)
  81. },
  82. SET_ROLES: (state, roles) => {
  83. state.roles = roles
  84. storage.set(constant.roles, roles)
  85. },
  86. SET_USERROLES: (state, userroles) => {
  87. state.userroles = userroles
  88. storage.set(constant.userroles, userroles)
  89. },
  90. SET_CHOSEROLES: (state, choseroles) => {
  91. state.choseroles = choseroles
  92. storage.set(constant.choseroles, choseroles)
  93. },
  94. SET_PERMISSIONS: (state, permissions) => {
  95. state.permissions = permissions
  96. storage.set(constant.permissions, permissions)
  97. },
  98. SET_USERID: (state, userId) => {
  99. state.userId = userId
  100. storage.set(constant.userId, userId)
  101. },
  102. SET_TENANID: (state, tenantId) => {
  103. state.tenantId = tenantId
  104. storage.set(constant.tenantId, tenantId)
  105. },
  106. SET_STUDENT: (state, student) => {
  107. state.student = student
  108. storage.set(constant.student, student)
  109. },
  110. SET_TEACHERCLASS: (state, teacherClass) => {
  111. state.teacherClass = teacherClass
  112. storage.set(constant.teacherClass, teacherClass)
  113. },
  114. SET_REFRESH: (state, refreshflag) => {
  115. state.refreshflag = refreshflag
  116. storage.set(constant.refreshflag, refreshflag)
  117. },
  118. SET_SCOREKNOW: (state, scorknow) => {
  119. state.scorknow = scorknow
  120. storage.set(constant.scorknow, scorknow)
  121. },
  122. SET_AUTOLOGIN: (state, autologin) => {
  123. state.autologin = autologin
  124. storage.set(constant.autologin, autologin)
  125. },
  126. },
  127. actions: {
  128. //修改存储的角色 权限
  129. checkRole({commit},data){
  130. var roles=data
  131. commit('SET_PERMISSIONS', roles.permissions)
  132. commit('SET_CHOSEROLES', roles.roleKey)
  133. },
  134. checkClass({commit},data){
  135. var roles=data
  136. commit('SET_SCHOOLID', roles.schoolId)
  137. commit('SET_SCHOOLNAME', roles.schoolName)
  138. },
  139. // 刷新问题
  140. checkRefresh({commit},data){
  141. commit('SET_REFRESH', data)
  142. },
  143. //下载示例
  144. checkKnow({commit},data){
  145. commit('SET_SCOREKNOW', data)
  146. },
  147. // 微信登录
  148. Login({ commit }, userInfo) {
  149. const iv = userInfo.iv
  150. const encryptedData = userInfo.encryptedData
  151. const code = userInfo.code
  152. const tenantId = userInfo.tenantId
  153. // const uuid = userInfo.uuid
  154. return new Promise((resolve, reject) => {
  155. var params={
  156. iv: iv,
  157. encryptedData: encryptedData,
  158. code : code,
  159. tenantId : tenantId,
  160. }
  161. getweChatLogin(params).then(res => {
  162. setToken(res.data.access_token)
  163. commit('SET_TOKEN', res.data.access_token)
  164. // commit('SET_SCOREKNOW', 0)
  165. resolve()
  166. }).catch(error => {
  167. reject(error)
  168. })
  169. })
  170. },
  171. // 登录
  172. Logines({ commit }, userInfo) {
  173. const username = userInfo.username.trim()
  174. const password = userInfo.password
  175. const code = userInfo.code
  176. const uuid = userInfo.uuid
  177. const tenantId = userInfo.tenantId
  178. // const clientId = 'e5cd7e4891bf95d1d19206ce24a7b32e'
  179. const strfrom = userInfo.strfrom||""
  180. const clientId = Clientid
  181. const grantType = 'password'
  182. return new Promise((resolve, reject) => {
  183. login(username, password, code, uuid,tenantId,clientId,grantType).then(res => {
  184. setToken(res.data.access_token)
  185. commit('SET_TOKEN', res.data.access_token)
  186. commit('SET_AUTOLOGIN',true)
  187. resolve()
  188. }).catch(error => {
  189. console.log(error,strfrom,123)
  190. if(error==500&&strfrom=='request'){
  191. uni.hideLoading()
  192. // 清空数据
  193. uni.showModal({
  194. title: '提示',
  195. content: '登录状态已过期,您可以继续留在该页面,或者重新登录?',
  196. cancelText: '取消',
  197. confirmText: '确定',
  198. success: function(res) {
  199. if (res.confirm) {
  200. commit('SET_TOKEN', '')
  201. commit('SET_ROLES', [])
  202. commit('SET_PERMISSIONS', [])
  203. removeToken()
  204. storage.clean()
  205. uni.reLaunch({ url: '/pages/login' })
  206. }else{
  207. commit('SET_AUTOLOGIN',false)
  208. }
  209. }
  210. })
  211. }
  212. reject(error)
  213. })
  214. })
  215. },
  216. // 获取用户信息
  217. GetInfo({ commit, state }) {
  218. return new Promise((resolve, reject) => {
  219. getInfo().then(resd => {
  220. const res = resd.data
  221. const user = res.user
  222. // const avatar = (user == null || user.avatar == "" || user.avatar == null) ? require("@/static/images/profile.png") : baseUrl + user.avatar
  223. const avatar = (user == null || user.avatar == "" || user.avatar == null) ? '' : user.avatar
  224. const username = (user == null || user.nickName == "" || user.nickName == null) ? "" : user.nickName
  225. const userId = (user == null || user.userId == "" || user.userId == null) ? "" : user.userId
  226. const tenantId = (user == null || user.tenantId == "" || user.tenantId == null) ? "" : user.tenantId
  227. const phonenumber = (user == null || user.phonenumber == "" || user.phonenumber == null) ? "" : user.phonenumber
  228. const deptId = (user == null || user.deptId == "" || user.deptId == null) ? "" : user.deptId
  229. const openId = (user == null || user.openId == "" || user.openId == null) ? "" : user.openId
  230. const deptName = (user == null || user.dept == "" || user.dept == null||user.dept.deptName==''||user.dept.deptName==null) ? "" : user.dept.deptName
  231. if (res.roles && res.roles.length > 0) {
  232. commit('SET_ROLES', res.roles)
  233. commit('SET_PERMISSIONS', res.permissions)
  234. if(res.roles.length==1){
  235. commit('SET_CHOSEROLES', res.roles)
  236. }
  237. } else {
  238. commit('SET_ROLES', ['ROLE_DEFAULT'])
  239. }
  240. // 根据角色来储存权限
  241. if (res.user.roles && res.user.roles.length > 0) {
  242. var newArr=[];
  243. var schoolId=res.schoolId;
  244. var schoolName='';
  245. newArr = res.user.roles.map(v => {
  246. if(v.roleKey=='teacher'&&res.user.teacherClass&&res.user.teacherClass.length){
  247. schoolId=res.user.teacherClass[0].schoolId
  248. schoolName=res.user.teacherClass[0].schoolName
  249. }
  250. return {
  251. roleKey: v.roleKey,
  252. permissions: v.permissions
  253. }
  254. })
  255. commit('SET_SCHOOLID', schoolId)
  256. commit('SET_SCHOOLNAME', schoolName)
  257. commit('SET_USERROLES', newArr)
  258. } else {
  259. commit('SET_USERROLES', ['ROLE_DEFAULT'])
  260. }
  261. commit('SET_NAME', username)
  262. commit('SET_USERID', userId)
  263. commit('SET_TENANID', tenantId)
  264. commit('SET_PHONENUMBER', phonenumber)
  265. commit('SET_DEPTID', deptId)
  266. commit('SET_OPENID', openId)
  267. commit('SET_DEPNAME', deptName)
  268. commit('SET_AVATAR', avatar)
  269. resolve(resd)
  270. }).catch(error => {
  271. reject(error)
  272. })
  273. })
  274. },
  275. // 用户列表信息获取用户信息
  276. GetInforoles({ commit, state }) {
  277. return new Promise((resolve, reject) => {
  278. getInfo().then(resd => {
  279. var res=resd.data;
  280. // 判断和存储的是否一样 不一样重新存
  281. var choseroles=state.choseroles;
  282. var roles=state.roles;
  283. var user = res.roles;
  284. // 塞老师 孩子信息
  285. if(res.user.parentsStudent&&res.user.parentsStudent.length>0){
  286. commit('SET_STUDENT', res.user.parentsStudent)
  287. }
  288. if(res.user.teacherClass&&res.user.teacherClass.length>0){
  289. // 碰到一样去重
  290. var teacherClass=res.user.teacherClass;
  291. var newArrs = [];
  292. const map = new Map();
  293. newArrs = teacherClass.filter(v => !map.has(v.classId) && map.set(v.classId, 1));
  294. commit('SET_TEACHERCLASS',newArrs)
  295. }
  296. // 需要完善信息
  297. var userType=res.userType;
  298. if(userType=='register'){
  299. // 必须完信息
  300. showConfirm('您还未选择角色,请去完善信息').then(ress => {
  301. if(ress.confirm) {
  302. uni.navigateTo('/mine/pages/mine/roles')
  303. resolve()
  304. return
  305. }
  306. })
  307. return
  308. }
  309. if(JSON.stringify(roles.sort()) === JSON.stringify(user.sort())){
  310. }else{
  311. // 必须退出
  312. showConfirm('身份角色有更新,请退出重新登录,避免身份切换错误').then(ress => {
  313. if (ress.confirm) {
  314. commit('SET_TOKEN', '')
  315. commit('SET_ROLES', [])
  316. // commit('SET_SCOREKNOW', '')
  317. commit('SET_PERMISSIONS', [])
  318. removeToken()
  319. storage.clean()
  320. uni.reLaunch({ url: '/pages/login' })
  321. resolve()
  322. return
  323. }
  324. })
  325. }
  326. resolve(resd)
  327. }).catch(error => {
  328. reject(error)
  329. })
  330. })
  331. },
  332. // 退出系统
  333. LogOut({ commit, state }) {
  334. return new Promise((resolve, reject) => {
  335. logout(state.token).then(() => {
  336. commit('SET_TOKEN', '')
  337. // commit('SET_SCOREKNOW', '')
  338. commit('SET_ROLES', [])
  339. commit('SET_PERMISSIONS', [])
  340. removeToken()
  341. storage.clean()
  342. resolve()
  343. }).catch(error => {
  344. reject(error)
  345. })
  346. })
  347. }
  348. }
  349. }
  350. export default user