user.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { defineStore } from 'pinia'
  2. import { ref } from 'vue'
  3. import { Base64 } from 'js-base64'
  4. import defHead from '@img/icons/turnk_number_head.png'
  5. interface TUser extends Token认证用户实体 {
  6. /** 令牌 */
  7. token?: string
  8. /** 组织机构id */
  9. orgId?: string
  10. /** 角色id */
  11. roleId?: string
  12. /** 请求时携带的标识符 */
  13. Identifier?: string
  14. mobileDes?: string
  15. }
  16. const service = 'miniprogram'
  17. const initState = {
  18. Identifier: Base64.encode(service + ':org:user:role'),
  19. }
  20. const useUserStore = defineStore(
  21. 'user',
  22. () => {
  23. const userInfo = ref<TUser>({ ...initState })
  24. const isLogined = computed(() => !!userInfo.value.token)
  25. /** 初始化用户信息 */
  26. const initUserInfo = (val: Token认证返回实体) => {
  27. const data = { ...val.user }
  28. delete data.authorities
  29. if (!data.head_url) {
  30. data.head_url = defHead
  31. }
  32. userInfo.value = data
  33. userInfo.value.mobileDes = func.convert.mobileDes(data.mobile)
  34. if (store.common.data.mockScenes === config.common.mockScenes.examine) {
  35. userInfo.value.mobileDes = ''
  36. }
  37. userInfo.value.token = val.access_token
  38. userInfo.value.orgId = val.user.authorities[0].orgId
  39. userInfo.value.roleId = val.user.authorities[0].roles[0].roleId
  40. userInfo.value.Identifier = Base64.encode(
  41. `${service}:${userInfo.value.orgId}:${userInfo.value.user_id}:${userInfo.value.roleId}`,
  42. )
  43. }
  44. /** 设置部分用户信息 */
  45. const setUserInfo = (ui: User对象) => {
  46. if (ui.userName) {
  47. userInfo.value.user_name = ui.userName
  48. }
  49. if (ui.headUrl) {
  50. userInfo.value.head_url = ui.headUrl
  51. }
  52. }
  53. const clearUserInfo = (type = 0) => {
  54. userInfo.value = { ...initState }
  55. ay.goLogin(type)
  56. }
  57. const Authorization = computed(() => {
  58. if (isLogined.value) {
  59. return 'Bearer ' + userInfo.value.token
  60. } else {
  61. return 'Basic ' + Base64.encode(service + ':123456')
  62. }
  63. })
  64. return {
  65. userInfo,
  66. initUserInfo,
  67. setUserInfo,
  68. /** 清理身份信息-跳登录页面
  69. * @parmas type 0:手机号快捷 1:账号、密码
  70. */
  71. clearUserInfo,
  72. /** 已登录 */
  73. isLogined,
  74. /** 授权信息 */
  75. Authorization,
  76. /** 小程序类型标识 */
  77. service,
  78. }
  79. },
  80. {
  81. persist: true,
  82. },
  83. )
  84. export default useUserStore