|
@@ -7,28 +7,6 @@ import PvRoad from "@/views/largeScreen/pv-road/index.vue";
|
|
|
|
|
|
|
|
Vue.use(Router);
|
|
Vue.use(Router);
|
|
|
|
|
|
|
|
-/**
|
|
|
|
|
- * Note: 路由配置项
|
|
|
|
|
- *
|
|
|
|
|
- * hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1
|
|
|
|
|
- * alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
|
|
|
|
|
- * // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面
|
|
|
|
|
- * // 若你想不管路由下面的 children 声明的个数都显示你的根路由
|
|
|
|
|
- * // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由
|
|
|
|
|
- * redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
|
|
|
|
|
- * name:'router-name' // 设定路由的名字,一定要填写不然使用<keep-alive>时会出现各种问题
|
|
|
|
|
- * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数
|
|
|
|
|
- * roles: ['admin', 'common'] // 访问路由的角色权限
|
|
|
|
|
- * permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限
|
|
|
|
|
- * meta : {
|
|
|
|
|
- noCache: true // 如果设置为true,则不会被 <keep-alive> 缓存(默认 false)
|
|
|
|
|
- title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字
|
|
|
|
|
- icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg
|
|
|
|
|
- breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示
|
|
|
|
|
- activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
|
|
|
|
|
- }
|
|
|
|
|
- */
|
|
|
|
|
-
|
|
|
|
|
// 公共路由
|
|
// 公共路由
|
|
|
export const constantRoutes = [
|
|
export const constantRoutes = [
|
|
|
{
|
|
{
|
|
@@ -42,7 +20,6 @@ export const constantRoutes = [
|
|
|
}
|
|
}
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
|
-
|
|
|
|
|
{
|
|
{
|
|
|
path: '/login',
|
|
path: '/login',
|
|
|
component: () => import('@/views/login'),
|
|
component: () => import('@/views/login'),
|
|
@@ -63,7 +40,26 @@ export const constantRoutes = [
|
|
|
component: () => import('@/views/error/401'),
|
|
component: () => import('@/views/error/401'),
|
|
|
hidden: true
|
|
hidden: true
|
|
|
},
|
|
},
|
|
|
- //智慧园区管理平台
|
|
|
|
|
|
|
+
|
|
|
|
|
+ // ========================================
|
|
|
|
|
+ // 🔥 策略编排路由(静态路由,不依赖菜单)
|
|
|
|
|
+ // ========================================
|
|
|
|
|
+ {
|
|
|
|
|
+ path: '/mgr/strategy',
|
|
|
|
|
+ component: Layout,
|
|
|
|
|
+ hidden: true,
|
|
|
|
|
+ children: [
|
|
|
|
|
+ {
|
|
|
|
|
+ path: 'editor/:strategyCode',
|
|
|
|
|
+ component: () => import('@/views/mgr/strategy/editor'),
|
|
|
|
|
+ name: 'StrategyEditor',
|
|
|
|
|
+ meta: {
|
|
|
|
|
+ title: '策略编排',
|
|
|
|
|
+ activeMenu: '/mgr/strategy'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
{
|
|
{
|
|
|
path: '/largeScreen',
|
|
path: '/largeScreen',
|
|
|
name: 'largeScreen',
|
|
name: 'largeScreen',
|
|
@@ -74,9 +70,7 @@ export const constantRoutes = [
|
|
|
{
|
|
{
|
|
|
path: 'home',
|
|
path: 'home',
|
|
|
name: 'home',
|
|
name: 'home',
|
|
|
- meta: {
|
|
|
|
|
- title: '首页'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ meta: { title: '首页' },
|
|
|
components: {
|
|
components: {
|
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
|
left: () => import('@/views/largeScreen/home/left.vue'),
|
|
left: () => import('@/views/largeScreen/home/left.vue'),
|
|
@@ -86,9 +80,7 @@ export const constantRoutes = [
|
|
|
{
|
|
{
|
|
|
path: 'source',
|
|
path: 'source',
|
|
|
name: 'source',
|
|
name: 'source',
|
|
|
- meta: {
|
|
|
|
|
- title: '源'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ meta: { title: '源' },
|
|
|
components: {
|
|
components: {
|
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
|
left: () => import('@/views/largeScreen/source/left.vue'),
|
|
left: () => import('@/views/largeScreen/source/left.vue'),
|
|
@@ -98,9 +90,7 @@ export const constantRoutes = [
|
|
|
{
|
|
{
|
|
|
path: 'storage',
|
|
path: 'storage',
|
|
|
name: 'storage',
|
|
name: 'storage',
|
|
|
- meta: {
|
|
|
|
|
- title: '储'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ meta: { title: '储' },
|
|
|
components: {
|
|
components: {
|
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
|
left: () => import('@/views/largeScreen/storage/left.vue'),
|
|
left: () => import('@/views/largeScreen/storage/left.vue'),
|
|
@@ -110,9 +100,7 @@ export const constantRoutes = [
|
|
|
{
|
|
{
|
|
|
path: 'soc',
|
|
path: 'soc',
|
|
|
name: 'soc',
|
|
name: 'soc',
|
|
|
- meta: {
|
|
|
|
|
- title: '荷'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ meta: { title: '荷' },
|
|
|
components: {
|
|
components: {
|
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
|
left: () => import('@/views/largeScreen/soc/left.vue'),
|
|
left: () => import('@/views/largeScreen/soc/left.vue'),
|
|
@@ -122,9 +110,7 @@ export const constantRoutes = [
|
|
|
{
|
|
{
|
|
|
path: 'net',
|
|
path: 'net',
|
|
|
name: 'net',
|
|
name: 'net',
|
|
|
- meta: {
|
|
|
|
|
- title: '网'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ meta: { title: '网' },
|
|
|
components: {
|
|
components: {
|
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
|
left: () => import('@/views/largeScreen/net/left.vue'),
|
|
left: () => import('@/views/largeScreen/net/left.vue'),
|
|
@@ -134,9 +120,7 @@ export const constantRoutes = [
|
|
|
{
|
|
{
|
|
|
path: 'device',
|
|
path: 'device',
|
|
|
name: 'device',
|
|
name: 'device',
|
|
|
- meta: {
|
|
|
|
|
- title: '设备'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ meta: { title: '设备' },
|
|
|
components: {
|
|
components: {
|
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
default: () => import('@/views/largeScreen/center.vue'),
|
|
|
left: () => import('@/views/largeScreen/device/left.vue'),
|
|
left: () => import('@/views/largeScreen/device/left.vue'),
|
|
@@ -155,15 +139,13 @@ export const constantRoutes = [
|
|
|
{
|
|
{
|
|
|
path: 'road-home',
|
|
path: 'road-home',
|
|
|
name: 'road-home',
|
|
name: 'road-home',
|
|
|
- meta: {
|
|
|
|
|
- title: '首页'
|
|
|
|
|
- },
|
|
|
|
|
|
|
+ meta: { title: '首页' },
|
|
|
components: {
|
|
components: {
|
|
|
default: () => import('@/views/largeScreen/pv-road/center.vue'),
|
|
default: () => import('@/views/largeScreen/pv-road/center.vue'),
|
|
|
left: () => import('@/views/largeScreen/source/left.vue'),
|
|
left: () => import('@/views/largeScreen/source/left.vue'),
|
|
|
right: () => import('@/views/largeScreen/source/pv-road-right.vue')
|
|
right: () => import('@/views/largeScreen/source/pv-road-right.vue')
|
|
|
}
|
|
}
|
|
|
- },
|
|
|
|
|
|
|
+ }
|
|
|
]
|
|
]
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -197,6 +179,57 @@ export const constantRoutes = [
|
|
|
|
|
|
|
|
// 动态路由,基于用户权限动态去加载
|
|
// 动态路由,基于用户权限动态去加载
|
|
|
export const dynamicRoutes = [
|
|
export const dynamicRoutes = [
|
|
|
|
|
+ // ========================================
|
|
|
|
|
+ // 🔥 策略管理路由组(仅包含需要菜单的页面)
|
|
|
|
|
+ // 注意:策略编排已移至 constantRoutes,不在这里
|
|
|
|
|
+ // ========================================
|
|
|
|
|
+ {
|
|
|
|
|
+ path: '/mgr/strategy',
|
|
|
|
|
+ component: Layout,
|
|
|
|
|
+ redirect: '/mgr/strategy/index',
|
|
|
|
|
+ meta: {
|
|
|
|
|
+ title: '策略管理',
|
|
|
|
|
+ icon: 'el-icon-s-operation'
|
|
|
|
|
+ },
|
|
|
|
|
+ children: [
|
|
|
|
|
+ // ✅ 策略中心(入口页面)
|
|
|
|
|
+ {
|
|
|
|
|
+ path: 'index',
|
|
|
|
|
+ component: () => import('@/views/mgr/strategy/index'),
|
|
|
|
|
+ name: 'StrategyIndex',
|
|
|
|
|
+ meta: {
|
|
|
|
|
+ title: '策略中心',
|
|
|
|
|
+ icon: 'el-icon-menu'
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ // ✅ 策略日志
|
|
|
|
|
+ {
|
|
|
|
|
+ path: 'log',
|
|
|
|
|
+ component: () => import('@/views/mgr/strategy/log'),
|
|
|
|
|
+ name: 'StrategyLog',
|
|
|
|
|
+ meta: {
|
|
|
|
|
+ title: '策略日志',
|
|
|
|
|
+ icon: 'el-icon-document'
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ // ✅ 策略模板
|
|
|
|
|
+ {
|
|
|
|
|
+ path: 'template',
|
|
|
|
|
+ component: () => import('@/views/mgr/strategy/template'),
|
|
|
|
|
+ name: 'StrategyTemplate',
|
|
|
|
|
+ meta: {
|
|
|
|
|
+ title: '策略模板',
|
|
|
|
|
+ icon: 'el-icon-files'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ // ========================================
|
|
|
|
|
+ // 其他系统路由保持不变
|
|
|
|
|
+ // ========================================
|
|
|
{
|
|
{
|
|
|
path: '/system/user-auth',
|
|
path: '/system/user-auth',
|
|
|
component: Layout,
|
|
component: Layout,
|
|
@@ -272,17 +305,15 @@ export const dynamicRoutes = [
|
|
|
// 防止连续点击多次路由报错
|
|
// 防止连续点击多次路由报错
|
|
|
let routerPush = Router.prototype.push;
|
|
let routerPush = Router.prototype.push;
|
|
|
let routerReplace = Router.prototype.replace;
|
|
let routerReplace = Router.prototype.replace;
|
|
|
-// push
|
|
|
|
|
Router.prototype.push = function push(location) {
|
|
Router.prototype.push = function push(location) {
|
|
|
return routerPush.call(this, location).catch(err => err);
|
|
return routerPush.call(this, location).catch(err => err);
|
|
|
};
|
|
};
|
|
|
-// replace
|
|
|
|
|
Router.prototype.replace = function push(location) {
|
|
Router.prototype.replace = function push(location) {
|
|
|
return routerReplace.call(this, location).catch(err => err);
|
|
return routerReplace.call(this, location).catch(err => err);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
export default new Router({
|
|
export default new Router({
|
|
|
- mode: 'history', // 去掉url中的#
|
|
|
|
|
|
|
+ mode: 'history',
|
|
|
scrollBehavior: () => ({y: 0}),
|
|
scrollBehavior: () => ({y: 0}),
|
|
|
routes: constantRoutes
|
|
routes: constantRoutes
|
|
|
});
|
|
});
|