From 2383f4b2f1bcca46cfc9e4a845f187a6e62f5677 Mon Sep 17 00:00:00 2001 From: Spark <2666652@gmail.com> Date: Sat, 12 Oct 2024 01:08:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BC=96=E5=86=99=20axios=20=E8=AF=B7?= =?UTF-8?q?=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- RollCallClient/src/api/admin.js | 9 ++++ RollCallClient/src/api/student.js | 69 +++++++++++++++++++++++++++++ RollCallClient/src/utils/request.js | 45 +++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 RollCallClient/src/api/admin.js create mode 100644 RollCallClient/src/api/student.js create mode 100644 RollCallClient/src/utils/request.js diff --git a/RollCallClient/src/api/admin.js b/RollCallClient/src/api/admin.js new file mode 100644 index 0000000..2129e95 --- /dev/null +++ b/RollCallClient/src/api/admin.js @@ -0,0 +1,9 @@ +import request from "@/utils/request.js"; + +export const userRegisterService = (registerData) => { + return request.post('/admin/register', registerData); +} + +export const userLoginService = (loginDTO) => { + return request.post('/admin/login', loginDTO) +} \ No newline at end of file diff --git a/RollCallClient/src/api/student.js b/RollCallClient/src/api/student.js new file mode 100644 index 0000000..83e2550 --- /dev/null +++ b/RollCallClient/src/api/student.js @@ -0,0 +1,69 @@ +import request from '@/utils/request.js' +import dayjs from "dayjs"; + +export const listStudent = () => { + return request.get('/student') +} + +export const getStudentById = (id) => { + return request.get(`/student/${id}`) +} + +export const pageStudent = (pageQueryDTO) => { + const params = new URLSearchParams(); + const formattedQuery = { ...pageQueryDTO }; + + // 处理创建时间 + if (formattedQuery.createTime && Array.isArray(formattedQuery.createTime) && formattedQuery.createTime.length === 2) { + formattedQuery.createTimeStart = dayjs(formattedQuery.createTime[0]).format('YYYY-MM-DD HH:mm:ss'); + formattedQuery.createTimeEnd = dayjs(formattedQuery.createTime[1]).format('YYYY-MM-DD HH:mm:ss'); + delete formattedQuery.createTime; // 删除原始的时间范围数组 + } + + // 处理更新时间 + if (formattedQuery.updateTime && Array.isArray(formattedQuery.updateTime) && formattedQuery.updateTime.length === 2) { + formattedQuery.updateTimeStart = dayjs(formattedQuery.updateTime[0]).format('YYYY-MM-DD HH:mm:ss'); + formattedQuery.updateTimeEnd = dayjs(formattedQuery.updateTime[1]).format('YYYY-MM-DD HH:mm:ss'); + delete formattedQuery.updateTime; // 删除原始的时间范围数组 + } + + // 构建URLSearchParams,仅添加非空参数 + for (let key in formattedQuery) { + if (formattedQuery[key] !== null && formattedQuery[key] !== undefined && formattedQuery[key] !== '') { + params.append(key, formattedQuery[key]); + } + } + + return request.get(`/student/page?${params.toString()}`); +}; +export const saveStudent = (studentDTO) => { + return request.post('/student', studentDTO) +} + +export const upload = (file) => { + return request.post('/student/import', file) +} + +export const download = () => { + return request.get('/student/export', { + responseType: 'blob' + }); +} + +export const updateStudent = (studentDTO) => { + return request.put('/student', studentDTO) +} + +export const deleteStudents = (ids) => { + const idsArray = Array.isArray(ids) ? ids : [ids]; + const idsString = idsArray.join(',') + return request.delete(`/student/${idsString}`) +} + +export const rollCall = () => { + return request.get('/student/rollcall') +} + +export const updatePoints = (id, pointsChange) => { + return request.put(`/student/points/${id}/${pointsChange}`) +} \ No newline at end of file diff --git a/RollCallClient/src/utils/request.js b/RollCallClient/src/utils/request.js new file mode 100644 index 0000000..e5ac1f9 --- /dev/null +++ b/RollCallClient/src/utils/request.js @@ -0,0 +1,45 @@ +import axios from 'axios'; +import { ElMessage } from 'element-plus' +import { useTokenStore } from "@/store/token.js"; +import router from "@/router/index.js"; + +const baseURL = '/api'; +const instance = axios.create({baseURL}) + +instance.interceptors.request.use( + config => { + const tokenStore = useTokenStore(); + if (tokenStore.token) { + config.headers.Authorization = tokenStore.token + } + return config + }, + error => { + Promise.reject(error) + } +) + +//添加响应拦截器 +instance.interceptors.response.use( + response => { + const tokenStore = useTokenStore(); + // 检查响应类型是否为blob(文件下载) + if (response.config.responseType === 'blob') { + return response; // 直接返回完整的响应对象 + } + const data = response.data; + if (data.msg === '用户未登录') { + tokenStore.removeToken(); + ElMessage.error(data.msg || '用户未登录') + router.push('/login') + } else { + return data; + } + }, + error => { + ElMessage.error('服务异常') + return Promise.reject(error); + } +) + +export default instance; \ No newline at end of file