feat: 1. 将大部分的请求从fetch改成axios方便管理。

2. 给文档类型添加入口模块和相关数据的渲染。并且给文档类型进行功能上的角色权限区分
3. 新增角色权限管理页面
This commit is contained in:
2025-11-20 20:34:31 +08:00
parent 2e604e8ede
commit 3850d05bdd
25 changed files with 2299 additions and 762 deletions
+27 -43
View File
@@ -1,4 +1,5 @@
import { UPLOAD_URL } from '../../config/api-config';
import axios from 'axios';
/**
* 从不同格式的 API 响应中提取数据
@@ -146,8 +147,8 @@ export async function uploadCrossCheckingDocument(
// 发送请求
try {
console.log('【交叉评查上传】开始fetch请求...');
const headers: HeadersInit = {
console.log('【交叉评查上传】开始axios请求...');
const headers: Record<string, string> = {
'X-File-Name': encodeURIComponent(fileName),
};
@@ -155,50 +156,35 @@ export async function uploadCrossCheckingDocument(
headers['Authorization'] = `Bearer ${token}`;
}
const response = await fetch(uploadUrl, {
method: 'POST',
headers,
body: formData
const response = await axios.post(uploadUrl, formData, {
headers
});
console.log('【交叉评查上传】收到服务器响应:', { status: response.status, statusText: response.statusText });
if (!response.ok) {
const errorText = await response.text();
console.error(`【交叉评查上传】上传失败 (${response.status}): ${errorText}`);
return {
error: `上传失败: ${response.status} ${response.statusText} - ${errorText}`,
status: response.status
};
}
console.log('【交叉评查上传】开始解析JSON响应');
let responseData;
try {
responseData = await response.json();
console.log('【交叉评查上传】JSON响应解析成功:', responseData);
} catch (jsonError) {
console.error('【交叉评查上传】JSON解析失败:', jsonError);
return {
error: `解析响应JSON失败: ${jsonError instanceof Error ? jsonError.message : '未知错误'}`,
status: 500
};
}
const extractedData = extractApiData<CrossCheckingFileUploadResponse>(responseData);
console.log('【交叉评查上传】JSON响应解析成功:', response.data);
const extractedData = extractApiData<CrossCheckingFileUploadResponse>(response.data);
console.log('【交叉评查上传】提取的数据:', extractedData);
if (!extractedData) {
console.error('【交叉评查上传】无法提取数据');
return { error: '处理上传响应失败', status: 500 };
}
console.log('【交叉评查上传】上传成功,返回数据');
return { data: extractedData as CrossCheckingFileUploadResponse };
} catch (fetchError) {
console.error('【交叉评查上传】fetch请求失败:', fetchError);
return {
error: `fetch请求错误: ${fetchError instanceof Error ? fetchError.message : '未知错误'}`,
} catch (axiosError) {
console.error('【交叉评查上传】axios请求失败:', axiosError);
if (axios.isAxiosError(axiosError)) {
const errorText = axiosError.response?.data || axiosError.message;
return {
error: `上传失败: ${axiosError.response?.status || 500} ${axiosError.response?.statusText || ''} - ${errorText}`,
status: axiosError.response?.status || 500
};
}
return {
error: `axios请求错误: ${axiosError instanceof Error ? axiosError.message : '未知错误'}`,
status: 500
};
}
@@ -258,14 +244,12 @@ export async function batchUploadAndAssignCrossCheckingFiles(
};
formData.append('upload_info', JSON.stringify(uploadInfo));
formData.append('assign_user_ids', JSON.stringify(assignUserIds));
const headers: HeadersInit = {};
const headers: Record<string, string> = {};
if (token) headers['Authorization'] = `Bearer ${token}`;
const response = await fetch(uploadUrl, {
method: 'POST',
headers,
body: formData
const response = await axios.post(uploadUrl, formData, {
headers
});
const result = await response.json();
const result = response.data;
if (result && result.success) {
successes.push({ file: fileInfo, result });
} else {