Эх сурвалжийг харах

修改了 文件下载的头部信息

wangguoxi 6 сар өмнө
parent
commit
565edd72fc

+ 2 - 2
src/http/api/errorQuestion.js

@@ -1,4 +1,4 @@
-import { get, post } from "../common/http";
+import { get, post, downLoadByBlob } from "../common/http";
 import base from "../common/base";
 
 function url(url) {
@@ -7,5 +7,5 @@ function url(url) {
 
 export const queryStudentErrorQuestion = (data) => get(url("/api/v1/studentError/queryStudentErrorQuestion"), data);
 export const markStudentErrorQuestion = (data) => get(url("/api/v1/studentError/markStudentErrorQuestion"), data);
-export const downloadStudentErrorQuestion = (data) => get(url("/api/v1/studentError/downloadStudentErrorQuestion"), data);
+export const downloadStudentErrorQuestion = (data) => downLoadByBlob(url("/api/v1/studentError/downloadStudentErrorQuestion"), data);
 

+ 60 - 42
src/http/common/http.js

@@ -2,18 +2,18 @@
 import axios from 'axios' // 引用axios
 import base from "../common/base";
 import {
-  getToken,getAdminToken
+  getToken, getAdminToken
 } from '@/utils/auth'
 import store from '@/store'
 import router from '@/router'
 
-import { Loading,Message } from 'element-ui';
+import { Loading, Message } from 'element-ui';
 const service1 = axios.create({
-  timeout: 120000 * 2
+  timeout: 120000 * 10
 });
 
 const service2 = axios.create({
-  timeout: 120000 * 2
+  timeout: 120000 * 10
 });
 
 var loading = null; // loading
@@ -22,31 +22,31 @@ var loading = null; // loading
  * @param {string} loadingText 文案
  */
 function showLoading(config) {
-	let data = config.method == 'get' ? config.params : config.data;
-	if(data && data.showLoading) {
-		loading = Loading.service({
-		  lock: true,
-		  text: data.loadingText || 'Loading...',
-		  spinner: 'el-icon-loading',
-		  background: 'rgba(0, 0, 0, 0.7)'
-		});
-		delete data.showLoading;
-		if(data.loadingText) delete data.loadingText;
-	}
+  let data = config.method == 'get' ? config.params : config.data;
+  if (data && data.showLoading) {
+    loading = Loading.service({
+      lock: true,
+      text: data.loadingText || 'Loading...',
+      spinner: 'el-icon-loading',
+      background: 'rgba(0, 0, 0, 0.7)'
+    });
+    delete data.showLoading;
+    if (data.loadingText) delete data.loadingText;
+  }
 }
 function hideLoading() {
-	if(loading) loading.close();
+  if (loading) loading.close();
 }
 
 // axios 配置
 // axios.defaults.timeout = 120000 //设置接口响应时间
 service1.interceptors.request.use(
   config => {
-	showLoading(config) // loading start
+    showLoading(config) // loading start
     // do something before request is sent
     if (store.getters.token) {
       config.headers['Authorization'] = getToken()
-      
+
     }
     // 设置请求头
     // if(!config.headers["content-type"]) { // 如果没有设置请求头
@@ -73,7 +73,7 @@ service2.interceptors.request.use(
 // // response interceptor
 service1.interceptors.response.use(
   response => {
-	hideLoading(); // loading end
+    hideLoading(); // loading end
     const res = response
     if (res.config.responseType == "blob") {
       return res;
@@ -97,18 +97,20 @@ service1.interceptors.response.use(
   },
   error => {
     console.log('err----' + error) // for debug
-    
-    if(error.response.status == 500){
-      Message({message: '网络请求超时,请重试!',
-      type: 'warning'})
+
+    if (error.response.status == 500) {
+      Message({
+        message: '网络请求超时,请重试!',
+        type: 'warning'
+      })
     }
-    
+
     return Promise.reject(error)
   }
 )
 service2.interceptors.response.use(
   response => {
-	hideLoading(); // loading end
+    hideLoading(); // loading end
     const res = response
     if (res.config.responseType == "blob") {
       return res;
@@ -117,7 +119,8 @@ service2.interceptors.response.use(
     if (res.data.code) {
       if (res.data.code >= 400) {
         Message(
-          {message: res.data.msg,
+          {
+            message: res.data.msg,
             type: 'warning',
             duration: 5,
 
@@ -137,12 +140,14 @@ service2.interceptors.response.use(
   },
   error => {
     console.log('err----' + error) // for debug
-    
-    if(error.response.status == 500){
-      Message({message: '网络请求超时,请重试!',
-      type: 'warning'})
+
+    if (error.response.status == 500) {
+      Message({
+        message: '网络请求超时,请重试!',
+        type: 'warning'
+      })
     }
-    
+
     return Promise.reject(error)
   }
 )
@@ -171,20 +176,33 @@ export function get(url, params = {}, useService1 = false,loginUrl) {
   })
 }
 
+export function downLoadByBlob(url, params = {}, useService1 = false) {
+  const service = useService1 ? service2 : service1;
+  return service({
+    method: 'GET',
+    url: url,
+    responseType: 'blob',
+    params,
+    headers: {
+      'Accept': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/octet-stream'
+    },
+  })
+}
+
 /**
  * post 请求方法
  * @param url
  * @param data
  * @returns {Promise}
  */
-export function post(url, data = {}, useService1 = false,loginUrl) {
+export function post(url, data = {}, useService1 = false, loginUrl) {
   const service = useService1 ? service2 : service1;
   return new Promise((resolve, reject) => {
-    service.post(url, data,loginUrl).then(
+    service.post(url, data, loginUrl).then(
       response => {
         resolve(response.data)
       },
-      err=>{
+      err => {
         reject(err)
       }
     )
@@ -201,14 +219,14 @@ export function post(url, data = {}, useService1 = false,loginUrl) {
  */
 export function upload(url, formData, useService1 = false) {
   const service = useService1 ? service2 : service1;
-  
+
   // 设置上传文件的headers
   const config = {
     headers: {
       'Content-Type': 'multipart/form-data'
     }
   };
-  
+
   return new Promise((resolve, reject) => {
     service.post(url, formData, config)
       .then(response => {
@@ -228,7 +246,7 @@ export function upload(url, formData, useService1 = false) {
  * @param data
  * @returns {Promise}
  */
-export function patch(url, data = {},useService1 = false) {
+export function patch(url, data = {}, useService1 = false) {
   const service = useService1 ? service2 : service1;
   return new Promise((resolve, reject) => {
     service.patch(url, data).then(
@@ -248,7 +266,7 @@ export function patch(url, data = {},useService1 = false) {
  * @param data
  * @returns {Promise}
  */
-export function put(url, data = {},useService1 = false) {
+export function put(url, data = {}, useService1 = false) {
   const service = useService1 ? service2 : service1;
   return new Promise((resolve, reject) => {
     service.put(url, data).then(
@@ -269,10 +287,10 @@ export function put(url, data = {},useService1 = false) {
  * @param params
  * @returns {Promise}
  */
-export function deleteRequest(url, params = {},type,useService1 = false){
+export function deleteRequest(url, params = {}, type, useService1 = false) {
   const service = useService1 ? service2 : service1;
   return new Promise((resolve, reject) => {
-    if(type=='arr'){
+    if (type == 'arr') {
       service.delete(url, {
         data: {
           ...params
@@ -285,7 +303,7 @@ export function deleteRequest(url, params = {},type,useService1 = false){
           reject(err)
         }
       )
-    } else if(type == 'array'){
+    } else if (type == 'array') {
       service.delete(url, {
         data: [...params]
       }).then(
@@ -296,7 +314,7 @@ export function deleteRequest(url, params = {},type,useService1 = false){
           reject(err)
         }
       )
-    }else{
+    } else {
       service.delete(url, {
         params: {
           ...params

+ 5 - 2
src/views/analysisReport/wrongQuestion/Download.vue

@@ -34,7 +34,8 @@ export default {
         subjectCode: {
             type: [String, Number],
             required: true
-        }
+        },
+        isVariation: Number
     },
 
     data() {
@@ -53,7 +54,8 @@ export default {
             downloadStudentErrorQuestion({
                 examId: this.examId,
                 subjectCode: this.subjectCode,
-                isAnswer: this.isAnswer
+                isAnswer: this.isAnswer,
+                isVariation: this.isVariation
             }).then(response => {
                 const blob2 = new Blob([response.data], {
                     type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
@@ -62,6 +64,7 @@ export default {
                 const contentDisposition = response.headers['content-disposition'];
                 const fileName = ExtractFilename(contentDisposition)
                 DownloadFile(blob2, fileName)
+                this.handleClose();
             }).catch(error => {
                 this.$message.error('下载失败,请稍后重试');
             }).finally(() => {

+ 4 - 3
src/views/analysisReport/wrongQuestion/index.vue

@@ -11,11 +11,11 @@
 
         <div class="content">
             <div class="right_btn" v-if="errorType !== 1">
-                <el-button size="medium" @click="downloadDialogVisible = true">下载错题本</el-button>
-                <el-button type="primary" size="medium" @click="downloadDialogVisible = true">下载个性化提升手册</el-button>
+                <el-button size="medium" @click="downloadDialogVisible = true; isVariation = 0">下载错题本</el-button>
+                <el-button type="primary" size="medium" @click="downloadDialogVisible = true; isVariation = 1">下载个性化提升手册</el-button>
             </div>
 
-            <Download :visible.sync="downloadDialogVisible" :examId="examId" :subjectCode="subjectCode" />
+            <Download :visible.sync="downloadDialogVisible" :examId="examId" :subjectCode="subjectCode" :isVariation="isVariation" />
 
             <template v-if="questionList.length > 0">
                 <div v-for="(question, index) in questionList" :key="question.questionId">
@@ -235,6 +235,7 @@ export default {
             gradeCode: null,
 
             downloadDialogVisible: false,
+            isVariation: 0,
         };
     },