菜单优化

main
刘妍 1 month ago
parent a989857c26
commit 1f7852f372

@ -133,32 +133,26 @@ export const usePermissionStore = defineStore({
const normalizeMenu = (data) => {
let path = '';
if (data.item.url.indexOf('@') > 0) {
path = data.item.url.replace('@', '/');
if (data.url.indexOf('@') > 0) {
path = data.url.replace('@', '/');
} else {
path =
data.item.url ||
'/formCallPage?id=' +
data.item.id +
'&name=' +
data.item.name +
'&code=' +
data.item.code;
data.url || '/formCallPage?id=' + data.id + '&name=' + data.name + '&code=' + data.code;
}
const newPath = {
orderNo: data.item.sortNo,
icon: data.item.iconName,
title: data.item.name,
orderNo: data.sortNo,
icon: data.iconName,
title: data.name,
meta: {
orderNo: data.item.sortNo,
icon: data.item.iconName,
title: data.item.name,
elements: (data.item && data.item.elements) || '',
orderNo: data.sortNo,
icon: data.iconName,
title: data.name,
elements: (data && data.elements) || '',
},
name: data.item.name,
hideMenu: data.item.status == 1 ? false : true,
name: data.name,
hideMenu: data.status == 1 ? false : true,
path: path,
id: data.item.id || '',
id: data.id || '',
children: [],
};
if (data.children && data.children.length > 0) {
@ -172,56 +166,56 @@ export const usePermissionStore = defineStore({
const modules = import.meta.glob('../../views/**/**/**/index.vue');
childData.forEach((element) => {
// 菜单里配置带参数,但没有单独的主路由,先注册主路由
if (element.item.status == 1 && element.item.url.indexOf('@') > 0) {
if (router.hasRoute(element.item.code)) {
const path = element.item.url.substring(0, element.item.url.indexOf('@'));
router.addRoute(element.item.code, {
if (element.status == 1 && element.url.indexOf('@') > 0) {
if (router.hasRoute(element.code)) {
const path = element.url.substring(0, element.url.indexOf('@'));
router.addRoute(element.code, {
path: path + '/:id',
name: element.item.url.replaceAll('/', ''),
name: element.url.replaceAll('/', ''),
meta: {
title: element.item.name,
icon: element.item.iconName,
elements: element.item.elements,
title: element.name,
icon: element.iconName,
elements: element.elements,
},
component: modules['../../views/demo' + path + '/index.vue'],
});
} else {
const path = element.item.url.substring(0, element.item.url.indexOf('@'));
const path = element.url.substring(0, element.url.indexOf('@'));
router.addRoute('Root', {
path: path,
name: element.item.code,
name: element.code,
meta: {
title: element.item.name,
icon: element.item.iconName,
title: element.name,
icon: element.iconName,
hideChildrenInMenu: true,
elements: element.item.elements,
elements: element.elements,
},
component: LAYOUT,
children: [
{
path: path + '/:id',
name: element.item.url.replaceAll('/', ''),
name: element.url.replaceAll('/', ''),
meta: {
title: element.item.name,
icon: element.item.iconName,
elements: element.item.elements,
title: element.name,
icon: element.iconName,
elements: element.elements,
},
component: modules['../../views/demo' + path + '/index.vue'],
},
],
});
}
} else if (element.item.code && element.item.status == 1) {
router.addRoute(element.item.code, {
path: element.item.url,
name: element.item.url.replaceAll('/', ''),
} else if (element.code && element.status == 1) {
router.addRoute(element.code, {
path: element.url,
name: element.url.replaceAll('/', ''),
meta: {
title: element.item.name,
icon: element.item.iconName,
elements: element.item.elements,
title: element.name,
icon: element.iconName,
elements: element.elements,
},
// component: () => import('../../views/demo' + element.item.url + '/index.vue')
component: modules['../../views/demo' + element.item.url + '/index.vue'],
// component: () => import('../../views/demo' + element.url + '/index.vue')
component: modules['../../views/demo' + element.url + '/index.vue'],
});
}
if (element.children && element.children.length > 0) {
@ -232,43 +226,43 @@ export const usePermissionStore = defineStore({
// 注册路由
const registeredRoute = (data) => {
const modules = import.meta.glob('../../views/**/**/**/index.vue');
if (data.item.url.split('/')[1] == 'map') {
if (data.url.split('/')[1] == 'map') {
// 大屏的情况下不继承layout
router.addRoute('Root', {
path: data.item.url,
name: data.item.code,
path: data.url,
name: data.code,
meta: {
title: data.item.name,
icon: data.item.iconName,
elements: data.item.elements,
title: data.name,
icon: data.iconName,
elements: data.elements,
},
component: modules['../../views' + data.item.url + '/index.vue'],
component: modules['../../views' + data.url + '/index.vue'],
});
} else {
// 正常菜单
if (data.children.length == 0 && data.item.status == 1) {
if (data.children.length == 0 && data.status == 1) {
// 没有子菜单
if (data.item.url.indexOf('@') > 0) {
if (data.url.indexOf('@') > 0) {
//给带参数的路由先注册主路由
const path = data.item.url.substring(0, data.item.url.indexOf('@'));
const path = data.url.substring(0, data.url.indexOf('@'));
router.addRoute('Root', {
path: path,
name: data.item.code,
name: data.code,
meta: {
title: data.item.name,
icon: data.item.iconName,
title: data.name,
icon: data.iconName,
hideChildrenInMenu: true,
elements: data.item.elements,
elements: data.elements,
},
component: LAYOUT,
children: [
{
path: path + '/:id',
name: data.item.url.replaceAll('/', ''),
name: data.url.replaceAll('/', ''),
meta: {
title: data.item.name,
icon: data.item.iconName,
elements: data.item.elements,
title: data.name,
icon: data.iconName,
elements: data.elements,
},
component: modules['../../views/demo' + path + '/index.vue'],
},
@ -276,46 +270,44 @@ export const usePermissionStore = defineStore({
});
} else {
router.addRoute('Root', {
path: data.item.url,
name: data.item.code,
path: data.url,
name: data.code,
meta: {
title: data.item.name,
icon: data.item.iconName,
title: data.name,
icon: data.iconName,
hideChildrenInMenu: true,
elements: data.item.elements,
elements: data.elements,
},
component: LAYOUT,
children: [
{
path: data.item.url,
name: data.item.url.replaceAll('/', ''),
path: data.url,
name: data.url.replaceAll('/', ''),
meta: {
title: data.item.name,
icon: data.item.iconName,
elements: data.item.elements,
title: data.name,
icon: data.iconName,
elements: data.elements,
},
component: modules['../../views/demo' + data.item.url + '/index.vue'],
component: modules['../../views/demo' + data.url + '/index.vue'],
},
],
});
}
} else {
// 有子菜单
if (data.item.status == 0) {
if (data.status == 0) {
return;
}
router.addRoute('Root', {
path: data.item.url,
name: data.item.code,
path: data.url,
name: data.code,
meta: {
title: data.item.name,
icon: data.item.iconName,
elements: data.item.elements,
title: data.name,
icon: data.iconName,
elements: data.elements,
},
component:
data.item.parentId == 0
? LAYOUT
: modules['../../views/demo' + data.item.url + '/index.vue'],
data.parentId == 0 ? LAYOUT : modules['../../views/demo' + data.url + '/index.vue'],
});
if (data.children && data.children.length > 0) {
childRoute(data.children);

@ -65,19 +65,19 @@
}
function treeIterator(tree) {
tree.forEach((node) => {
node.name = node.item.name;
node.id = node.item.id;
node.elements = node.item.elements;
node.name = node.name;
node.id = node.id;
node.elements = node.elements;
node.children && treeIterator(node.children);
});
}
function btnIterator(moduleId, tree) {
tree.forEach((node) => {
if (moduleId == node.item.id) {
if (moduleId == node.id) {
btnData.value.push({
name: node.item.name,
id: node.item.id,
elements: node.item.elements,
name: node.name,
id: node.id,
elements: node.elements,
disabled: true,
});
}

@ -14,16 +14,12 @@
{{ time }}
<!-- <span>临近或已接近夜晚</span> -->
</div>
<div class="content-item">
<!-- <div class="content-item">
<div class="item-div" title="飞行器上 Dongle 数量">
<img src="@/assets/images/flightoperation/project.png" alt="" />
{{ uavInformation.wireless_link ? uavInformation.wireless_link.dongle_number : 0 }}
</div>
<a-divider type="vertical" style="border-color: #4e5778" />
<!-- <div class="item-div">
<img src="@/assets/images/flightoperation/arrow.png" alt="" />
0%
</div> -->
<div class="item-div" title="电量百分比">
<img src="@/assets/images/flightoperation/electricity.png" alt="" />
{{
@ -32,16 +28,17 @@
: 0
}}
</div>
</div>
</div> -->
<div class="content-item">
<div class="item-div" title="SDR 链路连接状态">
<img src="@/assets/images/flightoperation/sdr.png" alt="" />
<!-- sdr_link_state -->
<template
v-if="uavInformation.wireless_link && uavInformation.wireless_link.sdr_link_state == 1"
>连接</template
>
<template v-else></template>
连接</template
>
<template v-else> </template>
</div>
<a-divider type="vertical" style="border-color: #4e5778" />
<div class="item-div" title="4G 链路连接状态">
@ -50,9 +47,10 @@
v-if="
uavInformation.wireless_link && uavInformation.wireless_link['4g_link_state'] == 1
"
>连接</template
>
<template v-else></template>
连接</template
>
<template v-else> </template>
</div>
</div>
<!-- sdr_freq_band sdr_quality 4g_freq_band 4g_quality -->

Loading…
Cancel
Save