'admin-21.03.25:优化网站loading、forEach替代map、更新最新依赖'

This commit is contained in:
lyt 2021-03-25 18:07:15 +08:00
parent 69fdd605d8
commit 8e9ad4be94
6 changed files with 50 additions and 34 deletions

View File

@ -36,4 +36,4 @@ module.exports = {
vueIndentScriptAndStyle: false,
// 换行符使用 lf 结尾是 可选值"<auto|lf|crlf|cr>"
endOfLine: 'lf',
}
};

View File

@ -17,18 +17,7 @@
<title>vue-next-admin</title>
</head>
<body>
<div id="app">
<div class="loading-next">
<div class="loading-next-box">
<div class="loading-next-animation">
<div class="loading-next-animation-box">
<div></div>
<div></div>
</div>
</div>
</div>
</div>
</div>
<div id="app"></div>
<script type="text/javascript">
if (window.location.origin === 'https://lyt-top.gitee.io') {
var _hmt = _hmt || [];

View File

@ -7,7 +7,7 @@
"lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/"
},
"dependencies": {
"@antv/g6": "^4.2.1",
"@antv/g6": "^4.2.3",
"axios": "^0.21.1",
"clipboard": "^2.0.8",
"countup.js": "^2.0.7",
@ -32,13 +32,13 @@
"@types/node": "^14.14.35",
"@types/nprogress": "^0.2.0",
"@types/sortablejs": "^1.10.6",
"@typescript-eslint/eslint-plugin": "^4.18.0",
"@typescript-eslint/parser": "^4.18.0",
"@typescript-eslint/eslint-plugin": "^4.19.0",
"@typescript-eslint/parser": "^4.19.0",
"@vitejs/plugin-vue": "^1.1.5",
"@vue/compiler-sfc": "^3.0.7",
"dotenv": "^8.2.0",
"eslint": "^7.22.0",
"eslint-plugin-vue": "^7.7.0",
"eslint-plugin-vue": "^7.8.0",
"prettier": "^2.2.1",
"sass": "^1.32.8",
"sass-loader": "^11.0.1",

View File

@ -3,6 +3,7 @@ import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
import { store } from '/@/store/index.ts';
import { getSession, clearSession } from '/@/utils/storage.ts';
import { NextLoading } from '/@/utils/loading.ts';
import { getMenuAdmin, getMenuTest } from '/@/api/menu/index.ts';
// 定义动态路由
@ -811,6 +812,7 @@ export function setBackEndControlRefreshRoutes() {
// 后端控制路由,模拟执行路由数据初始化
const initBackEndControlRoutesFun = (res: any) => {
NextLoading.start();
const oldRoutes = JSON.parse(JSON.stringify(res.data));
store.dispatch('requestOldRoutes/setBackEndControlRoutes', oldRoutes);
dynamicRoutes[0].children = backEndRouter(res.data);
@ -868,7 +870,7 @@ export function formatTwoStageRoutes(arr: any) {
if (arr.length < 0) return false;
const newArr: any = [];
const cacheList: Array<string> = [];
arr.map((v: any) => {
arr.forEach((v: any) => {
if (v.path === '/') {
newArr.push({ component: v.component, name: v.name, path: v.path, redirect: v.redirect, meta: v.meta, children: [] });
} else {
@ -904,7 +906,7 @@ export function hasAuth(auths: any, route: any) {
// 递归过滤有权限的路由
export function setFilterMenuFun(routes: any, auth: any) {
const menu: any = [];
routes.map((route: any) => {
routes.forEach((route: any) => {
const item = { ...route };
if (hasAuth(auth, item)) {
if (item.children) item.children = setFilterMenuFun(item.children, auth);
@ -915,12 +917,12 @@ export function setFilterMenuFun(routes: any, auth: any) {
}
// 获取当前用户的权限去比对路由表,用于动态路由的添加
export function setFilterRoute() {
export function setFilterRoute(chil: any) {
let filterRoute: any = [];
formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes))[0].children.map((route: any) => {
chil.forEach((route: any) => {
if (route.meta.auth)
route.meta.auth.map((metaAuth: any) => {
store.state.userInfos.userInfos.authPageList.map((auth: any) => {
route.meta.auth.forEach((metaAuth: any) => {
store.state.userInfos.userInfos.authPageList.forEach((auth: any) => {
if (metaAuth === auth) filterRoute.push({ ...route });
});
});
@ -931,20 +933,20 @@ export function setFilterRoute() {
// 比对后的路由表,进行重新赋值
export function setFilterRouteEnd() {
let filterRouteEnd: any = formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes));
filterRouteEnd[0].children = setFilterRoute();
filterRouteEnd[0].children = setFilterRoute(filterRouteEnd[0].children);
return filterRouteEnd;
}
// 添加动态路由
export function setAddRoute() {
setFilterRouteEnd().map((route: any) => {
setFilterRouteEnd().forEach((route: any) => {
router.addRoute((route as unknown) as RouteRecordRaw);
});
}
// 删除/重置路由
export function resetRoute() {
setFilterRouteEnd().map((route: any) => {
setFilterRouteEnd().forEach((route: any) => {
const { name } = route;
router.hasRoute(name) && router.removeRoute(name);
});
@ -952,6 +954,7 @@ export function resetRoute() {
// 初始化方法,防止刷新时丢失
export function initAllFun() {
NextLoading.start();
const token = getSession('token');
if (!token) return false;
store.dispatch('userInfos/setUserInfos'); // 触发初始化用户信息
@ -997,6 +1000,7 @@ router.beforeEach((to, from, next) => {
// 路由加载后
router.afterEach(() => {
NProgress.done();
NextLoading.done();
});
// 导出路由

23
src/utils/loading.ts Normal file
View File

@ -0,0 +1,23 @@
import { nextTick } from 'vue';
// 定义方法
export const NextLoading = {
// 创建 loading
start: () => {
const body: any = document.body;
const div = document.createElement('div');
div.setAttribute('class', 'loading-next');
const html = `<div class="loading-next-box"><div class="loading-next-animation"><div class="loading-next-animation-box"><div></div><div></div></div></div></div>`;
div.innerHTML = html;
body.insertBefore(div, body.childNodes[0]);
},
// 移除 loading
done: () => {
nextTick(() => {
setTimeout(() => {
const el = document.querySelector('.loading-next');
el && el.parentNode?.removeChild(el);
}, 1000);
});
},
};

View File

@ -36,7 +36,7 @@
</el-row>
</el-form-item>
<el-form-item>
<el-button type="primary" class="login-content-submit" round @click="onSignIn">
<el-button type="primary" class="login-content-submit" round @click="onSignIn" :loading="loading.signIn">
<span> </span>
</el-button>
</el-form-item>
@ -47,7 +47,7 @@
import { toRefs, reactive, defineComponent, computed } from 'vue';
import { useRouter } from 'vue-router';
import { ElMessage } from 'element-plus';
import { setAddRoute, setFilterMenu, setCacheTagsViewRoutes, getBackEndControlRoutes, setBackEndControlRoutesFun } from '/@/router/index.ts';
import { initAllFun, getBackEndControlRoutes, setBackEndControlRoutesFun } from '/@/router/index.ts';
import { useStore } from '/@/store/index.ts';
import { setSession } from '/@/utils/storage.ts';
import { formatAxis } from '/@/utils/formatTime.ts';
@ -62,19 +62,17 @@ export default defineComponent({
password: '123456',
code: '1234',
},
loading: {
signIn: false,
},
});
//
const currentTime = computed(() => {
return formatAxis(new Date());
});
//
const initAllFun = () => {
setAddRoute();
setFilterMenu();
setCacheTagsViewRoutes();
};
//
const onSignIn = () => {
state.loading.signIn = true;
let defaultAuthPageList: Array<string> = [];
let defaultAuthBtnList: Array<string> = [];
// admin meta.auth
@ -130,7 +128,9 @@ export default defineComponent({
router.push('/');
//
setTimeout(() => {
state.loading.signIn = true;
ElMessage.success(`${currentTimeInfo},欢迎回来!`);
// loading
}, 300);
};
return {