完整的教务系统前端项目 - 包含所有修复和9月份数据
This commit is contained in:
158
src/services/companyJobs.js
Normal file
158
src/services/companyJobs.js
Normal 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); // 模拟网络延迟
|
||||
});
|
||||
}
|
||||
39
src/services/courseLive.js
Normal file
39
src/services/courseLive.js
Normal 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: "进度更新成功",
|
||||
},
|
||||
});
|
||||
}
|
||||
39
src/services/courseLive.js.local_backup
Normal file
39
src/services/courseLive.js.local_backup
Normal 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
27
src/services/dashboard.js
Normal 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
38
src/services/global.js
Normal 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
57
src/services/index.js
Normal 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, // 获取岗位与面试题页面数据
|
||||
};
|
||||
58
src/services/personalProfile.js
Normal file
58
src/services/personalProfile.js
Normal 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",
|
||||
// });
|
||||
}
|
||||
58
src/services/personalProfile.js.local_backup
Normal file
58
src/services/personalProfile.js.local_backup
Normal 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",
|
||||
// });
|
||||
}
|
||||
35
src/services/projectLibrary.js
Normal file
35
src/services/projectLibrary.js
Normal 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",
|
||||
});
|
||||
}
|
||||
46
src/services/resumeInterview.js
Normal file
46
src/services/resumeInterview.js
Normal 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"
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user