feat: set the type for registerServer
This commit is contained in:
parent
4edfdad342
commit
5ba7c4d78f
6 changed files with 172 additions and 175 deletions
|
|
@ -1,15 +1,19 @@
|
|||
import { rsaPsw } from '@/utils';
|
||||
import { Button, Checkbox, Form, Input } from 'antd';
|
||||
import { FC, useEffect, useState } from 'react';
|
||||
import { Dispatch, Icon, connect, useNavigate } from 'umi';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { Icon, useDispatch, useNavigate, useSelector } from 'umi';
|
||||
import styles from './index.less';
|
||||
|
||||
interface LoginProps {
|
||||
dispatch: Dispatch;
|
||||
}
|
||||
const View: FC<LoginProps> = ({ dispatch }) => {
|
||||
let navigate = useNavigate();
|
||||
const Login = () => {
|
||||
const [title, setTitle] = useState('login');
|
||||
let navigate = useNavigate();
|
||||
const dispatch = useDispatch();
|
||||
const effectsLoading: any = useSelector<any>( // TODO: Type needs to be improved
|
||||
(state) => state.loading.effects,
|
||||
);
|
||||
|
||||
const signLoading =
|
||||
effectsLoading['loginModel/login'] || effectsLoading['loginModel/register'];
|
||||
|
||||
const changeTitle = () => {
|
||||
setTitle((title) => (title === 'login' ? 'register' : 'login'));
|
||||
|
|
@ -37,17 +41,15 @@ const View: FC<LoginProps> = ({ dispatch }) => {
|
|||
console.info(ret);
|
||||
navigate('/knowledge');
|
||||
} else {
|
||||
dispatch({
|
||||
const ret = await dispatch({
|
||||
type: 'loginModel/register',
|
||||
payload: {
|
||||
nickname: params.nickname,
|
||||
email: params.email,
|
||||
password: rsaPassWord,
|
||||
},
|
||||
callback() {
|
||||
setTitle('login');
|
||||
},
|
||||
});
|
||||
setTitle('login');
|
||||
}
|
||||
} catch (errorInfo) {
|
||||
console.log('Failed:', errorInfo);
|
||||
|
|
@ -133,7 +135,13 @@ const View: FC<LoginProps> = ({ dispatch }) => {
|
|||
</div>
|
||||
)}
|
||||
</div>
|
||||
<Button type="primary" block size="large" onClick={onCheck}>
|
||||
<Button
|
||||
type="primary"
|
||||
block
|
||||
size="large"
|
||||
onClick={onCheck}
|
||||
loading={signLoading}
|
||||
>
|
||||
{title === 'login' ? 'Sign in' : 'Continue'}
|
||||
</Button>
|
||||
{title === 'login' && (
|
||||
|
|
@ -176,6 +184,4 @@ const View: FC<LoginProps> = ({ dispatch }) => {
|
|||
);
|
||||
};
|
||||
|
||||
export default connect(({ loginModel, loading }) => ({ loginModel, loading }))(
|
||||
View,
|
||||
);
|
||||
export default Login;
|
||||
|
|
|
|||
|
|
@ -50,19 +50,15 @@ const model: DvaModel<LoginModelState> = {
|
|||
userInfo: JSON.stringify(userInfo),
|
||||
Token: token,
|
||||
});
|
||||
// setTimeout(() => {
|
||||
// window.location.href = '/file';
|
||||
// }, 300);
|
||||
}
|
||||
return data;
|
||||
},
|
||||
*register({ payload = {}, callback }, { call, put }) {
|
||||
*register({ payload = {} }, { call, put }) {
|
||||
const { data, response } = yield call(userService.register, payload);
|
||||
console.log();
|
||||
const { retcode, data: res, retmsg } = data;
|
||||
if (retcode === 0) {
|
||||
message.success('注册成功!');
|
||||
callback && callback();
|
||||
}
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -19,101 +19,83 @@ const {
|
|||
get_chunk,
|
||||
switch_chunk,
|
||||
rm_chunk,
|
||||
retrieval_test } = api;
|
||||
interface kbService {
|
||||
createKb: () => void;
|
||||
updateKb: () => void;
|
||||
rmKb: () => void;
|
||||
get_kb_detail: () => void;
|
||||
getList: () => void;
|
||||
get_document_list: () => void;
|
||||
document_change_status: () => void;
|
||||
document_rm: () => void;
|
||||
document_create: () => void;
|
||||
document_change_parser: () => void;
|
||||
chunk_list: () => void;
|
||||
create_chunk: () => void;
|
||||
set_chunk: () => void;
|
||||
get_chunk: () => void;
|
||||
switch_chunk: () => void;
|
||||
rm_chunk: () => void;
|
||||
retrieval_test: () => void;
|
||||
}
|
||||
const kbService: kbService = registerServer(
|
||||
{
|
||||
// 知识库管理
|
||||
createKb: {
|
||||
url: create_kb,
|
||||
method: 'post'
|
||||
},
|
||||
updateKb: {
|
||||
url: update_kb,
|
||||
method: 'post'
|
||||
},
|
||||
rmKb: {
|
||||
url: rm_kb,
|
||||
method: 'post'
|
||||
},
|
||||
get_kb_detail: {
|
||||
url: get_kb_detail,
|
||||
method: 'get'
|
||||
},
|
||||
getList: {
|
||||
url: kb_list,
|
||||
method: 'get'
|
||||
},
|
||||
// 文件管理
|
||||
get_document_list: {
|
||||
url: get_document_list,
|
||||
method: 'get'
|
||||
},
|
||||
document_change_status: {
|
||||
url: document_change_status,
|
||||
method: 'post'
|
||||
},
|
||||
document_rm: {
|
||||
url: document_rm,
|
||||
method: 'post'
|
||||
},
|
||||
document_create: {
|
||||
url: document_create,
|
||||
method: 'post'
|
||||
},
|
||||
document_change_parser: {
|
||||
url: document_change_parser,
|
||||
method: 'post'
|
||||
},
|
||||
// chunk管理
|
||||
chunk_list: {
|
||||
url: chunk_list,
|
||||
method: 'post'
|
||||
},
|
||||
create_chunk: {
|
||||
url: create_chunk,
|
||||
method: 'post'
|
||||
},
|
||||
set_chunk: {
|
||||
url: set_chunk,
|
||||
method: 'post'
|
||||
},
|
||||
get_chunk: {
|
||||
url: get_chunk,
|
||||
method: 'get'
|
||||
},
|
||||
switch_chunk: {
|
||||
url: switch_chunk,
|
||||
method: 'post'
|
||||
},
|
||||
rm_chunk: {
|
||||
url: rm_chunk,
|
||||
method: 'post'
|
||||
},
|
||||
retrieval_test: {
|
||||
url: retrieval_test,
|
||||
method: 'post'
|
||||
},
|
||||
retrieval_test,
|
||||
} = api;
|
||||
|
||||
const methods = {
|
||||
// 知识库管理
|
||||
createKb: {
|
||||
url: create_kb,
|
||||
method: 'post',
|
||||
},
|
||||
request
|
||||
);
|
||||
updateKb: {
|
||||
url: update_kb,
|
||||
method: 'post',
|
||||
},
|
||||
rmKb: {
|
||||
url: rm_kb,
|
||||
method: 'post',
|
||||
},
|
||||
get_kb_detail: {
|
||||
url: get_kb_detail,
|
||||
method: 'get',
|
||||
},
|
||||
getList: {
|
||||
url: kb_list,
|
||||
method: 'get',
|
||||
},
|
||||
// 文件管理
|
||||
get_document_list: {
|
||||
url: get_document_list,
|
||||
method: 'get',
|
||||
},
|
||||
document_change_status: {
|
||||
url: document_change_status,
|
||||
method: 'post',
|
||||
},
|
||||
document_rm: {
|
||||
url: document_rm,
|
||||
method: 'post',
|
||||
},
|
||||
document_create: {
|
||||
url: document_create,
|
||||
method: 'post',
|
||||
},
|
||||
document_change_parser: {
|
||||
url: document_change_parser,
|
||||
method: 'post',
|
||||
},
|
||||
// chunk管理
|
||||
chunk_list: {
|
||||
url: chunk_list,
|
||||
method: 'post',
|
||||
},
|
||||
create_chunk: {
|
||||
url: create_chunk,
|
||||
method: 'post',
|
||||
},
|
||||
set_chunk: {
|
||||
url: set_chunk,
|
||||
method: 'post',
|
||||
},
|
||||
get_chunk: {
|
||||
url: get_chunk,
|
||||
method: 'get',
|
||||
},
|
||||
switch_chunk: {
|
||||
url: switch_chunk,
|
||||
method: 'post',
|
||||
},
|
||||
rm_chunk: {
|
||||
url: rm_chunk,
|
||||
method: 'post',
|
||||
},
|
||||
retrieval_test: {
|
||||
url: retrieval_test,
|
||||
method: 'post',
|
||||
},
|
||||
};
|
||||
|
||||
const kbService = registerServer<keyof typeof methods>(methods, request);
|
||||
|
||||
export default kbService;
|
||||
|
|
|
|||
|
|
@ -3,55 +3,61 @@ import registerServer from '@/utils/registerServer';
|
|||
import request from '@/utils/request';
|
||||
|
||||
const {
|
||||
login, register, setting, user_info, tenant_info, factories_list, llm_list, my_llm, set_api_key, set_tenant_info } = api;
|
||||
interface userServiceType {
|
||||
login: (params: any) => void
|
||||
}
|
||||
const userService = registerServer(
|
||||
{
|
||||
login: {
|
||||
url: login,
|
||||
method: 'post',
|
||||
login,
|
||||
register,
|
||||
setting,
|
||||
user_info,
|
||||
tenant_info,
|
||||
factories_list,
|
||||
llm_list,
|
||||
my_llm,
|
||||
set_api_key,
|
||||
set_tenant_info,
|
||||
} = api;
|
||||
|
||||
},
|
||||
register: {
|
||||
url: register,
|
||||
method: 'post'
|
||||
},
|
||||
setting: {
|
||||
url: setting,
|
||||
method: 'post'
|
||||
},
|
||||
user_info: {
|
||||
url: user_info,
|
||||
method: 'get'
|
||||
},
|
||||
get_tenant_info: {
|
||||
url: tenant_info,
|
||||
method: 'get'
|
||||
},
|
||||
set_tenant_info: {
|
||||
url: set_tenant_info,
|
||||
method: 'post'
|
||||
},
|
||||
factories_list: {
|
||||
url: factories_list,
|
||||
method: 'get'
|
||||
},
|
||||
llm_list: {
|
||||
url: llm_list,
|
||||
method: 'get'
|
||||
},
|
||||
my_llm: {
|
||||
url: my_llm,
|
||||
method: 'get'
|
||||
},
|
||||
set_api_key: {
|
||||
url: set_api_key,
|
||||
method: 'post'
|
||||
},
|
||||
const methods = {
|
||||
login: {
|
||||
url: login,
|
||||
method: 'post',
|
||||
},
|
||||
request
|
||||
);
|
||||
register: {
|
||||
url: register,
|
||||
method: 'post',
|
||||
},
|
||||
setting: {
|
||||
url: setting,
|
||||
method: 'post',
|
||||
},
|
||||
user_info: {
|
||||
url: user_info,
|
||||
method: 'get',
|
||||
},
|
||||
get_tenant_info: {
|
||||
url: tenant_info,
|
||||
method: 'get',
|
||||
},
|
||||
set_tenant_info: {
|
||||
url: set_tenant_info,
|
||||
method: 'post',
|
||||
},
|
||||
factories_list: {
|
||||
url: factories_list,
|
||||
method: 'get',
|
||||
},
|
||||
llm_list: {
|
||||
url: llm_list,
|
||||
method: 'get',
|
||||
},
|
||||
my_llm: {
|
||||
url: my_llm,
|
||||
method: 'get',
|
||||
},
|
||||
set_api_key: {
|
||||
url: set_api_key,
|
||||
method: 'post',
|
||||
},
|
||||
} as const;
|
||||
|
||||
const userService = registerServer<keyof typeof methods>(methods, request);
|
||||
|
||||
export default userService;
|
||||
|
|
|
|||
|
|
@ -1,17 +1,24 @@
|
|||
const registerServer = (opt: any, request: any): any => {
|
||||
let server = {};
|
||||
import { RequestMethod } from 'umi-request';
|
||||
|
||||
type Service<T extends string> = Record<T, (params: any) => any>;
|
||||
|
||||
const registerServer = <T extends string>(
|
||||
opt: Record<T, { url: string; method: string }>,
|
||||
request: RequestMethod,
|
||||
) => {
|
||||
const server: Service<T> = {} as Service<T>;
|
||||
for (let key in opt) {
|
||||
server[key] = (params: any) => {
|
||||
server[key] = (params) => {
|
||||
if (opt[key].method === 'post' || opt[key].method === 'POST') {
|
||||
return request(opt[key].url, {
|
||||
method: opt[key].method,
|
||||
data: params
|
||||
data: params,
|
||||
});
|
||||
}
|
||||
|
||||
if (opt[key].method === 'get' || opt[key].method === 'GET') {
|
||||
return request.get(opt[key].url, {
|
||||
params
|
||||
params,
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { message, notification } from 'antd';
|
||||
import { extend } from 'umi-request';
|
||||
import { RequestMethod, extend } from 'umi-request';
|
||||
|
||||
import { Authorization } from '@/constants/authorization';
|
||||
import api from '@/utils/api';
|
||||
|
|
@ -9,7 +9,7 @@ const { login } = api;
|
|||
|
||||
const ABORT_REQUEST_ERR_MESSAGE = 'The user aborted a request.'; // 手动中断请求。errorHandler 抛出的error message
|
||||
|
||||
const retcodeMessage = {
|
||||
const RetcodeMessage = {
|
||||
200: '服务器成功返回请求的数据。',
|
||||
201: '新建或修改数据成功。',
|
||||
202: '一个请求已经进入后台排队(异步任务)。',
|
||||
|
|
@ -26,7 +26,7 @@ const retcodeMessage = {
|
|||
503: '服务不可用,服务器暂时过载或维护。',
|
||||
504: '网关超时。',
|
||||
};
|
||||
type retcode =
|
||||
type ResultCode =
|
||||
| 200
|
||||
| 201
|
||||
| 202
|
||||
|
|
@ -45,7 +45,7 @@ type retcode =
|
|||
/**
|
||||
* 异常处理程序
|
||||
*/
|
||||
interface responseType {
|
||||
interface ResponseType {
|
||||
retcode: number;
|
||||
data: any;
|
||||
retmsg: string;
|
||||
|
|
@ -62,7 +62,7 @@ const errorHandler = (error: {
|
|||
} else {
|
||||
if (response && response.status) {
|
||||
const errorText =
|
||||
retcodeMessage[response.status as retcode] || response.statusText;
|
||||
RetcodeMessage[response.status as ResultCode] || response.statusText;
|
||||
const { status, url } = response;
|
||||
notification.error({
|
||||
message: `请求错误 ${status}: ${url}`,
|
||||
|
|
@ -81,7 +81,7 @@ const errorHandler = (error: {
|
|||
/**
|
||||
* 配置request请求时的默认参数
|
||||
*/
|
||||
const request = extend({
|
||||
const request: RequestMethod = extend({
|
||||
errorHandler, // 默认错误处理
|
||||
timeout: 3000000,
|
||||
getResponse: true,
|
||||
|
|
@ -108,7 +108,7 @@ request.interceptors.request.use((url: string, options: any) => {
|
|||
|
||||
request.interceptors.response.use(async (response: any, request) => {
|
||||
console.log(response, request);
|
||||
const data: responseType = await response.clone().json();
|
||||
const data: ResponseType = await response.clone().json();
|
||||
// response 拦截
|
||||
|
||||
if (data.retcode === 401 || data.retcode === 401) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue