store.tsx 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. // import { makeAutoObservable } from 'mobx';
  2. import { message } from 'antd';
  3. // import { apis, LoginApiParams } from '@/apis';
  4. // import LocalStorage from '@/LocalStorage';
  5. // import router from '@/router';
  6. import { State, ReadonlyState, StateAction, LoginStore } from './types';
  7. import { useState } from 'react'
  8. // 定义状态
  9. const stateGenerator = (): ReadonlyState => ({
  10. buttonLoading: false,
  11. tenantEnabled: true,
  12. tenantEnabledList: [],
  13. captchaData: {
  14. uuid: '',
  15. img: ''
  16. }
  17. });
  18. // 修改状态
  19. const stateActionsGenerator = (state: State): StateAction => {
  20. return {
  21. setButtonLoading: (loading) => {
  22. state.buttonLoading = loading;
  23. },
  24. setCaptchaData: (data: any) => {
  25. state.captchaData = data
  26. },
  27. setTenantEnabled: (data: any) => {
  28. state.tenantEnabled = data.tenantEnabled
  29. state.tenantEnabledList = data.voList.map((item: any) => {
  30. return {
  31. value: item.tenantId,
  32. label: item.companyName,
  33. domain: item.domain,
  34. }
  35. })
  36. }
  37. };
  38. };
  39. // 使用仓库
  40. const useLoginStore = (): any => {
  41. // const state = makeAutoObservable(stateGenerator());
  42. // const actions = stateActionsGenerator(state);
  43. // const api = {
  44. // // 登录
  45. // login: async (data: LoginApiParams, remember: boolean) => {
  46. // actions.setButtonLoading(true);
  47. // try {
  48. // const res = await apis.login({
  49. // ...data,
  50. // });
  51. // const info = res.data;
  52. // if (remember) {// 记住密码
  53. // LocalStorage.setAccountPassword({
  54. // account: data.username,
  55. // password: data.password,
  56. // });
  57. // } else {// 不记住密码
  58. // LocalStorage.setAccountPassword(undefined);
  59. // }
  60. // // 首次登陆,重置菜单类型
  61. // LocalStorage.setMenuType(1);
  62. // LocalStorage.setToken(info.access_token);
  63. // // 获取用户详细信息(permissions,role, user)
  64. // const resuser = await apis.fetchUserInfo();
  65. // console.log('resUserInfo',resuser)
  66. // if (resuser.code === 200) {
  67. // const resUserInfo = resuser.data;
  68. // LocalStorage.setPermissions(resUserInfo.permissions);
  69. // LocalStorage.setUserInfo({
  70. // id: resUserInfo.user.userId,
  71. // name: resUserInfo.user.nickName,
  72. // tenantId: resUserInfo.user.tenantId,
  73. // });
  74. // // LocalStorage.setRoles(resUserInfo.roles);
  75. // // if (!LocalStorage.getStatusFlag('deepseek:application:list') &&
  76. // // !LocalStorage.getStatusFlag('deepseek:knowledge:list') &&
  77. // // !LocalStorage.getStatusFlag('deepseek:dialog:list') &&
  78. // // !LocalStorage.getStatusFlag('system:audit:list')) {
  79. // // message.error('权限不足,请联系管理员');
  80. // // LocalStorage.clear();
  81. // // router.navigate({ pathname: '/login' }, { replace: true });
  82. // // return;
  83. // // }
  84. // // if (LocalStorage.getStatusFlag('/')) {
  85. // router.navigate({ pathname: '/' }, { replace: true });
  86. // // } else {
  87. // // router.navigate({ pathname: '/404' }, { replace: true });
  88. // // }
  89. // message.success('登录成功');
  90. // }
  91. // } catch (error: any) {
  92. // LocalStorage.clear();
  93. // message.error(error.msg);
  94. // api.captchaImage()
  95. // } finally {
  96. // actions.setButtonLoading(false);
  97. // }
  98. // },
  99. // // 验证码
  100. // captchaImage: async () => {
  101. // console.log('验证码图片加载')
  102. // try {
  103. // const res = await apis.captchaImage();
  104. // actions.setCaptchaData(res?.data || {});
  105. // return res;
  106. // } catch (error: any) {
  107. // console.log('error', error)
  108. // message.error(error);
  109. // }
  110. // }
  111. // }
  112. // // 点击登录
  113. // const onClickLogin: LoginStore['onClickLogin'] = async (data, remember) => {
  114. // // 登录
  115. // await api.login(data, remember);
  116. // }
  117. // // 切换验证码
  118. // const onCaptchaImage = async () => {
  119. // await api.captchaImage();
  120. // }
  121. // // 初始渲染
  122. // const init: LoginStore['init'] = async (form) => {
  123. // api.captchaImage();
  124. // const res = await apis.getTenantList(false)
  125. // console.log('res----', res.data)
  126. // if (res.data.tenantEnabled) {
  127. // actions.setTenantEnabled(res.data)
  128. // form.setFieldsValue({
  129. // tenantId: res.data?.tenantEnabled ? res.data?.voList[0].tenantId : null,
  130. // });
  131. // }
  132. // const accountPassword = LocalStorage.getAccountPassword();
  133. // if (accountPassword) {
  134. // form.setFieldsValue({
  135. // account: accountPassword.account,
  136. // password: accountPassword.password,
  137. // remember: true,
  138. // tenantId: res.data?.tenantEnabled ? res.data?.voList[0].tenantId : null,
  139. // });
  140. // }
  141. // }
  142. // // 状态重置
  143. // const reset: LoginStore['reset'] = () => {
  144. // const initialButtonLoading = stateGenerator().buttonLoading;
  145. // actions.setButtonLoading(initialButtonLoading);
  146. // }
  147. return {
  148. // state,
  149. // onClickLogin,
  150. // onCaptchaImage,
  151. // init,
  152. // reset
  153. };
  154. };
  155. export default useLoginStore();