Browse Source

改bug

admin_zwk
zhaowenkang 6 months ago
parent
commit
8b1e89463c
  1. 20
      work/src/api/index.js
  2. 22
      work/src/stores/token.js
  3. 9
      work/src/views/HomeWork.vue
  4. 8
      work/src/views/Login.vue
  5. 2
      work/src/views/UpdateWork.vue
  6. 97
      work/src/views/WorkDetail.vue

20
work/src/api/index.js

@ -17,21 +17,27 @@
import axios from "axios"; import axios from "axios";
import { useTokenStore } from "../stores/token";
const service = axios.create({ const service = axios.create({
// baseURL: 'http://192.168.8.191:8080', // baseURL: 'http://192.168.8.191:8080',
// baseURL: 'http://localhost:8080', // baseURL: 'http://localhost:8080',
baseURL: '/api', baseURL: '/api',
}); });
// 假设你的token存储在localStorage中,名为 'access_token',你可以根据实际情况修改获取方式
const getToken = () => {
return localStorage.getItem('access_token');
};
// Axios的请求拦截器,在这里添加token到请求头 // Axios的请求拦截器,在这里添加token到请求头
axios.interceptors.request.use(config => {
const token = useTokenStore();
if (token) {
config.headers['token'] = `${token}`;
}
return config;
}, error => {
return Promise.reject(error);
});
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
const token = getToken();
const token = useTokenStore();
if (token) { if (token) {
// 一般后端会约定一个请求头的字段名来接收token,常见的如 'Authorization',并要求按照一定格式传递,比如 'Bearer <token>',这里按照此格式添加,你需要根据后端实际要求调整 // 一般后端会约定一个请求头的字段名来接收token,常见的如 'Authorization',并要求按照一定格式传递,比如 'Bearer <token>',这里按照此格式添加,你需要根据后端实际要求调整
config.headers['token'] = `${token}`; config.headers['token'] = `${token}`;

22
work/src/stores/token.js

@ -0,0 +1,22 @@
import {defineStore} from 'pinia';
/*
使用pinia进行状态管理,不能刷新页面
Vue中将一些全局的数据保存在某个位置Vue项目的任何一个组件中都可以访问它
*/
export const useTokenStore = defineStore('token',{
//状态管理
state:()=>({
token: sessionStorage.getItem('token'),
}),
actions:{
changeToken(token){
this.token = token;
//长久保存token
sessionStorage.setItem('token', token)
},
clear(){
this.token = null;
sessionStorage.removeItem('token');
}
}
});

9
work/src/views/HomeWork.vue

@ -43,7 +43,7 @@
</el-table-column> </el-table-column>
<el-table-column prop="live" label="关联直播"> <el-table-column prop="live" label="关联直播">
<template #default="{ row }"> <template #default="{ row }">
<el-tooltip class="tooltip" v-if="row.live" :content="row.live" placement="bottom"
<el-tooltip class="tooltip" v-if="row.live" :content="row.live.name" placement="bottom"
:disabled="row.live.name.length <= 10" effect="light"> :disabled="row.live.name.length <= 10" effect="light">
{{ row.live.name.slice(0, 10) || '—' }} {{ row.live.name.slice(0, 10) || '—' }}
</el-tooltip> </el-tooltip>
@ -164,9 +164,10 @@ const logout = () => {
LoginApi.logout().then(res => { LoginApi.logout().then(res => {
console.log(res); console.log(res);
// axiostoken // axiostoken
axios.interceptors.request.eject(axios.interceptors.request.handlers.find(
handler => handler.fulfilled && handler.fulfilled.toString().includes('token')
));
// axios.interceptors.request.eject(axios.interceptors.request.handlers.find(
// handler => handler.fulfilled && handler.fulfilled.toString().includes('token')
// ));
config.headers['token'] = ` `;
}).catch(err => { }).catch(err => {
// 退 // 退
ElMessage.error('退出登录失败,请稍后重试'); ElMessage.error('退出登录失败,请稍后重试');

8
work/src/views/Login.vue

@ -42,7 +42,7 @@ const login = async() => {
return; return;
} }
try { try {
// LoginApi
// LoginApi.login
const response = await LoginApi.login({ const response = await LoginApi.login({
username: username.value, username: username.value,
password: password.value password: password.value
@ -50,10 +50,12 @@ const login = async() => {
if (response.code === 200) { if (response.code === 200) {
// token // token
token.value = response.data.token; token.value = response.data.token;
// tokenlocalStorage'token'
localStorage.setItem('token', token.value);
// axiostoken // axiostoken
axios.interceptors.request.use(config => { axios.interceptors.request.use(config => {
config.headers.token = `${token.value}`;
//config.headers['token'] = token.value;
//config.headers.token = `${token.value}`;
config.headers['token'] = token.value;
return config; return config;
}); });
console.log(token.value); console.log(token.value);

2
work/src/views/UpdateWork.vue

@ -184,7 +184,7 @@ onMounted(async () => {
if (homeworkData.value.article && homeworkData.value.article.title) { if (homeworkData.value.article && homeworkData.value.article.title) {
articleTitle.value = homeworkData.value.article.title; articleTitle.value = homeworkData.value.article.title;
} else if (homeworkData.value.live && homeworkData.value.live.name) { } else if (homeworkData.value.live && homeworkData.value.live.name) {
form.value.LiveId = homeworkData.value.live.id;
form.value.LiveId = homeworkData.value.live.name;
} }
form.value.ClubType = homeworkData.value.clubType; form.value.ClubType = homeworkData.value.clubType;
const processFormData = () => { const processFormData = () => {

97
work/src/views/WorkDetail.vue

@ -91,9 +91,9 @@ import UpdateWorkApi from '../api/UpdateWorkApi';
import * as XLSX from 'xlsx'; import * as XLSX from 'xlsx';
import axios from 'axios'; import axios from 'axios';
import LoginApi from '../api/LoginApi'; import LoginApi from '../api/LoginApi';
import { useTokenStore } from '../stores/token';
const router = useRouter(); const router = useRouter();
const back = () => { const back = () => {
window.history.back() window.history.back()
} }
@ -131,54 +131,11 @@ const form = ref({
shopId: "", shopId: "",
}); });
const exportData = async () => {
try {
const params = {
// form.valueid.value
...form.value,
id: id.value
};
const response = await axios.post('/api/api/homework_manage/export-record', params, {
responseType: 'arraybuffer'
});
console.log('导出数据:', response);
console.log('导出数据:', response.data);
// Blob
const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
// Content-Disposition
const contentDisposition = response.headers['content-disposition'];
console.log('文件名:', contentDisposition);
if (contentDisposition) {
// 使filename
const fileNameMatch = contentDisposition.match(/filename=([^"]+)/);
if (fileNameMatch && fileNameMatch.length > 1) {
const fileName = fileNameMatch[1];
a.download = fileName;
} else {
console.error('无法从Content-Disposition中解析出文件名');
return;
}
} else {
console.error('响应头中不存在Content-Disposition字段');
return;
}
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
} catch (error) {
console.error('详细的请求错误信息:', error);
ElMessage.error('导出失败');
}
};
// //
const searchData = async () => { const searchData = async () => {
try { try {
const params = { const params = {
id: id.value,
...form.value ...form.value
}; };
const res = await UpdateWorkApi.getrecordbycondition(params); const res = await UpdateWorkApi.getrecordbycondition(params);
@ -249,10 +206,58 @@ const getContent = (index) => {
replies: [] replies: []
}; };
}; };
const exportData = async () => {
try {
const params = {
// form.valueid.value
...form.value,
id: id.value,
};
const response = await axios.post('/api/api/homework_manage/export-record', params, {
responseType: 'arraybuffer'
});
console.log('导出数据:', response);
console.log('导出数据:', response.data);
// Blob
const blob = new Blob([response.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
// Content-Disposition
const contentDisposition = response.headers['content-disposition'];
console.log('文件名:', contentDisposition);
if (contentDisposition) {
// 使filename
const fileNameMatch = contentDisposition.match(/filename=([^"]+)/);
if (fileNameMatch && fileNameMatch.length > 1) {
const fileName = fileNameMatch[1];
a.download = fileName;
} else {
console.error('无法从Content-Disposition中解析出文件名');
return;
}
} else {
console.error('响应头中不存在Content-Disposition字段');
return;
}
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
} catch (error) {
console.error('详细的请求错误信息:', error);
ElMessage.error('导出失败');
}
};
const tokenStore = useTokenStore();
// 退 // 退
const logout = () => { const logout = () => {
LoginApi.logout().then(res => { LoginApi.logout().then(res => {
console.log(tokenStore);
tokenStore.clear();
localStorage.removeItem('token');
console.log(tokenStore);
router.push('/'); router.push('/');
}).catch(err => { }).catch(err => {
// 退 // 退

Loading…
Cancel
Save