From ec270b7df45ffe92255e6a7b975c81a914876674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=81=9A=E7=A0=81=E5=86=9C?= <599854767@qq.com> Date: Mon, 30 Jan 2023 17:40:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=96=B9=E6=B3=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=88=90=E6=96=87=E4=BB=B6=E6=B5=81=E5=BD=A2=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ZR.Vue/src/api/monitor/operlog.js | 20 +- ZR.Vue/src/api/system/post.js | 26 +- ZR.Vue/src/api/system/user.js | 46 +-- ZR.Vue/src/main.js | 2 + ZR.Vue/src/utils/request.js | 173 +++++---- ZR.Vue/src/views/monitor/operlog/index.vue | 193 +++++----- ZR.Vue/src/views/system/post/index.vue | 181 +++++---- ZR.Vue/src/views/system/user/index.vue | 421 +++++++++++---------- 8 files changed, 563 insertions(+), 499 deletions(-) diff --git a/ZR.Vue/src/api/monitor/operlog.js b/ZR.Vue/src/api/monitor/operlog.js index 07e27ab..b612153 100644 --- a/ZR.Vue/src/api/monitor/operlog.js +++ b/ZR.Vue/src/api/monitor/operlog.js @@ -1,11 +1,12 @@ import request from '@/utils/request' +import { downFile } from '@/utils/request' // 查询操作日志列表 export function list(query) { return request({ url: '/monitor/operlog/list', method: 'get', - params: query + params: query, }) } @@ -13,7 +14,7 @@ export function list(query) { export function delOperlog(operId) { return request({ url: '/monitor/operlog/' + operId, - method: 'delete' + method: 'delete', }) } @@ -21,15 +22,16 @@ export function delOperlog(operId) { export function cleanOperlog() { return request({ url: '/monitor/operlog/clean', - method: 'delete' + method: 'delete', }) } // 导出操作日志 -export function exportOperlog(query) { - return request({ - url: '/monitor/operlog/export', - method: 'get', - params: query - }) +export async function exportOperlog(query) { + // return request({ + // url: '/monitor/operlog/export', + // method: 'get', + // params: query + // }) + await downFile('/monitor/operlog/export', query) } diff --git a/ZR.Vue/src/api/system/post.js b/ZR.Vue/src/api/system/post.js index 434cd35..7f86c87 100644 --- a/ZR.Vue/src/api/system/post.js +++ b/ZR.Vue/src/api/system/post.js @@ -1,11 +1,12 @@ import request from '@/utils/request' +import { downFile } from '@/utils/request' // 查询岗位列表 export function listPost(query) { return request({ url: '/system/post/list', method: 'get', - params: query + params: query, }) } @@ -13,7 +14,7 @@ export function listPost(query) { export function getPost(postId) { return request({ url: '/system/post/' + postId, - method: 'get' + method: 'get', }) } @@ -22,7 +23,7 @@ export function addPost(data) { return request({ url: '/system/post', method: 'post', - data: data + data: data, }) } @@ -31,7 +32,7 @@ export function updatePost(data) { return request({ url: '/system/post', method: 'put', - data: data + data: data, }) } @@ -39,15 +40,16 @@ export function updatePost(data) { export function delPost(postId) { return request({ url: '/system/post/' + postId, - method: 'delete' + method: 'delete', }) } // 导出岗位 -export function exportPost(query) { - return request({ - url: '/system/post/export', - method: 'get', - params: query - }) -} \ No newline at end of file +export async function exportPost(query) { + // return request({ + // url: '/system/post/export', + // method: 'get', + // params: query + // }) + await downFile('/system/post/export', { ...query }) +} diff --git a/ZR.Vue/src/api/system/user.js b/ZR.Vue/src/api/system/user.js index 0d3cf9b..b87809b 100644 --- a/ZR.Vue/src/api/system/user.js +++ b/ZR.Vue/src/api/system/user.js @@ -1,12 +1,13 @@ import request from '@/utils/request' -import { praseStrZero } from "@/utils/ruoyi"; +import { praseStrZero } from '@/utils/ruoyi' +import { downFile } from '@/utils/request' // 查询用户列表 export function listUser(query) { return request({ url: '/system/user/list', method: 'get', - params: query + params: query, }) } @@ -14,7 +15,7 @@ export function listUser(query) { export function getUser(userId) { return request({ url: '/system/user/' + praseStrZero(userId), - method: 'get' + method: 'get', }) } @@ -23,7 +24,7 @@ export function addUser(data) { return request({ url: '/system/user/edit', method: 'post', - data: data + data: data, }) } @@ -32,7 +33,7 @@ export function updateUser(data) { return request({ url: '/system/user/edit', method: 'put', - data: data + data: data, }) } @@ -40,29 +41,30 @@ export function updateUser(data) { export function delUser(userId) { return request({ url: '/system/user/' + userId, - method: 'delete' + method: 'delete', }) } // 导出用户 -export function exportUser(query) { - return request({ - url: '/system/User/export', - method: 'get', - params: query - }) +export async function exportUser(query) { + // return request({ + // url: '/system/User/export', + // method: 'get', + // params: query + // }) + await downFile('/system/user/export', { ...query }) } // 用户密码重置 export function resetUserPwd(userId, password) { const data = { userId, - password + password, } return request({ url: '/system/user/resetPwd', method: 'put', - data: data + data: data, }) } @@ -70,12 +72,12 @@ export function resetUserPwd(userId, password) { export function changeUserStatus(userId, status) { const data = { userId, - status + status, } return request({ url: '/system/user/changeStatus', method: 'put', - data: data + data: data, }) } @@ -83,7 +85,7 @@ export function changeUserStatus(userId, status) { export function getUserProfile() { return request({ url: '/system/user/Profile', - method: 'get' + method: 'get', }) } @@ -92,7 +94,7 @@ export function updateUserProfile(data) { return request({ url: '/system/user/profile', method: 'put', - data: data + data: data, }) } @@ -100,12 +102,12 @@ export function updateUserProfile(data) { export function updateUserPwd(oldPassword, newPassword) { const data = { oldPassword, - newPassword + newPassword, } return request({ url: '/system/user/profile/updatePwd', method: 'put', - params: data + params: data, }) } @@ -114,7 +116,7 @@ export function uploadAvatar(data) { return request({ url: '/system/user/profile/avatar', method: 'post', - data: data + data: data, }) } @@ -123,6 +125,6 @@ export function importTemplate() { return request({ url: '/system/user/importTemplate', method: 'get', - responseType: 'blob'//1.首先设置responseType对象格式为 blob: + responseType: 'blob', //1.首先设置responseType对象格式为 blob: }) } diff --git a/ZR.Vue/src/main.js b/ZR.Vue/src/main.js index 6b2b1fd..9f5d1d4 100644 --- a/ZR.Vue/src/main.js +++ b/ZR.Vue/src/main.js @@ -13,6 +13,7 @@ import router from './router' import permission from './directive/permission' import plugins from './plugins' // plugins import signalR from '@/utils/signalR' +import { downFile } from '@/utils/request' import './assets/icons' // icon import './permission' // permission control @@ -43,6 +44,7 @@ Vue.prototype.selectDictLabels = selectDictLabels Vue.prototype.download = download Vue.prototype.handleTree = handleTree Vue.prototype.handleDict = handleDict +Vue.prototype.downFile = downFile Vue.prototype.msgSuccess = function (msg) { this.$message({ showClose: true, message: msg, type: "success" }); diff --git a/ZR.Vue/src/utils/request.js b/ZR.Vue/src/utils/request.js index 58a0262..44f705e 100644 --- a/ZR.Vue/src/utils/request.js +++ b/ZR.Vue/src/utils/request.js @@ -1,11 +1,12 @@ import axios from 'axios' -import { MessageBox, Message } from 'element-ui' +import { MessageBox, Message, Loading } from 'element-ui' import store from '@/store' import { getToken } from '@/utils/auth' -// import { blobValidate } from "@/utils/ruoyi"; -// import errorCode from '@/utils/errorCode' -// import { saveAs } from 'file-saver' +import { blobValidate } from '@/utils/ruoyi' +import errorCode from '@/utils/errorCode' +import { saveAs } from 'file-saver' +let downloadLoadingInstance // 解决后端跨域获取不到cookie问题 axios.defaults.withCredentials = true axios.defaults.headers['Content-Type'] = 'application/json' @@ -14,45 +15,49 @@ const service = axios.create({ // axios中请求配置有baseURL选项,表示请求URL公共部分 baseURL: process.env.VUE_APP_BASE_API, // 超时 - timeout: 30000 + timeout: 30000, }) // request拦截器 -service.interceptors.request.use(config => { - // 是否需要设置 token - if (getToken()) { - //将token放到请求头发送给服务器,将tokenkey放在请求头中 - config.headers['Authorization'] = 'Bearer ' + getToken(); - config.headers['userid'] = store.getters.userId; - } else { - // console.log(config) - } - return config; -}, error => { - console.log(error) - Promise.reject(error) -}) +service.interceptors.request.use( + (config) => { + // 是否需要设置 token + if (getToken()) { + //将token放到请求头发送给服务器,将tokenkey放在请求头中 + config.headers['Authorization'] = 'Bearer ' + getToken() + config.headers['userid'] = store.getters.userId + } else { + // console.log(config) + } + return config + }, + (error) => { + console.log(error) + Promise.reject(error) + }, +) // 响应拦截器 -service.interceptors.response.use(res => { +service.interceptors.response.use( + (res) => { if (res.status !== 200) { - Promise.reject('network error'); - return; + Promise.reject('network error') + return } // 未设置状态码则默认成功状态 - const { code, msg } = res.data; + const { code, msg } = res.data // 二进制数据则直接返回 if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { - return res.data + return res } if (code == 401) { MessageBox.confirm('登录状态已过期,请重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', - type: 'warning' + type: 'warning', }).then(() => { store.dispatch('LogOut').then(() => { - location.href = process.env.VUE_APP_ROUTER_PREFIX + 'index'; + location.href = process.env.VUE_APP_ROUTER_PREFIX + 'index' }) }) @@ -60,33 +65,33 @@ service.interceptors.response.use(res => { } else if (code == 0 || code == 1 || code == 110 || code == 101 || code == 403 || code == 500 || code == 429) { Message({ message: msg, - type: 'error' + type: 'error', }) return Promise.reject(res.data) } else { //返回标准 code/msg/data字段 - return res.data; + return res.data } }, - error => { + (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 429")) { - message = "请求过于频繁,请稍后再试"; - } else if (message.includes("Request failed with status code")) { - message = "系统接口" + message.substr(message.length - 3) + "异常"; + let { message } = error + if (message == 'Network Error') { + message = '后端接口连接异常' + } else if (message.includes('timeout')) { + message = '系统接口请求超时' + } else if (message.includes('Request failed with status code 429')) { + message = '请求过于频繁,请稍后再试' + } else if (message.includes('Request failed with status code')) { + message = '系统接口' + message.substr(message.length - 3) + '异常' } Message({ message: message, type: 'error', - duration: 5 * 1000 + duration: 5 * 1000, }) return Promise.reject(error) - } + }, ) /** @@ -98,12 +103,12 @@ export function get(url, params) { return new Promise((resolve, reject) => { axios .get(url, { - params: params + params: params, }) - .then(res => { + .then((res) => { resolve(res.data) }) - .catch(err => { + .catch((err) => { reject(err) }) }) @@ -113,12 +118,12 @@ export function post(url, params) { return new Promise((resolve, reject) => { axios .post(url, { - params: params + params: params, }) - .then(res => { + .then((res) => { resolve(res.data) }) - .catch(err => { + .catch((err) => { reject(err) }) }) @@ -131,39 +136,53 @@ export function post(url, params) { */ export function postForm(url, data, config) { return new Promise((resolve, reject) => { - axios.post(url, data, config).then(res => { - resolve(res.data) - }).catch(err => { - reject(err) - }) + axios + .post(url, data, config) + .then((res) => { + resolve(res.data) + }) + .catch((err) => { + reject(err) + }) }) } - // 通用下载方法 -// 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 { -// const resText = await data.text(); -// const rspObj = JSON.parse(resText); -// const errMsg = "出錯了";// errorCode[rspObj.code] || rspObj.msg || errorCode['default'] -// Message.error(errMsg); -// } -// // downloadLoadingInstance.close(); -// }).catch((r) => { -// console.error(r) -// Message.error('下载文件出现错误,请联系管理员!') -// // downloadLoadingInstance.close(); -// }) -// } +export async function downFile(url, params, config) { + downloadLoadingInstance = Loading.service({ text: '正在下载数据,请稍候', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }) + return service + .get(url, { + params, + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + responseType: 'blob', + ...config, + }) + .then(async (resp) => { + const { data } = resp -export default service \ No newline at end of file + const isLogin = await blobValidate(data) + if (isLogin) { + var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') + var contentDisposition = decodeURI(resp.headers['content-disposition']) + var result = patt.exec(contentDisposition) + var fileName = result[1] + fileName = fileName.replace(/\"/g, '') + + const blob = new Blob([data]) + saveAs(blob, fileName) + } else { + const resText = await data.text() + const rspObj = JSON.parse(resText) + const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] + Message.error(errMsg) + } + downloadLoadingInstance.close() + }) + .catch((r) => { + console.error(r) + Message.error('下载文件出现错误,请联系管理员!') + downloadLoadingInstance.close() + }) +} + +export default service diff --git a/ZR.Vue/src/views/monitor/operlog/index.vue b/ZR.Vue/src/views/monitor/operlog/index.vue index 8cdc070..5aca84f 100644 --- a/ZR.Vue/src/views/monitor/operlog/index.vue +++ b/ZR.Vue/src/views/monitor/operlog/index.vue @@ -2,10 +2,24 @@
- + - + @@ -18,7 +32,16 @@ - + 搜索 @@ -28,13 +51,25 @@ - 删除 + 删除 - 清空 + 清空 - 导出 + 导出 @@ -54,14 +89,15 @@ - - diff --git a/ZR.Vue/src/views/system/post/index.vue b/ZR.Vue/src/views/system/post/index.vue index 67f2d36..0d0138b 100644 --- a/ZR.Vue/src/views/system/post/index.vue +++ b/ZR.Vue/src/views/system/post/index.vue @@ -23,13 +23,26 @@ 新增 - 修改 + 修改 - 删除 + 删除 - 导出 + 导出 @@ -53,12 +66,14 @@ - + @@ -74,7 +89,7 @@ - {{dict.dictLabel}} + {{ dict.dictLabel }} @@ -90,17 +105,10 @@ diff --git a/ZR.Vue/src/views/system/user/index.vue b/ZR.Vue/src/views/system/user/index.vue index c49e72e..c113ed2 100644 --- a/ZR.Vue/src/views/system/user/index.vue +++ b/ZR.Vue/src/views/system/user/index.vue @@ -4,23 +4,49 @@
- +
- +
- + - + @@ -28,8 +54,16 @@ - + 搜索 @@ -46,10 +80,13 @@ v-hasPermi="['system:user:edit']">修改 --> - 导入 + 导入 - 导出 + 导出 @@ -80,11 +117,15 @@ -