import Mock from 'mockjs' import { SUCCESS_CODE } from '@/constants' const timeout = 1000 // 教师模拟数据 const teacherList: any[] = [] // 生成50条模拟数据 for (let i = 1; i <= 50; i++) { teacherList.push({ id: `teacher_${i}`, teacherNo: `T${String(i).padStart(6, '0')}`, realName: Mock.Random.cname(), department: Mock.Random.pick([ '计算机学院', '数学学院', '物理学院', '化学学院', '文学院', '外国语学院', '经济学院', '管理学院', '法学院', '教育学院' ]), phone: Mock.Random.pick([ '13800138000', '13900139000', '15000150000', '15100151000', '18600186000' ]), status: Mock.Random.pick([0, 1]), createdTime: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss'), updatedTime: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss') }) } export default [ // 查询教师列表 { url: '/api/teachers', method: 'get', timeout, response: ({ query }: any) => { const { pageNo = 1, pageSize = 10, teacherNo, realName, department, status } = query let filteredList = teacherList // 教师工号模糊查询 if (teacherNo) { filteredList = filteredList.filter((item) => item.teacherNo.toLowerCase().includes(teacherNo.toLowerCase()) ) } // 真实姓名模糊查询 if (realName) { filteredList = filteredList.filter((item) => item.realName.toLowerCase().includes(realName.toLowerCase()) ) } // 部门模糊查询 if (department) { filteredList = filteredList.filter((item) => item.department.toLowerCase().includes(department.toLowerCase()) ) } // 状态精确查询 if (status !== undefined && status !== null && status !== '') { filteredList = filteredList.filter((item) => item.status === Number(status)) } const totals = filteredList.length const totalPages = Math.ceil(totals / pageSize) const startIndex = (pageNo - 1) * pageSize const endIndex = startIndex + Number(pageSize) const list = filteredList.slice(startIndex, endIndex) return { code: SUCCESS_CODE, data: { totals, totalPages, list } } } }, // 新增教师 { url: '/api/teachers', method: 'post', timeout, response: ({ body }: any) => { const newTeacher = { id: `teacher_${teacherList.length + 1}`, ...body, status: 1, createdTime: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss'), updatedTime: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss') } teacherList.unshift(newTeacher) return { code: SUCCESS_CODE, data: newTeacher.id, msg: '教师添加成功' } } }, // 获取教师详情 { url: '/api/teachers/:teacherId', method: 'get', timeout, response: ({ query }: any) => { const { teacherId } = query const teacher = teacherList.find((item) => item.id === teacherId) if (teacher) { return { code: SUCCESS_CODE, data: teacher } } else { return { code: 404, msg: '教师不存在' } } } }, // 编辑教师信息 { url: '/api/teachers/:teacherId', method: 'put', timeout, response: ({ query, body }: any) => { const { teacherId } = query const index = teacherList.findIndex((item) => item.id === teacherId) if (index !== -1) { teacherList[index] = { ...teacherList[index], ...body, updatedTime: Mock.Random.datetime('yyyy-MM-dd HH:mm:ss') } return { code: SUCCESS_CODE, data: null, msg: '教师信息修改成功' } } else { return { code: 404, msg: '教师不存在' } } } }, // 删除教师 { url: '/api/teachers/:teacherId', method: 'delete', timeout, response: ({ query }: any) => { const { teacherId } = query const index = teacherList.findIndex((item) => item.id === teacherId) if (index !== -1) { teacherList.splice(index, 1) return { code: SUCCESS_CODE, data: null, msg: '教师删除成功' } } else { return { code: 404, msg: '教师不存在' } } } }, // 启用教师 { url: '/api/teachers/:teacherId/enable', method: 'put', timeout, response: ({ query }: any) => { const { teacherId } = query const teacher = teacherList.find((item) => item.id === teacherId) if (teacher) { teacher.status = 1 teacher.updatedTime = Mock.Random.datetime('yyyy-MM-dd HH:mm:ss') return { code: SUCCESS_CODE, data: null, msg: '教师启用成功' } } else { return { code: 404, msg: '教师不存在' } } } }, // 禁用教师 { url: '/api/teachers/:teacherId/disable', method: 'put', timeout, response: ({ query }: any) => { const { teacherId } = query const teacher = teacherList.find((item) => item.id === teacherId) if (teacher) { teacher.status = 0 teacher.updatedTime = Mock.Random.datetime('yyyy-MM-dd HH:mm:ss') return { code: SUCCESS_CODE, data: null, msg: '教师禁用成功' } } else { return { code: 404, msg: '教师不存在' } } } }, // Excel批量导入教师 { url: '/api/teachers/import', method: 'post', timeout: 2000, response: () => { // 模拟导入结果 const successCount = Mock.Random.integer(5, 10) const failureCount = Mock.Random.integer(0, 3) const errors: any[] = [] // 生成错误明细 for (let i = 0; i < failureCount; i++) { errors.push({ rowNo: Mock.Random.integer(2, 20), errorMsg: Mock.Random.pick([ '教师工号不能为空', '真实姓名不能为空', '教师工号已存在', '手机号格式不正确' ]), errorData: `T${Mock.Random.integer(100000, 999999)},${Mock.Random.cname()},计算机学院,1380013800${Mock.Random.integer(0, 9)}` }) } return { code: SUCCESS_CODE, data: { success: failureCount === 0, totalCount: successCount + failureCount, successCount, failureCount, errors, message: failureCount === 0 ? `成功导入 ${successCount} 条教师数据` : `导入完成,成功 ${successCount} 条,失败 ${failureCount} 条` } } } } ]