From e2023ed42854c38af414288faf4260a064ed2d7e Mon Sep 17 00:00:00 2001 From: h7ml Date: Fri, 10 Jun 2022 11:50:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(router):=20=E8=B7=AF=E7=94=B1=E5=A4=84?= =?UTF-8?q?=E7=90=86=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/config/setting.config.js | 2 +- src/store/modules/routes.js | 64 ++----------------------------- src/utils/router/utils.js | 62 ++++++++++++++++++++++++++++++ src/views/CloudPressure/index.vue | 8 +++- 4 files changed, 73 insertions(+), 63 deletions(-) create mode 100644 src/utils/router/utils.js diff --git a/src/config/setting.config.js b/src/config/setting.config.js index 2f2b54506e..7084b9e0c7 100644 --- a/src/config/setting.config.js +++ b/src/config/setting.config.js @@ -81,7 +81,7 @@ module.exports = { '_mimg', 'fileServer', ], - recordRoute: process.env.NODE_ENV == 'development' ? true : false, + recordRoute: false, logo: 'vuejs-fill', i18n: 'zh', messageDuration: 1500, diff --git a/src/store/modules/routes.js b/src/store/modules/routes.js index 41e8eecc4b..a483c910e1 100644 --- a/src/store/modules/routes.js +++ b/src/store/modules/routes.js @@ -6,7 +6,8 @@ import { defaultRoutes, errorRoutes } from '@/config/router.config' import { getRouterList } from '@/api/User' import { convertRouter, filterRoutes } from '@/utils/router/routes' import { getToken } from '@/utils/vue' - +import router from '@/utils/router/utils' +const utilsRouter = new router() const state = () => ({ routes: [], cachedRoutes: [], @@ -83,66 +84,9 @@ const actions = { /** * 处理路由 */ - let data = [] - results.forEach((item, key) => { - if (item.children && item.meta) { - item.children.forEach((i, k) => { - if (i.meta) { - // i.name = i.name - i.path = i.url - i.component = i.meta.component - i.hidden = i.meta.hidden || false - i.meta.noKeepAlive = i.meta.noKeepAlive || false - i.menuHidden = i.meta.menuHidden || false - i.alwaysShow = i.meta.alwaysShow || false - // i.meta.title = i.meta.title - // i.meta.icon = i.meta.icon - } - }) - } - if (item.meta && item.meta.redirect) { - data.push({ - hidden: item.meta.hidden || false, - menuHidden: item.meta.menuHidden || false, - alwaysShow: item.meta.alwaysShow || false, - name: item.name, - path: item.url, - component: item.meta.component, - redirect: item.meta.redirect, - meta: { - title: item.meta.title, - icon: item.meta.icon, - noKeepAlive: item.meta.noKeepAlive || false, - }, - children: item.children, - }) - } else if (item.meta) { - data.push({ - hidden: item.hidden || false, - menuHidden: item.menuHidden || false, - alwaysShow: item.alwaysShow || false, - name: item.name, - path: item.url, - component: item.meta.component, - meta: { - title: item.meta.title, - icon: item.meta.icon, - noKeepAlive: item.meta.noKeepAlive || false, - }, - children: item.children, - }) - } else { - Vue.prototype.$baseMessage( - '后端没有正确的返回路由,将展示默认路由', - 'error', - false, - 'dgiot-hey-message-error' - ) - data = _defaultRoutes - } - }) + let data = _.merge(utilsRouter.compute(results, errorRoutes)) + console.log(data) if (data[data.length - 1].path !== '*') { - data.push(errorRoutes) routes = convertRouter(data) } diff --git a/src/utils/router/utils.js b/src/utils/router/utils.js new file mode 100644 index 0000000000..c92b76e5e7 --- /dev/null +++ b/src/utils/router/utils.js @@ -0,0 +1,62 @@ +/** + * @description 路由统一处理 + */ +export default class router { + constructor() { + this.menu = [] + } + + compute(router) { + this.menu = [] + router.forEach((item) => { + if (item.children && item.meta) { + item.children.forEach((i, k) => { + if (i.meta) { + // i.name = i.name + i.path = i.url + i.component = i.meta.component + i.hidden = i.meta.hidden || false + i.meta.noKeepAlive = i.meta.noKeepAlive || false + i.menuHidden = i.meta.menuHidden || false + i.alwaysShow = i.meta.alwaysShow || false + // i.meta.title = i.meta.title + // i.meta.icon = i.meta.icon + } + }) + } + if (item.meta && item.meta.redirect) { + this.menu.push({ + hidden: item.meta.hidden || false, + menuHidden: item.meta.menuHidden || false, + alwaysShow: item.meta.alwaysShow || false, + name: item.name, + path: item.url, + component: item.meta.component, + redirect: item.meta.redirect, + meta: { + title: item.meta.title, + icon: item.meta.icon, + noKeepAlive: item.meta.noKeepAlive || false, + }, + children: item.children, + }) + } else if (item.meta) { + this.menu.push({ + hidden: item.hidden || false, + menuHidden: item.menuHidden || false, + alwaysShow: item.alwaysShow || false, + name: item.name, + path: item.url, + component: item.meta.component, + meta: { + title: item.meta.title, + icon: item.meta.icon, + noKeepAlive: item.meta.noKeepAlive || false, + }, + children: item.children, + }) + } + }) + return this.menu + } +} diff --git a/src/views/CloudPressure/index.vue b/src/views/CloudPressure/index.vue index 03070761f1..2fee3c5454 100644 --- a/src/views/CloudPressure/index.vue +++ b/src/views/CloudPressure/index.vue @@ -651,8 +651,12 @@ where: { name: 'zeta压测报告' }, }) const { results: product = [] } = await queryProduct({ + excludeKeys: + 'channel,category,children,config,decoder,desc,producttemplet,topics,profile,content', where: zeta?.[0]?.objectId - ? { producttemplet: zeta?.[0]?.objectId } + ? { + producttemplet: zeta?.[0]?.objectId, + } : {}, }) product?.[0]?.objectId ? (this.product = product?.[0]?.objectId) : '' @@ -824,7 +828,7 @@ limit: this.queryForm.limit, count: 'objectId', order: '-createdAt', - excludeKeys: 'properties', + excludeKeys: 'product,profile,content', where: { product: this.product, },