// import { makeAutoObservable } from 'mobx'; import { message } from 'antd'; // import { apis, LoginApiParams } from '@/apis'; // import LocalStorage from '@/LocalStorage'; // import router from '@/router'; import { State, ReadonlyState, StateAction, LoginStore } from './types'; import { useState } from 'react' // 定义状态 const stateGenerator = (): ReadonlyState => ({ buttonLoading: false, tenantEnabled: true, tenantEnabledList: [], captchaData: { uuid: '', img: '' } }); // 修改状态 const stateActionsGenerator = (state: State): StateAction => { return { setButtonLoading: (loading) => { state.buttonLoading = loading; }, setCaptchaData: (data: any) => { state.captchaData = data }, setTenantEnabled: (data: any) => { state.tenantEnabled = data.tenantEnabled state.tenantEnabledList = data.voList.map((item: any) => { return { value: item.tenantId, label: item.companyName, domain: item.domain, } }) } }; }; // 使用仓库 const useLoginStore = (): any => { // const state = makeAutoObservable(stateGenerator()); // const actions = stateActionsGenerator(state); // const api = { // // 登录 // login: async (data: LoginApiParams, remember: boolean) => { // actions.setButtonLoading(true); // try { // const res = await apis.login({ // ...data, // }); // const info = res.data; // if (remember) {// 记住密码 // LocalStorage.setAccountPassword({ // account: data.username, // password: data.password, // }); // } else {// 不记住密码 // LocalStorage.setAccountPassword(undefined); // } // // 首次登陆,重置菜单类型 // LocalStorage.setMenuType(1); // LocalStorage.setToken(info.access_token); // // 获取用户详细信息(permissions,role, user) // const resuser = await apis.fetchUserInfo(); // console.log('resUserInfo',resuser) // if (resuser.code === 200) { // const resUserInfo = resuser.data; // LocalStorage.setPermissions(resUserInfo.permissions); // LocalStorage.setUserInfo({ // id: resUserInfo.user.userId, // name: resUserInfo.user.nickName, // tenantId: resUserInfo.user.tenantId, // }); // // LocalStorage.setRoles(resUserInfo.roles); // // if (!LocalStorage.getStatusFlag('deepseek:application:list') && // // !LocalStorage.getStatusFlag('deepseek:knowledge:list') && // // !LocalStorage.getStatusFlag('deepseek:dialog:list') && // // !LocalStorage.getStatusFlag('system:audit:list')) { // // message.error('权限不足,请联系管理员'); // // LocalStorage.clear(); // // router.navigate({ pathname: '/login' }, { replace: true }); // // return; // // } // // if (LocalStorage.getStatusFlag('/')) { // router.navigate({ pathname: '/' }, { replace: true }); // // } else { // // router.navigate({ pathname: '/404' }, { replace: true }); // // } // message.success('登录成功'); // } // } catch (error: any) { // LocalStorage.clear(); // message.error(error.msg); // api.captchaImage() // } finally { // actions.setButtonLoading(false); // } // }, // // 验证码 // captchaImage: async () => { // console.log('验证码图片加载') // try { // const res = await apis.captchaImage(); // actions.setCaptchaData(res?.data || {}); // return res; // } catch (error: any) { // console.log('error', error) // message.error(error); // } // } // } // // 点击登录 // const onClickLogin: LoginStore['onClickLogin'] = async (data, remember) => { // // 登录 // await api.login(data, remember); // } // // 切换验证码 // const onCaptchaImage = async () => { // await api.captchaImage(); // } // // 初始渲染 // const init: LoginStore['init'] = async (form) => { // api.captchaImage(); // const res = await apis.getTenantList(false) // console.log('res----', res.data) // if (res.data.tenantEnabled) { // actions.setTenantEnabled(res.data) // form.setFieldsValue({ // tenantId: res.data?.tenantEnabled ? res.data?.voList[0].tenantId : null, // }); // } // const accountPassword = LocalStorage.getAccountPassword(); // if (accountPassword) { // form.setFieldsValue({ // account: accountPassword.account, // password: accountPassword.password, // remember: true, // tenantId: res.data?.tenantEnabled ? res.data?.voList[0].tenantId : null, // }); // } // } // // 状态重置 // const reset: LoginStore['reset'] = () => { // const initialButtonLoading = stateGenerator().buttonLoading; // actions.setButtonLoading(initialButtonLoading); // } return { // state, // onClickLogin, // onCaptchaImage, // init, // reset }; }; export default useLoginStore();