完整的教务系统前端项目 - 包含所有修复和9月份数据

This commit is contained in:
KQL
2025-09-03 13:26:13 +08:00
commit 87b06d3176
270 changed files with 116169 additions and 0 deletions

158
src/services/companyJobs.js Normal file
View File

@@ -0,0 +1,158 @@
import request from "@/utils/request";
import { mockData } from "@/data/mockData";
// 获取企业内推岗位页面聚合数据
export async function getCompanyJobsPageData(params) {
// 使用mock数据
return Promise.resolve({
success: true,
data: {
jobs: {
list: mockData.companyJobs.companyPositions || [],
hasMore: false,
total: mockData.companyJobs.companyPositions?.length || 0
},
interviews: {
list: mockData.companyJobs.internalPositions || [],
hasMore: false,
total: mockData.companyJobs.internalPositions?.length || 0
}
}
});
}
// 获取企业内推岗位
export async function getJobsList(params) {
// 使用mock数据
const allJobs = mockData.companyJobs.companyPositions || [];
const page = params.page || 1;
const pageSize = params.pageSize || 10;
const startIndex = (page - 1) * pageSize;
const endIndex = startIndex + pageSize;
const pageJobs = allJobs.slice(startIndex, endIndex);
return Promise.resolve({
success: true,
data: pageJobs,
total: allJobs.length,
page: page,
pageSize: pageSize
});
}
// 获取企业内推岗位详情
export async function getJobsDetail(id) {
// 使用mock数据
const allJobs = mockData.companyJobs.companyPositions || [];
const job = allJobs.find(job => job.id === id);
if (job) {
return Promise.resolve({
success: true,
data: job
});
} else {
return Promise.resolve({
success: false,
message: "岗位不存在"
});
}
}
// 获取企业内推岗位面试
export async function getInterviewsList(params) {
// 使用mock数据
const allInterviews = mockData.companyJobs.internalPositions || [];
const page = params.page || 1;
const pageSize = params.pageSize || 10;
const startIndex = (page - 1) * pageSize;
const endIndex = startIndex + pageSize;
const pageInterviews = allInterviews.slice(startIndex, endIndex);
return Promise.resolve({
success: true,
data: pageInterviews,
total: allInterviews.length,
page: page,
pageSize: pageSize
});
}
// 获取简历列表
export async function getResumesList(params) {
try {
// 获取岗位与面试题页面的数据
const { getMockPageData } = await import("@/mocks/resumeInterviewMock");
const pageData = getMockPageData();
// 收集所有行业的所有简历模板
const allResumeTemplates = [];
if (pageData.industries && pageData.resumeTemplates) {
pageData.industries.forEach(industry => {
const templates = pageData.resumeTemplates[industry.name] || [];
templates.forEach(template => {
allResumeTemplates.push({
id: `template_${industry.id}_${template.position}`,
title: `${template.position}简历`, // 使用岗位名称作为简历标题
position: template.position,
industry: industry.name,
level: template.level || "初级",
skills: template.studentInfo?.core_skills || [],
template: template
});
});
});
}
// 分页处理
const page = params.page || 1;
const pageSize = params.pageSize || 10;
const startIndex = (page - 1) * pageSize;
const endIndex = startIndex + pageSize;
const pageResumes = allResumeTemplates.slice(startIndex, endIndex);
return Promise.resolve({
success: true,
data: pageResumes,
total: allResumeTemplates.length,
page: page,
pageSize: pageSize
});
} catch (error) {
console.error('获取简历列表失败:', error);
// 如果获取失败,返回空列表
return Promise.resolve({
success: true,
data: [],
total: 0,
page: 1,
pageSize: 10
});
}
}
// 获取简历详情
export async function getResumesDetail(id) {
return request({
url: `/api/resumes/${id}`,
method: "GET",
});
}
// 投递简历
export async function submitResume(params) {
// 模拟投递请求
return new Promise((resolve) => {
setTimeout(() => {
resolve({
success: true,
message: "投递成功",
data: {
applicationId: Date.now(), // 模拟申请ID
submittedAt: new Date().toISOString(),
status: "submitted"
}
});
}, 800); // 模拟网络延迟
});
}

View File

@@ -0,0 +1,39 @@
import { mockData } from "@/data/mockData";
// 获取课程直播列表
export async function getCourseLiveList() {
// 模拟异步请求
return Promise.resolve({
success: true,
data: mockData.courseLiveList || [],
});
}
// 获取课程详情
export async function getCourseDetail(courseId) {
// 模拟异步请求
const allCourses = [];
mockData.courseLiveList?.forEach(unit => {
allCourses.push(...unit.courses);
});
const course = allCourses.find(c => c.courseId === courseId);
return Promise.resolve({
success: true,
data: course || null,
});
}
// 更新课程进度
export async function updateCourseProgress(courseId, progress) {
// 模拟异步请求
return Promise.resolve({
success: true,
data: {
courseId,
progress,
message: "进度更新成功",
},
});
}

View File

@@ -0,0 +1,39 @@
import { mockData } from "@/data/mockData";
// 获取课程直播列表
export async function getCourseLiveList() {
// 模拟异步请求
return Promise.resolve({
success: true,
data: mockData.courseLiveList || [],
});
}
// 获取课程详情
export async function getCourseDetail(courseId) {
// 模拟异步请求
const allCourses = [];
mockData.courseLiveList?.forEach(unit => {
allCourses.push(...unit.courses);
});
const course = allCourses.find(c => c.courseId === courseId);
return Promise.resolve({
success: true,
data: course || null,
});
}
// 更新课程进度
export async function updateCourseProgress(courseId, progress) {
// 模拟异步请求
return Promise.resolve({
success: true,
data: {
courseId,
progress,
message: "进度更新成功",
},
});
}

27
src/services/dashboard.js Normal file
View File

@@ -0,0 +1,27 @@
import request from "@/utils/request";
// 获取学生的整体学习进度
export async function getStudyRecordsProgress() {
return request({
url: `/api/study-records/progress`,
method: "GET",
});
}
// 获取我的任务
export async function getMyTasks(params = {}) {
return request({
url: `/api/tasks/my-tasks`,
method: "GET",
params: params,
});
}
// 获取当前学生班级排名
export async function getClassRanking(params = { limit: 6 }) {
return request({
url: `/api/rankings/class`,
method: "GET",
params: params,
});
}

38
src/services/global.js Normal file
View File

@@ -0,0 +1,38 @@
import request from "@/utils/request";
import { mockData } from "@/data/mockData";
// 获取当前登录学生信息
export async function getLoginStudentInfo() {
// 使用mock数据返回完整的学生信息
return Promise.resolve({
success: true,
data: mockData.profileOverview?.studentInfo || {
name: "万圆",
realName: "万圆",
studentId: "2426030612",
studentNo: "2426030612",
avatar: "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp",
school: "苏州工艺美术职业技术学院",
major: "数字媒体艺术设计",
className: "文旅班",
grade: "2024级",
studyPhase: "复合能力培养",
mbti: "ENFJ",
mbtiType: "ENFJ",
credits: 99,
gpa: 4.8,
classRank: 1,
totalStudents: 45,
myRank: {
rank: 1,
score: 99,
}
}
});
// 原API请求代码暂时注释
// return request({
// url: `/api/students/me`,
// method: "GET",
// });
}

57
src/services/index.js Normal file
View File

@@ -0,0 +1,57 @@
// 统一的API服务接口 - 基于当前认证用户
import {
getStudyRecordsProgress,
getMyTasks,
getClassRanking,
} from "./dashboard";
import { getProjectsList, getProjectsdetail } from "./projectLibrary";
import {
getCompanyJobsPageData,
getJobsList,
getJobsDetail,
getInterviewsList,
getResumesList,
getResumesDetail,
submitResume,
} from "./companyJobs";
import { getLoginStudentInfo } from "./global";
import {
getDashboardStatistics,
getLoginStudentProgress,
getClassRank,
getMyRanking,
getProfileOverview,
} from "./personalProfile";
import { getPageData } from "./resumeInterview";
export {
// 仪表盘相关
getMyTasks, // 获取我的任务
getDashboardStatistics, // 获取当前学生仪表盘统计
getStudyRecordsProgress, // 获取学生的整体学习进度
// 排名相关
getClassRanking, // 获取当前学生班级排名
getMyRanking, // 获取当前学生详细排名信息
// 学生信息相关
getLoginStudentInfo, // 获取当前登录学生基本信息
getLoginStudentProgress, // 获取当前学生学习进度
getClassRank, // 获取班级排名(别名)
getProfileOverview, // 获取个人档案完整数据(新接口)
// 项目和作品相关
getProjectsList, // 获取项目列表
getProjectsdetail, // 获取项目详情
// 求职相关
getCompanyJobsPageData, // 获取企业内推岗位页面聚合数据
getJobsList, // 获取岗位列表
getJobsDetail, // 岗位详情
getInterviewsList, // 获取面试列表
getResumesList, // 获取简历列表
getResumesDetail, // 获取简历详情
submitResume, // 投递简历
// 简历面试相关
getPageData, // 获取岗位与面试题页面数据
};

View File

@@ -0,0 +1,58 @@
import request from "@/utils/request";
import { mockData } from "@/data/mockData";
// 获取当前登录学生学习进度
export async function getLoginStudentProgress() {
return request({
url: `/api/students/me/progress`,
method: "GET",
});
}
// 获取仪表板统计信息
export async function getDashboardStatistics() {
// 直接返回mockData中的数据
return Promise.resolve({
success: true,
data: mockData.dashboardStatistics,
});
// 原API调用暂时注释
// return request({
// url: `/api/dashboard/stats`,
// method: "GET",
// namespace: "globalLoading",
// });
}
// 获取当前学生班级排名
export async function getClassRank(params = {}) {
return request({
url: `/api/rankings/class`,
method: "GET",
params: params,
});
}
// 获取当前学生排名详情
export async function getMyRanking() {
return request({
url: `/api/rankings/my-ranking`,
method: "GET",
});
}
// 获取个人档案完整数据 (新接口)
export async function getProfileOverview() {
// 直接返回mockData中的数据
return Promise.resolve({
success: true,
data: mockData.profileOverview,
});
// 原API调用暂时注释
// return request({
// url: `/api/profile/overview`,
// method: "GET",
// });
}

View File

@@ -0,0 +1,58 @@
import request from "@/utils/request";
import { mockData } from "@/data/mockData";
// 获取当前登录学生学习进度
export async function getLoginStudentProgress() {
return request({
url: `/api/students/me/progress`,
method: "GET",
});
}
// 获取仪表板统计信息
export async function getDashboardStatistics() {
// 直接返回mockData中的数据
return Promise.resolve({
success: true,
data: mockData.dashboardStatistics,
});
// 原API调用暂时注释
// return request({
// url: `/api/dashboard/stats`,
// method: "GET",
// namespace: "globalLoading",
// });
}
// 获取当前学生班级排名
export async function getClassRank(params = {}) {
return request({
url: `/api/rankings/class`,
method: "GET",
params: params,
});
}
// 获取当前学生排名详情
export async function getMyRanking() {
return request({
url: `/api/rankings/my-ranking`,
method: "GET",
});
}
// 获取个人档案完整数据 (新接口)
export async function getProfileOverview() {
// 直接返回mockData中的数据
return Promise.resolve({
success: true,
data: mockData.profileOverview,
});
// 原API调用暂时注释
// return request({
// url: `/api/profile/overview`,
// method: "GET",
// });
}

View File

@@ -0,0 +1,35 @@
import request from "@/utils/request";
import { getMockProjectsList, getMockProjectDetail } from "@/mocks/projectLibraryMock";
// 获取项目列表
export async function getProjectsList(params) {
const USE_MOCK = true;
if (USE_MOCK) {
return new Promise(resolve => {
setTimeout(() => {
resolve(getMockProjectsList(params));
}, 300);
});
}
return request({
url: `/api/projects`,
method: "GET",
params,
});
}
// 获取项目详情
export async function getProjectsdetail(id) {
const USE_MOCK = true;
if (USE_MOCK) {
return new Promise(resolve => {
setTimeout(() => {
resolve(getMockProjectDetail(id));
}, 200);
});
}
return request({
url: `/api/projects/${id}`,
method: "GET",
});
}

View File

@@ -0,0 +1,46 @@
import request from "@/utils/request";
import { getMockPageData } from "@/mocks/resumeInterviewMock";
// Get all page data for resume-interview page
export const getPageData = async () => {
// 使用mock数据
const USE_MOCK = true;
if (USE_MOCK) {
// 包装mock数据以匹配API返回格式
const mockData = getMockPageData();
return {
success: true,
data: mockData
};
}
return request({
url: "/api/resume-interview",
method: "GET"
});
};
// Export individual functions for future use if needed
export const getResumes = (params) => {
return request({
url: "/api/resumes",
method: "GET",
params
});
};
export const getInterviews = (params) => {
return request({
url: "/api/interviews",
method: "GET",
params
});
};
export const getMyInterviews = () => {
return request({
url: "/api/interviews/my-interviews",
method: "GET"
});
};