index.uts 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. import {globalConfig} from '@/config';
  2. import storage from '@/utils/storage';
  3. import {constant} from '@/utils/constant';
  4. import { login, logout, getInfo } from '@/api/login';
  5. import { getToken, setToken, removeToken, setCurrentUserSync, setCurrentUserNameSync } from '@/utils/auth';
  6. import profileImg from '@/static/images/profile.jpg';
  7. type State = {
  8. token: string,
  9. name: string,
  10. username: string,
  11. avatar: string,
  12. roles: string[],
  13. permissions: string[],
  14. }
  15. const tokenValue = getToken() ??'' as string;
  16. console.log('Token value:', tokenValue);
  17. const nameValue = storage.get(constant.name)??'' as string;
  18. console.log('Name value:', nameValue);
  19. const usernameValue = storage.get(constant.username)??'' as string;
  20. console.log('UserName value:', usernameValue);
  21. const avatarValue = storage.get(constant.avatar)??'' as string;
  22. console.log('Avatar value:', avatarValue);
  23. const rolesValue = storage.get(constant.roles)?? [] as string[];
  24. console.log('Roles value:', rolesValue);
  25. const permissionsValue = storage.get(constant.permissions)?? [] as string[];
  26. console.log('Permissions value:', permissionsValue);
  27. export const state = reactive({
  28. token: tokenValue,
  29. name: nameValue as string,
  30. username: usernameValue as string,
  31. avatar: avatarValue as string,
  32. roles: rolesValue as string[],
  33. permissions: permissionsValue as string[]
  34. } as State)
  35. export const SetToken=(token: string)=>{
  36. state.token = token;
  37. setToken(token)
  38. }
  39. export const SetCurrentUser=(username: string)=>{
  40. state.username = username;
  41. setCurrentUserNameSync(username)
  42. }
  43. export const SetUserName=(name: string)=>{
  44. state.name = name;
  45. setCurrentUserSync(name)
  46. }
  47. export const cleanAll=()=>{
  48. uni.removeStorageSync('storage_data')
  49. }
  50. export const SetAvatar=(avatar: string)=> {
  51. state.avatar = avatar;
  52. storage.set(constant.avatar, avatar);
  53. }
  54. export const SetRoles=(roles: string[])=>{
  55. state.roles = roles;
  56. storage.set(constant.roles, roles);
  57. }
  58. export const SetPermissions=(permissions: string[]) =>{
  59. state.permissions = permissions;
  60. storage.set(constant.permissions, permissions);
  61. }
  62. // 登录
  63. export const Login=(userInfo:UTSJSONObject):Promise<void>=> {
  64. const username:string = (userInfo.getString("username") as string).trim() as string;
  65. const password:string = userInfo.getString("password") as string;
  66. const code:string = userInfo.getString("code") as string;
  67. const uuid:string = userInfo.getString("uuid") as string;
  68. return new Promise((resolve, reject) => {
  69. login(username, password, code, uuid).then((res:UTSJSONObject) => {
  70. //SetToken(res.getString("token") as string);
  71. let msg = res.getString("errMsg")
  72. let data = res.getArray("data") as UTSJSONObject[]
  73. if(msg == 'ok' && data.length>0){
  74. SetToken(data[0].getString("token") as string)
  75. SetUserName(data[0].getString("name") as string)
  76. SetCurrentUser(username)
  77. resolve()
  78. }else{
  79. reject('登录失败,账户或密码不匹配!')
  80. }
  81. })
  82. })
  83. }
  84. // 获取用户信息
  85. export const GetInfo=():Promise<UTSJSONObject>=> {
  86. return new Promise((resolve, reject) => {
  87. getInfo().then((res:UTSJSONObject) => {
  88. console.log(res)
  89. let avatar:string=profileImg as string
  90. let username:string="" as string
  91. let name:string="" as string
  92. let roles=[] as string[]
  93. const resMap=res.toMap() as Map<string,any>
  94. if(resMap.has("data")){
  95. const data:UTSJSONObject[]|null = resMap?.get("data") as UTSJSONObject[] ?? null;
  96. if(data!=null && data.length>0){
  97. const user = data?.[0] as UTSJSONObject
  98. const userMap=user.toMap() as Map<string,any>
  99. console.log(userMap)
  100. if(userMap.has("avatar")&&user.getString("avatar")!=null&&user.getString("avatar")!=""){
  101. avatar=globalConfig.baseUrl + user.getString("avatar") as string
  102. }
  103. if(userMap.has("username")&&user.getString("username")!=null&&user.getString("username")!=""){
  104. username= user.getString("username") as string
  105. }
  106. if(userMap.has("name")&&user.getString("name")!=null&&user.getString("name")!=""){
  107. name= user.getString("name") as string
  108. }
  109. if(userMap.has("role") &&user.getString("role")!=null&&user.getString("role")!=""){
  110. roles.push(user.getString("role") as string)
  111. }
  112. }
  113. }
  114. if(resMap.has("roles")){
  115. roles=res.getArray<string>("roles") as string[]
  116. if(roles.length>0){
  117. let permissions=[] as string[]
  118. if(resMap.has("permissions")){
  119. permissions=res.getArray<string>("permissions") as string[]
  120. }
  121. SetPermissions?.(permissions);
  122. }
  123. }
  124. SetRoles?.(roles)
  125. SetUserName?.(name);
  126. SetCurrentUser?.(username);
  127. SetAvatar?.(avatar);
  128. resolve(res)
  129. })
  130. })
  131. }
  132. // 退出系统
  133. export const LogOut=():Promise<UTSJSONObject>=> {
  134. return new Promise<UTSJSONObject>((resolve, reject) => {
  135. console.log(state.token)
  136. logout(state.token).then(() => {
  137. SetToken('');
  138. SetRoles([]);
  139. SetCurrentUser('');
  140. SetUserName('');
  141. SetPermissions([]);
  142. removeToken();
  143. cleanAll();
  144. resolve({});
  145. })
  146. })
  147. }