简化setting.js footerCopyright,githubCorner
router/index.js routerMode history时,base添加
优化src/utils/request.js codeVerification逻辑
fix:
typo错误
比较 == 可能导致意外类型强制
从 dispatch 返回的 Promise 被忽略
从 push 返回的 Promise 被忽略
异步函数调用缺少 await
This commit is contained in:
Liu Fengyu 2020-07-30 16:59:17 +08:00
parent 5850cd07e2
commit 241d0f098f
4 changed files with 20 additions and 28 deletions

View File

@ -42,7 +42,7 @@ router.beforeResolve(async (to, from, next) => {
let permissions; let permissions;
if (!loginInterception) { if (!loginInterception) {
//settings.js loginInterception为false时创建虚拟权限 //settings.js loginInterception为false时创建虚拟权限
store.dispatch("user/setPermissions", ["admin"]); await store.dispatch("user/setPermissions", ["admin"]);
permissions = ["admin"]; permissions = ["admin"];
} else { } else {
permissions = await store.dispatch("user/getUserInfo"); permissions = await store.dispatch("user/getUserInfo");

View File

@ -3,7 +3,7 @@
* @description 全局变量配置 * @description 全局变量配置
*/ */
module.exports = { module.exports = {
// 开发以及部署时的URL // 开发以及部署时的URL 如"/test/"
publicPath: "", publicPath: "",
// 生产环境构建文件的目录名 // 生产环境构建文件的目录名
outputDir: "dist", outputDir: "dist",
@ -29,9 +29,9 @@ module.exports = {
//烦请保留package.json作者信息 保留版权可免费商用 如需去除并自定义为自己企业的版权请联系群主QQ 1204505056 需支付299元 恶意修改发生纠纷及出现任何问题 由修改人自行承担 //烦请保留package.json作者信息 保留版权可免费商用 如需去除并自定义为自己企业的版权请联系群主QQ 1204505056 需支付299元 恶意修改发生纠纷及出现任何问题 由修改人自行承担
copyright: process.env.VUE_APP_AUTHOR, copyright: process.env.VUE_APP_AUTHOR,
//是否显示页面底部版权信息,建议您显示,当然您也可以选择不显示,不管您是付费用户还是未付费用户您都有选择显示或者不显示的权利 //是否显示页面底部版权信息,建议您显示,当然您也可以选择不显示,不管您是付费用户还是未付费用户您都有选择显示或者不显示的权利
footerCopyright: process.env.NODE_ENV !== "development" ? true : false, footerCopyright: process.env.NODE_ENV !== "development",
//是否显示右上角github图标 //是否显示右上角github图标
githubCorner: process.env.NODE_ENV !== "development" ? true : false, githubCorner: process.env.NODE_ENV !== "development",
//是否显示顶部进度条 //是否显示顶部进度条
progressBar: true, progressBar: true,
//缓存路由的最大数量 //缓存路由的最大数量

View File

@ -7,7 +7,7 @@ import Vue from "vue";
import VueRouter from "vue-router"; import VueRouter from "vue-router";
import Layout from "@/layouts"; import Layout from "@/layouts";
import EmptyLayout from "@/layouts/EmptyLayout"; import EmptyLayout from "@/layouts/EmptyLayout";
import { routerMode } from "@/config/settings"; import { publicPath, routerMode } from "@/config/settings";
Vue.use(VueRouter); Vue.use(VueRouter);
export const constantRoutes = [ export const constantRoutes = [
@ -468,6 +468,7 @@ export const asyncRoutes = [
]; ];
const router = new VueRouter({ const router = new VueRouter({
base: routerMode === "history" ? publicPath : "",
mode: routerMode, mode: routerMode,
scrollBehavior: () => ({ scrollBehavior: () => ({
y: 0, y: 0,
@ -484,6 +485,7 @@ VueRouter.prototype.push = function push(location, onResolve, onReject) {
export function resetRouter() { export function resetRouter() {
router.matcher = new VueRouter({ router.matcher = new VueRouter({
base: routerMode === "history" ? publicPath : "",
mode: routerMode, mode: routerMode,
scrollBehavior: () => ({ scrollBehavior: () => ({
y: 0, y: 0,

View File

@ -15,7 +15,7 @@ import store from "@/store";
import qs from "qs"; import qs from "qs";
import router from "@/router"; import router from "@/router";
import _ from "lodash"; import _ from "lodash";
import { isArray, isNumber } from "@/utils/validate"; import { isArray } from "@/utils/validate";
const service = axios.create({ const service = axios.create({
baseURL, baseURL,
@ -31,7 +31,7 @@ service.interceptors.request.use(
config.headers[tokenName] = store.getters["user/accessToken"]; config.headers[tokenName] = store.getters["user/accessToken"];
} }
if (config.data) { if (config.data) {
//这里会过滤所有为空、0、fasle的key如果不需要请自行注释 //这里会过滤所有为空、0、false的key如果不需要请自行注释
config.data = _.pickBy(config.data, _.identity); config.data = _.pickBy(config.data, _.identity);
} }
if (process.env.NODE_ENV !== "preview") { if (process.env.NODE_ENV !== "preview") {
@ -76,29 +76,21 @@ service.interceptors.response.use(
} }
const { status, data, config } = response; const { status, data, config } = response;
const { code, msg } = data; const { code, msg } = data;
let codeVerification = ""; // 操作正常Code数组
let codeVerificationArray = isArray(successCode)
if (isNumber(successCode)) { ? [...successCode]
codeVerification = successCode; : [...[successCode]];
} // 是否操作正常
if (isArray(successCode)) { if (codeVerificationArray.includes(code)) {
for (let i = 0; i < successCode.length; i++) { return data;
if (code === successCode[i]) { } else {
codeVerification = successCode[i];
break;
}
}
}
if (code != codeVerification) {
switch (code) { switch (code) {
case invalidCode: case invalidCode:
errorMsg(msg || `后端接口${code}异常`); errorMsg(msg || `后端接口${code}异常`);
store.dispatch("user/resetAccessToken"); store.dispatch("user/resetAccessToken").catch(() => {});
break; break;
case noPermissionCode: case noPermissionCode:
router.push({ router.push({ path: "/401" }).catch(() => {});
path: "/401",
});
break; break;
default: default:
errorMsg(msg || `后端接口${code}异常`); errorMsg(msg || `后端接口${code}异常`);
@ -108,8 +100,6 @@ service.interceptors.response.use(
"vue-admin-beautiful请求异常拦截:" + "vue-admin-beautiful请求异常拦截:" +
JSON.stringify({ url: config.url, code, msg }) || "Error" JSON.stringify({ url: config.url, code, msg }) || "Error"
); );
} else {
return data;
} }
}, },
(error) => { (error) => {
@ -118,7 +108,7 @@ service.interceptors.response.use(
} }
/*网络连接过程异常处理*/ /*网络连接过程异常处理*/
let { message } = error; let { message } = error;
if (message == "Network Error") { if (message === "Network Error") {
message = "后端接口连接异常"; message = "后端接口连接异常";
} }
if (message.includes("timeout")) { if (message.includes("timeout")) {