fix: 根据协议列表展示数据采集菜单
This commit is contained in:
parent
1ce92713c1
commit
151ecb9fa7
|
@ -197,6 +197,7 @@ import { FormValidate, FormState } from '../data';
|
|||
import type { FormInstance } from 'ant-design-vue';
|
||||
import type { FormDataType } from '../type.d';
|
||||
import { cloneDeep, isArray } from 'lodash-es';
|
||||
import { protocolList } from '@/utils/consts';
|
||||
|
||||
const props = defineProps({
|
||||
data: {
|
||||
|
@ -281,17 +282,13 @@ const getCertificateList = async () => {
|
|||
const getProvidersList = async () => {
|
||||
const resp: any = await getProviders();
|
||||
if (resp.status === 200) {
|
||||
const list = [
|
||||
{ label: 'OPC UA', value: 'OPC_UA' },
|
||||
{ label: 'Modbus TCP', value: 'MODBUS_TCP' },
|
||||
];
|
||||
const arr = resp.result
|
||||
.filter(
|
||||
(item: any) => item.id === 'modbus-tcp' || item.id === 'opc-ua',
|
||||
)
|
||||
.map((it: any) => (it?.id === 'opc-ua' ? 'OPC_UA' : 'MODBUS_TCP'));
|
||||
const providers: any = list.filter((item: any) =>
|
||||
arr.includes(item.value),
|
||||
.map((it: any) => it.id);
|
||||
const providers: any = protocolList.filter((item: any) =>
|
||||
arr.includes(item.alias),
|
||||
);
|
||||
providersList.value = providers;
|
||||
if (arr.includes('OPC_UA')) {
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
import { getImage } from '@/utils/comm';
|
||||
import BaseMenu, { USER_CENTER_MENU_DATA } from '../data/baseMenu'
|
||||
import { getSystemPermission, updateMenus } from '@/api/initHome';
|
||||
import { protocolList } from '@/utils/consts';
|
||||
import { getProviders } from '@/api/data-collect/channel';
|
||||
/**
|
||||
* 获取菜单数据
|
||||
*/
|
||||
|
@ -36,6 +38,18 @@ const getSystemPermissionData = async () => {
|
|||
menuDatas.count = _count;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询支持的协议
|
||||
*/
|
||||
let filterProtocolList: any[] = [];
|
||||
const getProvidersFn = async () => {
|
||||
const res: any = await getProviders();
|
||||
filterProtocolList = protocolList.filter((item) => {
|
||||
return res.result?.find((val: any) => item.alias == val.id);
|
||||
})
|
||||
}
|
||||
getProvidersFn();
|
||||
/**
|
||||
* 过滤菜单
|
||||
*/
|
||||
|
@ -50,6 +64,9 @@ const filterMenu = (permissions: string[], menus: any[]) => {
|
|||
if (item.children) {
|
||||
item.children = filterMenu(permissions, item.children);
|
||||
}
|
||||
if (!filterProtocolList.length && item.code == 'link/DataCollect') {
|
||||
return false;
|
||||
}
|
||||
return isShow || !!item.children?.length;
|
||||
});
|
||||
};
|
||||
|
@ -71,6 +88,7 @@ const menuCount = (menus: any[]) => {
|
|||
const initMenu = async () => {
|
||||
return new Promise(async (resolve) => {
|
||||
// 用户中心
|
||||
console.log([...menuDatas.current!, USER_CENTER_MENU_DATA]);
|
||||
const res = await updateMenus([...menuDatas.current!, USER_CENTER_MENU_DATA]);
|
||||
if (res.status === 200) {
|
||||
resolve(true);
|
||||
|
|
|
@ -81,6 +81,8 @@ import { onlyMessage } from '@/utils/comm';
|
|||
import {
|
||||
USER_CENTER_MENU_CODE,
|
||||
} from '@/utils/consts';
|
||||
import { protocolList } from '@/utils/consts';
|
||||
import { getProviders } from '@/api/data-collect/channel';
|
||||
|
||||
const selectedKeys: any = ref([]);
|
||||
const treeData = ref<any>([]);
|
||||
|
@ -111,6 +113,17 @@ const params = {
|
|||
],
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询支持的协议
|
||||
*/
|
||||
let filterProtocolList: any[] = [];
|
||||
const getProvidersFn = async () => {
|
||||
const res: any = await getProviders();
|
||||
filterProtocolList = protocolList.filter((item) => {
|
||||
return res.result?.find((val: any) => item.alias == val.id);
|
||||
})
|
||||
}
|
||||
getProvidersFn();
|
||||
function filterTree(nodes: Array<any>, selectedKeys: Array<any>) {
|
||||
const filtered = [];
|
||||
for (let i = 0; i < nodes.length; i++) {
|
||||
|
@ -206,17 +219,29 @@ onMounted(() => {
|
|||
const systemMenuData = initData(systemMenu.value);
|
||||
selectedKeys.value = systemMenuData.checkedKeys;
|
||||
|
||||
const AllMenu = mergeArr(
|
||||
const AllMenu = filterMenus(mergeArr(
|
||||
cloneDeep(filterBaseMenu),
|
||||
cloneDeep(systemMenu.value),
|
||||
);
|
||||
|
||||
))
|
||||
console.log(AllMenu);
|
||||
// 处理排序
|
||||
treeData.value = handleSortsArr(AllMenu);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
const filterMenus = (menus: any[]) => {
|
||||
return menus.filter((item) => {
|
||||
if (item.children) {
|
||||
item.children = filterMenus(item.children);
|
||||
}
|
||||
if (!filterProtocolList.length && item.code == 'link/DataCollect') {
|
||||
debugger
|
||||
return false;
|
||||
}
|
||||
return item
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
|
Loading…
Reference in New Issue