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
+30 -45
View File
@@ -1,4 +1,5 @@
import { postgrestGet, postgrestPut } from "../postgrest-client";
import axios from 'axios';
/**
* 从不同格式的 API 响应中提取数据
@@ -134,26 +135,18 @@ export async function submitCrossCheckingOpinion(
evaluation_result_id: opinionData.reviewPointResultId
};
const response = await fetch(`${API_BASE_URL}/admin/cross_review/proposals`, {
method: 'POST',
const response = await axios.post(`${API_BASE_URL}/admin/cross_review/proposals`, requestData, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(requestData)
}
});
const data = await response.json();
if (!response.ok) {
throw new Error(data.message || '提交失败');
}
return {
data: {
success: true,
message: '意见提交成功',
data: data
data: response.data
}
};
} catch (error) {
@@ -190,23 +183,19 @@ export async function getCrossCheckingOpinions(
// 如果没传userId,默认用1
const realUserId = userId ?? 1;
// 实际后端API调用,拼接API_BASE_URL
const response = await fetch(`${API_BASE_URL}/admin/cross_review/proposals/document`, {
method: 'POST',
const response = await axios.post(`${API_BASE_URL}/admin/cross_review/proposals/document`, {
user_id: realUserId,
document_id: documentId, // 如果后端需要document_id可以加上
page,
page_size: pageSize
}, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({
user_id: realUserId,
document_id: documentId, // 如果后端需要document_id可以加上
page,
page_size: pageSize
})
}
});
if (!response.ok) {
throw new Error('获取意见列表失败');
}
const data = await response.json();
const data = response.data;
console.log('最原始的返回data', data);
// 处理新的数据结构,支持分页
const responseData = data.data || data;
@@ -328,23 +317,24 @@ export async function performOpinionAction(
throw new Error('无效的操作类型');
}
const response = await fetch(endpoint, {
method: actionData.action === 'withdraw_opinion' ? 'DELETE' : 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(requestBody)
});
const response = actionData.action === 'withdraw_opinion'
? await axios.delete(endpoint, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
})
: await axios.post(endpoint, requestBody, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});
const data = await response.json();
const data = response.data;
console.log('返回的意见列表数据',data);
if (!response.ok) {
throw new Error(data.message || data.error || '操作失败');
}
return {
data: {
success: true,
@@ -417,20 +407,15 @@ export async function checkProposalVotes(
document_id: documentId
};
const response = await fetch(`${API_BASE_URL}/admin/cross_review/proposals/document/check_pending_votes`, {
method: 'POST',
const response = await axios.post(`${API_BASE_URL}/admin/cross_review/proposals/document/check_pending_votes`, requestData, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(requestData)
}
});
const data = await response.json();
const data = response.data;
if (!response.ok) {
throw new Error(data.message || '检查失败');
}
console.log("检查投票数据",data);
return {