提交 d53f1387 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 6b5fa412
import { useState, useEffect } from 'react';
import { Table } from 'antd';
export default function AppList(props) {
const { remote = {}, filters = [], ...reset } = props;
const [data, setData] = useState({ total: 0, list: [] });
const [page, setPage] = useState({ current: 1, pageSize: 10 });
// 分页配置
const pagination = {
total: 100,
showSizeChanger: true,
showQuickJumper: true,
showTotal: (total) => `共${total}条数据`,
onChange: handlePageChange,
};
// 获取列表数据
async function fetchList() {
let { httpRequest, beforeRequest, callback, params } = remote;
if (!httpRequest) return;
if (beforeRequest) {
params = beforeRequest(params);
}
const res = await httpRequest(params);
const { list = [], total = 0 } = callback ? callback(res.data, params) : res.data || {};
setData({ list, total });
}
// 筛选
async function handleSearch() {
setPage({ ...page, current: 1 });
await fetchList();
}
// 重置
async function handleReset() {
// 清空筛选条件
setPage({ ...page, current: 1 });
await fetchList();
}
// 刷新
async function handleRefresh() {
await fetchList();
}
// 分页改变
async function handlePageChange(current, pageSize) {
setPage({ current, pageSize });
await handleRefresh();
}
// useEffect(async () => {
// const res = await fetchList(remote);
// setDataSource(res.data.list || []);
// }, []);
return <Table bordered dataSource={data.list} pagination={pagination} {...reset}></Table>;
}
import axios from '@/utils/axios';
// 获取意见反馈列表
export function getList(data) {
return axios.post('/api/system/proposal/getList', data);
}
import axios from 'axios';
import md5 from 'js-md5';
import qs from 'qs';
import { Modal, notification } from 'antd';
function getToken() {
return window.localStorage.getItem('kiwi.token') ? window.localStorage.getItem('kiwi.token') : '';
}
function showLoginModal() {
Modal.warning({
title: '登录状态已过期,请重新登录',
onOk() {
localStorage.removeItem('kiwi.gpt.token');
location.href = '/user/login';
},
});
}
// 排序
function alphabeticalSort(a, b) {
return a.localeCompare(b);
}
const httpRequest = axios.create({
// timeout: 60000,
withCredentials: true,
});
// 请求拦截器
httpRequest.interceptors.request.use(
(config) => {
const token = getToken();
// 应用设置
const appId = 'TzEU5jPk2tu80266';
const appSecret = '0a006048a4480481b18fef1405120b83';
const timestamp = Math.floor(Date.now() / 1000);
const signData = {
...config.data,
appId,
appSecret,
timestamp,
token,
url: config.url,
};
const signStr = qs.stringify(signData, { sort: alphabeticalSort });
const salt = '&4F6g4Y6b5L4R9';
const sign = md5(md5(signStr + salt));
const defaultHeaders = {
Authorization: token,
AppId: appId,
AppSecret: appSecret,
Timestamp: timestamp,
Sign: sign,
};
config.headers = { ...config.headers, ...defaultHeaders };
return config;
},
(error) => {
return Promise.reject(error);
},
);
// 响应拦截器
httpRequest.interceptors.response.use(
(response) => {
const { data } = response;
if (data.code === 401 || data.code === 403) {
if (location.pathname !== '/user/login') {
showLoginModal();
}
return Promise.reject(data);
}
if (data.code !== 200) {
notification.error({ message: data.message || '请求错误' });
return Promise.reject(data);
}
return data.data;
},
(error) => {
if (error.response) {
const { status, data = {} } = error.response;
if (status === 401 || status === 403) {
showLoginModal();
} else {
notification.error({ message: data.message || '请求错误' });
console.error(`${status}: ${data.message}`);
}
} else {
console.log(error);
}
return Promise.reject(error.response || error);
},
);
export default httpRequest;
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论