From 83dd2a9848a767f3f8aa13f63b502895220fba11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E8=BE=89?= <814457906@qq.com> Date: Thu, 28 Jul 2022 18:00:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E7=BB=84=E7=BB=87=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 2 +- src/api/system/area.js | 44 +++ src/api/system/info.js | 44 +++ src/api/system/user.js | 148 ++++----- src/layout/components/Navbar.vue | 4 +- src/utils/request.js | 239 +++++++-------- src/views/system/area/index.vue | 375 +++++++++++++++++++++++ src/views/system/dept/index.vue | 188 ++++++++---- src/views/system/info/index.vue | 507 +++++++++++++++++++++++++++++++ 9 files changed, 1301 insertions(+), 250 deletions(-) create mode 100644 src/api/system/area.js create mode 100644 src/api/system/info.js create mode 100644 src/views/system/area/index.vue create mode 100644 src/views/system/info/index.vue diff --git a/.env.development b/.env.development index 6a5988e..e352278 100644 --- a/.env.development +++ b/.env.development @@ -5,7 +5,7 @@ VUE_APP_TITLE = 幼儿园体质检测管理系统 ENV = 'development' # 若依管理系统/开发环境 -VUE_APP_BASE_API = 'http://192.168.16.64:8080' +VUE_APP_BASE_API = 'http://192.168.16.62:8080' #'/dev-api' # 路由懒加载 diff --git a/src/api/system/area.js b/src/api/system/area.js new file mode 100644 index 0000000..f18bb18 --- /dev/null +++ b/src/api/system/area.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询区域管理列表 +export function listArea(query) { + return request({ + url: '/system/area/list', + method: 'get', + params: query + }) +} + +// 查询区域管理详细 +export function getArea(id) { + return request({ + url: '/system/area/' + id, + method: 'get' + }) +} + +// 新增区域管理 +export function addArea(data) { + return request({ + url: '/system/area/add', + method: 'post', + data: data + }) +} + +// 修改区域管理 +export function edit(data) { + return request({ + url: '/system/area/edit', + method: 'post', + data: data + }) +} + +// 删除区域管理 +export function delArea(id) { + return request({ + url: '/system/area/' + id, + method: 'delete' + }) +} \ No newline at end of file diff --git a/src/api/system/info.js b/src/api/system/info.js new file mode 100644 index 0000000..a9dc25c --- /dev/null +++ b/src/api/system/info.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询区域管理列表 +export function list(query) { + return request({ + url: '/system/info/list', + method: 'get', + params: query + }) +} + +// 查询区域管理详细 +export function getinfo(id) { + return request({ + url: '/system/info/' + id, + method: 'get' + }) +} + +// 新增区域管理 +export function add(data) { + return request({ + url: '/system/info/add', + method: 'post', + data: data + }) +} + +// 修改区域管理 +export function edit(data) { + return request({ + url: '/system/info/edit', + method: 'post', + data: data + }) +} + +// 删除区域管理 +export function delinfo(id) { + return request({ + url: '/system/info/' + id, + method: 'delete' + }) +} \ No newline at end of file diff --git a/src/api/system/user.js b/src/api/system/user.js index 5cd50b2..a602bc6 100644 --- a/src/api/system/user.js +++ b/src/api/system/user.js @@ -3,125 +3,125 @@ import { parseStrEmpty } from "@/utils/xinyilu"; // 查询用户列表 export function listUser(query) { - return request({ - url: '/system/user/list', - method: 'get', - params: query - }) + return request({ + url: '/system/user/list', + method: 'get', + params: query + }) } // 查询用户详细 export function getUser(userId) { - return request({ - url: '/system/user/' + parseStrEmpty(userId), - method: 'get' - }) + return request({ + url: '/system/user/' + parseStrEmpty(userId), + method: 'get' + }) } // 新增用户 export function addUser(data) { - return request({ - url: '/system/user', - method: 'post', - data: data - }) + return request({ + url: '/system/user', + method: 'post', + data: data + }) } // 修改用户 export function updateUser(data) { - return request({ - url: '/system/user', - method: 'put', - data: data - }) + return request({ + url: '/system/user', + method: 'put', + data: data + }) } // 删除用户 export function delUser(userId) { - return request({ - url: '/system/user/' + userId, - method: 'delete' - }) + return request({ + url: '/system/user/' + userId, + method: 'delete' + }) } // 用户密码重置 export function resetUserPwd(userId, password) { - const data = { - userId, - password - } - return request({ - url: '/system/user/resetPwd', - method: 'put', - data: data - }) + const data = { + userId, + password + } + return request({ + url: '/system/user/resetPwd', + method: 'put', + data: data + }) } // 用户状态修改 export function changeUserStatus(userId, status) { - const data = { - userId, - status - } - return request({ - url: '/system/user/changeStatus', - method: 'put', - data: data - }) + const data = { + userId, + status + } + return request({ + url: '/system/user/changeStatus', + method: 'put', + data: data + }) } // 查询用户个人信息 export function getUserProfile() { - return request({ - url: '/system/user/profile', - method: 'get' - }) + return request({ + url: '/system/user/profile', + method: 'get' + }) } // 修改用户个人信息 export function updateUserProfile(data) { - return request({ - url: '/system/user/profile', - method: 'put', - data: data - }) + return request({ + url: '/system/user/profile', + method: 'put', + data: data + }) } // 用户密码重置 export function updateUserPwd(oldPassword, newPassword) { - const data = { - oldPassword, - newPassword - } - return request({ - url: '/system/user/profile/updatePwd', - method: 'put', - params: data - }) + const data = { + oldPassword, + newPassword + } + return request({ + url: '/system/user/profile/updatePwd', + method: 'put', + params: data + }) } // 用户头像上传 export function uploadAvatar(data) { - return request({ - url: '/system/user/profile/avatar', - method: 'post', - data: data - }) + return request({ + url: '/system/user/profile/avatar', + method: 'post', + data: data + }) } // 查询授权角色 export function getAuthRole(userId) { - return request({ - url: '/system/user/authRole/' + userId, - method: 'get' - }) + return request({ + url: '/system/user/authRole/' + userId, + method: 'get' + }) } // 保存授权角色 export function updateAuthRole(data) { - return request({ - url: '/system/user/authRole', - method: 'put', - params: data - }) -} + return request({ + url: '/system/user/authRole', + method: 'put', + params: data + }) +} \ No newline at end of file diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 2a9b4e3..33c1fc8 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -10,11 +10,11 @@ - + - + diff --git a/src/utils/request.js b/src/utils/request.js index 4e3d339..6484b43 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -13,54 +13,54 @@ export let isRelogin = { show: false }; console.log(process.env.VUE_APP_BASE_API); axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' -// 创建axios实例 + // 创建axios实例 const service = axios.create({ - // axios中请求配置有baseURL选项,表示请求URL公共部分 - baseURL: process.env.VUE_APP_BASE_API,//'http://192.168.16.64:8080', - // 超时 - timeout: 10000 + // axios中请求配置有baseURL选项,表示请求URL公共部分 + baseURL: process.env.VUE_APP_BASE_API, //'http://192.168.16.64:8080', + // 超时 + timeout: 10000 }) // request拦截器 service.interceptors.request.use(config => { - // 是否需要设置 token - const isToken = (config.headers || {}).isToken === false - // 是否需要防止数据重复提交 - const isRepeatSubmit = (config.headers || {}).repeatSubmit === 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; - } - if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { - const requestObj = { - url: config.url, - data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data, - time: new Date().getTime() + // 是否需要设置 token + const isToken = (config.headers || {}).isToken === false + // 是否需要防止数据重复提交 + const isRepeatSubmit = (config.headers || {}).repeatSubmit === false + if (getToken() && !isToken) { + config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 } - const sessionObj = cache.session.getJSON('sessionObj') - if (sessionObj === undefined || sessionObj === null || sessionObj === '') { - cache.session.setJSON('sessionObj', requestObj) - } else { - const s_url = sessionObj.url; // 请求地址 - const s_data = sessionObj.data; // 请求数据 - const s_time = sessionObj.time; // 请求时间 - const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交 - if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) { - const message = '数据正在处理,请勿重复提交'; - console.warn(`[${s_url}]: ` + message) - return Promise.reject(new Error(message)) - } else { - cache.session.setJSON('sessionObj', requestObj) - } + // 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 + if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { + const requestObj = { + url: config.url, + data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data, + time: new Date().getTime() + } + const sessionObj = cache.session.getJSON('sessionObj') + if (sessionObj === undefined || sessionObj === null || sessionObj === '') { + cache.session.setJSON('sessionObj', requestObj) + } else { + const s_url = sessionObj.url; // 请求地址 + const s_data = sessionObj.data; // 请求数据 + const s_time = sessionObj.time; // 请求时间 + const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交 + if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) { + const message = '数据正在处理,请勿重复提交'; + console.warn(`[${s_url}]: ` + message) + return Promise.reject(new Error(message)) + } else { + cache.session.setJSON('sessionObj', requestObj) + } + } + } + return config }, error => { console.log(error) Promise.reject(error) @@ -68,92 +68,89 @@ service.interceptors.request.use(config => { // 响应拦截器 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) { - if (!isRelogin.show) { - isRelogin.show = true; - MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { - confirmButtonText: '重新登录', - cancelButtonText: '取消', - type: 'warning' + // 未设置状态码则默认成功状态 + 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 } - ).then(() => { - isRelogin.show = false; - store.dispatch('LogOut').then(() => { - location.href = '/index'; + if (code === 401) { + if (!isRelogin.show) { + isRelogin.show = true; + MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { + confirmButtonText: '重新登录', + cancelButtonText: '取消', + type: 'warning' + }).then(() => { + isRelogin.show = false; + store.dispatch('LogOut').then(() => { + location.href = '/index'; + }) + }).catch(() => { + isRelogin.show = false; + }); + } + 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 }) - }).catch(() => { - isRelogin.show = false; - }); + return Promise.reject(error) } - 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 { - 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(); - }) + 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 default service +export default service \ No newline at end of file diff --git a/src/views/system/area/index.vue b/src/views/system/area/index.vue new file mode 100644 index 0000000..e0c51c4 --- /dev/null +++ b/src/views/system/area/index.vue @@ -0,0 +1,375 @@ + + + diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index 5b898a2..04a074a 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -1,6 +1,12 @@ diff --git a/src/views/system/info/index.vue b/src/views/system/info/index.vue new file mode 100644 index 0000000..29c6c44 --- /dev/null +++ b/src/views/system/info/index.vue @@ -0,0 +1,507 @@ + + + + \ No newline at end of file