From e6053806e1dca7d925f36f46f215f7488fb96e8e Mon Sep 17 00:00:00 2001 From: "wenq.zhang" Date: Fri, 3 Jan 2025 16:07:23 +0800 Subject: [PATCH] 1 --- src/api/baseinf.js | 10 ++ src/api/jczh.js | 12 +-- src/utils/request.js | 118 ++++++++++++++++++++ src/views/sanshengjiaohui/index.vue | 2 +- vue.config.js | 161 +++++++++++++++++++++++++--- 5 files changed, 282 insertions(+), 21 deletions(-) create mode 100644 src/api/baseinf.js create mode 100644 src/utils/request.js diff --git a/src/api/baseinf.js b/src/api/baseinf.js new file mode 100644 index 0000000..567da3e --- /dev/null +++ b/src/api/baseinf.js @@ -0,0 +1,10 @@ +import request from '@/utils/request' + +// 查询【请填写功能名称】列表 +export function listBaseinf(query) { + return request({ + url: '/system/baseinf/list', + method: 'get', + params: query + }) +} diff --git a/src/api/jczh.js b/src/api/jczh.js index 72fc2f9..f37b5bd 100644 --- a/src/api/jczh.js +++ b/src/api/jczh.js @@ -1,22 +1,22 @@ import * as echarts from "echarts"; /** 获取echart实例 */ -export const getEchartInstance = (domId)=>{ +export const getEchartInstance = (domId) => { const dom = document.getElementById(domId); // 绘制图表 // setOption方法设置图表实例的配置项 以及数据 所有参数和数据的修改都可以通过 setOption 完成,ECharts 会合并新的参数和数据,然后刷新图表。 let myChart = echarts.getInstanceByDom(dom); if (myChart == null) { myChart = echarts.init(dom); - }else { + } else { myChart.clear() } return myChart } -export const getCommonData = (reqBusiFlagId,paramsObj) => { +export const getCommonData = (reqBusiFlagId, paramsObj) => { return jwtServerInstance.request({ - url:'/system/sql/common', - method:'post', - data:{ + url: '/system/sql/common', + method: 'post', + data: { reqBusiFlagId, paramsObj } diff --git a/src/utils/request.js b/src/utils/request.js new file mode 100644 index 0000000..f1f444b --- /dev/null +++ b/src/utils/request.js @@ -0,0 +1,118 @@ +import axios from 'axios' +import { Notification, MessageBox, Message, Loading } from 'element-ui' + +let downloadLoadingInstance; + +axios.defaults.headers['Conntent-Type'] = 'application/json;charset=utf-8' +// 创建axios实例 +const service = axios.create({ + // axios中请求配置有baseURL选项,表示请求URL公共部分 + baseURL: '/', + // 超时 + timeout: 300000 + // timeout: 10000 +}) + +// request拦截器 +service.interceptors.request.use(config => { + // // 是否需要设置 token + // const isToken = (config.headers || {}).isToken === false + // if (getToken() && !isToken) { + // config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 + // } + // // get请求映射params参数 + // if (config.method === 'get' && config.params) { + // let url = config.url + '?' + tansParams(config.params); + // url = url.slice(0, -1); + // config.params = {}; + // config.url = url; + // } + return config +}, error => { + console.log(error) + Promise.reject(error) +}) + +// 响应拦截器 +service.interceptors.response.use(res => { + + // 未设置状态码则默认成功状态 + const code = res.data.code || 200; + // 获取错误信息 + const msg = errorCode[code] || res.data.msg || errorCode['default'] + // 二进制数据则直接返回 + if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { + return res.data + } + if (code === 401) { + MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { + confirmButtonText: '重新登录', + cancelButtonText: '取消', + type: 'warning' + } + ).then(() => { + store.dispatch('LogOut').then(() => { + location.href = '/index'; + }) + }).catch(() => { }); + return Promise.reject('无效的会话,或者会话已过期,请重新登录。') + } else if (code === 500) { + Message({ + message: msg, + type: 'error' + }) + return Promise.reject(new Error(msg)) + } else if (code !== 200) { + Notification.error({ + title: msg + }) + return Promise.reject('error') + } else { + return res.data + } +}, + error => { + console.log('err' + error) + let { message } = error; + if (message == "Network Error") { + message = "后端接口连接异常"; + } + else if (message.includes("timeout")) { + message = "系统接口请求超时"; + } + else if (message.includes("Request failed with status code")) { + message = "系统接口" + message.substr(message.length - 3) + "异常"; + } + Message({ + message: message, + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(error) + } +) + +// 通用下载方法 +export function download(url, params, filename) { + downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }) + return service.post(url, params, { + transformRequest: [(params) => { return tansParams(params) }], + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + responseType: 'blob' + }).then(async (data) => { + const isLogin = await blobValidate(data); + if (isLogin) { + const blob = new Blob([data]) + saveAs(blob, filename) + } else { + Message.error('无效的会话,或者会话已过期,请重新登录。'); + } + downloadLoadingInstance.close(); + }).catch((r) => { + console.error(r) + Message.error('下载文件出现错误,请联系管理员!') + downloadLoadingInstance.close(); + }) +} + +export default service diff --git a/src/views/sanshengjiaohui/index.vue b/src/views/sanshengjiaohui/index.vue index 0d56a61..5aec91a 100644 --- a/src/views/sanshengjiaohui/index.vue +++ b/src/views/sanshengjiaohui/index.vue @@ -155,7 +155,7 @@